要求:把基础的C语言过关,学习一下硬件的原理(电机的控制,循迹模块怎么使用),PWM调速。
#实验器材:
51单片机(最小系统板),
两个L298N驱动模块(分别驱动两个直流电机),
5个红外循迹模块,
小车底盘带电机,
降压模块(用于12V转5V),
12V锂电池,
杜邦线,排针(我的接口不够就引出了VCC和GND)
下面说一下硬件的接法:
L298N
四轮循迹小车要用两个驱动模块,前两个轮共用一个,后两个共用一个,具体的连线装车教程可以参考一下b站up主“ANME俱乐部“的组装视频。
若要对直流电机进行pwm调速,需拔掉使能通道A,B的盖帽,然后对使能端输出pwm脉冲,即可实现调速,当使能信号为0时,电机处于停止不转状态,也就是接上电源后也不转;当使能信号为1,IN接口为1时电机转动。
红外循迹模块
降压(稳压)模块
由于我用的是12V的锂电池,所以用了个降压模块降成了5V来给单片机单独供电
调速
在并没有了解过PWM的情况下,怎么调速呢?
当时我有一同学用stm32做的小车,用延时就实现了小车的调速,完成了地图上复杂的循迹。我用实践证明,用延时确实是可行的。
后来学了PWM,试着用PWM调速
PWM,就是通过改变高低电平的占空比实现,
void Timer0_Init()
{
TMOD|=0x01; //way0
TH0=(65536-50)/256;
TL0=(65536-50)%256;
ET0=1; //开启定时器0中断
TR0=1; //启动定时器
EA=1; //开启总中断
}
void Timer0Init() interrupt 1
{
TH0=(65536-100)/256;
TL0=(65536-100)%256;
t++;
if(t<pwmA) { zuoqian=0;zuohou=1;}
else { zuoqian=1;zuohou=0;}
if(t<pwmB) {youqian=0;youhou=1;}
else {youqian=1;youhou=0;}
if(t>=100)
{t=0;}
}
未完