微型直流电机控制基本方法 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中大部分情况需要使用多进 ...
随机推荐
- oeasy教您玩转linux010106这儿都有啥 ls
回忆上次内容 上个实验我们查询了 ls 的手册: man ls
- Tomcat9w.exe无法启动为started
问题: startup.bat可以正常启动,http://localhost:8080/ 可以正常访问.但是Tomcat9w.exe无法启动为started,一直为Stopped. 解决方案: 如下图 ...
- 转载:人家编写的程序:「雀神 AI」Suphx
下文转载自:https://news.51cto.com/art/202004/613746.htm 按:虽然还是玩棋牌乐的AI,但相对于我们日常编写的XX管理系统,好比哺乳动物 VS 鱼类了. 20 ...
- docker 修改容器配置文件
启动docker镜像命令docker run 可以指定端口映射,但是容器一旦创建就无法在通过命令修改.通常是保存镜像在创建一个新的容器.有没有办法不保存镜像直接修改这个容器呢?答案是有的,本文已mys ...
- leetcode刷题-46全排列
题目 给定一个 没有重复 数字的序列,返回其所有可能的全排列. 思路 回溯算法 不断取出字符,对剩余字符进行选择 实现 class Solution: def permute(self, nums: ...
- 手写mybatis框架-增加缓存&事务功能
前言 在学习mybatis源码之余,自己完成了一个简单的ORM框架.已完成基本SQL的执行和对象关系映射.本周在此基础上,又加入了缓存和事务功能.所有代码都没有copy,如果也对此感兴趣,请赏个Sta ...
- Georgia and Bob(POJ 1704)
原题如下: Georgia and Bob Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12712 Accepted: ...
- linux下redis安装部署
1.获取redis资源 进官网下载https://redis.io/download最新版本后将文件移到linux环境中 或者直接wget http://download.redis.io/relea ...
- three.js学习3_相机相关
Three.Camera Camera是所有相机的抽象基类, 在构建新摄像机时,应始终继承此类. 常见的相机有两种类型: PerspectiveCamera(透视摄像机)或者 Orthographic ...
- win10家庭版启用远程桌面
此电脑右键属性->远程设置->允许远程协助连接这台计算机 勾选 下载RDP Wrapper 地址:https://github.com/stascorp/rdpwrap/releases ...