微型直流电机控制基本方法 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中大部分情况需要使用多进 ...
随机推荐
- PAT甲级1151(由前序和中序确定LCA)
The lowest common ancestor (LCA) of two nodes U and V in a tree is the deepest node that has both U ...
- 模拟CMOS集成电路-单级放大器增益直观理解
我们再看辅助定理: 这里,Gm是指输出与地短接时的跨导:Rout表示当输入电压为零时的输出电阻.这个是书上的原话,但是在推算公式时发现,这两个量的定义还不是完全完整,我 的理解是: 首先Gm是等效跨导 ...
- 启动oracle11监听器错误
启动oracle11监听器错误:本地计算机上的OracleOraDb11g_home1TNSListener服务启动后又停止了解决方案 . 关键字:启动oracle10监听器错误:本地计算机上的Ora ...
- OpenResty 作者章亦春访谈实录
[软件简介] OpenResty (也称为 ngx_openresty)是一个全功能的 Web 应用服务器.它打包了标准的 Nginx 核心,很多的常用的第三方模块,以及它们的大多数依赖项. 通过众多 ...
- jinja2快速实现自定义的robotframework的测试报告
一.背景 RF的结果报告可以方便我们查看每一条用例集.用例的执行结果统计,但是有的项目涉及到一些数据的比对,希望能够直观到看到数据,原生的测试报告就无法满足这个需求了. 原生的报告 项目需求报告格式 ...
- Java中的String字符串及其常用方法
字符串(String) 文章目录 字符串(String) 直接定义字符串 常用方法 字符串长度 toLowerCase() & toUpperCase()方法 trim()方法去除空格 判空 ...
- intellij idea 无法进行调试的解决方案
inteliij idea 如果出现无法调试该怎样做?debug中各功能为灰色. 如果你用的是外来项目,可能是没有添加这个项目自带的library: 解决办法: 在file->project ...
- STS 使用lombox.jar
在Maven本地仓库中找到 将lombox.jar放在与STS.exe平级的目录下, 然后安装完了以后可能会出先打不开的情况.这个时候只要打开STS.ini文件. 然后修改文件保存
- 用C、python手写redis客户端,兼容redis集群 (-MOVED和-ASK),快速搭建redis集群
想没想过,自己写一个redis客户端,是不是很难呢? 其实,并不是特别难. 首先,要知道redis服务端用的通信协议,建议直接去官网看,博客啥的其实也是从官网摘抄的,或者从其他博客抄的(忽略). 协议 ...
- RocketMQ生产部署架构如何设计
前言 看了我们之前的文章,相信小伙伴们对RocketMQ已经有了一个初步的了解,那么今天我们就来聊一聊具体如何来设计一套高可用的生产部署架构. 在聊如何设计这套架构的同时,我们再补充一些之前没提到的知 ...