微型直流电机控制基本方法 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中大部分情况需要使用多进 ...
随机推荐
- EasyPoi导出Excel
这几天一直在忙工作中的事情,在工作中有一个问题,可能是因为刚开始接触这个EasyPoi,对其也没有太多的理解,在项目中就使用了,有一个需求,是要导出项目中所有的表格,今天就对这个需求进行分析和实现吧; ...
- 上传文件到服务器指定位置 & 从服务器指定位置下载文件
需要的jar包: 去maven仓库自己搜索com.jcraft下载jar包 <dependency> <groupId>com.jcraft</groupId> & ...
- 《Offer一箩筐》一份高质量「简历」撰写指南,望打扰!!
「MoreThanJava」 宣扬的是 「学习,不止 CODE」. 如果觉得 「不错」 的朋友,欢迎 「关注 + 留言 + 分享」,文末有完整的获取链接,您的支持是我前进的最大的动力! Hi~ 这里是 ...
- 【新阁教育】基于EtherNet/IP实现欧姆龙NX系列PLC通信
1.引言 工业以太网协议 (Ethernet/IP) 是由ODVA所开发并得到了罗克韦尔自动化的强大支持.它使用已用于ControlNet和DeviceNet的控制和信息协议 (CIP) 为应用层协议 ...
- 最全 IT 相关网站,软件开发网站收集
前端比较流行的 UI 框架 目前前端用的比较多的框架有如下几个 Ant Design:Ant Design - 一套企业级 UI 设计语言和 React 组件库 Mint UI:https://mi ...
- python 小脚本/自动重复访问网站(快速提高网页访问量)
来到csdn也快两个月了,前前后后写了20篇博客,但才1800+的访问量,其中恐怕还有300多是我自己点的 有点桑心(┬_┬) 于是打算另辟蹊径,自己刷访问量代码如下,需要自取 import urll ...
- centos 遇到/dev/mapper/cl-root 100% 解决方法
yum安装docker时报错[Errno 2] No usable temporary directory found in ['/tmp', '/var/tmp', '/usr/tmp', '/'] ...
- python3和python2语法区别
1.print python2中是print xxx python3中是print(xxx) 2.抛异常except python2中except Exception,e: print "E ...
- pytest文档4-Allure报告清除上一次数据
前言 大家在执行过几次Allure之后就会发现,Allure的报告会把历史的执行结果都展示出来,但实际工作中我们可能只关心本次的结果,解决的话就需要修改一下执行命令了. 问题: 例如图中显示的第一条其 ...
- CTF-WeChall-第二天
2020.09.10 奥力给,举步维艰的时候就是要一边做一遍记,虽然慢但是不要嫌弃,要不然就是举步不前