1、目录 绪论 . 2 1.硬件设计 . 3 1.1 方案选择 . 3 ( 1)主控芯片的选择 . 3 ( 2)驱动电路的选择 . 3 ( 3)传感器的选择 . 4 ( 4)电机 的选择 . 4 ( 5)电机控制方式的选择 . 4 ( 6)循迹方案的选择 . 4 1.2 硬件原理图 . 5 2.软件设计 . 6 2.1 软件流程图 . 6 2.2 软件工作原理介绍 . 6 3.调试 . 8 3.1 硬件调试 . 8 3.2 软件调试 . 8 4.总结 . 9 附录 . 10 2 绪论 本设计是一种基于单片机控制的简易自动寻迹小车系统,其研究意义涵盖了工业、生活、勘探以及人类关注的探月工程。设计旨在
2、设计出一款可以自主按照人类预设的轨迹行走(或者完全自主行走)并完成指定任务的小车。从设计的功能要求出发,设计包括小车机械构成设计和控制系统的软硬件设计。我采用 简易三 轮构架式,用 前 轮驱动 及 换向的控制模式。控制系 统以 STC89C52 为控制核心 , 用单片机产生 PWM 波,控制小车速度。利用红外光电传感器对路面黑色轨迹进行检测 ,并确定小车当前的位置状态,再将路面检测信号反馈给单片机。单片机对采集到的信号予以分析判断 ,及时控制驱动电机以调整小车转向 ,从而使小车能够沿着黑色轨迹自动行驶 ,实现小车自动寻迹的目的。 关键词 : 循迹小车,单片机,红外传感器 3 1.硬件设计 1.
3、1 方案选择 ( 1)主控芯片的选择 图 1 AT89C51 最小系统 小车采用 STC89C52 单片机作为控制芯片, 图 1 是其最小系统电路。主要包括:时钟电路、电源电路、复位电路。其中各个部分的功能如下: 1、 时钟电路:给单片机提供一个外接的 12MHz 的石英晶振。 2、电源电路:给单片机提供 5V 电源。 3、复位电路:在电压达到正常值时给单片机一个复位信号。 ( 2)驱动电路的选择 采用 L298N 直流电机驱动芯片驱动直流电机转动,通过 PWM脉宽平滑调速控制直流电机运转。工作电压高,其最高工作电压可达4 46V,输出电流大,其瞬间峰值电流可达 3A,持续工作电流为 2A;额
4、定功率 25W。内含两个 H 桥的高电压大电流全桥式驱动器,可以用 来驱动直流电动机和步进电动机、继电器线圈等感性负载。 ( 3)传感器的选择 本题目中循迹小车需要在跑道上寻找到由黑色胶带形成的路径,根据红外线在白色环境中可反射被接收管接收,而在黑色环境中红外线被吸收无法反射因此 接收管无法接收到红外线信号的特性 选择红外对管为本题目传感器。 ( 4)电机的选择 采用直流减速电机。直流减速电机转动力矩大,体积小,重量轻,装配简单,使用方便。由于其内部由高速电动机提供原始动力,带动变速(减速)齿轮组,可以产生较大扭力。 ( 5)电机控制方式的选择 采用 H 型桥式驱动电路。直流电机驱动电 路使用
5、最广泛的就是 H型全桥式电路,这种驱动电路可以很方便实现直流电机的四象限运行,分别对应正转、正转制动、反转、反转制动。 ( 6)循迹方案的选择 在车模前方 正中间位置的左右两侧各安装一个红外对管集成模块,当在直道上时两个对管均可接收到 。 5 1.2 硬件原理图 6 2.软件 设计 2.1 软件流程图 图 2 小车软件流程图 2.2 软件工作原理介绍 #include #define uint unsigned int #define uchar unsigned char sbit ENA=P27; /*左电机驱动使能 */ sbit ENB=P26; /*右电机驱动使能 */ sbit i
6、n1=P25; /*左电机前进 */ sbit in2=P24; /*左电机后退 */ sbit in3=P23; /*右电机前进 */ 开始 初始化 右 转 直行 直行 启动小车 左右都未 检测到 黑线 左右都 检测到 黑线 右 检测到 黑线 左检测到 黑线 左转 按键是否按下 7 sbit in4=P22; /*右电机后退 */ sbit senle=P14; /*左传感器 */ sbit senri=P15; /*右传感器 */ void delay_50us(uint t) /*延时函数,大约 50us 的延时 */ uchar j; for(;t0;t-) for(j=19;j0;j
7、-); void straight() /*小车直线行走函数 */ in1=1;in2=0; delay_50us(50); in1=1;in2=1; delay_50us(20); in3=1;in4=0; delay_50us(50); in3=1;in4=1; delay_50us(20); void turnleft() /*小车左转 函数 */ in1=1;in2=0; delay_50us(10); in1=1;in2=1; delay_50us(20); in3=1;in4=0; delay_50us(50); in3=1;in4=1; delay_50us(20); void
8、turnright() /*小车右转函数 */ in1=1;in2=0; delay_50us(50); in1=1;in2=1; delay_50us(20); in3=1;in4=0; delay_50us(10); in3=1;in4=1; delay_50us(20); void main(void) /*主函数 */ 8 ENA=1;ENB=1; while(1) if(senle=1 else if(senle=0 else if(senle=1 3.调试 在硬件电路搭建与软件设计完成之后对其分别进行调试,调试过程与结果如下: 3.1 硬件调试 第一步 , 对单片机最小系统进行 调
9、试 ,烧录一个简单程序到单片机,上电后检测对应引脚电平 ,若与程序一致则没有问题,否则最小系统存在问题( P0 口需上拉电阻);第二步,对 L298N 驱动模块进行调试 ,将两个直流电机接入驱动电路烧录测试程序(正转、反转、停止)通电后观察电机运行情 况,若与程序不符检查 L298N 各引脚电平并与理论值比较至电机正常运转;第三步,对 传感器进行调试,分别将对管放在白色与黑色环境下检测输出端电压,若正常则只需调节电位器 改变其灵敏度至当前传感器离地面高度下最佳状态。 进过调试后 , 小车硬件各模块均能正常工作 。 3.2 软件调试 按循迹原理编写程序, 烧录至单片机进行软件调试,观察调试结果
10、,若出现弯道冲出跑道或转弯不流畅情况需减小直道时左右电机输入的 PWM,增大转弯时左右电机输入 PWM 的差值。 9 4.总结 这次循迹小车课程设计不得不说是个大工程,让我们从中学会了许多东西 ,特别是分工与合作。从最开始的买元器件,到焊接、调试循迹板,再到 FGPA 的 VHDL 程序和 C 语言程序的编写,都不简单。我们的循迹板在第一次焊接完毕,经过调试后,能正常工作。但是,当我们把它装在小车上让它去跑时,问题就来了,有个灯就不亮了。后来经过检测后,终于又弄好了。然后在写 C 语言时,主要就是调节小车的速度和转弯时的角度。而最难的是 FPGA 程序的编写,特别是音乐的编程,真的很复杂,花了我们很多时间才把它写好。而 1602液晶的编写,用到了我们没有学过的状态机,经过查找资料后,才弄清楚状态机到底是什么回事。 由于 这次课程设计的工作量很大,所以我们组这次的分工非常明确。一个人写 C 语言程序,一个人写 VHDL 程序,一个人负责循迹板的焊接与调试,还有一个负责资料的收集和报告的书写。最后,经过我们组的分工协作,终于把循迹小车的制作完成了。这次课程设计,收获最大的,还是告诉了我们要主动去学习新的知识。 10 附录