黄工无刷电机学习
登录
直播中
乐骞添
7年用户
972经验值
私信
关注
[问答]
有关L293D驱动模块的基本知识都总结在这里
开启该帖子的消息推送
驱动模块
L293D
L293D驱动模块的原理是什么?
L293D驱动模块有哪些功能?L293D驱动模块的引脚说明有哪些?
回帖
(1)
范佳慧
2021-7-13 10:17:56
该L293D驱动模块是专门为arduino设计的,网上使用arduino驱动该模块的资料很多,但是关于使用其他单片机驱动该模块是资料比较少,本人在学习中也是花了很多时间查找资料和摸索,该模块直接整块插入arduino,然后安装专门的库文件,就可以直接使用,而51单片机则需要自己进行接线和了解模块的原理,所以在此为该模块做个比较详细的介绍。
模块功能:
*2个5V伺服电机(舵机)端口联接到的高解析高精度的定时器无抖动!
*多达4个双向直流电机及4路PMM调速(大约0.5%的解析度)
*多达2个步进电机正反转控制,单/双步控制,交错或微步及旋转角度控制。
*4路H-桥:L293D芯片每路桥提供0.6A (峰值1.2A)电流并且带有热断电保护, 4. 5Vto36V。
*下拉电阻保证在上电时电机保持停止状态。
*大终端接线端子使接线更容易(10-22AWG)和电源。
*带有复位按钮。
*2个大终端外部电源接线端子保证逻辑和电机驱动电源分离
下载方便使用的软件库快速进行项目开发
适用范围:初学者,实验器材平台,互动电子,机器人等。
特点:功能多,操作方便,有强大的驱动库支持及功能更新。
缺点:I/0占用较多在同时驱动四路电机的情况下(相对Arduino1/0少的版本而言),小功率。
可驱动4路直流电机或者2路步进电机的同时还能驱动2路舵机
支持Arduino UNO. Arduino Mega2560
您可以这样搭配
驱动四路直流电机和两路舵机
驱动两路直流电机和一路步进电机和两路舵机
驱动两路步进电机和两路舵机
可以同时控制4个直流电机和2个步进电机和两个伺服电机(舵机)。有专门的代码库。导入库后,简单使用。
注意,使用步进电机会占用2个直流电机接口,电机驱动电源需要单独供电给电机,电路驱动电源需要使用51单片机提供的电源,也可以单独供电,但是必须要跟单片机共地,否则会无法将数据写入模块。
模块引脚说明(该模块是为arduino设计的,所以使用51单片机驱动该模块有些引脚是没用的,如:0,1,2,13,ARef):
3:直流电机M2的PWM信号端,与左边的L293D芯片(IC1)的9号脚相连
4:74HC595芯片的数据输入时钟端(上升沿有效),与中间的74HC595芯片(IC3)的11号脚相连
5:直流电机M4的PWM信号端,与右边的L293D芯片(IC2)的1号脚相连
6:直流电机M3的PWM信号端,与右边的L293D芯片(IC2)的9号脚相连
7:74HC595芯片的输出使能端(低电平有效),与中间的74HC595芯片(IC3)的13号脚相连
8:74HC595芯片的串行数据输入端,与中间的74HC595芯片(IC3)的14号脚相连
9:舵机2的PWM信号端
10:舵机1的PWM信号端
11:直流电机M1的PWM信号端,与左边的L293D芯片(IC2)的1号脚相连
12:74HC595芯片的并行数据输出时钟端(上升沿有效),与中间的74HC595芯片(IC3)的12号脚相连
A0~A5可以自行焊接排针作为扩展,可以提供给舵机也可以提供给测速模块,接线柱的电机驱动电源是提供给4个直流电机的,引脚的5V电路驱动电源是提供给芯片和舵机的,以及右下脚的5V电源,黄色的跳线帽将电机驱动电源和9V引脚相连,电机驱动电源提供多少伏的电压,9V接脚就是多少伏的,并不是固定9V,所以请注意,关于电机驱动电源资料上说的是4.5V到36V,建议在12V之内,L293D的芯片是4.5V到36V的,但是该模块上的其他元件不一定能承受,本人就弄坏一个板子,起初是74HC595芯片莫名其妙的烧坏,然后更换芯片后,在20V电压下调压时拧错了反向,导致一个电容爆炸了,但是肯定是没有超过36V的,该模块的电容的击穿电压是16V,20V以下是没有问题的,还要注意的是电流,不能过大,一般12V的电压绝对够用了。
模块上还有一些被焊死的接口,是和直流电机接线柱相邻的(蓝色区域其他引脚是GND),可以自行焊上排针,这样就可以使用杜邦线连接电机了或者串上电阻接上LED做指示灯,我的板子是自己把引脚都焊上来了。
模块原理:
改模块是使用L293D来驱动电机的,中间有一个74HC595芯片,是将串行信号转为并行信号的,因为该模块是为arduino设计的,arduino的I/O口较少,控制4个直流电机需要12个引脚,使用74HC595可以减少4个引脚的使用,也可以取掉74HC595芯片,焊接接线,直接使用51单片机并行控制2个L293D芯片从而控制电机。
74HC595芯片:
简单的说,先将模块的引脚7置0,然后模块的引脚4(74HC595芯片的数据输入时钟端)接受到一个上升沿,就将芯片中的8位数据左移一位,空出低位将引脚8(74HC595芯片的串行数据输入端)的0或1信号写入低位,写入八次就将控制4个电机的8位信
号写入74HC595的芯片中了(M3M4M3M2M1M1M2M4),然后在给引脚12一个上升沿,就将芯片中的数据输出在芯片的引脚上(Q0~Q7)。74HC595芯片详解
L293D芯片:
1号和9号都是使能端,可以输入PWM信号来控制电机,当1脚置1时,2脚置1,则3脚输出高电压,7脚置0,则6脚输出低电压,而3脚和6脚接电机,产生电压带动电机转动,如果2脚置0,7脚置1,则电机反转,右半边也是一样的原理。而2,7,10,15脚接的是74HC595的输出端,所以使用74HC595就控制了2个L293D芯片,然后就可以控制电机的转动。L293D芯片详解
驱动代码:
#include《reg52.h》 #include《intrins.h》 #define uchar unsigned char #define uint unsigned int ***it SER=P1^0; //串行数据输入,脚8 ***it SCK=P1^1; //数据输入时钟线,脚4 ***it RCK=P1^2; //数据输出时钟线,脚12 ***it EN=P1^3; // 74hc595的使能输出 要为0,脚7 ***it PWM_M1=P1^4; // L293d的MA1使能,电机M1的pwm ,脚11 ***it PWM_M2=P1^5; //脚3 ***it PWM_M3=P1^6; //脚6 ***it PWM_M4=P1^7; //脚5 void HC595SendData(unsigned char SendVal)//发送一个字节 { unsigned char i; for(i=0;i《8;i++) { if((SendVal《《i)&0x80) SER=1; else SER=0; SCK=0;//产生上升沿发送数据 _nop_(); _nop_(); SCK=1; } } void HC595ShowData()//产生上升沿输出数据 { RCK=0; _nop_(); _nop_(); RCK=1; } void delay(uint z) { uint x,y; for(x=z;x》0;x--) for (y=123;y》0;y--); } void main() { PWM_M1=1; PWM_M2=1; PWM_M3=1; PWM_M4=1; EN=0; HC595SendData(0x95);//M3M4M3M2M1M1M2M4:10010101 delay(10); HC595ShowData(); while(1); } 原理图(该图是网上找的,不太清晰,还有M3和M4它弄错了,我用黑色文字标明了一下):
PS:先给电路驱动电源,写入串行数据信号,再给电机驱动电源驱动电机,也是可以的。
该L293D驱动模块是专门为arduino设计的,网上使用arduino驱动该模块的资料很多,但是关于使用其他单片机驱动该模块是资料比较少,本人在学习中也是花了很多时间查找资料和摸索,该模块直接整块插入arduino,然后安装专门的库文件,就可以直接使用,而51单片机则需要自己进行接线和了解模块的原理,所以在此为该模块做个比较详细的介绍。
模块功能:
*2个5V伺服电机(舵机)端口联接到的高解析高精度的定时器无抖动!
*多达4个双向直流电机及4路PMM调速(大约0.5%的解析度)
*多达2个步进电机正反转控制,单/双步控制,交错或微步及旋转角度控制。
*4路H-桥:L293D芯片每路桥提供0.6A (峰值1.2A)电流并且带有热断电保护, 4. 5Vto36V。
*下拉电阻保证在上电时电机保持停止状态。
*大终端接线端子使接线更容易(10-22AWG)和电源。
*带有复位按钮。
*2个大终端外部电源接线端子保证逻辑和电机驱动电源分离
下载方便使用的软件库快速进行项目开发
适用范围:初学者,实验器材平台,互动电子,机器人等。
特点:功能多,操作方便,有强大的驱动库支持及功能更新。
缺点:I/0占用较多在同时驱动四路电机的情况下(相对Arduino1/0少的版本而言),小功率。
可驱动4路直流电机或者2路步进电机的同时还能驱动2路舵机
支持Arduino UNO. Arduino Mega2560
您可以这样搭配
驱动四路直流电机和两路舵机
驱动两路直流电机和一路步进电机和两路舵机
驱动两路步进电机和两路舵机
可以同时控制4个直流电机和2个步进电机和两个伺服电机(舵机)。有专门的代码库。导入库后,简单使用。
注意,使用步进电机会占用2个直流电机接口,电机驱动电源需要单独供电给电机,电路驱动电源需要使用51单片机提供的电源,也可以单独供电,但是必须要跟单片机共地,否则会无法将数据写入模块。
模块引脚说明(该模块是为arduino设计的,所以使用51单片机驱动该模块有些引脚是没用的,如:0,1,2,13,ARef):
3:直流电机M2的PWM信号端,与左边的L293D芯片(IC1)的9号脚相连
4:74HC595芯片的数据输入时钟端(上升沿有效),与中间的74HC595芯片(IC3)的11号脚相连
5:直流电机M4的PWM信号端,与右边的L293D芯片(IC2)的1号脚相连
6:直流电机M3的PWM信号端,与右边的L293D芯片(IC2)的9号脚相连
7:74HC595芯片的输出使能端(低电平有效),与中间的74HC595芯片(IC3)的13号脚相连
8:74HC595芯片的串行数据输入端,与中间的74HC595芯片(IC3)的14号脚相连
9:舵机2的PWM信号端
10:舵机1的PWM信号端
11:直流电机M1的PWM信号端,与左边的L293D芯片(IC2)的1号脚相连
12:74HC595芯片的并行数据输出时钟端(上升沿有效),与中间的74HC595芯片(IC3)的12号脚相连
A0~A5可以自行焊接排针作为扩展,可以提供给舵机也可以提供给测速模块,接线柱的电机驱动电源是提供给4个直流电机的,引脚的5V电路驱动电源是提供给芯片和舵机的,以及右下脚的5V电源,黄色的跳线帽将电机驱动电源和9V引脚相连,电机驱动电源提供多少伏的电压,9V接脚就是多少伏的,并不是固定9V,所以请注意,关于电机驱动电源资料上说的是4.5V到36V,建议在12V之内,L293D的芯片是4.5V到36V的,但是该模块上的其他元件不一定能承受,本人就弄坏一个板子,起初是74HC595芯片莫名其妙的烧坏,然后更换芯片后,在20V电压下调压时拧错了反向,导致一个电容爆炸了,但是肯定是没有超过36V的,该模块的电容的击穿电压是16V,20V以下是没有问题的,还要注意的是电流,不能过大,一般12V的电压绝对够用了。
模块上还有一些被焊死的接口,是和直流电机接线柱相邻的(蓝色区域其他引脚是GND),可以自行焊上排针,这样就可以使用杜邦线连接电机了或者串上电阻接上LED做指示灯,我的板子是自己把引脚都焊上来了。
模块原理:
改模块是使用L293D来驱动电机的,中间有一个74HC595芯片,是将串行信号转为并行信号的,因为该模块是为arduino设计的,arduino的I/O口较少,控制4个直流电机需要12个引脚,使用74HC595可以减少4个引脚的使用,也可以取掉74HC595芯片,焊接接线,直接使用51单片机并行控制2个L293D芯片从而控制电机。
74HC595芯片:
简单的说,先将模块的引脚7置0,然后模块的引脚4(74HC595芯片的数据输入时钟端)接受到一个上升沿,就将芯片中的8位数据左移一位,空出低位将引脚8(74HC595芯片的串行数据输入端)的0或1信号写入低位,写入八次就将控制4个电机的8位信
号写入74HC595的芯片中了(M3M4M3M2M1M1M2M4),然后在给引脚12一个上升沿,就将芯片中的数据输出在芯片的引脚上(Q0~Q7)。74HC595芯片详解
L293D芯片:
1号和9号都是使能端,可以输入PWM信号来控制电机,当1脚置1时,2脚置1,则3脚输出高电压,7脚置0,则6脚输出低电压,而3脚和6脚接电机,产生电压带动电机转动,如果2脚置0,7脚置1,则电机反转,右半边也是一样的原理。而2,7,10,15脚接的是74HC595的输出端,所以使用74HC595就控制了2个L293D芯片,然后就可以控制电机的转动。L293D芯片详解
驱动代码:
#include《reg52.h》 #include《intrins.h》 #define uchar unsigned char #define uint unsigned int ***it SER=P1^0; //串行数据输入,脚8 ***it SCK=P1^1; //数据输入时钟线,脚4 ***it RCK=P1^2; //数据输出时钟线,脚12 ***it EN=P1^3; // 74hc595的使能输出 要为0,脚7 ***it PWM_M1=P1^4; // L293d的MA1使能,电机M1的pwm ,脚11 ***it PWM_M2=P1^5; //脚3 ***it PWM_M3=P1^6; //脚6 ***it PWM_M4=P1^7; //脚5 void HC595SendData(unsigned char SendVal)//发送一个字节 { unsigned char i; for(i=0;i《8;i++) { if((SendVal《《i)&0x80) SER=1; else SER=0; SCK=0;//产生上升沿发送数据 _nop_(); _nop_(); SCK=1; } } void HC595ShowData()//产生上升沿输出数据 { RCK=0; _nop_(); _nop_(); RCK=1; } void delay(uint z) { uint x,y; for(x=z;x》0;x--) for (y=123;y》0;y--); } void main() { PWM_M1=1; PWM_M2=1; PWM_M3=1; PWM_M4=1; EN=0; HC595SendData(0x95);//M3M4M3M2M1M1M2M4:10010101 delay(10); HC595ShowData(); while(1); } 原理图(该图是网上找的,不太清晰,还有M3和M4它弄错了,我用黑色文字标明了一下):
PS:先给电路驱动电源,写入串行数据信号,再给电机驱动电源驱动电机,也是可以的。
举报
更多回帖
rotate(-90deg);
回复
相关问答
驱动模块
L293D
怎样通过Arduino开发板和
L293D
驱动
器控制直流电机
2021-10-18
1875
如何使用Arduino
L293D
电机
驱动
器扩展板
驱动
直流电机?
2021-07-13
1937
请问一下
L293D
如何
驱动
5V直流电机?
2021-10-20
1286
为什么我的
L293D
驱动
空心杯电机飞不起来
2019-07-24
3858
请问如何采用
L293D
电机
驱动
避障小车?
2021-10-13
1123
求助 关于
L293D
模块
/4直流电机
驱动
模块
的问题
2013-10-21
2975
有关
l293d
驱动
问题
2013-10-22
3086
L293D
电机
驱动
块的问题
2016-06-23
5630
关于89C52对于
L293D
模块
的
驱动
求教
2016-05-18
3673
怎样采用两片
L293D
芯片去控制红外遥控小车的四个车轮?
2021-06-30
1620
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分