51单片机的L298N直流电机驱动(PWM)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

}

相关文档
最新文档