2012年省电子竞赛设计报告
项目名称: 自平衡小车 姓 名: 连文金、林冰财、陈立镔 指导老师: 吴进营、苏伟达、李汪彪、何志杰
日
期: 2012年9月7日
摘要:
本组的智能小车底座采用的是网上淘宝的三轮两个电机驱动的底座,主控芯片为STC89C52,由黑白循迹采集模块对车道信息进行采集,将采集的信息传送到主控芯片,再由主控芯片发送相应的指令到电机驱动模块L298N,从而控制电机的运转模式。
关键词:
STC89C52 L298N 色标传感器 E18-F10NK 自动循迹
引言:
近现代,随着电子科技的迅猛发展, 人们对技术也提出了更高的要求。汽车的智能化在提高汽车的行驶安全性,操作性等方面都有巨大的优势,在一些特殊的场合下也能满足一些特殊的需要。智能小车系统涉及到自动控制,车辆工程,计算机等多个领域,是未来汽车智能化是一个不可避免的大趋势。本文设计的小车以STC89C52为控制核心,用色标传感器 E18-F10NK作为检测元件实现小车的自动循迹前行。
一、系统设计
本组智能小车的硬件主要有以STC89C52 作为核心的主控器部分、自动循迹部分、电机驱动部分。
1.1方案论证及选择:
根据设计要求,可以有多种方法来实现小车的功能。我们采用模块化思想,从各个单元电路选择入手进行整体方案的论证、比较与选择。
本方案以STC89C52作为主控芯片,通过按键进行模式的选择切换,按键一选择三轮循迹,按键二进行两轮循迹。
按键控制模式选择模式一(三轮循迹)模式二(两轮循迹) 1.1.1模式一(三轮循迹):
模式一(按键一控制):三轮循迹的时候,通过色标传感器和激光传感器进行实时的数据采集,反馈给主控芯片,主控芯片通过驱动L298来控制两路直流减速电机,从而保证路线的准确性。
色标传感器实时检测路况反馈激光模块MCU主控(89C52)反馈298驱动控制左轮减速电机右轮减速电机完成跑道
引导线断开区域:由于小车是逆时针行走,考虑到惯性,五个传感器全部没有检测
到,就直接一定程度上的左转,正好和惯性在一定程度上进行抵消,校正电机两轮电机的线性偏差。直接从D区域走到E区域。
S型曲线:通过安装传感器,实地模拟所有经过的所有情况,来经过“S”型曲线。 加减速区域:经过第一个十字路线,设置标志位flag为1,第二个十字路线,设置
标志位为2,第三个十字路线的时候,flag为3,flag为4时清零。
1.1.2模式二(两轮循迹):
模式二(按键二控制):两轮循迹的时候,通过色标传感器、激光传感器进行路况分析,陀螺仪与加速度传感器集成模块通过倾角改变量来进行反馈给小车,保证小车的两轮平衡行驶。
实时检测路况分析1、色标传感器2、激光模块3、陀螺仪及加速度集成模块实时检测平衡控制反馈MCU模块(89C52)控制反馈L298驱动左轮减速电机右轮减速电机完成跑道
两轮循迹方案(平衡、速度、方向控制)理论分析及计算
当测量倾斜角度的传感器检测到车体产生倾斜时,控制系统根据测得的倾角产生一个相应的力矩,通过控制电机驱动两个车轮朝车身要倒下的方向运动,以保持小车自身的动态平衡。两轮自平衡小车的运动主要由驱动两个轮子转动的电机产生的转动力矩所控制。而我们在控制小车的平衡及运动时, 控制量也是轮子的转动力矩。
1.1.2.1平衡控制:
平衡控制是通过负反馈来实现的,系统可以类比为一个倒立的单摆模型,因为车模只有两个轮子着地,车体会在轮子滚动的方向上发生倾斜。控制轮子转动,抵消其在这个维度上倾斜的趋势就可以保持车体的平衡了。
对倒立车模进行数学建模,建立速度的比例微分负反馈控制,根据基本控制理论讨论车模通过闭环控制保持稳定的条件。
车模简化为高度为L,质量为m的简单倒立摆,它放置在可以左右移动的车轮上。假设外力干扰引起车模产生角加速度
x(t)。沿着垂直于车模地盘方向进行受力分析。
由图推导出车模倾角与车轮运动加速度[2]:
a(t)以及外力干扰加速度x(t)之间的运动方程
d2θ(t)Lgsin[θ(t)]a(t)cos[θ(t)]Lx(t)2dt
(1.1.2.1 - 1)
在角度很小时,sin,cos1 , 运动方程简化为:
d2θ(t)Lgθ(t)a(t)Lx(t)2dt (1.1.2.1 - 2)
车模静止时,a(t)0
d2θ(t)Lgθ(t)Lx(t)2dt (1.1.2.1 - 3)
对应车模静止时,系统的输入输出的传递函数为:
H(s)
Y(s)1X(s)s2gL (1.1.2.1 - 4)
gL 。一个极点位于S平面的右半开面,车模不稳定。
此时系统具有两个极点
sp通过对系统的拉氏分析,知当车模静止时,此时系统的一个极点位于S平面的右半平面,车模不稳定[3]。因此引入比例、微分反馈控制(在角度控制中,与角度成比例的控制量称为比例控制,与角速度成比例的控制量称为微分控制,其中角速度是角度的微分)之后的系统如图2-2所示,其中a1k1,a2k2。
图2-2 加入比例微分反馈控制后的系统框图
系统的传递函数为:
H(s)
Y(s)X(s)1s2k2kgs1LL (1.1.2.1 - 5)
此时系统的两个极点位于:
2k2k24L(k1g)sp2L (1.1.2.1 - 6)
系统稳定需要两个极点都位于S平面的左半开平面,要满足这一点,需要
k1g,k20,由此得出结论,当k1g,k20时,直立车模可以稳定。
1.1.2.2速度控制:
通过MPU-6050模块,测量加速度传感器获得的角度信号,与角速度传感器测得的信号进行对比,对比积分得到的角度与重力加速度得到的角度,使用他们之间的偏差改变陀螺仪的输出,从而使积分的角度逐渐跟踪到加速度传感器测得的角度。这样对于加速度传感器给定的角度,经过比例、微分、积分环节之后产生的角度θ必然等于我们要测量的车模倾斜的角度,通过调节PWM信号从而达到对小车的直立控制。也就是利用PID算法计算输出量,根据输出量控制PWM。
1.1.2.2.1电机模型化分析和简化:可以将电机转速与施加在其上的电压之间的
关系化成一个一阶惯性环节模型。施加在电机上的一个阶跃电压Eu(t),电机的速度方程是:
tT1 式中,E为电压;
(t)Ekm{1e}u(t) (1.2.2 .1- 7)
u(t)为单位阶跃函数;T1为时间常数;km为电机转速常数。分析该
式可知,电机运动分为两个阶段,加速阶段和恒速阶段。其中,在加速阶段,电机带动车模
后轮进行加速运行,加速度近似和施加在电机上的电压成正比,加速阶段的时间长度取决于时间常数T1。在恒速阶段,电机带动车模后轮进行恒速运行,运行速度与施加在电机上的电压成正比。由此计算所得的加速度控制量a再乘以一个比例系数即为施加在电机上的控制电压,通过调节PWM信号,这样就可以保证小车的自平衡循迹直立状态。
1.1.2.3方向控制:
控制两个电机之间的转动差速实现车模转向控制,可直接通过不同电压脉冲信号进行控制。
1.2.1车体方案选择
方案一:自己动手制作小车底座,一方面材料欠缺,另一方面制作过程要花费大量时
间,制作出来的小车还可能机械性能不够优异。
方案二:网上购买小车底座,结构简单,基本能够符合设计所需,机械性能相对有保
障。
方案选择:方案一和二同时结合使用,直接使用之前闲置的小车底座进行改装。
1.2.2主控芯片
方案一:51单片机芯片(比如STC89C52系列)
优点:容易控制、操作简单、外设较少、成本较低、其低功耗、性能稳定,处理速度
1M。
缺点:处理速度较慢,扩展性较低,外部资源相对较少。 方案二:ARM芯片(STM32)
优点:低功耗,高性能,程序在不同核之间兼容性良好,包括多种通信接口,内核电
压低至1.8V,可以选择睡眠,待机等多种低功耗模式,容易处理各种复杂接口,处理速度达72M。操作资源丰富,包括10个定时器、两个12位1-Msample/s 模数转换器 (交错模式下2-Msample/s)、两个12位数模转换器、两个I2C接口、五个USART接口和三个SPD端口。外设共有12条DMA通道,一个CRC计算单元。
缺点:操作相对复杂,价格相对较高。
方案选择:采用STC89C52单片机来实现本题目,电路简单,成本较低,经实验运行
证明工作可靠,所以最后决定用STC89C52作为该控制系统的核心。
1.2.3稳压芯片选择
型号/参数 稳压方式 压差 稳压精度 输出电流 LM7805 线性稳压 高 低 1A LM2940-5 TPS7350 LM2596 DC-DC LM1084-5 LP3853-5 线性稳压 线性稳压 开关稳压 开关稳压 线性稳压 线性稳压 低 高 1A 很低 很高 0.5A 中 中 3A 很低 高 2A 低 较高 1.5A 低 很高 3A
损耗功率 电容需求 外围电路 成本 大 高 少 低 小 中 少 中 很小 小 较少 中 很小 高 多 中 很小 小 很少 高 小 中 少 中 很小 小 少 高 方案选择:LM2596输出电流大,损耗功率小,带负载能力比较强,价格也不会很贵,
所以用LM2596给单片机最小系统版供电、驱动模块、色标传感器模块、激光模块和陀螺仪模块供电。
1.2.4电机选择
方案一:步进电机
优点:可以精确控制小车的旋转角度
缺点:由于内部构造原因,速度很慢,给一个脉冲延时一段时间,速度慢。 方案二:直流减速电机
优点:速度快(同样的功率比马达驱动的速度快一倍(6V)) 缺点:速度很快的情况下,小车的角度不容易精确控制。 方案三:舵机
优点:结构紧凑,易于安装调试,大扭力,成本低,容易控制角度,角度控制精确。 缺点:价格相对较高。
方案选择:选择方案二。步进电机速度太慢,而且小车主要是实现循迹功能,所转过
的角度不用太过精确,舵机的价格太贵,综上考虑选择直流电机。
1.2.5循迹模块
方案一:激光循迹
优点:反应灵敏,信号强,前瞻性非常好,做的好的话,可以达到1-2米左右,不易
受自然光影响。
缺点:价格相对昂贵,相对不好调试,工作电流大。 方案二:红外循迹
优点:输出电流相对较小,单个模块20mA-30mA。 缺点:距离短。 方案三:摄像头循迹 优点:前瞻性好,控制精确。
缺点:程序复杂,数据量大,调试难度大。 方案四:色标传感器
优点:可以检测特定颜色与颜色的差异。 缺点:价格相对昂贵。
方案选择:选择方案一和方案四相结合。鉴于本次比赛只需完成预设轨迹,所以不用
追求速度和时间,考虑到精度和灵敏度。
1.2.6两轮平衡数据采集 方案一:MPU-6050模块
优点: 集加速器与陀螺仪于一体,是整合性6轴运动处理期间,相较于多组件方案,免除
了组合陀螺仪与加速器时之轴间差的问题,减少了大量的包装空间;并且内置16位AD,是数字量输出,采用标准的IIC通讯协议,无需外接AD,降低成本。
缺点:由于MPU-6050是新产品,还没有太多人使用,所以资料少,并且采集速度比组件
慢一些。
方案二:MMA7660+ENC-03R 优点:采集速度快,资料多。
缺点:需要外置AD,存在轴间差的问题。 方案选择:比较两个方案,最终选择了方案一。 二、硬件设计及说明
基本系统控制电路采用采用模块化设计,镍镉电池(7.2V 2000mA)通过2596稳压成5V给主控模块、色标传感器、激光传感器和陀螺仪供电,以单片机STC89C52作为主控单元,负责整个电路的资源分配,色标传感器和激光传感器分别采集路况信息进行分析,从而自动识别,两轮行驶时,通过陀螺仪来测试倾角的变化量,反馈给主控模块,从而来控制小车的平衡行驶。
2.1 硬件设计
锂电池稳压电路红外循迹模块MCU最小系统版(STC89C52)陀螺仪模块298驱动模块
2.1.1电路原理图
主控电路图(包括2596稳压电路和色标传感电路)
2.1.2 电机驱动:
L298N为15个管角的单块集成电路,高电压,高电流,四通道驱动,设计用L298N来接收DTL或者TTL逻辑电平,驱动感性负载(比如继电器,直流和步进马达)和开关晶体管。内部包含4通道逻辑驱动电路,其额定工作电流为 1 A,最大可达 1.5 A,Vss 电压最小 4.5 V,最大可达 36 V;Vs 电压最大值也是 36 V。L298N可直接对电机进行控制,无须隔离电路,可以驱动双电机。单片机控制IO口分别与L298N的IN1~IN4相接,PWM输出控制接EN A、EN B,其VS、VSS分别接+12 V、+5 V电源,其输出口OUT1~OUT4接直流减速电机,通过简单的指令就可控制小车的运行,如直线行走、通过PWM输出电压调节控制小车速度及转向。
原理图:
2.1.3 循迹部分 2.1.3.1 色标传感器
主要由5个色标黑白线检测模块组成。采用色标黑白线检测模块完成系统循迹任务,循迹电路是用以实现小车沿着场地的黑色弧形引导轨迹进行前进和位置校正的,且小车不能偏离该轨迹。在本设计中采用色标黑白线检测模块完成系统循迹任务,硬件电路实现比较简单,只需在VCC和输出信号间加一个1K左右的上拉电阻,防止输出电平的逻辑错误,其灵敏度可以通过调节电位器来实现,实物图如下图所示:
2.1.3.2激光传感器模块
原理图: 发射电路:
接收电路:
三、软件设计
MCU初始化模式选择1、色标传感器2、激光模块反馈MCU主程序 反馈陀螺仪及加速度模块(模式二)是否偏离黑线倾角是否改变小幅度偏离否相对大幅度偏离是偏离调整函数微偏调整函数左微偏右微偏直走函数平衡函数左偏离右偏离左微偏调整函数右微偏调整函数左偏调整函数右边调整函数否返回
四、系统测试过程 4.1硬件调试: 4.1.1主控板调试:
由于小车主控电路接口电路较简单,焊接后通过万用表和线性直流源简单测试后发现没有问题。
4.1.2直流减速电机调试:
由于两个直流减速电机的线性参数不一样,左轮相对右轮总是比较快,通过调节联轴器和车轮之间的“L”型贴片,可以有一定的改善。但是效果不明显,只能通过软件去调试直流减速电机的速度同步。
4.1.3红外传感器调试:
刚开始我们打算循迹部分的传感器方案是采用自己做的红外传感模块,由于调试经验还不是很丰富,一直没有成功,所以后面为了不影响进度采购了色标传感器。自己做的模块不能正确采集,我们判定是由于电阻阻值的关系。阻值大,电流小,精度低,阻值小,电流大,精度高。本次比赛结束后我们会进一度验证。
4.1.3色标传感器调试:
色标传感器主要是通过调节电位器在一定距离来识别黑白线,先固定色标传感器,通过电位器最大和最小间调节,直至合适的电阻值。
4.1.4激光模块:
激光模块先通过透镜聚焦在接收管上,先固定倾角然后识别黑白线,然后直接调电位器,
由于激光识别黑白线效果非常明显,调试比较快,而且前瞻性可以达到1.5-2米。
4.2软件调试:
首先我们通过控制PWM可以控制电机的转速,根据检测值的不同,做出不同的反应。此次设计左右转是根据调节左右电机的PWM使一个电机转得快一些,一个电机转得慢一些,从而达到左右转的效果。如果觉得转弯弧度太小,可以采用一轮向前一轮向后的方法来控制。 前前后后我们的程序版本有十几个,从开始的不能正常循迹;到能循迹,D到E无法通过;再到能够通过D、E区,但是无法实现ABC两段的加减速;能实现加减速,但走S区不稳定;到最后的走S区相对稳定。在这段时间,还试着利用PID算法写2轮行走的代码,但是就在要测试的时候,没注意到加速度与陀螺仪传感器的保存温度,在将传感器固定到车身时将传感器烫坏,再采购一个,时间上来不及了,所以最终就放弃了发挥部分。
在软件调试过程中,我们发现有时候是传感器检测问题。有时候传感器根本不能正确采集数据,所以在很多时候没有发现硬件的问题也给软件调试带来很大的困难。后期我们给每个传感器装上一个指示灯,初始时灯是全亮的,检测到黑线的传感器就变暗,这样如果是传感器检测数据的问题就能够清楚的知道,并及时作出调整(调整传感器的电位器)。
4.3系统联调
小车在实地测试的情况下,多次对数据进行采集分析,“S”型曲线的优化和空白区域死区的预防,从原先转弯时两轮不同的PWM信号,改成两个电机的正反转,极大提高了小车的性能及稳定性。
五、测试
测试数据(注:在电池电力充足的情况下 镍镉电池7.2V 2000mA)
1 2 3 4 5 6 7 8 测起点 A A C C D D F F 所需时间(秒) 46.4 44.8 45.7 46.9 46.8 48.2 是否完成 是 是 是 否 是 是 否 是 AB所需时间(秒) 4.2 3.9 3.8 4.1 3.6 3.8 4.9 4.6 BC6.8 7.2 6.9 7.4 7.4 8.1 7.8 8.1 所稳定性 稳定 稳定 稳定 “S”型分叉未走完 稳定 “S”型曲线不稳定 “S”型曲线开端卡主 稳定 试次数 需时间 测试结果分析:小车行驶相对比较稳定,总体还算比较顺利,经过A、C、D、F点四个点
进行测试,由于小车的色标传感器距离地面只有1厘米左右,受环境影响比较大,纸张褶皱起来1厘米都可能造成传感器采集错误的数据反馈给MCU。
(1)、A、F点直接出发,小车有可能在“S”型曲线头,掉入死循环(传感器值10001的情况下)。在“S”曲线的中部,也有可能造成误判,走错路线。其它的部分相对OK。 (2)、C、D点出发,“S”型曲线头,可能掉入死循环(传感器值10001的情况下),AB加速区和CD减速区也有可能出现错误。
(3)、小车走上面的“S”型路线的可能性相对大,也不容易出错。
六、总结
能够影响小车循迹的因素有很多,如环境光;电池电量的高低等。在本次比赛中我们发现了很多不足,如理论知识不够硬,调试经验不足等。每一次的比赛都会让我们学到好多东西,以后我们将会多参加类似的比赛,并且加强理论知识的学习,让自己能够真正理论结合实践。
测试结果表明:本组智能小车能很好的完成了基本功能和循迹功能,跑道是由黑色胶布在白色地面上拉线完成,小车可以从O型跑道的任何段为起点,跑完全程。本组智能小车目前只能完成在没有任何交叉路口的跑道上,要想跑在有“十”字路口的跑道上,还须要对循迹程序进行补充和修改。我们保留了各种硬件接口和软件子程序接口,方便以后的扩展和进一步的开发。
由于一些不细心的操作,最终导致小车MPU-6050模块烧掉,发挥部分没有办法完成,电路及程序没办法起到作用。
因篇幅问题不能全部显示,请点此查看更多更全内容