基于单片机和 Arduino 平台的六自由度可控机械手臂

摘 要 : 为了降低机械手臂的设计开发难度 并使之尽早地投入应用 设计一种基于单片机和 Arduino 平台的六自由度可控机械手臂 。提出六自由度可控机械手臂的控制方案, 给出机械手臂控制系统的结构框图 详细设计六自由度可控机械手臂的硬件系统和软件系统, 给出关键参数的计算过程和计算结果 最后 设计制作可控机械手臂实物 并利用机械手臂书写 ( 绘制 ) 大写字母“M ”。 设计过程与实物应用效果表明 : 基于单片机和 Arduino 平台的六自由度机械手臂具有实际的应用价值
关键词 : Arduino 平台 ; 机械手臂 ; 六自由度 ; 单片机 ; 实物制作

0 引 言

目前机械手臂是机器人技术领域的重要发展方向 也是得到最广泛实际应用的自动化机械装置。 机械手臂可用于汽车制造等自动化制造行业, 还可用于商业 农业 医疗 救援等各个领域 。但是, 因机械手臂的功能针对性强和售价高昂 使其很难应用于普通场合。
开源硬件的发展 尤其是 Arduino 技术平台的迅猛发展 使开发设计人员更容易进入机械电子学这个精彩的领域。 Arduino 是一款便捷、 灵活 容易使用的开源电子原型平台 它包含硬件 ( 各种型号的 Arduino ) 和软件 ( Arduino IDE ) Arduino 的硬件原理图、 电路图、 IDE 软件及核心库文件都是开源的 允许开发者根据自己的设计思想进行改进调整。
基于开源性硬件与软件的思想 本文综合 Arduino 单片机和机械臂的理论与技术, 设计制作基于 Arduino 平台的六自由度可控机械手臂。 通过对机械手臂各个关节的精确控制 实现机械手臂六个自由度的调整控制。 该可控机械手臂可以模仿人的手臂 ,通过编程实现简单的动作, 可作为实验教学演示平台 或者在生活中应用        。

1 机械手臂控制方案设计

机械手臂是一种具有高度能动性和高度灵活性的自动化机器, 它是机电一体化设备的典型代表之一 因此 机械手臂由机械系统和电气系统两大部分组成。机械手臂的机械系统部分由机械连杆、 旋转关节等单元串联连接而成, 形成串联式开链结构 关节的作用是使相互联接的两个连杆产生相对运动。 机械手臂的各关节轴线相互平行或垂直 。机械手臂的电气系统部分就是其控制系统部分, 它由单片机系统、 舵机控制板 舵机系统等单元组成 如图 1 所示
单片机系统包括主控制器 复位电路 晶振电路 按键电路 、电源模块等部分, 负责发出机械手臂的控制命令
舵机控制板为采用 Arduino 平台的开源硬件电路板 可用于二次开发。 舵机控制板负责接收单片机系统发出的控制指令 并将信号放大以驱动各个舵机。舵机系统包括底座舵机、 肩关节舵机 肘关节 1 舵机 肘关节2 舵机 腕关节 1 舵机 腕关节 2 舵机等六个舵机 分别用于模拟执行机械手臂的动作。 舵机系统中的六个舵机可分别进行控制 ,进而完成机械手臂六个自由度的调整控制。

2 机械手臂控制系统硬件设计

2. 1 控制系统硬件设计概述

机械手臂控制系统主要由主控制器系统 ( 单片机系统 ) 舵机控制板、 舵机系统等单元组成 其中 为充分发挥 Arduino 开源硬件电路板的技术开放优势和设计制造优势, 采用直接从 Arduino 平台开发公司购买基于 Arduino 平台的舵机控制板 在此基础上 进行二次开发设计, 因此本设计的主要内容集中于主控制器系统 ( 单片机系统) 和舵机系统

2. 2 主控制器系统

主控制器系统模块由主控制器 ( 单片机 ) 复位电路 晶振电路、 按键电路 电源模块等部分组成 它是机械手臂控制系统的核心控制装置。
在本设计中 主控制器选用 80C51 型号的单片机 单片机的XTAL1、 XTAL2 端口之间接石英晶体振荡电路 ; RST 端口接复位电路; P0. 0 ~ P0. 7 端口经上拉电阻接 LCD 显示器 LM016L 用于显示发送指令代码的内容。

2. 3 舵机控制板

舵机控制板用于接收单片机系统发出的控制指令 并将控制指令放大编码后控制舵机, 从而带动机械手臂产成相应的动作 。为充公发挥 Arduino 开源硬件电路板的技术开放优势和设计制造优势, 本设计采用直接从 Arduino 平台开发公司购买设计制作完成的舵机控制板。
舵机控制板是一个从机 即它只能接受命令 或者执行事先设置好的命令。 需要使用单片机给舵机控制板发送命令 从而通过舵机控制板来控制舵机。

2 所 示 为所购 买 的 舵 机 控制板。 舵 机 控 制板的右上角 RXD 、TXD、 GND 三个接口分 别 与 单 片 机的 TXD RXD 、GND 三 个 端 口 相连, 用于接收单片机系 统 发 出 的 控制指 令。舵 机 控制板的 S1 ~ S32 组合端口分别用于连接 32 个舵机 每个组合端口中的 + S三个端口分别用于连接每个舵机的电源正极、 电源负极、 信号控制极

2. 4 舵机系统

舵机系统共由六个舵机组成 分别控制机械手臂的六个自由度。 本设计采用的舵机型号为 LF - 20MG 如图 3 所示 该型号的舵机为直流电动机, 工作电压为直流 4. 8 V ~ 6. 6 V 该型号的舵机可以提供的扭矩范围为 1. 62 N · m ~ 1. 96 N · m 能够支持机械手臂完成相应动作所需要的扭矩。

3 机械手臂控制系统软件设计

3. 1 控制系统软件设计概述

机械手臂控制系统软件设计的主要任务是 : 根据机械手臂的实际动作要求, 单片机系统编写相应的动作指令 并将动作指令发送给舵机控制板, 通过舵机控制板控制各个舵机 进而完成机械手臂的相应动作。
现以机械手臂书写 ( 绘制 ) 大写字母 M 为例 机械手臂控制的程序流程为:
( 1 ) 单片机上电初始化
( 2 ) 设置单片机与舵机控制板之间通信端口的参数
( 3 ) 计算机械手夹紧动作时各个舵机所需的旋转角度 设置并输出机械手夹紧动作组。
( 4 ) 大写字母 M 的第 1 笔画为 右上长直线 计算书写(绘制 ) 1 笔画时各个舵机所需的旋转角度 设置并输出机械手臂第 1 笔画动作组
( 5 ) 大写字母 M 的第 2 笔画为 右下短直线 计算书写(绘制 ) 2 笔画时各个舵机所需的旋转角度 设置并输出机械手臂第 2 笔画动作组
( 6 ) 大写字母 M 的第 3 笔画为 右上短直线 计算书写(绘制 ) 3 笔画时各个舵机所需的旋转角度 设置并输出机械手臂第 3 笔画动作组
( 7 ) 大写字母 M 的第 4 笔画为 右下长直线 计算书写(绘制 ) 4 笔画时各个舵机所需的旋转角度 设置并输出机械手臂第 4 笔画动作组
( 8 ) 计算机械手释放动作时各个舵机所需的旋转角度 设置并输出机械手释放动作组。

3. 2 单片机串行通信端口的参数计算

在机械手臂控制系统中 主控制器 ( 单片机 ) 与舵机控制板之间采用串行通信方式。 通信协议规定为 : TTL 电平 波特率9 600 bps、 无校验位 、8位数据位、1 位停止位。为完成上述的通信协议, 需要计算串行端口定时器初始值 ,其计算公式为:
式中 X 为定时器初始值 ; n 为定时器的位数 ; Baud 为串行接口通讯的波特率; SMOD 为串行端口控制寄存器 PCON 的最高位; f OSC 为单片机的时钟频率
当选择定时器为 8 串行端口通讯的波特率为 9 600 bps 、串行端口控制寄存器 PCON 的最高位为 1 单片机的时钟频率为11. 059 2 MHz 时 定时器初始值的计算结果为 :

3. 3 单片机串行通信端口的程序编制

编制的单片机串行通信端口初始化程序为 :
void UartInitialization ( )
{
SCON = 0x50 ; / /8 位异步串行通信口 模式 1
PCON | = 0x80 ; / / SMOD =
1
TMOD | = 0x20 ; / / 定时器 1 模式 2
8
位重装
TH1 = 0xFA ; / / 定时器初始值高 8
TL1 = 0xFA ; / / 定时器初始值低 8
IE | = 0x90 ; / / 允许串行中断
TR1 = 1 ; / / 启动定时器 1
EA = 1 ; / / 允许所有中断
}

3. 4 舵机角度控制设置值的计算

需要通过主控制器 ( 单片机 ) 设置舵机角度控制设置值 舵机角度控制设置值与舵机角度实际位置值之间的运算关系为:
式中 A x 为舵机角度控制设置值 ; A 0 为舵机角度控制设置值的下限; A m 为舵机角度控制设置值的上限 ; N x 为舵机角度实际位置值; N 0 为舵机角度实际位置值的下限 ; N m 为舵机角度实际位置值的上限。
当舵机角度控制设置值的下限和上限分别为 500 2 500 、舵机角度实际位置值的下限和上限分别为 0 度和 180 度时 若使舵机角度实际位置值为 90 则应在单片机程序软件中的舵机角度控制设置值的计算结果为:

3. 5 舵机角度控制设置值的程序编制

单片机需要通过舵机控制板来控制舵机的运动 在单片机中, 舵机角度控制设置值的编程格式为 ( 以控制单个舵机为例 ) :#1P1500T100 \r\n其中, 数据 1 是舵机的通道 ; 数据 1 500 是舵机角度控制设置值( 表示舵机的旋转角度 ) , 其范围为 500 ~ 2 500 ; 数据 100 是执行的时间, 其范围为 100 ms ~ 9 999 ms 。编制的单片机控制舵机角度的程序为:
void main ( )
{
UartInitialization ( ) ; / / 串行通信端口初始化
UartSendString ( " #1P1500T100 \ r \ n" ) ; / / S1 号舵机在时间
100ms 内旋转 90
while ( 1 ) ;
}
void UartSendString ( uchar * pStr ) / / 串行通信端口发送一个
字符串
{
while ( * pStr ! = 0 )
{
SBUF = * pStr + + ;
while ( TI = = 0 ) ;
TI = 0 ;
}
}

4 实物制作

为验证基于单片机和 Arduino 平台的六自由度可控机械手臂设计方案的正确性和可行性, 设计制作了六自由度可控机械手臂的实物。
基于单片机和 Arduino 平台的六自由度可控机械手臂的实物如图 4 所示 图中展示了利用该机械手臂书写 ( 绘制 ) 大写字母“M 的过程和结果。

5 结束语

为降低复杂机械手臂的设计难度和开发难度 快速开发设计简单高效的可控机械手臂, 本文设计一种基于单片机和 Arduino平台的六自由度可控机械手臂。 在该机械手臂控制方案中 通过购买基于 Arduino 平台的舵机控制板 充分发挥了 Arduino 开源硬件电路板的技术开放优势和设计制造优势。 在此基础上 利用单片机系统作为控制系统的控制核心, 快速完成六自由度可控机械手臂的方案设计、 硬件开发 软件编程和实物制作的全过程
特别地 为了验证可控机械手臂设计方案的正确性和可行性, 设计制作了基于单片机和 Arduino 平台的六自由度可控机械手臂的实物, 并利用该机械手臂实物书写 ( 绘制 ) 大写字母 M ”。设计过程与实物应用效果均表明: 基于单片机和 Arduino 平台设 计制作六自由度可控机械手臂, 可以降低机械手臂的设计开发难度, 达到快速应用机械手臂的目的 是一种有效的开发设计途径 。在校本科学生参与了可控机械手臂的设计过程和本论文的写作过程, 提高了学生将理论知识应用于实践开发的能力 也培养了学生的科技创新能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/748409.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

1991java Web体检预约管理系统eclipse定制开发mysql数据库BS模式java编程jdbc

一、源码特点 JSP体检预约管理系统是一套完善的web设计系统,对理解JSP java 编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,eclipse开发,数据库为Mysql5.0,使用…

2024华为数通HCIP-datacom最新题库(变题更新⑤)

请注意,华为HCIP-Datacom考试831已变题 请注意,华为HCIP-Datacom考试831已变题 请注意,华为HCIP-Datacom考试831已变题 近期打算考HCIP的朋友注意了,如果你准备去考试,还是用的之前的题库,切记暂缓。 1、…

MATLAB-遗传GA-CNN-SVM,基于GA遗传优化算法优化卷积神经网络CNN结合支持向量机SVM数据分类(多特征输入多分类)

MATLAB-遗传GA-CNN-SVM,基于GA遗传优化算法优化卷积神经网络CNN结合支持向量机SVM数据分类(多特征输入多分类) 1.数据均为Excel数据,直接替换数据就可以运行程序。 2.所有程序都经过验证,保证程序可以运行。 3.具有良好的编程习惯&#xf…

linux centos rabbitmq3.7.5 一键安装部署

linux centos rabbitmq3.7.5 一键安装部署 一、基础理论二、kafka和rocketmq、rabbitmq的区别三、下载所需安装包四、一键安装 一、基础理论 RabbitMQ是一个实现了高级消息队列协议(AMQP)的开源消息代理软件,其作用主要体现在以下几个方面&a…

Docker 查看源地址/仓库地址,更改

一、源地址文件配置路径。若有docker文件夹,没有json,可以新增,复制进去内容 /etc/docker/daemon.json {"registry-mirrors": ["https://dockerhub.azk8s.cn","https://hub-mirror.c.163.com",&q…

“北京到底有谁在啊”影视APP开发,解锁最简单的快乐

随着电视剧《玫瑰的故事》在腾讯视频APP热播,APP也增加了很多热度,一款丰富的影视APP,无论是热门大片、经典影视剧、还是最新综艺节目,能畅享无限精彩的影视内容! 开发影视APP,需要专业的技术服务商来解决…

k8s手撕架构图+详解

“如果您在解决类似问题时也遇到了困难,希望我的经验分享对您有所帮助。如果您有任何疑问或者想分享您的经历,欢迎在评论区留言,我们可以一起探讨解决方案。祝您在编程路上顺利前行,不断突破技术的难关,感谢您的阅读&a…

使用nvm切换node版本时报错:exit status 1解决办法

作者介绍:计算机专业研究生,现企业打工人,从事Java全栈开发 主要内容:技术学习笔记、Java实战项目、项目问题解决记录、AI、简历模板、简历指导、技术交流、论文交流(SCI论文两篇) 上点关注下点赞 生活越过…

项目开发 TCP-Socket连接功能实现(Android端)

前段时间在公司做项目的时候遇到了一个功能需要使用TCP-Socket连接硬件设备进行通信,查了很多资料也只是关于HTTP-Socket相关的,没法满足项目的要求,后来查到一个相关的插件,现在有时间和大家分享一下。 项目简单介绍&#xff1a…

基于STM32+华为云IOT设计的智能冰箱(华为云IOT)

文章目录 一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成【4】摘要 1.2 设计思路1.3 系统功能总结1.4 开发工具的选择【1】设备端开发【2】上位机开发 二、部署华为云物联网平台2.1 物联网平台介绍2.2 开通物联网服务2.3 创建产品&#xff08…

Stateflow快速入门系列(-):构造并运行 Stateflow 图

Stateflow 提供了一种图形语言,包括状态转移图、流程图、状态转移表和真值表。您可以使用 Stateflow 来说明 MATLAB 算法和 Simulink 模型如何响应输入信号、事件和基于时间的条件。 Stateflow 使您能够设计和开发监控、任务调度、故障管理、通信协议、用户界面和混…

Windows USB设备驱动开发 - 常见概念的解释

我们听到许多 USB 术语几乎交替抛出。 它们都是什么意思?假设我们看到类似 “多亏了 USB 3.0,我可以将 SuperSpeed U 盘连接到电脑的 xHCI 主机控制器,并更快地复制文件。” 让我们了解该句子中的 USB 术语。 USB 3.0、USB 2.0 和 USB 1.0 请…

大模型笔记1: Longformer环境配置

论文: https://arxiv.org/abs/2004.05150 首先保证电脑上配置了git. git环境配置: https://blog.csdn.net/Andone_hsx/article/details/87937329 3.1、找到git安装路径中bin的位置,如:D:\Program Files\Git\bin 找到git安装路径中git-core的…

C++ Primer 中文版 第5版 读书笔记

读书过程中发现&#xff0c;读得越多&#xff0c;忘得越多。因此记录读书笔记 1.2 初始输入输出 向流写入数据 <<运算符&#xff08;输出运算符&#xff09;接受两个运算对象&#xff1a;左侧的运算对象必须是一个ostream对象&#xff0c;右侧的运算对象是要打印的值。…

限域传质分离膜兼具高渗透性、高选择性特点 未来应用前景广阔

限域传质分离膜兼具高渗透性、高选择性特点 未来应用前景广阔 分离膜是一种具有选择性透过功能的薄层材料。限域传质分离膜是基于限域传质机制的分离膜&#xff0c;兼具高渗透性、高选择性的特点。限域传质是流体分子通过与其运动自由程相当传质空间的过程&#xff0c;流体分子…

TiDB-从0到1-数据导出导入

TiDB从0到1系列 TiDB-从0到1-体系结构TiDB-从0到1-分布式存储TiDB-从0到1-分布式事务TiDB-从0到1-MVCCTiDB-从0到1-部署篇TiDB-从0到1-配置篇TiDB-从0到1-集群扩缩容 一、数据导出 TiDB中通过Dumpling来实现数据导出&#xff0c;与MySQL中的mysqldump类似&#xff0c;其属于…

SQL Server 2016安装【windows 11】

获取安装包 链接: https://pan.baidu.com/s/1OM9JCNah0-zrOQ0vNBkh6g 提取码: 1245 安装程序 双击点击setup.exe 弹出SQL Server安装中学界面&#xff0c;点击【安装】—点击【全新SQL Server…添加功能】 不出意外的话啊会跳到 SQL Server 2016 安装程序界面&#xff0c;直…

idea使用maven打包报错GBK不可映射字符

方法一&#xff1a;设置环境变量 打开“控制面板” > “系统和安全” > “系统”。点击“高级系统设置”。在“系统属性”窗口中&#xff0c;点击“环境变量”。在“系统变量”部分&#xff0c;点击“新建”&#xff0c;创建一个新的变量&#xff1a; 变量名&#xff1a;…

数学建模 —— 矩阵的运算(上)

目录 调用函数运算 sum : 求和函数 prod : 求乘积函数(product) cumsum : 计算累积和(cumulative sum) diff : 计算差分(difference) mean : 计算平均值 (average) median : 计算中位数 mode : 计算众数 var : 计算方差 (variance) std : 计 算 标 准 差 (standard d…

Taro +vue3 中的微信小程序中的分享

微信小程序 右上角分享 的触发 以及配 useShareAppMessage(() > {return {title: "电影属全国通兑券",page: /pages/home/index,imageUrl: "http:///chuanshuo.jpg",};}); 置 就是Taro框架中提供的一个分享Api 封装好的