一.概要
对于刚学完51单片机的同学们来说,做个项目是最好的选择。在众多项目中,循迹小车是最好的选择,涵盖了51单片机大部分知识点。
二.整体架构流程
本版本的循迹小车用到的主要技术模块有:利用PWM对电机进行调速,红外避障模块,超声波避障模块,四路红外寻迹模块,舵机控制,蓝牙控制。
三.Day1做的事
1.准备的材料
L298N电机驱动模块(两个)
可充电12V锂电池
一档小开关
51最小系统 (芯片是STC89C52RC)
AMS117-5.0V降压模块
4个电机,4个轮子,一个车身架子
n条杜邦线
一卷比较粗的电线,能承载6A以上的电流
一个USB-TTL的下载器
2.接线!
--1.先让四电机分别与两个L298N模块项连接(一个电机两极分别连接到相邻的OUTx上)
--2.再把电源与开关的线按图中的方式接好(开关一定要接在正级)
--3.再让两L298N模块并联
--4.让L298N模块与AMS117-5.0V降压模块并联
--5.再把稳压模块与51最小系统连接
注意:从电源出来的线不能是杜邦线,必须得是比杜邦线粗的电线(能承载6A以上的电流),否则当所有模块装好之后,有些模块可能会因为电流太小而带不动。
--6.把51最小系统的引脚用杜邦线接在L298N模块的ENA到ENB这六个接口上,如图
3.代码
根据接的IO口写代码,我接的顺序是
因此代码为
#include <REGX52.H>
//左前轮
sbit IN11 = P0^3;
sbit IN12 = P0^4;
//右前轮
sbit IN13 = P0^5;
sbit IN14 = P0^6;
//左后轮
sbit IN21 = P3^3;
sbit IN22 = P3^4;
//右后轮
sbit IN23 = P3^5;
sbit IN24 = P3^6;
void main()
{
while(1)
{
//左前轮 IN11=1,IN11=0前进 IN11=0,IN11=1后退
IN11=1;
IN12=0;
//右前轮 IN13=0,IN14=1前进 IN11=1,IN11=0后退
IN13=1;
IN14=0;
//左后轮 IN21=1,IN22=0前进 IN21=0,IN22=1后退
IN21=0;
IN22=1;
//右后轮 IN23=0,IN24=1前进 IN23=1,IN24=0后退
IN23=0;
IN24=1;
}
}
注:由于电机的极性,电线的接法各不相同,于是轮子向前或者向后所给的代码也不相同,但没有关系,可以一个个电机调试,最后得出哪些IO口怎么给电平是正确的。
4.烧录的注意事项
很可能一开始一直烧录不进去,会卡在正在扫描单片机那里,多插拔几次下载器就好了,多烧录几次就好了。(具体原因还没找到)
四,每日小结
今天的任务就是让小车动起来了,花时间最多的地方是在接线,作者为了做的更好,在很多连接口都选择了锡焊,花了很多时间,但也是锻炼自己焊接能力的机会。最终得出的结论就是实践出真知,很多问题都是在实践中发现的,但是办法总比困难多,不要放弃!接下来作者会持续发表做循迹小车的日记。