基于51单片机的多轴机械手功能设计

2022-05-09 版权声明 我要投稿

摘要:本文设计是一款基于单片机的机械手控制系统,重点介绍了该装置在硬件结构设计、控制系统与舵机函数的设计等方面的技术。主要硬件有:连杆,单片机控制系统,舵机;在不同的程序下,以51单片机产生PWM信号分别对六关节舵机的驱动,使机械手可以担任不同的工作,满足高精度、高自由度地实现对抓取区域内的物料转移到存放区域,实现在指定区域内进行喷涂等简单工作[1]。

关键词:单片机;机械手;控制系统;

机械手与各项传感器协同工作是智能机器人应用技术领域的重要发展方向之一,它是广泛应用于实际生产的自动化机械装置。

基于单片机的多轴机械手的功能开发,可解决工业化生产中重复单一的简单工作,减少人力资源,同时可以更加精确地控制生产节奏,在严峻的工作环境下也不会降低生产效率,提高经济效应,促进产业结构优化升级。

本文设计的机械手控制系统,它通过单片机产生的PWM信号对机械手上各舵机的控制,从而实现机械手的高精度、高自由度精确运动与抓取功能,如果将机械手末端抓取模块进行更换,可改变其功能与用途,例如吸盘、喷涂等。该机械手控制系统允许开发者根据自己需求与设计思路进行调整,提高了对多轴机械手功能开发效率,使机械手能广泛应用于工业生产控制中[2]。

1 机械手的结构与控制

1.1 机械手的结构与工作参数的具体说明

机械手主要由机械爪、运动系统和控制系统组成,而本部分主要探究的是机械爪及其工作参数的说明[3]。

机械爪由运动元件、驱动元件、安装底座和控制系统四大部分组成。

(1)运动元件指的是末端抓取物体的手指;

(2)驱动元件指的是驱动各个手指部位来实现对不同物体的抓取行为;

(3)安装底座指的是用于和机械手臂进行安装固定的借口部位;

(4)控制系统指的是每个手指通过传感器接收和发送的信息与驱动文件的控制来做出相应的动作行为。本设计所研究的机械爪如图1所示。

机械爪的工作参数具体说明见表1。

1.2 舵机的相关数据

1.2.1 舵机的组成

对于一套机械爪来说,一般需要多个舵机协同工作。通过单片机发送有效的PWM拓展模块信号,以分时复用的方式输出多个脉冲实现对舵机方向、角度、速度的转换。一般来说舵机的组成结构分为舵盘、减速齿轮组、位置反馈检测器、限位开关、直流伺服电机及控制电路板组成。由此本课题主要选用15kg*5+6kg*1串行总线智能舵机。

1.2.2 舵机的工作原理

舵机的运动系统是闭环反馈系统的一种,其原理可由图2所示。

舵机在工作时,控制电路会与输入控制脉冲信号进行比较,此时生成的纠正脉冲会决定马达转动的方向,当齿轮组的输出值与设定值匹配,舵机就会停止工作。

2 控制系统设计

2.1 硬件设计

硬件电路是电路系统的重要组成部分,是实现机械手工作的基础,也是整个设计的控制核心,硬件电路设计是否合理直接影响电路系统的性能。因此,根据本次设计的需求,决定采用STC15W系列单片机中的STC15W4K16S4作为控制核心[4]。

本设计利用STC15W4K16S4单片机加上外围电路构成的小型开发板。

开发板上有USB烧录电路、OLED显示模块、串口通信模块、时钟电路、复位电路等,通过开发板可对机械手上的舵机进行控制,从而控制机械手的运动。同时显示部分参数。

(1)USB烧录模块:

通过CH340G芯片实现USB转TTL串口,将在PC端Keil软件编写的代码烧录到STC15W4K16S4单片机中,实现了方便、快捷地调试机械手,提高了机械手的开发效率。

(2)OLED显示模块:

OLED屏幕因具备轻薄、省电、较为廉价、可显示复杂图形等特性,被广泛运用于工业设备与日常家电中。通过外接OLED液晶显示屏模块,我们可以实时通过显示的数据来观察机械手的参数变化。

(3)串口通信模块:

单片机的串口行通过串口通信模块与机械手的舵机进行连接,通过所编写的程序控制单片机产生PWM信号控制机械手上6个不同的舵机分别执行不同的指令,从而实现机械手的指向移动与抓取,同时也可以接受机械手上的各种传感器返回数据,进行反馈调整,时刻确定机械手的位置。

(4)时钟电路:

单片机的驱动信号是由时钟电路产生的,而时钟电路最重要的元器件是晶振,如果没有晶振所产生的工作波形,单片机将无法正常工作,本设计采用单片机自带的晶振作为时钟源信号输入,具有稳定性高、灵活性强等特点。

(5)复位电路:

复位电路的设计就是为了将单片机的特殊寄存器中的数据清除重置,恢复为默认数据,以解决单片机不能正常运行的状态。

模块之间良好的协同运行才能保证机械手执行工作的精确与高效性,模块与单片机之间的关系如图7所示。

2.2 程序设计

随着单片机的广泛应用,各种编程语言的发展,现在比较常用的单片机编程语言大致分为三种,分别是BASIC语言、C语言以及汇编语言。其中,C语言是结构化语言,能够以模块为单位进行定时器程序、中断程序、舵机运行程序的编写,便于查错与编写,可读性也被各路开发者认同,所以采用C语言进行程序编写[5]。

2.2.1 控制系统主程序的设计

主程序的设计是整个多轴机械手自动化运行的关键。主程序在整体上起到协调各子函数运行,将各子函数联系起来,调用子函数执行某项功能与向子函数传递参数等作用。主程序的设计中主要包括中断器函数、定时器函数、舵机的运行和调速函数程序的设计。主程序的任务主要执行以下步骤:

(1)声明全局变量,初始化各个舵机的占空比参数,初始化定时器,初始化单片机各引脚,然后将引脚设置为推挽输出,为舵机提供足够的动力;

(2)设置定时器中断,给定时器赋初值,定时器程序运行后主程序真正启动,程序进入循环状态;

(3)在循环状态中,单片机通过控制PWM输出信号,来设置多轴机械手各个舵机的运行,从而实现循环机械手的运动和抓取动作。

2.2.2 舵机的运行和调速函数程序的设计

在程序的设计中,通过对舵机运动的速度进行定义,使舵机转动的角度,分割为许多个点,这些点可根据实际需求精确度进行调整,通过控制舵机移动点的个数来定义舵机转动的时间及角度。以下函数变量声明省略。

(1)单舵机的控制函数为:

arm_serial_servo_write(id,angle,time)

①参数id为所调用的舵机的编号;

②参数angle为舵机转动的角度,5号舵机的范围为0~270°,其他舵机的角度范围为0~180°;

③参数time为舵机在一定范围中转动到指定角度所需的时间,如果为0则以最大速度运行。

而在实际操作中,经常碰到机械手没有复位的情况下,即舵机的角度都为0°的情况,就需要有一个读取当前舵机角度的函数。

(2)舵机当前角度读取函数为:

arm_serial_servo_read(id)

参数id为所调用的舵机的编号;

函数的返回值为0~180°的一个角度,S5舵机的返回值为0~270°;因此我们可以通过程序流程图(如图8)来理解函数对舵机的控制。

实际操作中可以通过多次调用单个舵机的控制函数可实现多个舵机的不同角度运动所以设计了在单次时间内同时控制全部舵机的函数。

(3)多舵机同时控制函数为:

arm_serial_servo_write6(S1,S2,S3,S4,S5,S6,time)

①参数S1~S6为机械手上对应舵机编号的转动角度值,默认角度为0~180°,其中编号S5舵机的范围为0~270°;

②参数time为一定范围内,同时控制6个舵机运行的时间,如果为0则以最大速度运行。

3 结语

本文设计是一款基于单片机的机械手控制系统,介绍了机械手与舵机的结构与控制,工作参数、及其51单片机作为控制核心,利用产生的PWM信号对串行总线舵机进行驱动,以实现机械手的运动与抓取功能。还介绍了该装置硬件结构设计、控制系统与程序设计等方面的技术,在设计过程中,机械手的优势如正文介绍,但是存在维护复杂,只能执行对应的程序,无法做到智能化,这需要在实践中积累经验,通过加装传感器,优化算法等措施来减小机械手工作时的误差。

参考文献

[1]庄艳基于单片机的机械臂电子系统设计与实践[J].科学技术创新.2020:50-51.

[2]陈蓬勃,陈思涛,谭铭杰,余志胜基于Arduino的机械手功能设计[J].锻压装备与制造技术.2020:60-62.

[3] 白钧龙基于步进电机的多轴机械手设计[D].广州.华南理工大学广州学院,2020:5-7

[4] 宏晶科技.STC15W单片机技术手册[Z].2014.www.stcmcu.com

[5] 唐竟南,沈国琴.51单片机C语言开发与实例[M].北京:科学出版社,2008.2

上一篇:美丽乡村建设下的公共空间环境设计下一篇:传播学视角下河南古都文化的译介策略及启发