K64和MQXLite的直立智能循迹小车设计

2018-04-11 09:14,,
单片机与嵌入式系统应用 2018年4期
关键词:微控制器控制算法编码器

,,

(苏州大学 计算机科学与技术学院,苏州215006)

引 言

随着现代计算机、电子、自动化等技术的发展,越来越多的智能设备进入人们的生活。智能汽车作为近些年来的研究热点,其无人驾驶技术具有良好的应用前景。而直立智能车由于具有灵活、占地面积小等特点,在拥挤的地方有较大用途。

小车设计遵循第十二届全国大学生智能汽车竞赛技术规范,使用E型车模作为基础机械结构,完成硬件电路设计,并基于实时操作系统MQXLite设计了控制算法,实现小车直立行驶,自动循迹功能。

1 系统硬件设计

系统硬件架构图如图1所示,小车硬件系统由输入部分、微控制器、输出部分和供电模块组成。输入部分的陀螺仪和加速度传感器、编码器、摄像头作为信息采集设备,实时采集小车状态信息,经微控制器处理后,微控制器输出PWM波至电机驱动模块,控制电机转速,实现自动循迹。而迷你键盘和OLED显示屏作为人机交互设备,方便调试和获取信息。

图1 系统硬件架构图

1.1 微控制器

微控制器选用恩智浦半导体公司生产的MK64FX512VLL12(K64),其特点为高性能,主频可达120 MHz,且有FTM、ADC、SPI、I2C、UART等丰富接口。作为智能车的核心控制模块,微控制器需要获取各传感器的输入信息,转换为可处理的数字量,并由控制算法计算出PWM占空比,输出PWM波至电机驱动模块。一款高性能的微控制器可以快速完成控制任务,使系统更加稳定。

1.2 供电模块

小车使用7.2 V、2 000 mAh的镍镉电池供电,而陀螺仪、加速度传感器、摄像头的工作电压为3.3 V,编码器的工作电压为5 V,因此需要设计降压电路,获得各设备的工作电压。

TPS系列低压差线性稳压芯片的工作压降较低,静态工作电流较小,且具有过载保护功能[1]。利用TPS7333和TPS7350两款芯片,完成了电路设计,具有较高的稳定性。其中,TPS7350电路原理图如图2所示,TPS7333电路原理图与其类似。

图2 TPS7350电路原理图

1.3 输入部分

输入部分包含陀螺仪和加速度传感器、编码器、摄像头和迷你键盘。它们为整个系统采集信息,是一切控制的基础。

我们选用的陀螺仪型号为ENC-03,加速度传感器型号为MMA7361,它们集成在一个模块上,通过两个ADC接口与微控制器连接,将采集到的角速度和加速度模拟量传输至微控制器处理。

对于编码器,选用了欧姆龙公司生产的500线编码器,通过齿轮与电机连接,这样电机旋转时,编码器便会产生脉冲,脉冲数与电机转速成正比。K64的FTM模块有正交解码功能,可以利用该模块捕获编码器脉冲。

OV7725是由Omnivision公司生产的图像感光器件,与OV7620、OV7670这些型号相比,OV7725信噪比更高、速度更快、稳定性更好、微光灵敏度更高[2]。我们选用的鹰眼摄像头既使用了OV7725芯片,又设计了硬件二值化电路,可直接将摄像头采集到的二值化图像传输至微控制器。

迷你键盘为人机交互设备的一部分,它是一个4×4的矩阵键盘,可以自定义按键功能,完成参数的录入与修改。

1.4 输出部分

输出部分包含电机驱动模块和OLED显示屏。

在设计电机驱动模块时,我们使用两片IR2104S芯片和4个MOSFET组成全桥驱动电路,利用MOSFET的通断来控制两个电机的转动方向与转速。其中,IR2104S芯片为IR公司生产的半桥驱动芯片。

OLED显示屏为人机交互设备的另一部分,其分辨率为128×64,可以显示摄像头拍摄的图像、采集到的数据等,方便调试。

2 控制算法设计

直立小车运动控制任务可以分解成以下三个基本任务[3]:

① 直立控制。根据小车当前的角度和角速度,控制电机正反转,使小车保持平衡。

② 速度控制。根据小车当前的速度,调整小车倾角,使小车按设定速度行驶。

③ 方向控制。根据摄像头采集到的图像,计算离中心线的偏离程度,控制两个电机之间的转动差速,使小车转向。

这三个控制会分别输出对电机转向和转速的控制量,通过线性叠加,得到PWM占空比,最终输出PWM波至电机驱动模块。

2.1 直立控制

可以将直立小车看成一个倒立的单摆,当它往一个方向倾倒时,在它的底部提供一个同向的加速度,便可以使它回到平衡位置,如图3所示。

图3 直立控制原理

加速度传感器采集到小车加速度a后,由下式可以得到小车当前角度θ1:

(1)

其中,g为重力加速度单位。另外,将陀螺仪采集到的角速度ω积分,可以得到角度θ2。通过卡尔曼滤波,可以将θ1和θ2融合为变化平滑的角度θ。

利用PD控制,得到直立控制的控制量Ca:

Ca=Kpa×(θ-θ0)+Kda×ω

(2)

其中,Kpa为直立控制比例系数,Kda为直立控制微分系数,θ0为小车平衡时的角度。Kpa和Kda均需通过实验得到。

2.2 速度控制

为了使系统更加稳定,我们希望小车匀速行驶。完成直立控制后,若想让小车加速,则仅需使其前倾。通过不断调整倾角,便可以使其按设定速度行驶。

利用编码器获得左右轮的速度后,先由式(3)得到速度差值ve:

(3)

其中,vl为左轮速度,vr为右轮速度,v0为设定速度。再将ve积分,得到总的距离偏差d。最后利用PI控制,由式(4)得到速度控制的控制量Cs:

Cs=Kps×ve+Kis×d

(4)

其中,Kps为速度控制比例系数,Kis为速度控制积分系数,它们均需通过实验得到。这样,当小车速度低于设定速度时,Cs为负,小车前倾,而直立控制为了使小车保持平衡,便会给小车一个向前的加速度,使小车加速。

2.3 方向控制

为了使小车能够沿指定道路行驶,还需要进行方向控制,根据道路情况及时调整小车的前进方向。

图4 中线提取效果

中线提取效果如图4所示,在摄像头采集到的二值化图像上,道路中间为白色,边缘为黑色。使用中线提取算法,找出图像上每行的左右边线,进而求出道路中心线的位置。对每行中点位置进行加权平均,得到表示小车位置的量,用这个量减去小车目标位置,得到小车离中心线的偏离度me。再计算me的微分量Δme,Δme表示小车方向的变化率。利用PD控制,由式(5)得到方向控制的控制量Ct:

Ct=Kpt×me+Kdt×Δme

(5)

其中,Kpt为方向控制比例系数,Kdt为方向控制微分系数,它们均需通过实验得到。当小车在道路左侧时,拍摄到的图像向右移动,me为正,因而Ct为正。线性叠加控制量时,左轮加Ct,而右轮减Ct,这样,小车会向右转向,恢复至道路中心位置。

2.4 控制融合

在完成了直立、速度和方向控制后,线性叠加Ca、Cs和Ct,为了使小车能够转向,在叠加Ct时,左轮加Ct,而右轮减Ct。线性叠加的结果即为PWM占空比,根据这个占空比,微控制器输出PWM波至电机驱动模块,控制小车行驶。

3 基于MQXLite的软件设计

为了使系统获得更好的实时性和稳定性,我们使用了实时操作系统MQXLite。与无操作系统时不同,操作系统下的编程是以任务为单位的,每一个任务完成一个特定功能,各个任务之间相互独立。编写完各个任务后,交由操作系统调度运行,降低了程序设计的难度。

3.1 MQXLite简介

MQXLite是标准MQX(Message Queue eXecutive)嵌入式实时操作系统的轻量级版本,它支持多任务、优先级调度、同步访问资源、任务间通信、中断处理,具有实时性高、内核精简、资源占用低等特点[4]。

3.2 任务划分

MQXLite中,任务的基本形式按其执行方式分为单次执行任务、周期执行任务,以及资源驱动任务[5]。

单次执行任务在创建后,只执行一次,之后便被销毁或阻塞;周期执行任务按照一定周期执行一次;资源驱动任务仅在它等待的资源可用时,才可能被执行。

根据设计的控制算法,我们划分了5个任务:task_main、task_angle、task_speed、task_turn和task_comm。

task_main为单次执行任务,它是MQXLite启动后执行的第一个任务,用于初始化全局变量、初始化外设、创建其他任务和安装用户中断服务例程。

task_angle为5 ms执行一次的周期性任务,该任务用于直立控制。首先,它获取陀螺仪和加速度传感器采集到的角速度和加速度,再通过直立控制算法,计算得到直立控制的控制量。最后,在该任务中还完成控制量的线性叠加,更新左右电机PWM占空比,以变更小车行驶状态。

task_speed为20 ms执行一次的周期性任务,该任务用于速度控制。在获取左右轮速度后,根据速度控制算法,更新速度控制的控制量。

task_turn为资源驱动任务,用于方向控制。摄像头采集完毕图像后,会触发一个中断,在该中断的中断服务例程中,置轻量级事件位,触发task_turn任务。该任务中,对采集到的图像使用方向控制算法,更新方向控制的控制量。

task_comm为资源驱动任务,主要用于与上位机的通信,进行调试。在收到上位机的命令后,该任务被触发,将小车的参数发送至上位机,用于调试与分析。

另外,由于各控制量被多个任务使用,在更新控制量时,还需要使用互斥体来保证对它们的同步访问。

各任务优先级从高到低依次为:task_main、task_turn、task_speed、task_angle和task_comm。由于图像采集的时间较长,在图像采集完毕后,我们希望能够尽快更新方向信息,所以task_turn优先级较高。task_speed和task_angle同理。而task_comm并不是特别重要,优先级最低。这样设置任务优先级后,对方向、速度控制的响应会比无操作系统时快,使整个系统获得了更好的实时性和稳定性。

结 语

[1] Texas Instruments. Low-Dropout Voltage Regulators With Integrated Delayed Reset Function (Rev. F)[EB/OL]. (1999-01-01) [2018-01-31].http://www.ti.com/lit/ds/symlink/tps73.pdf.

[2] Omnivision. OV7725 datasheet[EB/OL]. (2007-12-17) [2018-01-31].http://www.zhopper.narod.ru/mobile/ov7725_full.pdf.

[3] 刘明,王洪军,李永科.直立行走的智能车设计方案[J].科技信息,2012,29(20):122.

[4] Freesca1e Semiconductor. MQXLite Real-Time Operating System User Guide. Rev 1.1[EB/OL]. (2014-02-01) [2018-01-31].http://cache.freescale.com/files/soft_dev_tools/doc/user_guide/MQXLITEUG.pdf.

[5] 王宜怀,朱仕浪,姚望舒.嵌入式实时操作系统MQX应用开发技术—ARM Cortex-M微处理器[M]. 北京:电子工业出版社,2014.

[6] 卓晴,黄开胜,邵贝贝.学做智能车:挑战“飞思卡尔”杯[M]. 北京:北京航空航天大学出版社,2007.

赵俊杰、高晓雅(本科),物联网工程专业;张建(讲师),主要研究方向为MIS系统开发、嵌入式系统应用。

猜你喜欢
微控制器控制算法编码器
基于FPGA的同步机轴角编码器
基于ARM+FPGA的模块化同步控制算法研究
物联网技术在微控制器实验教学中的应用
基于PRBS检测的8B/IOB编码器设计
JESD204B接口协议中的8B10B编码器设计
一种优化的基于ARM Cortex-M3电池组均衡控制算法应用
多总线式光电编码器的设计与应用
Atmel针对新一代物联网应用发布全新32位微控制器
最新STM32设计工具增加对混合信号微控制器的支持
一种非圆旋转工件支撑装置控制算法