【学习笔记】基于PID算法在喷绘机小车控制系统的应用
2015年微型机与应用第8期
作者: 刘 晋,苏 臣,金禹含,步亚男
摘 要: 选取STM32系列的STM32F103RBT6作为主控系统,以L6203作为直流电机的驱动;根据小车的位置通过PID算法调节小车的速度,对主控中高级定时器进行设计,通过UART显示数据;观测小车运行过程中能否消除惯性带来的影响并立刻转向,及PID算法是否可以应用在喷绘机小车的控制系统中。经过理论分析和软硬件结合测试表明,该设计不但解决了直流电机中由于惯性大难以刹车的问题,并验证了PID算法在喷绘机控制系统中的可行性和实用性。
0 引言
喷墨式喷绘机为保证喷绘出图像精准细腻,小车上的喷头每行扫描过程中按需进行喷墨,但是来自小车的平稳性以及在改变方向时小车的运动状态,直接影响喷头墨滴喷出的位置。如何在保证小车平稳运行前提下,根据提供的信号改变小车的运行状态值得深入研究和探讨。
1 系统设计理念
携带喷头的小车在喷绘轨道上来回运动,在需要的位置上(即像素点)喷头进行喷墨。主控发控制信号给电机驱动模块来控制电机,从而控制小车的方向和位置。电机可以是步进电机、位置控制方式的伺服电机和直流电机。步进电机启动力矩大,易于精确控制位置,但很难达到高速,实际应用中使用较少。位置控制方式的伺服电机不但具有步进电机的优点,而且内置的控制器具有电子齿轮易改传动比,实际应用中采用较多,但此电机非常昂贵,从实际的成本出发不易选用。综合考虑,采用成本较低的普通直流电机,通过调整驱动电压调整速度,但直流电机不能精确定位,必须为其配备精密的位置检测机构以及伺服控制机构才能实现较精确的定位。由于携带喷头的小车惯性很大,方向调整时很难瞬时根据控制信号来更改方向,总是在主控发送完调整方向信号后速度慢慢减到0,然后才能调整方向从0慢慢加速。由于机械特性增加了误差,不少研发人员采用在改变方向前先加高占空比反相冲击电压,然后再调整适合的占空比,但实际应用过程中此方法并不完全合适。这是因为质量太大,高脉冲难以冲击反相速度并调整方向。综合不同的方法和经验,借助STM32主控系统的优势,通过理论研究和实际应用迅速调整方向,基本消除了物体质量过大带来的惯性影响,而且小车在实际运行中通过PID算法[1]达到平稳。喷绘机的喷绘轨道是带光栅的,小车实际运行过程中接收光栅编码器的位置信号,从而计算小车的位置和运动速度。由于机械、系统成本、复杂性、实验环境等多方面限制,本设计系统没有真正采用喷绘系统的小车作为研究对象,但为了说明和解决实际问题,本设计系统采用同等系统的等效法进行实验。设计系统等效法如下:在电机上固定喷头和小车同等重量的物体(相当于小车携带喷头的运动系统),并在物体上绑定多圈可调电位器(相当于光栅编码器来传送位置信号),电位器上绑定一定质量的摆,摆偏移设定点(相当于小车系统的原点)的角度记作位置(相当于小车偏移位置),通过PID算法调节摆的占空比(相当于小车的速度),摆在偏移点左右转动时瞬间改变电机的方向(相当于小车方向调整)。通过系统等效法验证了此设计方法在喷绘系统的实用性和可行性。
2 基于系统的硬件设计
图1、2为控制系统硬件结构架构,其中图1是系统硬件的总体架构,图2是电机的驱动电路。主控系统选取的是STM32系列的STM32F103RBT6,选此控制系统是因为主控不但使用方便、成本较低、通过高级定时器编程设计直接实现电机驱动的死区设置,并可适当地更改死区时间,而且普通定时器也具有编码功能,可直接应用在喷绘机控制系统中的光栅编码器,从而正交采集光栅信号检测小车[2]的运行位置。PC与STM32主控交互,可通过J-Link向主控中的Flash下载程序或通过PC的串口工具接收单片机发送的信息等。设计中选取STM32为主控,选取支持死区模式的TIM1定时器的PWM输出供给L6203信号。主控中集成的AD主要是为了采样摇摆偏移原点的位置(相当于小车偏移位置),主控中的DMA主要是为了快速传递AD采样信息。为实现嵌入式经典理论中前后台系统设计,采用中断方式(NVIC)来处理任务。主控中的RCC为系统需要的时钟配置;GPIO为需要的引脚配置,既包括AD引脚的采样输入引脚,又包括定时器的PWM输出引脚等;UART接口通过串口线和PC连接来显示信息;Tim4定时显示处理向PC发送电机的状态信息;SysTick定时中断处理不同角度下通过PID调整的占空比任务。
L6230电机的驱动模块是手动焊接且通过测试可正常工作的。之所以选择以L6203为主芯片模块,是因为此模块可以提供最大电流4 A、最大电压48 V,以便可以提供摇摆足够大的速度,来观察高速运动下通过设置死区能否克服物体由于质量大带来的难以刹车问题,从而验证此设计系统在喷绘领域的实用性。主控和L6203跳线时,为保护主控系统又要满足主控和电机模块的对地接入,L6203模块在接入时的GND引脚先跳线到SEMSE引脚,然后再跳线到L6203 GND引脚,再接入到主控STM32的GND。此方法的主要作用是当系统中电流过大时,电流只会贯穿L6203,不会烧坏STM32主控,对主控起到保护作用。L6203的IN1和IN2为两路PWM输入,Vs和SEMSE接入稳压电源的正负极,EN为主控提供使能信号,OUT1和OUT2供给普通直流电机的电压。
3 基于系统的软件设计
整个软件架构分别对串行通信、高级定时器、AD角度采样、PID算法设计、主控状态机切换等进行设计与研究,最后借助PC上的串口调试器人机交互来设置采样位置和检测系统的执行状态,从而证明系统可行性。
3.1 软件中状态机切换
图3为控制系统中状态机间的切换。程序设计思想借助于嵌入式实时操作系统提出的前后台系统理论。为避免后台系统打断前台系统对任务的处理有影响,任务做在后台中断里,前台的While()死循环(LOOP状态)中没有任务,后台通过中断信号来告知处理器,从而刺激中断的发生。从状态机的切换图可以看出,INIT状态是系统初始化过程,主要包括主控的定时器、输入输出引脚、AD以及DMA等时钟初始化,定时器、AD转化以及串口的输入输出引脚初始化,定时器、DMA、系统定时中断的初始化以及DMA传输设置初始化。初始化时设置的PC.4(GPIO_Mode_AIN模式)即模拟输入模式,当PC.4引脚的信号发生变化时,即位置传感器传入当前位置后进入ADC状态。为提高AD转化速度和程序处理能力,DMA初始化时借助DMA1的第12通道,直接把AD配置成从ADC1->DR的地址传送到ad_sm地址,此时为DMA状态。传输完数值后进入SMO状态,此状态下任务对传递的ad_sm做平滑处理,平滑处理次数越多值越精确,此处做了8次平滑处理。选择8次处理,首先是因为经过实际应用知平滑处理过的AD数值误差精度已达要求。其次,做8次平滑处理只需在数值累加时右移3位、结果中最后左移3位,相比于复杂的乘除运算,左右移操作不会占处理器太多处理时间,一定程度上提高了系统的效率,,否则需乘除法和借助浮点库,加大了主控需求,给主控带来了难度和挑战。最后在SMO状态(DMA中断的处理程序)输出处理后的位置采样AD值ad_sm_new,并将此处的ad_sm_new设置为全局变量数据共享即可进入到Verify_Keep状态。TIM4状态中定时器设置为1 s中断的方式采集ad_sm_new并通过串口发送给上位机,通过串口调试器显示给程序员调试。为满足调整的精度要求,系统初始化时设置系统定时器(滴答定时器),程序运行后处于Sys状态,每10 ?滋s产生系统定时中断对当前位置采集到的AD值(即ad_sm_new),根据当时的实际情形进行PID调试或PI调试状态后进入PWM状态,输出调整PWM占空比(速度)。采集到的位置要改变方向时(即到达一方向的终点时,在Verify_Keep状态下的判断),进行Deal2处理进入Die状态。由于在改变方向时直流电机不能立刻停下来改变方向,每次都是在原始的方向减小到0然后再改变方向,这种情况不满足实际的工作状态。此状态下通过初始化时设置的高级定时器,设置死区加以控制小车方向的改变。控制系统需要更改位置初始点设置以及系统定时中断时间等参数时,通过按键中断促使发生,进入到Key状态,此状态下有相应的消抖处理,一旦确认特定的按键按下则进入到Change状态,通过串口显示信息提示来更改初始点位置以及系统中断时间等参数。
3.2 系统中PID算法的应用
图4为PID算法在程序中的应用。从程序框图可知,在初始点处设Uk=0,每10 ?滋s后进入系统中断采集位置AD值,然后计算出偏差err。若err大于设定的最大偏差,则需进行比例、积分、微分共同调节;若小于设定偏差,则只需比例、积分调节,最后通过偏差数值乘以设定的比例值算出需要的Templ,并把Uk进行累积(最后的Uk为TIM1定时器需要装载的值)来更改占空比。若求出的偏差err>0则正向输出PWM波形,否则反向输出。
PID程序设计重要的是调节适当的比例、积分、微分系数,本系统在PID调节过程中首先把微分、积分系数设为0,使之成为纯比例调节。调节比例系数Kp由0增大,直至出现震荡后,减小Kp使震荡消失后记此比例系数Kp。比例系数确定后调节积分系数Ki,积分系数的时间常数设为较大的Ti,然后为较小Ti使之出现振荡,然后再反过来增加Ti使振荡消失后记此Ki。最后在微分调节时先观察,若发现控制有明显的滞后时,需对Kd进行调节到合适,否则不需调节Kd。通过此调节过程可知PID算法在此控制系统的简单性和实用性。
3.3 高级定时器在程序中的应用设置
主控中的高级定时器TIM1能够输出两路互补的PWM信号并能瞬时地关断和接通,同时设置定时器中的CCxE和CCxNE位插入死区。设置适当的插入死区时间可以瞬间地调整摇摆(相当于喷绘机中的小车)的方向,不会因为惯性太大而难以刹车。设置时定时器的PA9和PB14引脚对应到OCx和OCxN。库函数通过设置TIM_BDTRInitStructure.TIM_DeadTime值来改变插入的死区时间。系统上电初期,TIM1_BDTR寄存器中的MOE低即刹车功能禁止。方向调整需要更改时,调整TIM1_BDTR寄存器BKE位来使能刹车功能。当不需要调整方向而在一个方向上平稳运行时,通过位置检测来调整需要的占空比。图5为系统刹车时序图,是摇摆调整方向时通过示波器测出的。图中1通道引入的是定时器1的PA9引脚,2互补通道引入的是定时器1 PB14引脚,可看出两条竖线间是插入的死区时间,从右边黑圈内读出两竖线间的时间为300 ?滋s与高级定时器的设置相吻合。经实际操作验证,此系统在此死区时间以及互补PWM信号设置下可瞬时改变方向,基本消除了机械上惯性带来的干扰。
4 系统的测试
结合系统总体架构的软件和硬件平台以及过程方法步骤的阐述,最后测试结果如图6、图7所示。其中图6显示了运动过程中的位置采样信息,从图可知,在COM1下、9 600 b/s传输率、8个数据位、1个停止位、无奇偶校验下,第一时刻采集到的位置值为198。图7是PID在此位置调试下的示波器截图,显示了此位置下通过PID调节后输出的占空比PWM波形。从截图黑圈中可看出,在平稳状态下运行时的频率为20 kHz,占空比为28%,满足摇摆平稳的运行状态与实际的设置相吻合。结合图5、图6、图7可看出摇摆在调整方向时的刹车以及PID在摇摆平稳状态下运行的可行性和实用性,证明此设计系统正确,可投放到应用领域。
5 结论
随着喷绘技术发展,对喷绘机中小车控制系统要求越来越高。本设计从简单、方便、实用性考虑,将STM32作为主控制平台、L6203作为电机驱动,系统结合软件设计出喷绘机中小车的控制系统。通过实践和理论研究证明此方案可行,系统不仅简捷、方便,而且更改容易,且执行过程中一定程度上提高了系统的效率并解决了一定技术难题,达到了理想的预期效果。但此设计控制系统没能真正地面向喷绘机中小车系统,只是采取了系统等效法进行了演示,一定还有不少缺陷和不足,需以后加以弥补和改正。也希望将来此设计系统可广泛应用到喷绘机小车的控制系统中。
参考文献
[1] 李博,马训鸣,霍建锋.基于PID的变量马达恒速控制系统研究[J].西安工程大学学报,2014,27(2):231-233.
[2] 刘晋,刘卓.USB接口在喷绘机中的应用[J].航空计算技术,2007,37(2):62-65.