高 文,陈 佩
(1.西安航空学院 电子工程学院,西安710000;2.西安智容传动技术有限公司,西安710000)
近些年随着人工智能技术的快速发展,无人自动驾驶技术也变得越来越炙手可热[1]。同时,随着人们日常生活智能化程度的增强,具有智能控制系统的小车、机器人层出不穷。现在具有巡线、避障、远程操控等功能的智能小车,能够在人类无法工作的环境下进行工作,如排雷、侦查、救援及生命探测等;在生活中也有较广的应用领域,比如作为餐厅的送餐服务员、家庭的扫地机器人;在科学研究领域可作为外星球科研探索使用[2-5]。
本文设计一种基于STM32的智能无线充电循迹小车,在传统的小车上增加了无线充电的功能,能够解决传统小车充电不方便的问题,并且进行电能的智能管理,可实现自动停车充电,充电后的自动运行,具有快捷、方便及高效运行等优点,具有良好的市场前景。
根据对智能移动小车的功能需求分析[6],搭建的系统结构框图如图1所示。其中包括控制器模块(STM32F103C8T6)、循迹电路模块、电机驱动模块、显示模块(OLED)、无线充电发射模块、无线充电接收模块、超级电容以及电机。整个系统遵循模块化设计原则,有利于后续的开发升级。
图1 系统整体结构框图Fig.1 Block diagram of system structure
整个系统工作原理:①初始状态小车处于充电站位置,当开关打开,如果系统电压过低或彻底无电,小车将停止运行,停留在充电站自行进行充电;②经过充电,当系统电压达到工作电压,则控制器STM32F103C8T6 开始工作,检测系统电压,并启动定时器开始计时充电时间,当系统电压和充电时间都满足预设条件后,小车开始运行;③运行过程中循迹电路将检测的结果反馈给控制器,控制器根据反馈结果决定小车的运行状态,输出2组PWM 脉宽调制波分别控制小车的转向和直流电机的速度来实现小车的按轨迹运行。在行进过程中,控制器一直监控系统电压(超级电容电压)并进行实时显示;④在运行过程中,控制器进行整个电量的智能管理,当电压值低于设定的预警值时,小车继续运行至检测到的第一个充电站,自动停止进行充电,然后根据充电的情况再决定下一步的运行。在整个过程中,不仅要实现循迹的运行,包含速度、方向及转弯灯处理,还要通过电源检测达到小车的智能化管理。
设计采用STM32F103C8T6 作为系统的主控芯片,STM32F103 相较于其他类型主控芯片如STC51、MPS430 等具有外设资源丰富、性价比高的优点。
电机的稳定工作是整个小车正常运行的基本保证。电机驱动部分配合核心控制芯片实现对各电机启动、停止、运行速率以及运行方向的控制。设计选用TOSHIBA 半导体公司研发生产的TB6612FNG芯片作为电机运行的驱动芯片,该芯片能够双通道输出,功耗也较其他相同规格的电机驱动芯片更小,在小型电机的控制系统电路中广泛使用[7]。
TB6612FNG是基于MOSFET的H 桥集成电路,与晶体管H 桥驱动器相比,效率大大提高。TB6612FNG可同时驱动2个电机,并可提供启动峰值电流高达2 A的连续脉冲,同时无需外加散热片,外围电路简单。TB6612FNG的PWM 信号输出频率可至100 kHz,电机的调速范围较大。电机驱动电路如图2所示。
图2 电机驱动电路Fig.2 Motor drive circuit
循迹电路是小车的“眼睛”,可保证小车按照预定轨迹行进。设计通过4组红外传感器的检测结果作为控制电机运动的判断条件,通过算法处理达到稳定循迹运行的功能。具体使用TCRT5000 红外传感器加LM393 比较器构成,当电路检测到黑色轨迹部分则输出高电平,反之输出低电平。具体电路如图3所示。
图3 循迹电路Fig.3 Tracking circuit
本系统采用超级电容作为小车的主要储能部件,经处理后为控制系统以及电机提供所需电源。小车系统需要稳定的3.3 V 供电,考虑到电容放电时的电压是随时间变化的,对电容电压进行变换,使用TPS63020 芯片构成的Buck-Boost 升降压电路,保证将1.8 V~5.5 V的电容电压转换为稳定的3.3 V。具体电路如图4所示。
图4 Buck-Boost 升降压电路Fig.4 Buck-Boost circuit
无线充电运用电磁感应原理为小车的超级电容进行充电[8],其结构如图5所示。
图5 无线充电电路Fig.5 Wireless charging circuit
具体原理:首先发射端接入直流电源,通过全桥电路生成方波交流电压,控制开关管的频率改变方波的周期[9-10],当电压加载到LC 谐振电路上会生成交流电,经过线圈的作用会产生高频变化的磁场。其次将二次侧线圈放入,会在二次侧产生感应电压。感应电压经过整流、稳压、变压后给超级电容充电。发射端的电路如图6所示。接收端电路如图7所示。
图6 发射端电路Fig.6 Transmitter circuit
控制算法是智能小车的灵魂,决定了智能小车的稳定性和快速性[11]。本系统从控制角度分析,小车有5 路输入(红外循迹返回值)2个输出(电机的PWM),而5 路红外循迹返回值组合决定了小车的位置值,小车系统控制即转变为1个输入量2个输出量。为保证小车循迹运行过程中的平稳,采用闭环的PID控制算法,PID算法具有原理简单、易于实现、稳定可靠及结构改变灵活等优点,具体在本系统的控制模型如图8所示。
图7 接收端电路Fig.7 Receiver circuit
图8 PID控制系统原理图Fig.8 Schematic diagram of PID control system
PID控制算法是以比例、微分、积分来进行控制的。可分为位置式和增量式2种。位置式PID的输出与过去的所有状态有关,对每一次的误差进行累加,计算量较大,当控制器出现问题时,对系统的稳定性影响太大。和位置式PID控制不同,增量式PID控制将当前时刻的控制量和上一时刻的控制量做差,以差值为新的控制量,是一种递推式的算法,针对智能小车系统采用增量式PID控制更加适合,增量式PID控制算法的理论基础为
将其离散化后:
前后项相减:
式中:KP为比例控制参数;Ki为积分控制参数;KD为微分控制参数。
在实际系统运用中,将红外传感器返回值作为误差项,经PID 程序运算后,改变电机PWM的占空比参数,调整小车的转向。具体如表1所示。
表1 返回值及误差Tab.1 Return value and error
从表1可以看出当返回值为00100时,误差值为0,认为小车处于循迹线的正中央运行,当偏左或偏右时返回变为01000 或00010,根据此返回值判定对应的误差值进行控制。需注意当返回值为00000时,意味着上一次返回值可能是10000,也可能是00001;如果返回值是10000,则小车运行第一个传感器和第二个传感器之间或者是在第一个传感器右边;如果是00001 则小车在最后一个传感器的左边。
根据式(3)可以写出PID算法代码:
智能小车上电后,各传感器和功能电路采集相关信息送至STM32 单片机,单片机根据采集的相应信息调用相关的程序进行数据处理,处理后控制相应的模块进行执行。智能小车系统的主程序流程如图9所示。
图9 主程序流程Fig.9 Main program flow chart
将超级电容的残余电量放至0 V,在充电电压/电流(5 V/1 A)的情况下,选用不同限流电阻进行充电测试,结果如表2所示。
表2 充电时长测试Tab.2 Charging duration test
在整个智能无线充电循迹小车的运行过程中,需要实时监控小车的总电量(超级电容电压)。同时将超级电容电压显示在OLED 屏上利于小车和使用人员的信息交互。实际是通过电源检测监控电路检测超级电容两端的电压值,经处理后进入STM32的ADC端口,通过内部的换算和程序处理最终显示在OLED 屏上。实际测试结果如图10所示。OLED显示系统监测的电压值,万用表的数值为直接在超级电容两端测得的实际数据。
图10 显示电压值与实测值Fig.10 Display voltage value and measured value
实测结果表明ADC 读取与OLED 显示的电压与实测误差在0.01 V,符合设计要求。
整定调节器参数的方法基本可分为理论计算整定法和工程整定法。工程整定法无需知道系统过程的数学模型,直接进行现场整定,方法简单、计算简便、易于操作[12]。本文采用工程整定法的凑试法确定PID的比例、积分及微分参数。首先确定KP值,将Ki、KD的参数设置为0。将KP从0 逐渐增大,直到小车出现振荡,再反向从振荡开始减小到小车停止振荡,运行平稳。确定KP后则依照上述原理确定Ki、KD。经过反复调试当KP=10;Ki=0.5;KD=0.1,采用循迹难度较大的圆形跑道,小车能够平稳的循迹运行,实际循迹运行照片如图11所示。
图11 小车循迹运行照片Fig.11 Photo of the car tracking
本文介绍了一种基于STM32的智能无线充电循迹小车,系统采用无线充电技术,运行中通过实时电量的监控实现智能管理,可自动停车充电。在行进过程中根据循迹传感器的返回数值经增量式PID算法后控制小车左右驱动轮的PWM 信号输出。经多次测试,小车能够较平稳地循迹高速行驶,具有较高的应用前景和研究价值。