51四轮五路红外寻迹小车

要求:把基础的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;}  
}

未完

经验分享 程序员 微信小程序 职场和发展