资源预览内容
第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
第9页 / 共12页
第10页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
智能控制课程设计成员:完成时间:智能循迹小车摘要:本设计是一种基于单片机控制的简易自动寻迹小车系统,包括小车系 统构成软硬件设计方法。小车以飞思卡尔单片机 MC9S12DG128 为控制核心, 用 单片机产生PWM波,控制小车速度。利用红外光电传感器对路面黑色轨迹进行检 测,并将路面检测信号反馈给单片机。单片机对采集到的信号予以分析判断,及时 控制驱动直流电机以调整小车转向,从而使小车能够沿着黑色轨迹自动行驶 ,实 现小车自动寻迹的目的。关键词:单片机单片机MC9S12DG128光电传感器 直流电机 自动循迹目录目 录 II1. 任务及要求 11.1 任务 12. 系统设计方案 12.1 小车循迹原理 12.2控制系统总体设计 23. 模块方案 23.1 寻迹传感器模块 23.2 控制器模块 23.4 电机驱动模块 23.5 电源模块 44.软件设计 44.1 PWM 控制 44.2 总体软件流程图 44.3 小车循迹流程图 5结束语 6附录 1 单片机测序 71. 任务及要求1.1 任务设计一个基于直流电机的自动寻迹小车,使小车能够自动检测地面黑色轨迹,并沿着黑色车轨迹行驶。系统方案方框图如图 1-1 所示。检测(黑线)*软件控制 一驱动电机*控制小车图 1-1 系统方案方框图2. 系统设计方案2.1 小车循迹原理这里的循迹是指小车在白色地板上循黑线行走,由于黑线和白色地板对光线 的反射系数不同,可以根据接收到的反射光的强弱来判断“道路”。通常采取的 方法是红外探测法。红外探测法,即利用红外线在不同颜色的物体表面具有不同的反射性质的 特点,在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色纸质地板 时发生漫反射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸 收,小车上的接收管接收不到红外光。单片机就是否收到反射回来的红外光为依 据来确定黑线的位置和小车的行走路线。红外探测器探测距离有限。红外探测原理图如图1-2 所示。图 1-2 红外探测原理图2.2 控制系统总体设计自动循迹小车控制系统由主控制电路模块、稳压电源模块、红外检测模块、电机及驱动模块等部分组成,控制系统的结构框图如图2-1所示。图 2-1 控制系统的结构 框图3. 模块方案3.1 寻迹传感器模块反射式光电传感器是经常使用的传感器。我们采用的BFD-1000光电传感器价 格便宜、体积小、使用方便、质量可靠、用途广泛。在黑线检测的测试中,若检测到白色区域,发射管发射的红外线没有反射到 接收管,测量接收管的电压为4. 8V ,若检测到黑色区域,接收管接受到发射管 发射的红外线,所得电压也就随之发生变化,测的接收管的电压为0V,测试基本 满足要求。3.2 控制器模块采用飞思卡尔公司的 MC9SDG128 单片机作为主控制器。它是一个低功耗, 高性能的16位单片机,其单片机CPU外部总线频率为8MHz,内部运算速度可达 25MHz,运行速度快。I/O 口资源丰富,具有SPI、SCI、I2C等模块。且具有PWM 输出功能,更便于控制小车的车速及转向。3.4 电机驱动模块驱动模块采用专用芯片 L298N 作为电机驱动芯片, L298N 是一个具有高电 压大电流的全桥驱动芯片,其响应频率高,一片L298N可以分别控制两个直流电机。以下为L298N的引脚图和输入输出关系表。11I51012ENAENBSF.NSFASENSEBINITN2N3TN4+VSOUTI0UT20UT30UT4GM?13ENAINIIN2电机运行情况HHL正转HLH反转HIN2INI快速停止LXX停止图 3-1 L298N 外部引脚表 1 L298N 输入输出关系驱动电路的原理图如图3-2所示:DI-5斗20K= tllENB20KD13Cl1:4C31042.2KD4L2P8N系jLi9DlLDljLLD12=U2巨机券埜方向誥录灯ISEN AISENBGNDGNDENBENAOUTIOUT!OUT3OUT4二 2 OUT-3 OUT2口 OUT3|GKDIN OUT谟巨送捞开关EXE图 3-2 驱动电路原理图21斗365E7巨tl控朝L298N 的 5、7、10、12 四个引脚接到单片机上,通过对单片机的编程就可 实现两个直流电机的 PWM 调速控制。3.5 电源模块系统中液晶显示模块,键盘模块需用到5V电压源,将开关电源12V电压输 出经过7809转换为9V电压,再经过7805转换为5V电压。电压电路设计如图 3-4 (a)和(b)所示。a) 12V9V 电压源电路b) 9V5V 电压源电路图 3-3 电压源电路设计图4. 软件设计4.1 PWM 控制本系统采用脉冲宽度调制(PWM)来调节直流电机的速度。PWM是利用微处理器 的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、 通信到功率控制与变换的许多领域中。此设计所使用的单片机自带PWM输出功能,通过PWM的寄存器设置,对PWMDTY 和PWMPER写值,来达到不同的占空比,当电机通电时,速度增加;电机断电时, 速度逐渐减少。只要按一定规律,改变通、断电的时间,即改变PWM占空比即可让 电机转速得到控制。4.2 总体软件流程图小车进入寻迹模式后,即开始不停地扫描与探测器连接的单片 I/O 口,一 旦检测到某个 I/O 口有信号变化,就执行相应的判断程序,把相应的信号发送 给电动机从而纠正小车的状态。软件的主程序流程图如图 4-1 所示:4.3 小车循迹流程图小车进入循迹模式后,即开始不停地扫描与探测器连接的单片机 I/O 口,一 旦检测到某个 I/O 口有信号,即进入判断处理程序,我们所希望的是在黑线非交 叉和空白时由中间的探测器一直检测得到黑线,在小车运行过程中先确定 5 个探 测器中的哪一个探测到了黑线,如果左面第一级传感器或者左面第二级传感器探 测到黑线,即小车左半部分压到黑线,车身向右偏出,此时应使小车向左转;如 果是右面第一级传感器或右面第二级传感器探测到了黑线,即车身右半部压住黑 线,小车向左偏出了轨迹,则应使小车向右转。在经过了方向调整后,小车再继 续向前行走,并继续探测黑线重复上述动作。在黑线交叉或空白时即认为直线前 进,但速度可以降下来。图 4-2 循迹流程图结束语此次智能控制课程设计,我们以小组为单位进行设计,此次设计的智能循迹 小车最后测试结果比较好,然而在设计过程中曾遇到了许多难题,包括小车的组 装,单片机的使用,尤其是在编程调试阶段花去了大量时间,由于此次设计选用 的车体较小,输出力矩小,小车在低速配重较大时不能转动,所以必须以较快的 车速来运行,这又带来了车速太快容易冲出跑道的情况,经过多次尝试,最终总 算调试出比较满意的效果。在掩饰过程中,由于环境的变化,小车在现场不能跑 出往常一样的效果。此时,精我组成员细心检查,终于发现是由于循迹模块距离 地面太低而是小车循迹失误,知道原因后,在现场很快拆卸重装,最后演示时跑 出了往常效果。从这次课程设计中,我们加强了自己的专业知识,也锻炼了我们 现场排查事故,快速解决的动手能力。附录1 单片机测序#include /* common defines and macros */#include /* derivative information */#include Includes.h/总头文件#define INT16U unsigned intvoid PWM_Init(void)PWME=0x00;PWMPRCLK=0x43;设置B时钟16分频,A时钟8分频PWMSCLA= 0x08;/设置SA的分频系数8PWMCLK=0x00; 0和1通道使用A时钟控制小车,2,3通道使能B时钟驱动超声 波PWMPOL=0x0F; /极性先高后低PWMCAE=OxOO;左对齐输出PWMCTL=0x20; /2.3 级联PWMDTY23 = 11;设置周期寄存器11usPWMPER23 = 65535;/设置占空比寄存器 655msPWME =OxOF;使能0和1, 3通道void main(void)MCUInit();EnableInterrupts;PWM_Init();DDRA=0x00; / A 口输入PORTA=0x00;DDRH=0xFF; /H 口输出控制 IN1,IN2,IN3,IN4PTH=0x00;for(;)if(PORTA=7)ll(PORTA=19)/向右转Speedctrl(1,42);/PTP_PTP0=1;PTH_PTH0=1;/电机左轮前转PTH_PTH1=0;Speedctrl(0,45);PTH_PTH2=0;/电机右轮后转PTH_PTH3=1;else if(PORTA=15)/向 右转Speedctrl(1,80);/PTP_PTP0=1;PTH_PTH0=1;/电机左轮前转PTH_PTH1=0;Speedctrl(0,75);PTH_PTH2=0;/电机右轮后转PTH_PTH3=1;else if(PORTA=23)/佝右转Speedctrl(1,60);/PTP_PTP0=1;PTH_PTH0=1;/电机左轮前转PTH_PTH1=0;Speedctrl(0,64);PTH_PTH2=0;/电机右轮后转PTH_PTH3=1;else if(PORTA=25)|(PORTA=28) /向/ 左转Speedctrl(1,60);PTH_PTH0=0;/电机左轮后转PTH_PTH1=1;Speedctrl(0,60);/PTP_PTP1=1 ;PTH_PTH2=1;/电机右轮前转PTH_PTH3=0;/ Delay(500);else if(PORTA=29) /向左转Speedctrl(1,70);PTH_PTH0=0;/电机左轮后转PTH_PTH1=1;Speedctrl(0,65);/PTP_PTP1=1 ;PTH_PTH2=1;/电机右轮前转PTH_PTH3=0;else if(PORTA=30) /向左转Speedctrl(1,75);PTH_PTH0=0;/电机左轮后转PTH_PTH1=1;Speedctrl(0,80);/PTP_PTP1=1 ;PTH_PTH2=1;/电机右轮前转PTH_PTH3=0;else if(PORTA=27)/检测交叉,前进Speedctrl(0,40);PTH_PTH2=1;/电机右轮前转P
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号