工业机器人控制系统设计与实现
2023-08-23郭宁郭志成
郭宁,郭志成
(兰州工业学院 电气工程学院,甘肃兰州,730050)
0 引言
工业机器人作为现代制造业的重要组成部分,不断得到广泛的应用。工业机器人控制系统的设计和实现对于提高机器人的精度、灵活性和效率起着至关重要的作用[1]。本文基于STM32单片机、微型计算机和移动终端,设计了一套低成本、移植性好的工业机器人控制系统。本文介绍了控制系统的总体方案和重点模块设计,包括MCU模块、电机模块、测距反馈模块等。在硬件设计中,重点介绍了单片机基本电路和步进电机控制电路。在单片机软件设计中,分析了系统功能、通信协议和电机控制程序。编程语言及控制软件设计部分介绍了编程语言概述和程序语言代码实现,旨在降低工业机器人控制系统的使用门槛,服务更多的制造企业。
1 控制系统设计
■1.1 控制系统功能
工业机器人控制系统是一种典型的实时控制系统,其主要功能包括位置控制、速度控制、力控制、轨迹规划等。其中位置控制和速度控制是最基本的控制功能。位置控制是指通过控制机器人的运动轨迹,将机器人末端的位置移动到目标位置,实现定位、取放和装配等操作[2]。速度控制是指通过控制机器人的运动速度,控制机器人的运动过程,实现快速准确地到达目标位置。力控制是指通过控制机器人的输出力矢量,实现对工作件施加恰当的力,以实现切割、压合和拆卸等操作。轨迹规划是指通过给定机器人末端的起始位置和目标位置,计算机器人的运动轨迹,以实现平滑的运动过程,避免碰撞和抖动等不良影响。综上所述控制系统功能如图1所示。
图1 控制系统功能图
■1.2 总体方案
首先参考市场上已有的工业机器人控制系统的功能,提出了一个低成本、移植性好的控制系统。该系统采用了STM32单片机、微型计算机和移动终端,实现了电机控制、信号采集、信号输出和通信任务[3]。同时,对各种工业机器人结构和控制系统组成方案进行了分析,以便更好地设计出适合实际应用的控制系统。在具体实现上,设计了硬件和软件两部分。硬件部分包含了步进电机驱动器控制、TTL转串口、输入输出信号以及AD信号采集等功能。软件部分则由三个模块组成:单片机程序、计算机程序和手机APP。单片机程序负责电机控制、信号采集和通信等任务;通过计算机软件,可以方便地对工业机器人的编程语言进行编辑和执行,对平台位置进行演示,对信号、点位等进行人机交互。根据以上功能需求设计系统方案如图2所示。
图2 系统方案图
■1.3 重点模块介绍
(1)MCU 模块
MCU模块是工业机器人控制系统的核心模块,主要负责电机控制、信号采集、信号输出和通信任务。本文选用STM32单片机作为MCU模块的核心控制芯片,具有高性能、低功耗、易扩展等优点。MCU模块的主要功能如下:
① 电机控制:控制步进电机和伺服电机的运动,实现位置控制和速度控制;
② 信号采集:采集编码器反馈信号、光电传感器信号等,实现位置和速度的反馈控制;
③ 信号输出:控制输出各种信号,如蜂鸣器、LED指示灯等;
④ 通信任务:与计算机程序和手机APP进行通信,实现工业机器人编程语言的编辑和执行、平台位置示教、信号和点位信息的人机交互。
(2)电机模块
电机模块是工业机器人控制系统中非常重要的一个部分,其主要作用是控制电机或伺服电机的运动,实现机器人的位置和速度控制。在本文中,所使用的电机型号为宇辉电机42BYGH47-401A,它是一种具有结构简单、驱动方式简单、适合低速大扭矩等特点的步进电机,具体参数如表1所示。
表1 步进电机参数
42BYGH47-401A电机具有扭矩大、精度高、运动平稳等特点,适用于一些要求精度较低的场合。在电机模块中,为了实现步进电机的最佳驱动效果,采用A4988芯片作为步进电机驱动器。A4988芯片具有驱动能力强、运动平稳、精度高等特点,能够更好地满足工业机器人的控制需求。同时,还采用伺服电机控制程序,通过控制伺服电机的PWM信号,实现机器人的位置控制和速度控制[4]。
(3)测距反馈模块
由以上的分析可知,该装置必须对XYZ三个轴线中的一些部位进行探测。伺服电机使用相对数值编码器和一个光敏转换器来完成,而步进电动机则不适用于另配编码器和探测转换器。因此,距离测量元件的选取就必须加以考量。测距传感器有以下类型[5]。
①激光测距传感器是一种使用激光技术进行距离测量的传感器,利用激光束发射出去并经过反射后返回传感器,测量出激光束的往返时间,从而计算出物体与传感器之间的距离。激光测距传感器通常使用的激光波长为红外线或可见光范围内的波长。其测距精度通常能够达到几毫米到几厘米的范围,可以用于测量室内和室外的距离,例如在机器人导航、无人驾驶车辆、测量建筑物高度等领域中广泛应用。激光测距传感器的优点包括高精度、测量速度快、可靠性高、不受环境影响等。缺点则包括成本较高、易受光线干扰、测量距离有限等。
②超声波测距传感器是一种使用超声波技术进行距离测量的传感器,利用超声波发射出去并经过反射后返回传感器,测量出超声波的往返时间,从而计算出物体与传感器之间的距离。超声波测距传感器通常使用的频率为20kHz至200kHz之间的超声波。其测距精度通常能够达到几毫米到几厘米的范围,可以用于测量室内和室外的距离,例如在智能家居、机器人导航、无人驾驶车辆等领域中广泛应用。
③红外线测距传感器是一种使用红外线技术进行距离测量的传感器。它利用红外线发射出去并经过反射后返回传感器,测量出红外线的往返时间,从而计算出物体与传感器之间的距离。红外线测距传感器通常使用的波长为850nm至940nm之间的红外线。其测距精度通常能够达到几毫米到几厘米的范围,可以用于测量室内和室外的距离,例如在智能家居、机器人导航、自动售货机等领域中广泛应用。本系统最终选择SHARP/夏普GP2Y0A41SK0F红外线测距传感器。
2 控制系统的硬件设计
■2.1 单片机基本电路
STM32单片机外围电路设计主要用于控制系统硬件电路,实现与手机或计算机通信、根据指令控制步进电机驱动器以驱动电机运动,以及处理IO信号输入输出。
单片机基本电路是控制系统硬件设计的核心之一,包括主晶振电路、复位电路、电源电路、ISP下载电路等。主晶振电路的选取直接影响单片机的时钟信号,因此需要考虑稳定性、频率等因素。复位电路通过一个复位电路芯片,实现单片机的复位功能,需要考虑复位脉冲的稳定性和电路的可靠性。电源电路包括5V电源、3.3V电源和12V电源,需要考虑电源噪声和纹波等因素,以确保单片机和外围电路的稳定工作。ISP下载电路通过一个串口芯片,实现单片机程序的下载和调试功能,需要考虑串口通信的稳定性和速度等因素。整个单片机基本电路的设计需要考虑多种因素,并进行充分测试和优化,以确保控制系统的稳定性和可靠性,电路原理图如图3所示。
图3 电源电路
■2.2 步进电机控制电路
步进电机控制电路是工业机器人控制系统中的重要组成部分之一,其主要作用是控制步进电机的运动,实现机器人的位置控制和速度控制。步进电机控制电路包括步进电机驱动器、电流调节电路和控制信号电路。其中,步进电机驱动器采用A4988芯片,具有驱动能力强、运动平稳、精度高等特点。电流调节电路采用电位器调节电流大小,以实现步进电机的最佳驱动效果。控制信号电路通过单片机控制步进电机的运动,实现机器人的位置控制和速度控制。在实际应用中,步进电机控制电路的设计需要根据具体机器人的需求进行合理地调整和优化。步进电机驱动器内部带有两个普通光耦EL817和一个高速光耦6N137,其电路原理图如图4所示。
图4 步进电机驱动器接线图
3 控制器单片机软件设计
■3.1 单片机软件设计
单片机作为控制系统底层元件,负责操作执行部件、信号采集与输出。在软件设计中,采用了STM32F103系列芯片的库函数。当应用场景变化时,只需调整部分代码,而无需更改计算机端控制程序。为了减少代码量并便于针对特定应用场景进行控制系统移植开发,在单片机程序设计中采用了裸机开发方法(不使用实时操作系统)。主要技术包括STM32芯片的串口、ADC、定时器、PWM、中断和GPIO等。
控制器单片机软件包含电机控制程序和通信程序两部分。电机控制程序实现步进电机和伺服电机的运动,实现机器人的位置控制和速度控制。通信程序实现与计算机程序和手机APP的通信功能,实现工业机器人编程语言的编辑和执行、平台位置示教、信号和点位信息的人机交互。具体来说,电机控制程序采集编码器反馈信号和光电传感器信号,实现位置和速度的反馈控制,通过控制步进电机的脉冲信号和伺服电机的PWM信号,实现机器人的位置控制和速度控制。通信程序则采用串口通信,数据传输格式为ASCII码,通过与计算机程序和手机APP的通信,实现工业机器人编程语言的编辑和执行、平台位置示教、信号和点位信息的人机交互。根据以上功能设计软件,如图5所示。
图5 单片机软件功能图
■3.2 通信协议
在工业机器人控制系统中,通信协议是控制器单片机与计算机程序和手机APP进行通信的重要手段。本文采用了串口通信,并将数据传输格式设定为ASCII码。具体的通信协议相关信息如表2所示。
表2 通信数据协议相关信息
其中,帧头固定为0xAA,用于表示数据的开始;数据长度表示数据内容的长度,通过此值可以确定整个数据的长度;命令表示通信的具体命令;数据是通信的具体数据内容;校验和用于检查数据传输是否出现错误,采用简单的异或校验方式。通过上述通信协议,控制器单片机可以与计算机程序和手机APP进行可靠的通信,实现工业机器人编程语言的编辑和执行、平台位置示教、信号和点位信息的人机交互。同时,该协议简单易懂,易于实现。
■3.3 电机控制程序
PD_1~PD_6是利用步进电机的针脚分布,来控制电机启动的方向端口。对管脚 GPIO进行配置过程如下:①为GPIO的配置定义结构变量。②在GPIO_Pin的 structural变量中设定要进行配置的端口;③将端口的输出方式设定为推挽式模式;④ 配置端口速度。STM32F103系列芯片内置了丰富的功能模块,为用户提供强大功能。定时器是嵌入式系统中常用的一种功能模块,其具有输入捕获、输出比较、PWM和直流电机控制等多种功能。其中,PWM功能在电子产品中应用广泛,可用于控制电机转速、LED亮度、音频输出等。在STM32单片机中,使用定时器的PWM功能需要将TIM3管脚复用映射到PC6-PC8引脚上。为了使定时器正常工作,还需要配置相关中断。配置步骤包括定义相关结构体变量和设置端口输出模式为复用推挽输出。在具体操作中:
①需要先定义TIM_HandleTypeDef结构体变量,并调用HAL_TIM_PWM_Init函数初始化定时器。②使用HAL_TIM_PWM_ConfigChannel函数配置PWM输出通道,设置占空比等参数。③ 设定PWM端口输出速度为50MHz;④ 配置定时器:重装载寄存器值设为1249,分频系数为71,时钟分割为0,计数方式为向上计数;⑤ 将定时器输出模式设置为TIM_OCMode_PWM1;⑥ 启用PWM输出,设置输出极性为低,CCR寄存器值设为625;⑦ 配置定时器的中断功能。
通过以上步骤,能成功地配置STM32F103的定时器,实现PWM功能,并利用管脚复用功能在PC6-PC8端口进行输出,为开发人员节省了资源,简化了开发过程,部分代码如下所示:
// 定义电机引脚
int motorPin1 = 2; // 接 L293D 1 号引脚
int motorPin2 = 3; // 接 L293D 2 号引脚
int enablePin = 9; // 接 L293D 使能引脚
void setup() {
// 将引脚设置为输出模式
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(enablePin, OUTPUT);
// 设置初始电机方向
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
// 启动电机
analogWrite(enablePin, 200);
}
上述代码是一个基于STM32单片机的步进电机控制程序的示例代码。其中,Motor_Init函数用于初始化步进电机控制IO口;Motor_Run函数用于控制步进电机的运动,实现机器人的位置控制和速度控制;Motor_Stop函数用于停止步进电机的运动;Motor_MoveTo函数用于控制机器人的移动到指定位置;Motor_MoveBy函数用于控制机器人在当前位置的基础上移动指定的距离。其中,Motor_Run函数的实现是步进电机控制程序的核心部分,它通过控制步进电机的脉冲信号实现机器人的位置控制和速度控制。在该函数中,首先判断电机运动的方向,然后通过GPIO控制端口产生相应的脉冲信号,控制电机的运动。在每个脉冲信号后,通过delay_us函数控制脉冲的时间长度,从而控制电机的速度。
■3.4 控制软件
计算机软件在控制系统软件领域发挥着核心作用,与单片机模块共同组成工业机器人控制系统,如图6所示。
图6 模块关系图
工业控制机软件设计选择Windows作为开发平台,采用基于C++的Qt集成开发环境,能够满足工业控制机的软件设计需求,使其更加稳定、高效和易于维护。Windows平台在工业控制领域被广泛应用,具有良好的兼容性及丰富的开发资源。而Qt则是一种跨平台的应用程序开发框架,提供了丰富的图形界面和工具库,使得开发者可以更加方便地创建和管理软件系统。工业机器人控制系统软件的总体设计分为三个步骤。首先,需要安装Win7操作系统并配置Qt开发环境。其次,将DMC-2163控制卡的动态链接库、头文件以及实现文件加入新建工程。最后,利用QMainWindow作为主类,运用QWidget类和QDialog类的派生类来实现各功能模块,并通过Qt的信号/槽机制、全局变量、事件处理、配置文件等来实现模块间的通信。
软件系统的功能模块包括:指令程序管理、控制卡操作、机器人操作、轨迹规划、示教再现和系统设置。指令程序管理模块用于管理机器人的运动指令,包括创建、编辑、保存和执行指令程序。控制卡操作模块用于控制机器人的运动,包括设置控制卡参数、启动/停止机器人等。机器人操作模块用于控制机器人的姿态和位置,包括机器人的运动学分析、逆运动学求解、坐标变换等。轨迹规划模块用于生成机器人的运动轨迹,包括直线轨迹、圆弧轨迹、样条曲线等。示教再现模块用于通过示教器来控制机器人的运动,包括手动示教和自动再现。系统设置模块用于设置软件系统的参数和配置文件,包括机器人的参数、控制卡的参数、通信协议等。
4 结语
本文设计了一个低成本、移植性好的工业机器人控制系统,该系统采用STM32单片机、微型计算机终端实现了电机控制、信号采集、信号输出和通信任务。系统设计了一门简单的工业机器人编程语言,实现了位置控制和速度控制等功能。未来的工业机器人控制系统应该继续提高控制精度和稳定性,加强机器人的力控制和轨迹规划功能,以满足更高的工业生产需求。