1、电动车跷跷板设计研究 全国大学生电子设计竞赛山东省一等奖电动车跷跷板设计研究全国大学生电子设计竞赛山东省一等奖摘要 本设计采用两个凌阳SPCE061A 16位单片机作为控制核心。其中一个安装在小车上,另一个持在使用者手中连接键盘和LCD,通过无线模块进行双机通讯,实现远程对小车运行状态的实时监测。为了对小车的行为进行精确控制,采用步进电机进行驱动。系统通过倾角传感器采集跷跷板的倾角变化后传给单片机。程序控制方法采用PID算法,使小车通过一个二阶欠阻尼脉冲响应过程最后趋于动态平衡。根据设计需要,车体采用有机玻璃与铝合金自制而成。关键词:SPCE061A单片机,角度传感器,光电传感器,PID算法.
2、Abstract:This system takes two SPCE061A 16 bit microprocessor as the control center, one fixed on the car and another connected with keyboard and LCD handed by the controller. In this system, wireless is used to complete the two processors communication to acquire a perfect interface between the con
3、troller and the whole control system. The car with four wheels is driven by two stepper motors, and through the angle sensitive gathering the information about the teeterboards equinity condition and then send to the microprocessor. The system takes the PID as main control method, through a progress
4、 of two pulse damping response, the car and the teeterboard finally reach an equinity condition.Keywords: SPCE061A microprocessor, angle sensor, light sensor, PID.1系统方案设计1.1实现方法采用倾角传感器检测跷跷板与水平面的夹角,通过PID算法控制小车寻找平衡位置。当跷跷板在允许范围内满足达到平衡状态时,暂停5秒后行驶到跷跷板B端;当小车的上的四个光电开关同时检测到预先粘贴在跷跷板B端上的黑线时记数1,并倒车回到跷跷板A端,当四个光
5、电开关第二次同时检测另一端的黑线时记数2,小车停止,此时基本部分完成。在发挥部分中,我们采用黑线引导小车走上跷跷板,小车启动时在水平位置,以此为标志来选择调用发挥部分所需要的程序,使小车在找到平衡之后停在原位并在收到扰动之后自动寻找新的平衡。在完成题目要求的同时,我们也做出了自己的特色。我们利用一个从单片机制作了一个手持观测系统,进行小车状态的实时播报和显示,另外还制作了电池低电压报警电路。1.2方案比较与论证1.2.1控制器模块由于题目要求的小车功能较多,如果采用一个单片机会使各模块之间的程序嵌套复杂,而且难以实现总体系统的稳定性要求。此外该控制系统程序庞大,包括角度传感器、光电传感器,LC
6、D,语音模块,时钟等模块,一个单片机难以存储。所以我们采用两个SPCE061A 16位单片机,一个为主控制器安装在小车上来控制小车的行驶,另一个为从单片机持在控制者手中,用来连接LCD,键盘以及语音模块。主从单片机之间采用无线通讯,实现两机之间的信息交流。这样不仅可以很好的解决上述问题,而且使人机交互界面变得更加方便完美,也更加人性化和智能化。1.2.2电机驱动模块方案一:采用H桥式电路驱动的直流电机作为小车驱动。直流减速电机输出力矩大,功耗相对较低,且运行平稳,但本题目需要对小车的位置进行精确步进控制,而直流电机输出轴之间存在一定间隙,而且不能精确定位控制,所以我们放弃此方案。方案二:采用输
7、出力矩相对较大的步进电机,这样能够保证两个轮子的速度基本相同,实现了小车的精确控制。为了使步进电机低速时转动更平滑,采用专门的电机细分驱动芯片TA8435驱动电机,利用两个定时器控制电机速度,实现小车的速度与方向调整。实践证明该方案电路简单、控制方便且工作稳定。电路见附图一。所以我们选择方案二。1.2.3角度测量模块采用市场购买的低成本双轴倾角传感器ZCT245AL-485。ZCT245AL-485输出采用半双工通信方式RS485与单片机UART互通信息。它具有零角度设定,波特率可选等功能。ZCT245AL-485的精度高达0.1度,侧角范围正负45度,每秒送给单片机15次倾角值。完全可以满足
8、本题目要求。测量方向见图1。程序见附录 图1倾角传感器测量方向 图21.2.4 行进路线准直方案论证与选择在跷跷板上贴宽度为2cm的黑线,采用发射接收一体化的单光束反射取样式光电传感器RPR220作为敏感元件,利用红外线对不同颜色的反射系数不同而产生强弱电流信号,该方案受外界环境的影响比较小,抗干扰性比较强。如寻迹原理图所示,当1,2检测到黑线,3,4白色时,小车会通过差速左转直至 1,2检测通时到黑线为止。电路图见附图2。程序见附录1.2.5显示及语音模块由于本设计采用的是凌阳SPCE061A单片机,其芯片内部具有专门的语音功能。本控制系统对于语音没有很高的要求,而且从单片机所承担的任务较少
9、完全能够利用SPCE061A单片机自身资源实现语音功能。时间,角度以及路程的实时显示采用LCD模块OCMJ128x64,自带字库,编程简单,而且功能齐全。1.2.6电源模块为了减轻小车重量,方便小车自由行驶,我们采用可充电的大容量锂电池作为小车电源,输出电压12V。中间加装一个开关电源稳压至5伏,给单片机等控制电路供电,电源效率高,比7805等三端稳压器节省能源。1.3系统设计1.3.1 系统总体方案 经过上述的分析和论证,决定了系统各模块采用的最终方案如下:车体:由有机玻璃和铝合金片加工而成;主控单元:两个凌阳16位单片机SPCE061A;循迹模块:接收一体化红外传感器RPR220;倾角检测
10、模块:数字式双轴倾角传感器(ZCT245AL-485)驱动模块:两相混合式步进电机42BYG021+TA8435细分驱动芯片语音播报模块:单片机自带D/A+基于SPY0030的功率放大电路+扬声器计时模块:DS1302和凌阳单片机内部时钟显示模块:OCMJ128x64 LCD单片机无线通讯:半双工无线通讯模块nRF2401 1.4结构框图(见图3) 图3系统结构框图2理论分析与计算2.1测量与控制方法1). 小车平衡的PID算法经过分析可得小车在翘翘板上寻找平衡点的是一个二阶欠阻尼震荡过程如图4: 图4 二阶欠阻尼震荡算法公式:,其中 是比例环节 , 是积分环节,是微分环节。比例环节:及时成比
11、例地反映控制系统的角度偏差信号,偏差一旦产生,通过角度传感器传给单片机,单片机立即产生调整控制信号,。其中常数使用来控制翘翘板达到平衡位置时与水平面的夹角。在题目要求中0即跷跷板要在水平位置平衡。积分环节:主要用于消除跷跷板趋于平衡时的稳态误差,提高系统的无差度。可是积分环节动态反映时间较长,这样虽然是系统更加稳定,但是却延长了系统的动态相应时间,而且算法复杂,考虑到该题目中的平衡的控制并不是很复杂,而且有允许在要求范围内存在些许误差,所以我们放弃积分环节。微分环节:微分环节能反映角度偏差信号的变化趋势(变化速率),并能在角度偏差信号值变得太大之前,在系统中引入一个有效的早期修正信号,从而加快
12、系统的动作速度,减小调节时间。在该微分控制中,控制器系统的输出速度与输入误差信号的微分(即角速度) 成正比关系。微分环节使抑制误差的作用变化“超前”,即在误差接近0时,抑制误差的作用就应该是0。综合考虑我们决定采用PD算法来实现整个系统的平衡控制。公式为:。2.2 理论计算确定参数小车启动时,=5度,=0度/秒,所以。小车由点A到点C大约需要1020秒的时间,/AC/=80cm。,推出。可得出的取值范围在(0.8,1.6)区间之内。根据多次测试结果参数在区间(1,1.3)范围内时小车寻找的平衡的效果最好。2.3误差分析由于系统存在很多外在因素引起的误差,比如步进电机低速转动时的震动使角度传感器
13、的制在一定范围内波动,因而对小车寻找平衡产生很大的干扰;即使小车处于平衡点时,跷跷板仍然存在微小的扰动,这些扰动会使小车不停的移动,从而大大延迟了小车调节平衡的时间,消除这些影响,我们设定当-2度2度时,比例环节作用关闭,当-1.4度2) a2=t; if(t0)&(a11)&(a11) if(a1-a2)0.2) Speed(30,1); stop(1); if(a1-a2)0.2) if(bflag=0) Speed(400,1); stop(1); if(bflag=1) Speed(10,1); stop(1); if(t-1)&(a1-1) bflag=1; if(a1-a2)0.5
14、) Speed(30,0); stop(1); if(a1-a2)0) Speed(50,0); stop(1); if(t0) Speed(100,0); stop(1); if(t=-2) / if(forty=10) if(a1-a2)=1.6) stop(20); / a0=a1; a1=a2;2寻迹程序/*寻迹函数*/检测到白为高电平,黑为低电平。void Trace() if(one=1)&(two=0)&(three=0)&(four=1)/1,4白线直走 Speed(1600,1); if(one=1)&(two=0)&(three=0)&(four=0) /1白线,2,3,4
15、黑线,右转 Turn(2000,1600,1); if(one=1)&(two=1)&(three=0)&(four=1) Turn(2000,1600,1); if(one=1)&(two=1)&(three=0)&(four=0) Turn(2600,1600,1); if(one=1)&(two=1)&(three=1)&(four=0) Turn(3200,1600,1); if(one=1)&(two=0)&(three=1)&(four=1) Turn(1600,2000,1); if(one=0)&(two=0)&(three=1)&(four=1) Turn(1600,2600,1); if(one=0)&(two=1)&(three=1)&(four=1) Turn(1600,3200,1); if(one=1)&(two=1)&(three=1)&(four=1) Speed(1600,1); if(one=0)&(two=0)&(three=0)&(four=0) Speed(1,1);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1