前不久我尝试着做了一下循迹小车,循迹小车说起来的话还不是特别的困难,对初学者来说就用89C51或者89C52芯片来说就好。
所需的材料:一辆车,电池,电源模块,驱动模块L298N,51芯片,51最小系统以及最重要的循迹模块。
循迹模块俗称红外对管,可以根据自己的去求来选择四路循迹模块,五路循迹模块或者什么别的循迹模块,一般意义上来说,循迹模块的数量越多,循迹的效果越好,但是实际操作上来看,是用不了那么多的循迹模块的,还是根据自己的需求来定吧,在这里我用的是红外对管,因为这个东西是一个一个单独分开的,可以根据你的需求来装配量以及位置非常的好调节。
四路循迹模块
五路循迹模块
而循迹模块,简单的来说就是红外对管的两个端口,输出端和接收端的作用。输出端口发射出去射线,射线发射到白色地方则被反射回来,接收管接收到反射光,经过51最小系统的调整后输出低电平;当红外光遇到黑线时则被吸收,接收管没有接收反射光输出高电平。
高低电平的判断表现是看循迹模块的那个板子上边的灯,买下东西你可以单纯的先调试一下这个灯和板子,选择好灯合适的角度,螺丝刀调节控制板上边的旋钮可以控制距离,在使用之前最好都调试好。
因此在当最左边的灯灭,其余三个灯亮的时候,黑色赛道是在小车的左边,车身偏移向赛道右边,这时候就需要控制小车往左边行驶;如果当中间的两个小灯灭了的时候,说明赛道是在小车的正中央的,因此这时候小车就需要控制小车直线行驶;类似的,同样右边的灯灭时,小车需要往右行驶。
如果在使用中发现高低电平不一样,不要慌,有原因的。不同厂家的产品不一样,所以有的厂家的产品是高电平接收,有的厂家是低电平接收,还有你看看自己做的电路有没有弄错了,或者其他问题导致的。在应用中,也有不少的人遇到本来应该输出低电平的红外接收管在实际工作时输出高电平,其中原因各种各样,只有你自己认真思考去找答案了。
当然在循迹之前,大家是需要先通过PWM调速来把电机的转速控制下来的,否则很容易出事的哦,我将会再写一期调速的文章。
下边我给大写简单的一点代码,大家可以参照着改
void check() //红外对管信号判断
{
if((D1==0)&&(D2==0)&&(D3==0)&&(D4==0))
{
flag=0;//都检测到的时候,输出信号值为0;
}
if((D1==1)&&(D2==1)&&(D3==0)&&(D4==0))
{
flag=1;//当左边检测到的时候,输出信号值为1;
}
if((D1==0)&&(D2==0)&&(D3==1)&&(D4==1))
{
flag=2;//当右边检测到的时候,输出信号值为2;
}
}
void lost() //丟线处理
{
if(flag==4||flag==1)
{
delay(10000);
check();
if(flag==4||flag==1)
{
while(flag==4||flag==1)
{
backrun();
check();
}
}
}
}
void Trace() //红外对管返回值的判断并输出
{
check();
switch(flag)
{
case 0: run();delay(100);stop();delay(100);break;
case 1: leftrun();delay(100);stop();delay(100);break;
case 2: rightrun();delay(100);stop();delay(100);break;
}
lost();
}
以上就是一点循迹小车的制作方法,希望能帮助到大家。