伺服电机被广泛用于机器人应用中,用来驱动机器人手臂做出类似于人手的动作。机器人手臂可以是一个独立的应用,也可以是更大机器人系统的一部分。机器人手臂在工业领域中主要用于物品的取放,而在移动安保摄像头和玩具中亦有应用。
机器人手臂通常包括数个可以旋转的关节以及与之相连的连杆。本案例将构建一个包括两个旋转关节的机器人手臂,一个用于x轴,另一个用于y轴。这些关节将由来自操纵杆的模拟信号进行控制。该电路设计包括一个GreenPAK SLG46620芯片、两个Tower Pro SG90伺服电机和一个模拟操纵杆。系统方框图和电原理图分别如图1和图2所示。
图1:系统框图。(图片来源:瑞萨电子)
图2:电原理图。
本案例不需要微控制器(MCU),因为GreenPAK芯片本身已包含了构建能够独立控制伺服电机的静态IC所需的全部元素。
工作原理
GreenPAK芯片可以执行系统的所有功能。它先接收来自操纵杆x轴输出的模拟信号,然后在内部进行数字化后用作伺服电机的PWM信号,接着将输入通道更改为读取来自操纵杆的y轴输出,这个过程不断重复。每10ms读取模拟信号一次,并在x和y输出之间交替,相当于每个信号隔20ms读取一次,因此输出频率为50Hz,这正好适用于伺服电机的操作。
伺服电机
两个Tower Pro SG90伺服电机(图3)用于构建机器人手臂。电机需要一个PWM信号来控制旋转角度,旋转角度位于0°到180°之间。当输入0.5ms脉冲宽度时,电机旋转到0°,而当脉冲宽度等于2.5ms时,电机旋转到180°。因此,每隔20ms时间,将会出现一个位于0.5–2.5ms之间的脉冲宽度,以获取与之对应的、位于0°和180°之间的某个旋转角度。
图3:Tower Pro SG90伺服电机。
模拟操纵杆
模拟操纵杆因其价格低廉和易于连接而被广泛用于机器人应用。操纵杆由两个交叉放置的电位器组成(图4)。它提供三个输出:x、y和中间按钮。本例中的操纵杆亦可提供伺服系统的手动控制。
为了获得适合GreenPAK ADC工作的范围,操纵杆将使用芯片的VREF,而不是连接外部分压器,这样可以减少外部元器件的使用数量。
图4:模拟操纵杆模块。
GreenPAK设计
GreenPAK设计是在基于GUI的免费GreenPAK Designer软件中创建的,该软件是Go Configure™软件中心的一部分(链接到设计文件)。设计由以下几个部分组成(图5)。
图5:GreenPAK设计-矩阵0。
模拟复用器根据定义好的时间间隔接收来自两个不同的输出信号。频率为100Hz的脉冲发生器每10ms发出一个脉冲,在前一个10ms接收x信号,在下一个10ms接收y信号。
Pin8和Pin9配置为模拟输入端,连接到配置为模拟多路复用器的PGA。来自Pin16的信号控制两个通道之间的切换。当信号CH Selector设置为HIGH时,读信号来自Pin8,当设置为LOW时,读信号来自Pin9。模拟信号转换为数字信号后,再从FSM0读取。FSM0的输入来自ADC模块的输出(ADC数据)。FSM0配置为下降沿DLY。
延时时间=(计数器值+1)/时钟
时钟=256/2ms=128kHz
FSM0的CLK管脚通过EXT CLK0连接到CNT5输出,得到的时钟频率为128kHz,当从ADC接收到255的值时,输出的脉冲宽度为2ms。因此,CNT5的输出信号周期为7.8125µs,对应的CNT5的数据为210。
2-L0反相器和CNT6组成100Hz发生器,发生器每隔10ms发出一个脉冲,目的是每隔20ms向两个伺服电机输出PWM信号。发生器的输出信号触发CNT9,它被配置为下降沿DLY,延迟时间为0.5ms。CNT9输出触发FSM0输出一个宽度为FSM数据+0.5的信号,该信号宽度位于0.5和2.5ms之间,然后通过LUT传递给对应的伺服器。
每个工作周期内,CNT0提供一个宽度为2.5毫秒的脉冲,作为发送到伺服电机(每个电机依次轮换)输出信号的最大时间框,以防止出现任何错误。
DFF0、2-L1、3-L2用于控制输入通道,使其每10ms在PGA的通道1和通道2之间进行周期性切换。Pin6通过外部连接到Pin16,后者再连接到PGA的CH Selector引脚。
4位LUT0、3位LUT0、3位LUT1和2-L2构成解复用器,将PWM信号传递给对应的伺服电机(详见图6)。
图6:LUT配置。
当CH Selector信号为HIGH时,读信号来自通道1,中间会经过Pin8,处理后的PWM信号再通过Pin4传送给x–伺服电机。当CH选择器设置为LOW时,读信号来自通道2,该信号先传送给Pin5,再到y-伺服电机。
从循环周期开始经过2.5ms后,通道随着CNT0输出的下降沿而改变,并在下一个周期开始时输出脉冲(见图7)。这为信号的读取和稳定性提供了充足的时间。
图7:时序。
为防止信号较小(小于40mV)时ADC工作出错,用DCMP0对ADC值与寄存器0进行比较。如果值小于9,角度将被视为0°,则直接将CNT9的输出传送给对应的伺服电机。
操纵杆的源信号来自GreenPAK芯片内部的VREF0,因此操纵杆读取的信号在ADC的工作范围内。VREF0连接到Pin19,此处的源选择器设置为ACMP0,并已调整为1200mV。操纵杆包含一个可用于提供附加功能的按钮。CNT8用于构建去抖动器,经去抖动改善后的信号通过Pin20输出。Pin12配置为低压数字输入,因为操纵杆电压为1200mV(见图8)。
图8:GreenPAK设计-矩阵1。
为了对设计进行测试,可以用GreenPAK Designer的信号向导,施加不同的信号到输入端上(图9),然后观察输出结果(图10)。
图9:生成锯齿波。
图10:不同端子上的输出信号(Pin8-黄色、Pin9-蓝色、Pin5-红色、Pin6-绿色)。
本文小结
本文使用GreenPAK SLG46620芯片构建了一个控制电路,该电路利用两个通过模拟操纵杆操控的伺服电机,来控制机器人手臂的两个关节x和y。该芯片高效地将所有电路的重要元器件集成在一个较小的体积内,不需要外部微控制器,只需要使用很少的外部元器件。
该设计通过连接多个芯片和伺服电机,可以扩展构建自由度更大的机器人手臂,这样的系统可以应用于许多不同的工业应用。
(参考原文:Implementing a two-axis robot arm controller without an MCU )
本文为《电子工程专辑》2022年6月刊杂志文章,版权所有,禁止转载。点击申请免费杂志订