首先你的先知道什么是PWM。PWM是一种脉宽调制技术。简单的说就是在一个周期内高电平所占用的时间,通过改变脉冲的周期可以调频,改变脉冲的宽度或占空比可以调节驱动上的电压。
将产生的PWM信号接到L298N的ENA和ENB端调节不同的占空比从而调节速度
第一种方法用单片机的定时器模拟出PWM。假如你用定时器延时100ms,在50ms之前某一个引脚为低电平,50ms之后该引脚为高电平,这样高电平占用的时间为1/2,此时该引脚就会产生50%的占空比信号。
程序如下:
#include<reg52.h>
unsigned chartimer1;
sbit PWM=P1^1;
void system_Ini()
{TMOD|= 0x11;
TH1 = 0xfe; //11.0592
TL1 = 0x33;
TR1 =1;
IE=0x8A;
}
main()
{ system_Ini() ;定时器初始化
while(1)
{ if(timer1>100) timer1=0;
if(timer1<=30) pwm=0;//产生30%的占空比
else PWM=1;
}
}
另一种方法就是利用简单的延时产生PWM方波信号
#include<reg52.h>
unsigned char count=0;
sbit PWM_1=PI^1;//利用P1^1产生PWM
void mian()
{while(1)
for(count=0;count<=100;count++) //让单片机记100个数
{
If(count<=50){ PWM_1=1;}//前一半时间为高电平
else
PWM_1=0//后一半时间为低电平这样就产生了50%的占空比
}
PWM不仅能够控制小车速度还可以控制小灯的亮灭程度,朋友们可以去试试。水平有限,如果觉得对您有用请您推荐您的朋友关注我们,还请大神们轻喷。
联系客服