智能车制作

标题: 基于16位单片机MC9S12DG128的智能车 控制系统设计与实现 [打印本页]

作者: ying    时间: 2010-3-11 20:13
标题: 基于16位单片机MC9S12DG128的智能车 控制系统设计与实现
1 系统硬件电路组成
    设计有效的智能车控制系统必须首先掌握控制对象的特性。根据对智能车特点的分析,可以认为,智能车转向控制系统的传递函数近似为一阶积分加纯滞后,速度控制对象的传递函数则近似为一阶惯性加纯滞后的结论。
    转向控制系统主要是要求响应速度快,但对稳态控制精度要求不高。而且控制对象只有积分和滞后环节,没有常见的惯性环节。根据以上特点,本转向控制可采用PD控制器。
    对速度进行检测和控制的意义在于尽可能使智能车按照道路条件允许的最高速度行驶。在弯道应将车速限制为不脱轨的最高速度,在直道则应适当进行急加速以缩短单圈运行时间,提高比赛成绩。同时,对速度信号进行积分求和可以得到赛道长度信息,以便为道路识别与记忆模块提供数据。智能车速度控制系统的精度不需要太高,关键是如何快速响应赛道的路况变化。因此,速度采用PID控制,以便针对不同的道路状况可以迅速准确地改变车速,实现稳定过弯。智能车的硬件电路主要由视频处理模块、方向控制模块和车速控制模块组成。各模块与单片机之间的硬件关系如图1所示。

    本系统中的视频处理模块由CMOS摄像头、二值化电路和同步分离电路构成;转向控制模块主要由舵机完成。舵机的转动会转化为车模转向拉杆的横向移动,从而带动车模前轮的转动,以控制智能车的行驶方向。舵机的转向控制采用PD控制,单片机可以根据赛道中央黑线的位置向舵机输出相应占空比的PWM信号。
    车速控制模块主要由直流电机、驱动电路和旋转编码器构成。该模块可根据CMOS摄像头所检测的路径信息判断智能车当前所处的赛道状况,并根据旋转编码器所检测的实际车速形成对智能车行驶速度的闭环控制,合理地调整数字PID控制算法的Kp,Ki、Kd三个参数,以达到迅速响应车速并消除静态误差之目的。
2 电路设计
2.1 电源模块设计
    电源模块要为单片机、传感器、舵机和驱动电机供电。因此需要提供多种电源以满足各个模块的要求。电池在完全充满之后,其空载电压只有8 V左右,而且随着电池的消耗,电压逐渐降低。此外,电机启动及反接制动时的电流很大,也有可能将电池电压拉得更低。为了避免电源电压不稳定,影响摄像头视频处理电路和单片机的正常工作,本设计使用了DC-DC变换芯片MC34063以及低差压稳压器LM2940。MC34063可输出稳定的8V电压给CMOS摄像头,LM2940则可为16位MC9S12DG128单片机、视频放大及二值化电路提供稳定的5 V电源,从而保证了系统在各种情况下的稳定运行。其电源模块电路原理图如图2所示。

2.2 直流电机驱动模块设计
    直流电机驱动采用飞思卡尔公司的5 A集成H桥芯片MC33886。MC33886芯片内置有控制逻辑、电荷泵、门驱动电路以及低导通电阻的MOSFET输出电路。适合用来控制感性直流负载(如直流电机)。该芯片可以提供连续的5 A电流,并集成有过流保护、过热保护、欠压保护电路。通过控制MC33886的四根输入线可以方便地实现电机正转、能耗制动及反接制动。图3是经过简化的H桥电路,图中,当S1、S4导通且S2、S3截止时,电流正向流过直流电机,智能车前进;当S2、S3导通且S1、S4截止时,电流反向流过直流电机,利用这个过程可以使车模处于反接制动状态,从而迅速降低车速;当S3、S4导通且S1、S2截止时,没有电源加在直流电机上,直流电机电枢两端相当于短接在一起。由于电机轴在外力作用下旋转时。电机可以产生电能,此时可以把直流电动机看作一个带了很重负载的发电机,此时电机上会产生一个阻碍输出轴运动的力,这个力的大小与负荷的大小成正比,这时电机处于能耗制动状态。

    本方案采用了两片MC33886并联,一方面减小导通电阻对直流电机特性的影响,另一方面,可以减小MC33886内部过流保护电路对电机启动及制动的影响。直流电机驱动模块的电路原理图如图4所示。

2.3 传感器电路设计
    本智能车采用CMOS摄像头作为图像传感器,以保证赛道信息采集的准确有效。CMOS摄像头的输出信号是PAL制式的复合全电视信号,每秒输出50帧(分为偶场和奇场)。由于CMOS摄像头采集图像时,偶场和奇场不是同时采集的。因此,可以在每场信号都对路径进行识别。
2.4 无线数据传输模块设计
    该智能车加装了基于射频收发芯片nRF403的无线数据传输模块,并可在此基础上实现MOD-BUS通信协议,这对测试智能车参数及程序调试很有帮助。在运行的过程中,可以将智能车的各项参数实时发送上来,而分析智能车的运行状态可以更有针对性地对控制程序进行改进。事实上,在调试运动参数的过程中,可以通过上位机软件改变Kp、Ki、Kd等参数,而不用重新烧写程序,因而十分迅速而方便。
3 软件设计
    本智能车控制系统的程序结构如图5所示。这是一个两层的分级控制系统。底层控制包括“转向控制系统”和“车速控制系统”,上层主控程序则可通过改变底层控制系统的设定值、控制参数和约束条件,来对整个控制系统进行调度。设计这种分层结构的控制系统是参照了集散控制系统DCS的结构特点,程序各部分功能明确、结构清晰,便于调试和维护。为了调试方便,同时在主控程序中添加了基于无线信道的MODBUS通讯协议,因而对智能车行驶参数的监视和调整提供了很大的便利。

    本系统软件所实现的功能主要是初始化、数据采集和滤波处理、道路识别、电机控制和舵机控制等。其中初始化主要是设置系统默认参数。其次是数据采集及滤波处理。为了尽量减少引入的纯滞后时间,本文提出了一种独具创新性的视频信号采集方法。即用MC9S12DG128单片机提供的SPI口直接读取经过二值化处理的视频信号。由于大赛规则中指定了赛道上黑色引导线的宽度为2.5厘米,故摄像头中采集到的引导线宽度在正常情况下也应当落在一定范围内。设计时可以用实验的方法测得引导线对应的像素宽度,然后在滤波程序中对采集到的引导线线宽进行控制,如果超出正常范围即认为是无效数据。
    实验证明,这种方法可以有效地滤除干扰。智能车分层控制系统的核心是赛道的识别。实际测试发现,由于CMOS摄像头的可视范围比较小而且视野范围呈梯形,且在快速运动中经常发生赛道部分可能全部脱离视野范围的情况,给赛道识别带来很大的困难,因此,完整赛道识别模式几乎是不可能的。为了简化问题,本方案只识别赛道中的直线段,并根据直线段的数量和长度将赛道分割成不同的区域,然后在一个区域中对控制参数进行优化。
    至于电机控制。本系统是用单片机通过接收旋转编码器来检测智能车后轮转动所产生的脉冲数,然后采用位置式PID控制算法的递推形式对直流电机的转速进行快速准确地控制。位置式PID控制算法的递推形式如下:
    △u(k)=Kp[e(k)-e(k-1)]+Kixe(k)+Kd[e(k)-2e(k-1)+e(k-2)],u(k)=u(k-1)+△u(k)
    式中:u(k)为k时刻控制器的输出;e(k)为k时刻的偏差;Kp、Ki、Kd分别为位置式PID控制算法的比例系数、积分常数和微分常数。舵机控制也是用单片机通过CMOS摄像头来检测路径信息,然后采用不完全微分PD控制算法来控制舵机的转角,从而实现路径跟踪。
作者: myb396    时间: 2010-3-14 11:03
SF
谢谢
作者: 下一年的我    时间: 2010-4-5 14:22
多谢!
作者: 若风如风    时间: 2010-4-14 17:58
这个是很久前的吧
作者: 那边的天空    时间: 2010-5-5 15:18

作者: 谭霞    时间: 2010-5-12 18:50
谢啦
作者: ad54073889    时间: 2010-5-31 17:00
xie
作者: yanshengbin    时间: 2010-6-29 16:59
budong
作者: 来润之    时间: 2010-7-16 10:58
楼主能不能给出具体的传递函数啊?  谢谢了
我的邮箱295320972@qq.com
作者: sunhao11    时间: 2011-1-16 15:21
挺好,有一定了解~~~
作者: tyj19891126    时间: 2011-1-17 09:26
谢谢啊
作者: david2012    时间: 2012-2-6 10:52
能不能给我详细的编程数据。谢谢楼主了。我的邮箱1515926729@qq.com
作者: david2012    时间: 2012-2-6 10:52
楼主,会用MATLAB对智能小车模拟与仿真么?谢谢啦
作者: 封锁一圣    时间: 2012-3-1 22:19
你的图呢?





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2