分享

基于STM32的机器人运动精确控制系统设计

 文明世界拼图 2019-12-04

谢邵春 陈杨 彭友玉 张雯丽 郑辰雅

摘 要:针对机器人运动控制不精确,如实际转向与控制转向有偏差,导致调整麻烦,通常需要传感器(如使用光电编码器)进行反馈控制。若轮子直径不一样,会造成控制量上的累积误差。为了解决该问题,设计了一个基于STM32微控制器的机器人运动精确控制系统,对由于直径不同导致的误差进行标定补偿,实现机器人行走,尤其是转向时角度的精确控制。该设计,以PID为基本控制算法,STM32F4单片机为控制核心,使用其通用定时器的输入捕获功能来采集光电编码器的输出,进而产生受PID算法控制的PWM脉冲,对直流电机的转速进行控制,实现机器人精度高的运动性能控制。

关键词:STM32;PID控制;运动精确控制;PWM

中图分类号:TP242 文献标志码:A 文章编号:2095-2945(2018)16-0035-03

Abstract: In view of the imprecise motion control of the robot, such as the deviation between the actual steering and the control steering, which leads to the adjustment trouble, it usually needs the sensor (such as using photoelectric encoder) to carry on the feedback control. If the wheel diameter is different, it will cause the cumulative error on the control quantity. In order to solve this problem, a precise control system of robot motion based on STM32 microcontroller is designed. The error caused by different diameters is calibrated and compensated to realize the precise control of the robot's walking angle, especially when it is steering. This design takes PID as the basic control algorithm and STM32F4 single chip microcomputer as the control core, uses the input and capture function of its universal timer to collect the output of the photoelectric encoder, and then produces the PWM pulse controlled by the PID algorithm. The speed of DC motor is controlled to realize the motion performance control of robot with high precision.

Keywords: STM32; PID control; precise motion control; PWM

引言

直流电动机应用于实际多个领域内,因为它具有较好的调速性能、启动转矩大、控制性能优等特点[1-2]。单片机的应用使直流调速进入一个更加智能与可靠的新阶段[3]。

现有的直流调速系统在应用于机器人行走控制时,一般存在控制不精确的缺点。本设计基于一款性价比高、功耗低的STM32单片机为控制核心,结合PID控制技术,将电机转速控制作为研究对象,以扫地机器人为依托平台,微控制器产生的PWM脉冲受PID程序算法控制,以实现对直流电机转速的控制,同时使用光电编码器实时测量旋转的角度,反馈到单片机中,实现角度的闭环控制,进而实现对机器人转向活动的精确控制。

1 系统结构

根据设计的目的和要求,给出了如图1所示的总体系统框图。图中STM32单片机为系统的核心控制器件,负责旋转角度的模糊控制。针对转向控制,在编程时把每个预定角度对应电机所需旋转的圈数输入单片机中,机器人在运转时,旋转角度信息通过光电编码器输出到单片机输入捕捉通道内,由高低电平的变化数目,可换算成实际转过的角度,再与预设定角度对比得出偏差值,用PID算法调整控制STM32单片机中通用定时器的PWM生成模块,改变PWM脉冲的占空比,再将PWM脉冲送到L298N电机驱动模块中,控制直流电机转速。由此可得到电机需要的实时转速,从而实现机器人转向角度的精确控制。

2 硬件设计

2.1 STM32F4微控制器

经过分析对比各种型号的微控制器,最终选定了ALIENTEK探索者STM32F4单片机作为此设计的微控制器,选择理由有:(1)接口种类丰富。开发板提供多种标准接口,如不同电压的电源接口,方便外设的供电。(2)功能滿足设计需求。板载多种定时器(如高级定时器TIM1和TIM8,通用定时器TIM2到TIM5)可用于各种用途,包括输入捕捉,或者生成输出波形(输出比较、PWM和带死区插入的互补PWM)。

2.2 直流电机驱动模块

根据设计要求,电机驱动电路使用L298N集成电路。L298N为双全桥式驱动芯片,其设计可接受标准TTL逻辑电平信号。一个L298N芯片可驱动2个46V,2A以下的电机。驱动电路如图2所示。OUT1,OUT2和OUT3,OUT4之间可分别接电动机,且可以直接通过接收前段信号来调节输出电压,控制直流电机转速。ENA,ENB接PWM控制使能端,控制电机的停转状态[4]。

2.3 光电编码器

作为角度测量模块,用来反馈当前旋转角度值,且就本设计而言要求测量精度较高,故选择具有较高精度的光电编码器作为角度传感器,其部分参数分别如表1,表2所示。实物图如图3所示。

表1 码盘技术参数

黄色和蓝色的两根信号线,其输出为TTL电平信号,可以直接连接单片机。测电机正反轉即用这两个电平进行区分。

设AB为信号线,A先有脉冲,证明是正转;B先有脉冲,证明是反转。标定时确定好车轮旋转一圈编码器输出高低电平的变化数目,为后面编程控制旋转角度提供数据。

3 软件设计

3.1 PID算法

本系统设计的核心算法为PID算法,PID控制原理简单,是一种稳定、使用很广泛的控制方法。采用增量式PID控制算法控制PWM脉冲的占空比,该算法不需要对误差进行累加,可以避免计算溢出,防止积分饱和。它根据本次采集的数据与设定值进行比较得出偏差e(k),对偏差进行PID运算,最终利用运算结果改变PWM脉冲的占空比,以实现对电机电压的调节,进而控制电机转速。移动机器人的左右两个轮子由两个独立直流电机分别控制,对这两个电机的PID控制系统结构是相同的。式(1)为增量式PID控制算式:

?驻U(k)=Kp[e(k)-e(k-1)]+Kie(k)+Kd[e(k)-2e(k-1)+e(k-2)](1)

其中,Kp、Ki、Kd分别为比例、积分、微分增益。通过设置合适的参数可达到较好的控制精度。PID控制系统结构如图4所示

图中Vin为预定角度值、Vout为实际已旋转的角度。把每个特定角度对应电机所需旋转的圈数编程输入单片机中,在机器人运转时,用单片机输入捕捉高低电平的变化,则可知实际已转过的角度,与预设定角度对比,由PID算法公式算出当前电机需要的转速,从而达到精确控制角度的目的。

机器人前段平均分布5个红外线避障传感器,按相对位置可分为:右侧、右上、前方、左上、左侧。其中预设障碍情况分为4种,对应角度规则有:

(1) 无障碍:左侧(右侧)、前方均无障碍物,规则为:直行。

(2) A类障碍:右侧、右上方有障碍物,规则为:左转90°。

(3) B类障碍:左侧、左上方有障碍物,规则为:右转90°。

(4) C类障碍:左侧、右上方均有或前方、左右侧均有障碍物,规则为:右转180°。

3.2 减少系统误差的方法

在机器人移动过程中,对控制结果影响比较大的误差主要是系统误差。对移动机器人而言系统误差是无法避免的,在机器人制造装配完成时就作为一种物理属性而存在,虽然在之后的使用过程中机器人的一些机械特性会发生变化,但从总体来看,系统误差的变化不大,近似可看成一个定值。故可在一开始使用时即进行消除或补偿。

在上述系统误差中,两个车轮的直径不同是引起系统误差的主要因素。针对该系统误差,有如下的解决方法:在使用前,单独对两个车轮分别进行检查标定,即行走相同的距离或旋转相同的弧度,观察光电编码器旋转的圈数(角度)是否一致,差值分别是多少,记下后在之后的编程中对其差值进行补偿,保证机器人行走时两个车轮运行同步。

3.3 程序流程图

在已知补偿量的前提下,开始时硬软件进行初始化,机器人启动行走,当碰到障碍物时,根据5个红外传感器的状态执行对应的避障程序,开始旋转预定的角度,此时旋转角度信息通过光电编码器输出到单片机输入捕捉通道内,由高低电平的变化数目,可换算成实际转过的角度,再与预设定角度对比得出偏差值,若偏差不为0,则调用PID算法调整控制STM32中通用定时器的PWM生成模块,改变PWM脉冲的占空比,再将PWM脉冲送到L298N电机驱动模块中,控制直流电机转速,控制机器人继续旋转直至角度偏差接近0。之后初始化软硬件,等待下一次避障控制。PID算法流程图如图5所示:

4 结论

基于STM32微控制器的机器人运动精确控制系统,对由于直径不同导致的误差进行标定补偿,实现了机器人行走,尤其是转向时角度的精确控制。该设计,以PID为电机控制算法,同时使用光电编码器实时测量旋转的角度,实现角度的闭环反馈控制,从而实现机器人转向角度的较高精度控制。对机器人的运动控制设计具有一定导参考价值。但是对如何降低转向时的响应延迟时间以及选择更加合理的PID参数以达到更高的控制精度,还需要做进一步探讨。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多