基于ARM 的机器人舵机组控制与实现

2020-06-28 07:46李洪涛
机电产品开发与创新 2020年3期
关键词:主程序舵机串口

李洪涛

(华中光电技术研究所 光电技术研究部, 湖北 武汉 430223)

0 引言

舵机具有廉价、易控和轻质的特点,越来越多地应用于机器人设计领域[1],而一般的机器人并不是由单个舵机构成,而是由多个舵机构成的舵机组,由该组舵机协同完成一系列机器人的动作。 本文提出一种利用ARM 控制器,通过串口实现机器人舵机组的控制方法。

1 机器人的简介

机器人的本体结构如图1 所示,此机器人由腰部、手臂、手肘、手腕和手部组成[2,3]部分的旋转运动均由舵机实现, 各部分之间均通过支架或杆件实现它们之间的连接。 机器人的底座可通过螺栓固定下安装装置上,实现机器人的定位和固定。

图1 机器人本体结构图Fig.1 Robot-body structure diagram

2 机器人舵机组控制系统设计

2.1 舵机控制原理介绍

常用的舵机一般由三根线构成,分别为电源线、地线和控制线。 电源线和地线用于提供舵机内部直流电机所需能源,电压通常介于4.8V~7.2V[4],控制线的输入是一个周期固定为20ms, 脉冲宽度T 介于0.5ms~2.5ms 之间可调的PWM 信号如图2(a)所示。舵机的旋转角度与脉冲宽度成正比关系,两者之间的具有线性关系如图2(b)所示,当输入信号的脉冲宽度为0.5ms 时, 舵机旋转至0°;当输入信号的脉冲宽度为1.5ms 时,舵机旋转至90°;当输入信号的脉冲宽度为2.5ms 时,舵机旋转至180°。

图2 舵机控制信号Fig.2 Rubber control signal

2.2 舵机组控制系统结构设计

由上述的机器人本体可以看出,本机器人手臂一共有5 个舵机,分别控制着机器人的腰部、手臂、肘部、腕部和手的动作。 为了实现机器人手臂协调工作,利用TI 公司的TM4C123GH6PGE 芯片作为机器人的主控制芯片,该芯片是基于Cortex-M4 的系列微控制器, 利用此芯片所构建的控制系统结构框图如图3 所示。

各电机的电源和地分别与6V的直流电源连接,用于为舵机内部的直流电机提供能源[5]。 MCU 的并行端口PD 端口与各5 个舵机的控制信号线相连接,用于为其提供各部分的控制信号。 电脑PC机通过串行通讯接口与MCU 相连, 利用电脑端设计的软件实现机器人的控制[6]。

图3 机器人控制系统结构框图Fig.3 Robot control system diagram

3 机器人舵机组的软件设计与实现

3.1 机器人控制协议设计

为了保证电脑PC 机实现对机器人的设计,设计出一套控制协议可方便控制各机器人的动作。 协议格式及其解释如表1 所示。 如让1 号机器人5 号电机以每秒750的脉宽从当前位置旋转0°,则命令可以写成#15P1500S0750!;若让1 号机器人电机1 和电机5 在2.5s 的时间内, 同步从当前位置分别运行至0°和180°,其命令则为#11P0500#5P2500T2500!

3.2 ARM 程序设计

根据表1 所设计的舵机控制协议,MCU 根据PC 机提供的控制命令按照其协议的要求控制多个舵机的动作。 根据上述的协议要求设计程序流程图如图4 所示。

为了实现机器人舵机组的控制,ARM 控制器的主程序如图4(a)所示,程序开始后做好串口的初始化设计,如串口的端口 号、 波 特率、奇偶校验等参数,之后启动串口;同时设置定时器、定时初值、计数器初值等参数, 之后启动定时器。 在主程序初始化参数设置完成之后,便进入查询循环,如果数据处理标志位被置位,则立刻进行串口数据的解析与处理, 为定时器赋上新的计数值,以便生成新的PWM 波形。 串口中断程序实时地将串口接收到的数据存入内存, 当接收到命令的结束标志符‘! ’时,便认为此次的串行命令行结束,立刻将数据处理标志位置位,以便主程序能及时分析此命令行的操作指令。定时器PWM 脉冲生成程序利用定时器中断实现,定时器以1~2μs 的定时周期来中断, 在中断程序中设置一个计数器用来记录进入中断的次数,以便知道当前的总定时时间, 每到20ms 的时间时,计数器的值便清零,同时连接舵机的脉冲控制端口的电平也转为高电平,以标记一个新的PWM 周期开始; 在计数增加的过程中,由于主程序根据接收的命令已经为每一个舵机设置了计数值,此时把总的计数值与每个舵机的计数值进行比较,若达到该舵机的设定计数值, 便让此舵机对应端口的电平输出为低,以此方法可完成各舵机的PWM 同步输出。

表1 机器人控制协议格式Tab.1

图4 ARM 程序设计Fig.4 ARM program design

4 结论

本文针对目前应用较为广泛的机器人舵机组的控制,设计了机器人舵机组的控制器硬件结构,并提出一种利用计算机串口控制机器人舵机组的快速控制方法,设计了单个舵机运行的协议和舵机组同步运行的协议格式,并根据协议的格式设计了基于ARM 的程序解析和处理方法,可以较为便捷地实现机器人的各类控制动作。此方法为机器人复杂的机械动作奠定了基础, 机器人操作人员可利用此协议设计搬运码垛、模拟焊接、产品装配等具体的动作。本文所设计的协议结构,除了可以完成单个机器人的控制之外,在不增加任何硬件的基础上,还可以多机器人协作, 利用一个电脑端可根据每个机器人的设备地址完成多个机器人协同操作。

猜你喜欢
主程序舵机串口
自动升级程序在船舶监测系统中的应用
浅谈AB PLC串口跟RFID传感器的通讯应用
浅谈数控铣削技术代码程序的嵌套方式研究
含齿隙弹载舵机的全局反步模糊自适应控制
电控冰箱软件模块化设计
基于dsPIC单片机的飞艇舵机控制实现
时光倒流 换回PotPlayer老图标
基于高速同步485总线通信的多通道舵机控制器设计
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索