《遥控智能小车单片机课设》由会员分享,可在线阅读,更多相关《遥控智能小车单片机课设(20页珍藏版)》请在金锄头文库上搜索。
1、课课 程程 设设 计计 任任 务务 书书一设计目的通过此课题的研究学习,可以是自己学到的知识应用到实际中去,对单片机的控制方法有了进一步了解。另外,通过此次设计, 可以提高自己的动手能力。二、设计任务设计并制作了一个智能电动车,其行驶路线满足所需的要求。三、具体要求1、基本要求(1)制作一个长不小于 25cm,宽不小于 20cm,高度不限的小车。重量不少于 1500g(包括电池,重量不足要加配重) ,车身支撑轮不超过 4 个。(不允许直接购买现成的车模)(2)制作一个无线遥控(可以购买现成的无线数据通信模块,但不允许购买现成的无线遥控) ,通过遥控可以控制小车前进,转弯。转弯要亮左右灯(可以人
2、工用遥控控制灯的亮灭)2、发挥部分(1)遥控使用摇杆电阻(游戏手柄中的摇杆) ,不允许使用按键开关来控制。刹车、左右灯可以使用按键开关。(2)加入倒车功能,倒车要亮倒车灯。2摘摘 要要为了达到设计的要求,我们使用了 MSP430F149 为车上主控制芯片,STC12C5A 为遥控控制芯片。无线传输使用了 315M 无线传输模块,该模块采用了 PT2262/PT2272 进行编解码,拥有 6 位数据端管脚;遥控采用了摇杆电位器,将电位器滑动端的电压与参考电压比较,得到摇杆的位置,通过单片机编码,传输给小车上的单片机,小车上的单片机通过解码来控制小车的行驶及各种动作;电机驱动使用了 L298N,通
3、过单片机输出的 PWM 波来控制小车行驶的速度、小车行驶的方向;小车系统使用 12V 可充电锂电池进行供电,遥控使用 9V 的碳性电池进行供电,传输距离可达,抗干扰能力强,系统可靠稳定。3目录目录1、方案设计与论证 51.1 系统方案 51.2 方案论证 52、原理分析与硬件电路图82.1 电源转换部分82.2 电机驱动部分82.3 无线通信部分942.4 遥控部分113、软件设计124、系统测试与误差分析135、参考文献146、附件1451、方案设计与论证方案设计与论证1.1 系统方案1.2 方案论证1)MCU 选择方案一 控制部分的核心采用传统的数字逻辑芯片来实现。系统共有启动、加速前进、
4、后退、限速前进及后退等几个状态。且各个状态保持或转移的条件依赖与外部传感器(光传感器、霍尔传感MCU指示灯整车、电池及系统供电部分电机驱动 部分解码芯片MCU比较器摇杆电位器编码芯片按键6器、超声传感器)送来的信号。由于外部传感器器较多,需要较多的传感器接口电路。系统的逻辑状态以及相互更是复杂,用纯粹的数字电路或者小规模的可编程逻辑电路实现该系统有一定的困难,且一般的可编程逻辑器件体积较其他的单片机都较大,且成本较高。方案二 该小车可看成一个自动控制系统,这样的系统用单片机来实现比较合适。MSP为超低功耗的单片机,对与整个系统的长时间运行十分有利;同时 MSPS的丰富可以进行很多的扩展,同时它
5、可以输出 PWM 波,对于电机的控制极其方便。显然方案二具有较好的可选择性,实际系统采用的 MSPS为主控制器。2)电源选择由于该系统由电池供电,且要给干扰很大的电机供电,功耗也不能太高。该电路中功耗较大是电动机和 CPU。方案一 使用 DCDC 变换的开关电源稳压芯片,效率高,输出电压稳定,但是开关电源固有的频率会对整个系统的稳定造成极大的影响,对于传感器的稳定性影响也较大方案二 使用 DCDC 变换的线性稳压电源芯片,效率较低,输出电压较稳定,对其他器件的影响较小或者几乎没有,考虑到系统的稳定性比功耗更重要,我们选择了方案二。3)电机驱动选择7该系统采用 PWM 方式对电机进行控制,由于
6、MSP430 的驱动能力有限,需加驱动级。方案一 使用集成电机驱动芯片 L298N,该芯片采用桥是驱动电路,内不包含 4 通道逻辑驱动电路,可以直接驱动两个直流电机,并且体积较小,需要接的外部器件也比较小,因此板子可以做的比较小,方便在小车上安装与使用。L298N 内部电路如下:方案二 用分立元件搭建驱动电路,这样做电路的参数选择性较大,可以提供更高的驱动能力,但电路板需要占用较大的面积,并且本系统中队驱动电流的要求不是太高,L298N 完全可以满足,因此本系统中采用择方案一。82、原理分析与硬件电路图原理分析与硬件电路图2.1 电源转换部分电池供电电压为 7.4,需要的电压为V 和 3.3,
7、分别使用了常用的V 稳压芯片 7805 和常用的 3.3稳压芯片 ASM1117。7805 的最大输出电流为 1.5,远远超过系统所需的电流,且只需接两个电容即可稳定工作,在系统工作时,7805 上的压降为2.4系统最大的大流不超过 400MA,7805 上的功耗不超过W 故省略了散热器,节省了整车的空间。AMS1117 仅为低功耗的 MSP430 供电,可以十分宽松的为其供电,保证其正常工作。2.2 电机驱动部分采用如图所示电路9L298N 能够提供高达 2A 的电流,能够满足本系统中电机的功耗,图中 D1D8 使用 1N4001,作用是防止电机中因电磁感应产生的电流倒灌,烧坏 L298N,
8、图中 6 脚和 11 脚位使能端,当输入高时,输入脚 5,7,10,12 才对输出脚 2,3,13,14 有控制作用,其中 5 脚、7 脚和10 脚、12 脚分别可以控制电机 B 和 A 的正转、反转和停止,逻辑功能如下表:2.3 无线通信部分通信采用 PT2262/2272,其中 PT2262 为无线发送芯片,PT2272解码输出。编码芯片 PT2262 发出的编码信号由:地址码、数据码、同步码组成一个完整的码字,解码芯片 PT2272 接收到信号后,其地址码经过两次比较核对后,VT 脚输出高电平,与此同时相应的数据脚10也输出高电平,如果发送端一直发送,编码芯片也会连续发射。当发射机没有数
9、据发送时,PT2262 不接通电源,其 17 脚为低电平,所以 315MHz 的高频发射电路不工作,当有数据发送时,PT2262 得电工作,其第 17 脚输出经调制的串行数据信号,当 17 脚为高电平期间 315MHz 的高频发射电路起振并发射等幅高频信号,当 17 脚为低平期间 315MHz 的高频发射电路停止振荡,所以高频发射电路完全收控于 PT2262 的 17 脚输出的数字信号,从而对高频电路完成幅度键控(ASK 调制)相当于调制度为100的调幅。112.4 遥控部分经测试摇杆电位器在具有 8 个方向,分别为左、右、前、后、左前、左后、右前、右后。由于摇杆电位器并非绝对的对称故分压仅接
10、近与 0.5Vcc,故我们使用了比较器,将输出的电压与参考电压进行比较获得较稳定的输出给单片机。遥控的整个样式采用了游戏手柄的样式,更具娱乐性。123、软件设计软件设计小车接收部分:遥控部分:系统初始化Msp430f149 循环检测接收信息控制车辆运行检测摇杆输出结果检测按键情况STC12C5A60S2 系统初始化将信息编码后发给无线模块适当时刻改变车灯状 态134、系统测试与误差分析系统测试与误差分析小车遥控测试测试组测试数据实际数据误差测试组测试数据实际数据误差1前前07左后左后02后后08右前右前03 左左09右后右后04右右010按键 1按键 105左前左前011按键 2按键 206按
11、键 3按键 3012按键 4按键 40测试过程准确无误,运行正常。 (无其他干扰状况)145、参考文献参考文献msp430 系列 16 位超低功耗单片机原理与应用 清华大学出版社51 单片机 C 语言教程 郭天祥 电子工业出版社6、附件、附件元器件明细表:名称数量作用315M 无线收发模块1无线通信摇杆电位器1遥控LM3391比较器电阻若干-电容若干-780525V 稳压AMS1117133V 稳压L298N1电机驱动二极管8电机驱动MSP430F1491主控制器STC12C5A1遥控控制器按钮4遥控控制键15程序/*- LCD模块 -*/void LCDInit(void);/LCD初始化v
12、oid SetWriteCmd(void);/设置写命令模式void SetReadCmd(void);/设置读命令模式void SetWriteData(void);/设置写数据模式void WriteCmd(char cmd);/写命令void WriteData(char ddata);/写数据void ExecuteCmd(void);/执行命令void SetXY(char x,char y);/定位显示地址void DisplaySingleChar(char x,char y,char cchar);/显示单个字符void DisplayString(char x,char y,
13、char *str); /显示一段字符串void Delay(unsigned int time);/延时主程序void DelayUs(unsigned int time);/延时子程序bit IsBusy(void);/判断忙标志函数void DisplayTime(void);/显示时间void DisplayAVGSpeed(void);/显示平均速度void DisplayDistance(void);/显示路程/*- 测速/测距/测时模块 -*/void INTInit(void); /所有中断初始化void SpeedINT(void); /测速中断void ComputeTime(void);void ComputeSpeedANDDistance(void);/计算速度和距离/*- 控速模块 -*/void CtrSpeedINT(void); /控速中断void Time0INT(void); void Time1INT(void); /控速单位时间中断void Clock0_Init(void);/时钟中断初始化void Clock1_Init(void); /时钟中断初始化void CtrSpeed(void);/*-主函数 -*/void main()P01=