微型直流电机控制基本方法 L298N模块
控制任务
让单个直流电机在L298N模块驱动下,完成制动、自由停车,正反转,加减速等基本动作
芯片模块及电路设计

图1 L298N芯片引脚

图2 L298N驱动模块

表1 L298N驱动模块的控制引脚
使用注意 短路帽连接后内置5V输出使能。调速时,只需要在使能端输入PWM信号就行。使能端低电平时,电机自由停止。通过ENA,IN1,IN2控制电机A,通过ENB,IN3,IN4控制电机B。

图3 L298N驱动模块的Fritzing元件图

图4 单片机控制板Aduino UNO

图5 Aduino UNO 与L298N驱动模块的接线

图6 整个系统的接线

图7 电机控制系统接线原理示意图1

图8 电机控制系统接线原理示意图2
实际接线:Arduino的引脚6,8,7分别接L298N驱动板的ENA,IN1,IN2
程序设计
本程序只对单电机进行控制
1 //控制板引脚定义
2 int motor_c_ENA=6;
3 int motor_c_IN1=8;
4 int motor_c_IN2=7;
5
6 //子函数定义
7 void go_forward_high_speed() //正转 全速
8 {
9 digitalWrite(motor_c_ENA,1);
10 digitalWrite(motor_c_IN1,0);
11 digitalWrite(motor_c_IN2,1);
12 }
13
14 void go_backward_high_speed() //反转 全速
15 {
16 digitalWrite(motor_c_ENA,1);
17 digitalWrite(motor_c_IN1,1);
18 digitalWrite(motor_c_IN2,0);
19 }
20
21 void stop_with_brake() //制动
22 {
23 digitalWrite(motor_c_ENA,1);
24 digitalWrite(motor_c_IN1,1);
25 digitalWrite(motor_c_IN2,1) ;
26 }
27
28 void stop_free() //自由停车
29 {
30 digitalWrite(motor_c_ENA,0);
31 digitalWrite(motor_c_IN1,0);
32 digitalWrite(motor_c_IN2,0) ;
33 }
34
35 void go_forward_speed_up() //正转 加速
36 {
37 digitalWrite(motor_c_IN1,0);
38 digitalWrite(motor_c_IN2,1);
39 for (int a=100;a<=255;a++)
40 {
41 analogWrite(motor_c_ENA,a);
42 delay(200);
43 }
44 }
45
46 void go_backward_speed_up() //反转 加速
47 {
48 digitalWrite(motor_c_IN1,1);
49 digitalWrite(motor_c_IN2,0);
50 for (int a=100;a<=255;a++)
51 {
52 analogWrite(motor_c_ENA,a);
53 delay(200);
54 }
55 }
56 void go_forward_speed_down() //正转 减速
57 {
58 digitalWrite(motor_c_IN1,0);
59 digitalWrite(motor_c_IN2,1);
60 for (int a=255;a<=100;a--)
61 {
62 analogWrite(motor_c_ENA,a);
63 delay(200);
64 }
65 }
66
67 void go_backward_speed_down() //反转 减速
68 {
69 digitalWrite(motor_c_IN1,1);
70 digitalWrite(motor_c_IN2,0);
71 for (int a=255;a<=100;a--)
72 {
73 analogWrite(motor_c_ENA,a);
74 delay(200);
75 }
76 }
77
78
79 void setup()
80 {
81 pinMode(motor_c_ENA,OUTPUT); //电机C使能和PWM调速口
82 pinMode(motor_c_IN1,OUTPUT); //电机C控制口
83 pinMode(motor_c_IN2,OUTPUT); //电机C控制口
84 }
85
86 void loop()
87 {
88 stop_with_brake(); //制动2秒
89 delay(2000);
90
91 go_forward_speed_up(); //正转 加速 50秒
92 delay(50000);
93 go_forward_high_speed(); //正转 全速10秒
94 delay(10000);
95 go_forward_speed_down(); //正转 减速50秒
96 delay(50000);
97 stop_free(); //自由停车5秒
98 delay(5000);
99
100 go_backward_speed_up(); //反转 加速 50秒
101 delay(50000);
102 go_backward_high_speed(); //反转 全速10秒
103 delay(10000);
104 go_backward_speed_down(); //反转 减速50秒
105 delay(50000);
106 stop_free(); //自由停车5秒
107 delay(5000);
108 }
程序运行效果
制动状态开始正转加速,正转全速,正转减速,自由停车,反转加速,反转全速,反转减速,自由停车,循环。
微型直流电机控制基本方法 L298N模块的更多相关文章
- Exporter - 实现默认的导入方法用于模块
Exporter - 实现默认的导入方法用于模块 简介: In module YourModule.pm: package YourModule; require Exporter; @ISA = q ...
- python inspect 模块 和 types 模块 判断是否是方法,模块,函数等内置特殊属性
python inspect 模块 和 types 模块 判断是否是方法,模块,函数等内置特殊属性 inspect import inspect def fun(): pass inspect.ism ...
- 查看Python的版本、内建方法和模块等内容的方法
若想更好地应用Python帮助我们解决日常生活的问题,就必须了解清楚它的内建方法和模块等特性.相信不少同学在安装某个版本的Python后,对于内建方法之类都是一知半解,希望本文能帮助了解Python的 ...
- 控制层方法中获取url目录
控制层方法中获取url目录 Request.Url.GetLeftPart(UriPartial.Authority).ToString(); //返回 http://localhost:9246(网 ...
- Java&Selenium控制滚动条方法封装
Java&Selenium控制滚动条方法封装 package util; import org.openqa.selenium.JavascriptExecutor; import org.o ...
- Android(Linux)控制GPIO方法二
前文<Android(Linux)控制GPIO的方法及实时性分析>主要使用Linux shell命令控制GPIO,该方法可在调试过程中快速确定GPIO硬件是否有问题,即对应的GPIO是否受 ...
- Python常用函数、方法、模块记录
常用函数: 1.pow():乘方 2.abs():绝对值 3.round():四舍五入 4.int():转换为整数 5.input():键盘输入(会根据用户的输入来做类型的转换) raw_input( ...
- IoC实践--用Autofac实现MVC5.0的IoC控制反转方法
Autofac是一个.net平台下发性能还不错的IoC框架,利用它可以实现依赖注入和控制反转,使自己的软件模块之间的耦合性大大降低,让软件扩展.维护更加容易.控制反转(Inversion of Con ...
- python 开启进程两种方法 multiprocessing模块 介绍
一 multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu\_count\(\)查看),在python中大部分情况需要使用多进 ...
随机推荐
- Unity双开
open -n /Applications/Unity/Unity.app
- Mac 的命令行配置字体颜色
1.在mac命令行终端输入: ls -al 查看所有隐藏文件,找到.bash_profile vi .bash_profile 编辑文件,贴入以下内容并保存 source .bash_profil ...
- Sorting It All Out (拓扑排序+思维)
An ascending sorted sequence of distinct values is one in which some form of a less-than operator is ...
- Eclipse获取工作空间跟运行空间
System.out.println(System.getProperty("user.dir"));//当前工作空间 System.out.println(Platform.ge ...
- Zookeeper原生客户端
1.1.1.1. 客户端基本操作 package cn.enjoy.javaapi; import org.apache.zookeeper.*; import java.io.IOException ...
- ES ElasticSearch 7.x 下动态扩大索引的shard数量
ES ElasticSearch 7.x 下动态扩大索引的shard数量 背景 在老版本的ES(例如2.3版本)中, index的shard数量定好后,就不能再修改,除非重建数据才能实现. 从ES6. ...
- latex pdf 转 eps
latex pdf 转 eps 方法一,使用命令行,缺点是得到的文件有点大 pdf 转 ps, pdf2ps input.pdf output.ps ps 转 eps, ps2eps input.ps ...
- 谈谈 mysql和oracle的使用感受 -- 差异
之前一直使用mysql作为存储数据库,虽然中间偶尔使用sqlite作为本地数据库存储,但没有感觉多少差别. 后来遇上了oracle,且以其作为主要存储,这下就不得不好好了解其东西了.oracle作为商 ...
- C++ 读入优化&输出优化
读入优化:读入优化只是针对整数,由于getchar()读字符非常的快,所以采用getchar()来进行读入,下设输入的数为x 负数处理:用一个标志变量f,开始时为1,当读入了'-'时,f变为-1,最后 ...
- Redis之命令详解
Redis命令手册:http://doc.redisfans.com/