51单片机的L298N直流电机驱动(PWM)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51单片机的直流电机驱动
如下图所示为L298N焊接的供电板子,怎么用呢?
首先,介绍下上面的接口部分,一共五个部分。
●第一部分:L298N芯片。这就不用多说了,百度文库上有很多关于这个
芯片的资料,我就不多说了。
●第二部分:A1 、A2、B1、B2四个接口分别用来连接直流电动机或者
是步进电机。A1和A2是一组,驱动一个电机。B1和B2一组驱动另一个电机。
●第三部分:VDD接口,可以接一个六节1.5V的五号电池的正极。(右边
那个GND是共地端,要将你用的开发板的GND和这个仪器接上,同时也是电源的共地接口)
●第四部分:节四节1.5V五号电池的正极。负极接GND。
●第五部分:这里一共有六个接口:
●
1.ENA 使能A1、A2的接口,也就是说如果ENA不接高电平,那么A1、A2驱动的电机是不可能可以驱动的。
2 ENB 同上。
3A1、A2、B1、B2 你可以用你的开发板的四个I\O口接它们,它们的高低电平将直接影响到第二部分输出的高低电平(经过芯片的放大,这是的电压已经
很高了,这就是作用)。如果你想驱动电机A运转,可以在A1上加高电平A2上加低电平。这样电机就有了电势差,就可以云装了,调整电势差可以改变正传反转和加减速(PWM来控制)。
下面上源码,源码收集于网上,原著不详,现回馈大家。
#include
#define uchar unsigned char
#define uint unsigned int
sbit INPUT1 = P1^0; //控制口
sbit INPUT2 = P1^1;
sbit INPUT3 = P1^2;
sbit INPUT4 = P1^3;
sbit ENA = P1^4; //产生PWM波
sbit ENB = P1^5;
uint MA=0,MB=0;
uint SpeedA=20;//50%占空比
uint SpeedB=20;
void delay(uint z) {
uint x,y;
for(x=z;x>0;x--)
for(y=125;y>0;y--);
}
void main(void)
{
delay(1000) ;
delay(1000) ;
INPUT1=1;
INPUT2=0;
INPUT3=1;
INPUT4=0;
TH0 = 0xF4;
TL0 = 0x48;
TH1 = 0xF4;
TL1 = 0x48;
TMOD = 0x11;
TR0 = 1;
TR1 = 1;
ET0 = 1;
ET1 = 1;
EA = 1;
while(1){}
}
//时钟0中断处理函数
void time0_int() interrupt 1 using 1 {
TR0=0;
TH0=0xF4;
TL0=0x48;
MA++;
if(MA< SpeedA){
ENA = 1;
}
else ENA = 0;
if(MA == 40){
MA = 0;
}
TR0 = 1;
}
//时钟1中断处理函数
void time1_int() interrupt 3 using 1 {
TR1=0;
TH1=0xF4;
TL1=0x48;
MB=MB + 1;
if(MB < SpeedB){
ENB=1;
}
else ENB = 0;
if(MB == 40){
MB = 0;
}
TR1 = 1;
}