基于PID控制算法的气味循迹车设计
扫描二维码
随时随地手机看文章
摘要:气味源的循迹是目前的研究热点之一,在以后的日常生活以及生产方面有着较为广泛的运用。本文介绍了一种基于 STC12C5A60S2单片机设计的简便智能气味循迹小车。采用两个气味传感器,根据浓度差判断气味流向,并通过PID算法控制舵机打出偏角,使小车循着气味行走。整个硬件模块的设计结构简单灵活,通过实验仿真,在室内时变气流场的环境下,该小车能达到气味循迹要求。
关键词:单片机;PID;气味;循迹小车
气味循迹可以从事寻找有毒有害气体泄漏源、寻找爆炸源等相关工作,受到科研人员高度关注,发展十分迅速。同时,随着人们日常生活智能化程度的增强,具有智能控制系统的小车、机器人层出不穷,而这些智能体将在未来工业生产和日常生活中扮演更重要的角色。智能车,是一种能感知环境和自动有目的地行驶的综合系统。我们也可以这样认为,智能车也是智能机器人的一种形式,它的双腿我们用轮子代替,因而更加简单实现和控制。
耗时长、跟随性能差是当下智能气味循迹车在循迹过程中普遍存在着的情况。本文介绍的智能气味循迹车的控制核心是STC12单片机,能自动感知附近特定的气味,并应用
PID算法调节舵机,控制方向遵循气味来向前行,实验结果显示能有效缩短循迹时间,改善智能车的跟随性能。
1 硬件系统及其工作原理
1.1 硬件系统设计
智能车的系统(图1)的组成模块有:电源模块(变压稳压)、控制处理模块、传感器模块(探寻气味)、转向控制模块、电机驱动模块和状态显示模块等。控制处理模块为STC12 C5A单片机,由ULN2003APC驱动电机,采用后轮驱动,舵机由单片机直接控制,而舵机控制前轮转向。部分电路图(图2)和电路板实物图(图3)如下。
1.2 工作原理简介
本设计中,智能小车先由气味传感器感知两个方向的气味浓度,传送给单片机的AD口,由单片机进行判断,判断两个方向的浓度高低,然后通过PID算法,控制舵机打出偏角,跟随轨迹前行。
2 芯片配置及其功能
2.1 单片机STC12C5A60S2介绍
STC12C5A60S2引脚图如图4所示。
此单片机具有如下配置:RAM拥有1 280字节,具备40个通用I/O口,复位后为准双向口/弱上拉。具有EEPROM、看门狗功能。5.0 V单片机为:11~17 MHz,3.3 V单片机为:8~12 MHz。Power Down模式可由外部中断唤醒,INT0/P3.2,INT1/P3.3,T0/P3.4,T1/P3.5,RxD/P3.0,CCPO/P1.3,CCPO/P1.3。
双串口,RxD2/P1.2,TxD2/P1.3。
气味传感器是气味循迹小车的关键模块,气体感应的准确性关系着小车最终能否寻找到气味源。本实验采用一个MS5100传感器。MS5100通电后,圆圈内的金属化合物能感知特定气味,其电阻随气味浓度升高而降低,则增大,输送给单片机的AD口,因为单片机能判断此气味传感器所处位置的气味浓度。(电路图如图5)
2.2 舵机模块
本设计中舵机(图2中舵机部分)采用PWM信号(脉宽调制信号)作为控制信号,控制周期为20 ms,拥有0.5~2.5 ms的脉冲宽度,以及0~180度的舵盘偏移角度,呈线性变化。也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应的位置上。
2.3 电机驱动模块
由于单片机提供的电流无法直接驱动小车上的直流电机,故本设计采用外接驱动芯片达林顿管,即ULN2003作为电机驱动(图2中电机驱动部分),控制电机转动。此芯片能承受较高的工作电压和电流,采用编程产生有序的PWM波,对电机进行控制,能达到速度可调的效果。
2.4 指示灯显示模块
本设计中采用发光二极管,将将传感器的采集结果直接输出,可直观了解到各个传感器的工作情况。通过对观察传感器工作情况与的行驶小车状态,可判断小车是否正常工作。
2.5 电源模块
本设计中单片机、电机驱动等元器件的正常工作均需要稳定的电压,因此采用LM7805和LM7806并配上稳压滤波电路分别将干电池的电源直接变压成5 V和6 V的直流电源,来提供单片机、舵机、电机等元件工作所需电源。
3 实验
智能车追踪气味源的关键在于快速地分析气味的流向,并迅速准确地控制舵机打出偏角。然而在连续转弯时,由于曲率变化过大,加上小车具有一定的速度,舵机响应又需要一定的时间,所以在实际中经常出现小车来不及掉头而随意冲撞的情况。本设计中采用PID算法来控制舵机转向,在智能车对气味的跟随性能上有明显改善,能实现快速准确地控制(图8)。PID算法公式:
其中:Kp为比例控制参数;
KI为积分控制参数;
KD为微分控制参数。
C语言是实验的主要编程语言,上述PID算法代码可用下面语句实现:
PID_out=(servo_P*error_history[2]//比例
+servo_I*error_sum/10//积分
+servo_D*(error_history[2]-error_history[1])//微分
)/10;//这里的能将小数计算转换成整数计算,以减轻单片机的负担
4 结束语
本设计系统的主控模块采用的STC12C5A60S2单片机,可以将气味传感器输入的模拟量通过AD转换转换成数字量从而使运算更加简便,加上合适的 PID运算,能对舵机进行较为准确的控制,从而能够达到智能车跟随气味行走的目的。本方案系统设计合理有序。不足的地方就在于传感器的灵敏度,本设计需要传感器能较为准确地判断比较两个传感器所处位置的浓度差,而一般的传感器不能很好的达到这一要求。本实验最终的结果实现了智能小车对气味的感知,并能寻找高浓度的方向。通过对智能气味循迹车添加PID算法控制的实验证明:添加算法后,小车循迹更加迅速准确,有较强的适应能力。