首先你的先知道什么是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不仅能够控制小车速度还可以控制小灯的亮灭程度,朋友们可以去试试
-
单片机
+关注
关注
6032文章
44516浏览量
633018 -
PWM
+关注
关注
114文章
5144浏览量
213403 -
定时器
+关注
关注
23文章
3237浏览量
114467
发布评论请先 登录
相关推荐
评论