《循迹小车设计报告.doc》由会员分享,可在线阅读,更多相关《循迹小车设计报告.doc(3页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、循迹小车设计报告作品名称:黑色印记循迹遥控小车设计要求:1、 设计一套循迹小车,外形如下图所示(可以从淘宝上购买散件)2、小车可以在1.5m*1m的黑色跑道上按照黑色印记前进3、增加遥控功能,包括前进,后退,停车4、提高小车的运行速度5、拍摄一段方案说明及电路仿真视频,并上传到Youku视频6、提交一份1000字以内的设计报告,附主要的原理图和代码实验器材:车轮、直流电机、小车底板、单片机、黑色传感器、导线、电源功放电路板、反相器、直流电源、无线串口模块。设计思路:本系统采用简单明了的设计方案。通过黑色传感器模块判断黑色路径,将所感知的信号传送到单片机系统,然后单片机系统根据预先编订的程序,控
2、制直流电机,控制小车车轮的转向,从而实现智能循迹。实验原理及其设计 小车组装部分设计:小车车轮采用两车轮为前轮,后轮为一金属万向轮,车身底板采用铝制材料底板,连接使用螺丝组装。外形如下图所示:硬件电路设计:小车采用Arduino单片机作为控制芯片,如下图所示单片机控制电路:主要包括:时钟电路、电源电路、复位电路。其中各个部分的功能如下:1. 时钟电路:给单片机提供一个外接的16MHZ的石英晶振。2. 电源电路:给单片机提供5V电源。3. 复位电路:在电压达到正常值时给单片机一个复位信号。将Arduino单片机进行扩展使用,外形如下图:传感器电路:光电寻线方案一般由多对红外收发管组成,通过检测接
3、受到的反射光强,判断黑白线。原理图由红外对管和电压比较器两部分组成,红外对管输出的模拟电压比较器转换成数字电平输出到单片机,原理图如下:遥控部分电路设计:小车增加遥控功能实现远程控制小车的前进后退,左右转弯。采用两块无线串口模块,将其安装在Arduino控制板上,一块板子作为遥控器,另一块装在小车上,实现远程控制。外形如下:电机驱动电路:电机采用网上购买的一种二相和四相电机的专用驱动器,通过单片机控制电机的正转和反转,实现小车的方向控制。遥控循迹小车整体外观图:程序部分:采用Arduino的程序设计,如下:intMotorRight1=5;intMotorRight2=6;intMotorLe
4、ft1=9;intMotorLeft2=10;const int SensorLeft=2;/左感测器输入脚constintSensorRight=3;/右感测器输入脚intSL;/左感测器状态intSR;/右感测器状态voidsetup()Serial.begin(9600);pinMode(MotorRight1,OUTPUT);/脚位14(PWM)pinMode(MotorRight2,OUTPUT);/脚位15(PWM)pinMode(MotorLeft1,OUTPUT);/脚位16(PWM)pinMode(MotorLeft2,OUTPUT);/脚位17(PWM)pinMode(Se
5、nsorLeft,INPUT);/定义左感测器pinMode(SensorRight,INPUT);/定义右感测器voidloop()SL=digitalRead(SensorLeft);/SM=digitalRead(SensorMiddle);SR=digitalRead(SensorRight);if(SL=LOW&SR=LOW)/digitalWrite(MotorRight1,HIGH);digitalWrite(MotorRight2,LOW);analogWrite(MotorRight1,30);analogWrite(MotorRight2,0);digitalWrite(M
6、otorLeft1,HIGH);digitalWrite(MotorLeft2,LOW);analogWrite(MotorLeft1,10);analogWrite(MotorLeft2,10);else/if(SL=HIGH&SR=LOW)/左黑右白,快速左转delay(1);digitalWrite(MotorRight1,HIGH);digitalWrite(MotorRight2,LOW);analogWrite(MotorRight1,10);analogWrite(MotorRight2,10);digitalWrite(MotorLeft1,LOW);digitalWrite(
7、MotorLeft2,LOW);elseif(SR=HIGH&SL=LOW)/左白右黑,快速右转delay(1);digitalWrite(MotorRight1,LOW);digitalWrite(MotorRight2,LOW);digitalWrite(MotorLeft1,HIGH);digitalWrite(MotorLeft2,LOW);analogWrite(MotorLeft1,10);analogWrite(MotorLeft2,10);else/都是白色,停止digitalWrite(MotorRight1,LOW);digitalWrite(MotorRight2,LOW);digitalWrite(MotorLeft1,LOW);digitalWrite(MotorLeft2,LOW);