控制任务

让单个直流电机在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模块的更多相关文章

  1. Exporter - 实现默认的导入方法用于模块

    Exporter - 实现默认的导入方法用于模块 简介: In module YourModule.pm: package YourModule; require Exporter; @ISA = q ...

  2. python inspect 模块 和 types 模块 判断是否是方法,模块,函数等内置特殊属性

    python inspect 模块 和 types 模块 判断是否是方法,模块,函数等内置特殊属性 inspect import inspect def fun(): pass inspect.ism ...

  3. 查看Python的版本、内建方法和模块等内容的方法

    若想更好地应用Python帮助我们解决日常生活的问题,就必须了解清楚它的内建方法和模块等特性.相信不少同学在安装某个版本的Python后,对于内建方法之类都是一知半解,希望本文能帮助了解Python的 ...

  4. 控制层方法中获取url目录

    控制层方法中获取url目录 Request.Url.GetLeftPart(UriPartial.Authority).ToString(); //返回 http://localhost:9246(网 ...

  5. Java&Selenium控制滚动条方法封装

    Java&Selenium控制滚动条方法封装 package util; import org.openqa.selenium.JavascriptExecutor; import org.o ...

  6. Android(Linux)控制GPIO方法二

    前文<Android(Linux)控制GPIO的方法及实时性分析>主要使用Linux shell命令控制GPIO,该方法可在调试过程中快速确定GPIO硬件是否有问题,即对应的GPIO是否受 ...

  7. Python常用函数、方法、模块记录

    常用函数: 1.pow():乘方 2.abs():绝对值 3.round():四舍五入 4.int():转换为整数 5.input():键盘输入(会根据用户的输入来做类型的转换) raw_input( ...

  8. IoC实践--用Autofac实现MVC5.0的IoC控制反转方法

    Autofac是一个.net平台下发性能还不错的IoC框架,利用它可以实现依赖注入和控制反转,使自己的软件模块之间的耦合性大大降低,让软件扩展.维护更加容易.控制反转(Inversion of Con ...

  9. python 开启进程两种方法 multiprocessing模块 介绍

    一 multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu\_count\(\)查看),在python中大部分情况需要使用多进 ...

随机推荐

  1. Unity双开

    open -n /Applications/Unity/Unity.app

  2. Mac 的命令行配置字体颜色

    1.在mac命令行终端输入: ls -al  查看所有隐藏文件,找到.bash_profile vi .bash_profile  编辑文件,贴入以下内容并保存 source .bash_profil ...

  3. Sorting It All Out (拓扑排序+思维)

    An ascending sorted sequence of distinct values is one in which some form of a less-than operator is ...

  4. Eclipse获取工作空间跟运行空间

    System.out.println(System.getProperty("user.dir"));//当前工作空间 System.out.println(Platform.ge ...

  5. Zookeeper原生客户端

    1.1.1.1. 客户端基本操作 package cn.enjoy.javaapi; import org.apache.zookeeper.*; import java.io.IOException ...

  6. ES ElasticSearch 7.x 下动态扩大索引的shard数量

    ES ElasticSearch 7.x 下动态扩大索引的shard数量 背景 在老版本的ES(例如2.3版本)中, index的shard数量定好后,就不能再修改,除非重建数据才能实现. 从ES6. ...

  7. latex pdf 转 eps

    latex pdf 转 eps 方法一,使用命令行,缺点是得到的文件有点大 pdf 转 ps, pdf2ps input.pdf output.ps ps 转 eps, ps2eps input.ps ...

  8. 谈谈 mysql和oracle的使用感受 -- 差异

    之前一直使用mysql作为存储数据库,虽然中间偶尔使用sqlite作为本地数据库存储,但没有感觉多少差别. 后来遇上了oracle,且以其作为主要存储,这下就不得不好好了解其东西了.oracle作为商 ...

  9. C++ 读入优化&输出优化

    读入优化:读入优化只是针对整数,由于getchar()读字符非常的快,所以采用getchar()来进行读入,下设输入的数为x 负数处理:用一个标志变量f,开始时为1,当读入了'-'时,f变为-1,最后 ...

  10. Redis之命令详解

    Redis命令手册:http://doc.redisfans.com/