DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1187|回复: 0
打印 上一主题 下一主题

[待整理] 基于MC9S12DGl28的自主寻迹智能车控制系统

[复制链接]
跳转到指定楼层
楼主
发表于 2015-4-27 20:00:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
1 引言

智能汽车是汽车电子、人工智能、模式识别、自动控制、计算机、机械多个学科领域的交叉综合的体现,具有重要的应用价值。智能寻迹车是基于飞思卡尔MC9S12DGl28单片机开发实现的,该系统采用CCD传感器识别道路中央黑色的引导线,利用传感器检测智能车的加速度和速度,在此基础上利用合理的算法控制智能车运动,从而实现快速稳定的寻迹行驶。

2 硬件系统设计

该系统硬件设计主要由MC9S12DGl28控制核心、电源管理模块、直流电机驱动模块、转向舵机控制模块、道路信息检测模块、速度检测模块和加速度检测模块等组成,其结构框图如图1所示。


2.1 主控制器模块
智能车的控制核心为MC9S12DGl28。MC9S12DGl28是飞思卡尔公司生产的一款16位单片机,片内总线时钟可达到25 MHz;片内资源包括8 K RAM、128 K Flash、2 K EEP-ROM;SCI,SPI,PWM和串行接口模块;脉宽调制模块(PWM)可设置成4路8位或2路16位,逻辑时钟选择频率脉宽:2个8路10位A/D转换器,增强型捕捉定时器并支持背景调试模式等。

2.2 电源管理模块

该系统设计采用7.2 V/1 800 mA镍镉电池供电,7.2 V电压经过BMlll7—5稳压后得到5 V电压,向单片机、红外传感器和加速度传感器供电。5 V电压经MAX8715升压后得到12 V电压,向CCD图像传感器供电:7.2 V电压经二极管降压得到约6 V的电压来驱动舵机;电机驱动器MC33886则直接由电源供电。

2.3 道路信息检测模块

该系统设计使用NEC公司的线阵CCDμPD3575D检测赛道信息。该器件可工作在5 V驱动(脉冲)和12 V电源条件下。μPD3575D的驱动需要4路脉冲,分别为转移栅时钟φIO、复位时钟φRD、采样保持时钟φSHO和传输门时钟φTG。系统设计由外围电路直接产生CCD驱动时钟,采用计数器和触发器专门设计时序电路,产生转移栅时钟φIO、复位时钟φRO、采样保持时钟φSHO,单片机只需产生一个帧同步信号(传输门信号φTG)与外围时序电路保持同步即可。μPD3575D输出的是模拟信号,将采集图像传输至单片机,一般需对μPD3575D输出信号进行A/D转换,考虑到设计实际上只需要区分黑色和白色,μPD3575D对这两种输出信号差异较大,因此,将μPD3575D输出信号放大后直接使用一个比较器对信号二值化处理,如图2所示。由单片机检测二值信号的跳变时间,便可计算出黑线位置,从而进一步缩短单片机在CCD上所消耗的时间。



2.4 车速检测模块

系统使用红外传感器检测直流电机的转速。在后轮减速齿轮上粘贴一个均匀分布有黑白条纹的编码盘。红外接收管接收与未接收红外光所表现的特性是阻抗变化,所以只需用一个电阻电压变换电路和比较电路便可将其模拟信号转换为数字信号,供单片机采集。

2.5 直流电机驱动模块

系统采用RS380-ST型直流电机,其驱动电路采用集成电机驱动器MC333886。此器件是单片集成的H桥元件,有单桥和双桥两种控制方式,其可控电压为5~40 V,最大PWM频率达10 kHz,内置短路保护电路和过热保护电路,最大能承受的5 A的工作电流。其中D1、D2是MC33886的使能端,INl、IN2为输入端,0UTl、0UT2为其输出端。图3是将MC33886的D2端接到单片机的PWM输出端口,通过MC33886的两个输出端口实现电机的转速控制、方向控制及制动等。采用输出端并联并连接到电机一端,以及增加散热片的方法使智能车在相同电压和占空比时,其速度更快,同时还降低H桥上的压降,减少MC33886发热,防止器件由于温度过高被烧毁。


2.6 加速度检测模块

智能车在高速行驶中如果突然转向,会出现侧滑现象。该系统设计采用ADXL202加速度传感器判断移动智能小车在行驶中是否出现侧滑现象。ADXL202是美国ADI公司推出的低成本双轴加速度传感器,其外围电路简单.采用5 V供电,将加速度传感器的输出端9引脚和10引脚直接接到单片机的AN00,AN01引脚,通过计算输出信号的占空比可
精确检测轴向和横向加速度。

2.7 转向控制模块

智能车使用韩国futaba公司的S3010舵机完成转向控制。舵机控制信号由单片机的PWM模块PWM0和PWMl联合产生一个16位的PWM信号。由于舵机的转角与脉冲宽度存在线性关系,改变PWM占空比可改变输出脉冲的宽度。从而控制舵机转向。将驱动舵机脉冲波型的周期从原来的20ms减小到10 ms,增加舵机控制信号的更新频率,减少舵机控制环节中的延时,提高整个车模转向控制速度。

3 系统软件设计

系统的基本控制策略是根据CCD传感器检测到的路径信息,车速检测模块检测到的当前车速信息和加速度传感器检测到的加速度信息,来控制舵机和直流驱动电机运动。

3.1 车速控制

为了提高机器人运行的稳定性,采用PID算法实现直流电机的转速闭环调节,PID控制器的输入量为给定转速与输出转速的差值,采用增量式PID算法。

3.2 智能车平稳性控制

为了避免智能车发生侧滑现象,应在智能车上安装加速度传感器,以检测是否发生侧滑。车速为v,转向角为δ,车体质量为m,轴距为l,当理想转向时,向心加速度为a,则a=mv2tanδ/l。当加速度传感器反馈回的实际加速度a*小于理论加速度a时(实际中应当保持一定的死区),表明智能车系统存在侧滑现象。这时便命令智能移动小车减速,速度参考量为


3.3 舵机转向控制

系统使用模糊控制算法控制智能车转向。传感器检测的重点是转向角误差,当转向角误差相同时,不同的误差变化率反映不同的轨道半径,因此,该设计还检测转向角误差变化率。当误差量很小,且误差变化率不变时,则判定为智能小车正沿着引导线行驶,则机器人小车沿直线行进;若误差变化率较大时,表明智能小车正在偏离引导线,此时,需对航向角做相应调整。通过CCD图像传感器检测白色地面上的黑线,根据返回的信号得出驾驶角误差和误差变化率,将CCD图像传感器视觉中心的误差和误差变化率作为控制器的输入,分别用e和ec表示;输出为驾驶角,用δ表示。模糊语言值分别选为:e:{LB,LM,LS,CE,RS,RM,RB};ec:{PB,PM,PS,Z0,NS,NM,NB};δ:{LB,LM,LS,CE,RS,RM,RB}。隶属度函数采用三角形,如图4所示。交叠系数β=(c1一a2)/(c2-b1),取0.75。根据驾驶经验建立规则库进行模糊推理后.利用重心法进行反模糊化得出舵机所要转的角度。
3.4 智能车控制流程

设计中,程序初始化完成后便进入空闲模式,等待中断发生。中断包括车轮转速计数器中断、CCD图像捕捉中断和以10 ms为周期的定时器0中断。驱动电机和舵机的PWM控制信号由单片机的PWM模块自动产生,其定时器0的中断服务程序如图5所示。


4 结语


以MC9S12DGl28作为控制核心,设计自主寻迹的智能车控制系统,在检测到智能车运动信息和道路信息的基础上,采用模糊控制算法控制舵机转向,通过转速PID调节的方式控制直流电机。实验证明:该智能车在白色的跑道上能沿着一定宽度任意弧度的黑色引导线以较快的速度平稳地行驶,寻迹效果良好,速度和转向控制响应快,系统的稳定性和抗干扰能力强,速度可以达到1.5 m/s,此方案已应用于全国智能车大赛。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-12-29 10:07 , 耗时 0.088084 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表