L293D驱动模块的使用详解

news/2024/11/14 14:49:05/

 

  该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
sbit SER=P1^0;   //串行数据输入,脚8 
sbit SCK=P1^1;   //数据输入时钟线,脚4 
sbit RCK=P1^2;  //数据输出时钟线,脚12 
sbit EN=P1^3;  //  74hc595的使能输出 要为0,脚7 
sbit PWM_M1=P1^4;  // L293d的MA1使能,电机M1的pwm ,脚11 
sbit PWM_M2=P1^5;	//脚3 
sbit PWM_M3=P1^6;	//脚6 
sbit 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:先给电路驱动电源,写入串行数据信号,再给电机驱动电源驱动电机,也是可以的。


http://www.ppmy.cn/news/171320.html

相关文章

uln2003驱动电路

一、uln2003有什么作用 ULN2003是大电流驱动阵列&#xff0c;多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载。 输入5VTTL电平&#xff0c;输出可达500mA/50V。 ULN2003是高耐压、大电流达林顿陈列&#xff0c;由七个硅NPN达林顿管组成。 该电…

PHP+Mysql制作一个学生成绩查询模块

PHPMysql制作一个学生成绩查询模块 我不是学PHP的我只是需要用一下PHP要是学又得好长时间&#xff0c;最好的方法就是问&#xff0c;但是问会的&#xff0c;又说让百度&#xff0c;得&#xff0c;我直接自己干吧&#xff0c;便花费了我一整天时间做了一下&#xff0c;从网上搜…

STM32F103RCT语音模块LD3320

LD3320为内核是51单片机&#xff0c;LD3320当输入不同的语句通过串口输出相应的代码&#xff0c;利用STM32与51单片机的串口通讯&#xff0c;将代码传输给STM32实现STM32端口控制。 LD3320程序与STM32全部程序&#xff0c;自己编写程序。 程序代码下载地址https://download.cs…

STM32 HAL 驱动I2C总线0.91寸OLED模块(基于SSD1306显示驱动芯片)

STM32 HAL 驱动I2C总线0.91寸OLED模块(基于SSD1306显示驱动芯片) 基于SSD1306驱动芯片的OLED模块有多种型号&#xff0c;有0.91英寸&#xff0c;0.96英寸等等。OLED采用单色显示方式&#xff0c;通过I2C总线进行访问。 这里将参考例程改写为HAL库的版本&#xff0c;实现0.91…

SVG—初识5之SVG变形动画和阶段性学习成果展示

SVG—初识5 SVG 变形动画MorphSVGPlugin多个变换蒙版动画 阶段性学习成果 SVG 变形动画 在做形状转换的时候&#xff0c;转换前形状的控制点和转换后的控制点数最好相同&#xff0c;这样效果能好些 MorphSVGPlugin GreenSock 中使用MorphSVGPlugin进行动画的绘制 <!DOCT…

L310

Facelift( 紧肤术) followed by a week on a beach in Thailand? Hip surgery with a side of shopping inSingapore? Over the last 10 years, Asia’s rise on the medical tourism scene has been quick. Eastern nationsdominate the global scene. Now Bali wants a sli…

基于嵌入式单片机的 STM32F103系列的 《语音识别模块 HBR640 和 DY-SV17F 》的驱动应用

语音识别模块HBR640 就近需要做一个有关语音交互的小项目&#xff0c;这个年代挺好&#xff0c;不用自己写识别算法&#xff0c;直接用芯片就好了&#xff0c;于是乎上网找芯片去了。网友们都说快速开发而且要求不高的话用LD3320芯片还可以&#xff0c;不仅便宜&#xff0c;识别…

LogicFlow自定义业务节点

&#x1f384;Hi~ 大家好&#xff0c;我是小鑫同学&#xff0c;一位长期从事前端开发的编程爱好者&#xff0c;我将使用更为实用的案例输出更多的编程知识&#xff0c;同时我信奉分享是成长的唯一捷径&#xff0c;在这里也希望我的每一篇文章都能成为你技术落地的参考~ 目录 1.…