张佑春,游志宇,任远林,方冉,董秀英
(1.安徽工商职业学院 应用工程学院,安徽 合肥 231131;2.西南民族大学 电气信息工程学院,四川 成都 610041)
伺服电机控制器又称电机控制器,被广泛应用于工业机器人、电子设备和智能汽车等领域。电机控制器通过基带信号与输出控制命令信号的对比,从而判断出机器人的行动方向和运转速度,适用于机器人运行角度和驱动控制等[1]。
电机控制器芯片主要包括单片机、DSP(Digital Signal Processing)和FPGA(Field Programmable Gate Array)三大类[2]。单片机的缺点是对电动机的实时高速控制能力较差,DSP主要应用于多条件、多算法任务和串行指令处理,FPGA具有自适应逻辑电路设计、可重复逻辑编程等特点,广泛应用于数电设计中。本文设计了基于FPGA的机器人伺服电机多通道控制电路,该系统实现了12路多通道仿生机器人动作组的灵活控制。
本系统的多通道电机控制器由1#-12#电动机、FPGA控制芯片(寻址、分频、PWM(Pulse Width Modulation)、ROM(Read-Only Memory)、FIFO(First Input First Output)、数据读取等)、电源、按键和隔离电路组成。多通道电机控制器的工作原理为[3]:(1)控制按钮下发控制命令至主控芯片FPGA,寻址单元从ROM中查找header地址和数据length。(2)控制数据命令将机器人的动作控制发送至PWM多通道控制单元。(3)隔离电路模块消除电动机与主控芯片FPGA之间的信号干扰,提高了系统的准确率和稳定性。(4)PWM多通道控制信号发送至伺服电机,实现了机器人电动机的方向和速度控制。(5)电动机采用了独立供电模式,提供了电流过载保护,防止电动机和FPGA芯片过热损坏。电动机控制器总体结构设计如图1所示。
图1 电动机控制器总体结构设计
伺服电机是由直流电机、减速齿轮组、位置反馈电位计和控制电路组成的一个闭环反馈系统。伺服电机的主要指标是转矩、控制精度和控制速率,本系统采用了ht 912cg磁感应电动机,max扭矩为20 N·m,速率为3.57 rad/s,脉冲宽度为400 μs~2 200 μs。该电机的角度控制由PWM调节,转动周期为10 ms,占空比为0.1~1.5连续可调[4]。ht 912 cg电机控制电路连接如图2所示。
图2 ht 912cg电机控制电路图
FPGA控制器选取Xilinx公司的BGA324系列XC7A100T-2CSG324I型号,它包括了64个I/O口、5 068个逻辑控制子模块、4个clock时钟控制单元(提供高精度clock 信号)。该控制器同时包含了自适应双端口ROM(配置92个存储单元)和FIFO缓冲ROM,能够提高芯片的数据处理能力[5]。FPGA控制器主要处理ROM脉宽数据值传输和执行多通道PWM控制信令。本系统主要通过12路独立PWM信号完成多通道独立电机的控制。FPGA控制器的电路连接设计如图3所示,其中AD转换模块采用12位逐次逼近型AD574A芯片,该芯片转换误差为±0.05%。
图3 FPGA控制器的电路连接设计
在多个舵机使用时,会因舵机堵转故障的瞬间产生较大的反向电流,极易烧坏舵机,本设计使用TLP281光耦隔离器,使PWM信号由电信号转变为光信号,保护I/O口不会被高反向电动势击穿。因其输出的PWM信号在过程中被反相,所以需要反相器CD40106将PWM信号反相,从而实现隔离保护[6]。单路PWM信号隔离电路原理如图4所示。
图4 电流隔离电路设计
本设计所用的舵机工作电压为7.5 V,选用2节锂电池供电。EP4CE10型FPGA供电额定电压为3.3 V,选用AMS1117降压稳压芯片, 本电源电路原理设计如图5所示。
图5 电源电路原理设计
整个系统能够根据ROM中的数据产生多路PWM信号,软件模块包括电动机控制器系统的软件模块主要包括:读取数据模块、寻址模块、分频模块和多路PWM信号发生模块。调用了ROM和FIFO存储器的IP核。电动机控制器系统软件设计框架如图6所示。
图6 系统软件设计框图
软件设计电路的各个模块采用Verilog HDL语言进行设计,寻址功能从存储器中提取address长度和IP header,FIFO根据上述地址和长度计算出PWM控制信号,最后实现控制信号的输出[7]。软件Verilog HDL功能设计如图7所示。
图7 软件电路Verilog HDL功能设计
电机控制系统的FPGA的主时钟的频率为40 MHz,为了达到80 MHz的PMW控制信号,主系统添加了倍频电路,计时次数达到了250次。分频软件仿真如图8所示。
图8 倍频软件仿真设计
寻址软件的主要功能是寻找header address(头地址)、read data length(读数据长度)、control操作和ROM使能状态等。通过按键实现指令的读取,同时控制状态机实现设备的操控。当指令数值为0010(二进制)时,header address的参数为184,data length为18.寻址仿真结果如图9所示。
图9 寻址功能软件仿真结果
多通道电动机控制器系统定义了Header-address(头地址)的高低8位寄存器,Data-length(数据长度)的高低8位ROM,数据发送后读入寻址模块中获得的Header-address(头地址)和长度并且ROM数值+1[8]。当ROM+3后,将Header-address和Data-length合并放到ROM中。多通道电动机控制器系统读取数据模块仿真结果如图10所示。
图10 多通道电动机控制器系统读取数据模块仿真测试
为了验证电动机控制器系统的时序逻辑、数据传输和多通路PWM控制信号生成的准确性,进行了电动机控制器系统的总体仿真试验。Test-bench文件用Verilog HDL语言编写仿真结果如图11所示。仿真结果可以看出,电机运转数据被准确读取并成功产生了PWM控制信号,通过ROM中存储数据的调节和脉宽范围调节,实现了机器人舵机的动作操控需求。
图11 Test-bench仿真结果图
为了提高ROM读取数据的准确性,以及验证硬件系统与软件系统之间的协调性,电动机控制器系统采用了信号分析工具SignalTap,实时进行了信号的准确性调试和准确率分析,减少了电机控制系统的测试时间[9]。该系统的SignalTap信号抓取如图12示。
图12 SignalTap捕获内部信号图
仿真实验表明,电动机可以平稳、高精度和无颤抖地运行,控制效果较为满意[10]。
为了实现多通路机器人的精确控制,设计了基于FPGA的多通道电动机控制器系统。该系统的硬件主要包括主控芯片FPGA、电动机、隔离电路、电源模块和按键等部分。软件设计主要包括了寻址、存储和指令PWM执行等。仿真测试表明,系统的软硬件简化了机器人的操作,实现了隔离电路系统的过热保护和40路PWM信号的操控,得到了满意的控制效果。