基于单片机和 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 平台设 计制作六自由度可控机械手臂, 可以降低机械手臂的设计开发难度, 达到快速应用机械手臂的目的 是一种有效的开发设计途径 。在校本科学生参与了可控机械手臂的设计过程和本论文的写作过程, 提高了学生将理论知识应用于实践开发的能力 也培养了学生的科技创新能力。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Websocket在Java中的实践——自动注册端点

在《Websocket在Java中的实践——握手拦截器》中我们使用握手拦截器实现了路径解析的工作。这个过程略显复杂,因为路径解析这样比较底层的工作应该由框架来解决,而不应该交由开发者来做。本文介绍的自动注册端点的功能就可以很优雅的解决这个问题。 依赖…

[C++][设计模式][原型模式]详细讲解

1.动机 在软件系统中,经常面临这“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是它们却拥有比较稳定一致的接口如何应对这种变化?如何向“客户程序(使用这些对象的程序)”隔离出…

STM32HAL库--IIC实验(速记版)

STM32 的普通 IO 口模拟 IIC 时序,可实现与 EEPROM 外设双向通信。 IIC 简介 IIC(Inter-Integrated Circuit)总线是一种由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器以及其外围设备。 IIC 是由数据线 SDA 和时钟线 SCL 构成的串行总线。 IIC …

在数据库领域是如何实现“多租户”的呢?

数据库多租技术介绍 随着云计算时代的到来,多租户的概念也逐渐广为人知。“多租户”使得租户之间可以共享物理资源,能够帮助用户节约硬件成本和运维成本,提高资源利用效率。同时,在实现的过程中,考虑到共享带来的安全…

three.js - matcap材质(MeshMatcapMaterial)

说一下matcap纹理 先总结:MeshMatcapMaterial材质,通过采样含有光照信息的贴图来模拟光照效果。这种材质特别适用于模拟静态光源下的光照,并且,因其简单性和快速性而被广泛应用于各种场景。但是,由于其性能考虑&#x…

系统思考—啤酒游戏经营决策沙盘

在日常的教学中,我们通过系统思考仿真演练深入探索决策背后的动因。例如,我经常教授的麻省理工学院研发的“啤酒游戏”和“人民航空策略模拟”,这些都是麻省理工MBA学生的必修课。此外,还有更简洁的“红黑游戏”“收获季节”等模拟…

ElasticSearch索引架构与存储

关于ES官网的介绍: Elasticsearch provides near real-time search and analytics for all types of data. Whether you have structured or unstructured text, numerical data, or geospatial data, Elasticsearch can efficiently store and index it in a way that support…

在低版本Excel中创建次级下拉列表

在低版本中indirect函数不支持选区,创建次级下拉列表得依靠“名称管理”给选区命名。 (笔记模板由python脚本于2024年06月26日 06:24:22创建,本篇笔记适合常用Excel处理数据的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www…

mid360配置lio-sam、point-lio和faster-lio(faster-lio未敢配置)

一、使用mid360配置lio-sam 1.首先从GitHub - nkymzsy/LIO-SAM-MID360 at Livox-ros-driver2 下载能支持mid360的lio-sam版本到 ws_livox/src中,直接编译,就可以成功。 2.使用 roslaunch lio_sam run6axis.launch以及播之前我才记得Mid360的包&#x…

Redis 缓存一致性

Redis 业务结构 流程图 缓存一致性 Redis 和 MySQL 中数据保持一致 双检加锁策略 主要用于解决多线程环境下的并发问题,确保在高并发场景下对共享资源的访问是互斥的,避免因竞争条件导致的不一致状态 public User findUserById(Integer id) {User user …

idea中maven新增的配置文件xx.xml没生效问题

项目场景: 因为公司使用自己的私服下载jar,则没有使用默认的settings.xml文件。而是新增了一个settingsold.xml文件 问题描述 公司项目有用自己的私服,Maven正常去私服下载jar包是没问题的。但是一直是去找的阿里云镜像,到导致阿里云镜像找不到相关的jar包报错!!!…

前端:Nuxt2 + Vuetify2

想要开发一个网站,并且支持SEO搜索,当然离不开我们的 Nuxt ,那通过本篇文章让我们一起了解一下。如果构建一个Nuxt项目 安装 Nuxt,创建项目 安装nuxt2, 需要node v16,大家记得查看自己的node版本。构建脚…

Linux-笔记 OverlayFS文件系统小应用 恢复功能

前言 通过另一章节 OverlayFS文件系统入门 中已经大致了解了原理,这里来实现一个小应用。通过前面介绍我们已经知道lowerdir是只读层,upperdir是可读写层,merged是合并层(挂载点),那么我们可以利用这个机…

.NET C# 使用GDAL将mdb转换gdb数据

.NET C# 使用GDAL将mdb转换gdb数据 目录 .NET C# 使用GDAL将mdb转换gdb数据1 环境2 Nuget3 Code 1 环境 VisualStudio2022 .NET6 GDAL 3.8.5 2 Nuget 3 Code FeatureExtension.cs public static class FeatureExtension {[DllImport("gdal.dll", EntryPoint &…

【权威主办|检索稳定】2024年法律、教育与社会发展国际会议 (LESD 2024)

2024年法律、教育与社会发展国际会议 (LESD 2024) International Conference on Law, Education and Social Development in 2024 【重要信息】 大会地点:成都 官网地址:http://www.iclesd.com 投稿邮箱:iclesdsub-conf.com 【注意&#xff1…

Objects and Classes (对象和类)

Objects and Classes [对象和类] 1. Procedural and Object-Oriented Programming (过程性编程和面向对象编程)2. Abstraction and Classes (抽象和类)2.1. Classes in C (C 中的类)2.2. Implementing Class Member Functions (实现类成员函数)2.3. Using Classes References O…

Renesas MCU使用SCI_I2C驱动HS3003

目录 概述 1 软硬件介绍 1.1 软件版本信息 1.2 认识HS3003 1.2.1 HS3003特性 1.2.2 HS3003寄存器 1.2.2.1 温湿度数据寄存器 1.2.2.2 参数寄存器 1.2.2.3 一个参数配置Demo 1.2.3 温湿度值转换 1.2.4 HS3003应用电路 1.2.4.1 PIN引脚定义 1.2.4.2 sensor 应用电路 …

Django-开发一个列表页面

需求 基于ListView,创建一个列表视图,用于展示"BookInfo"表的信息要求提供分页提供对书名,作者,描述的查询功能 示例展示: 1. 数据模型 models.py class BookInfo(models.Model):titlemodels.CharField(verbose_name"书名",max_length100)authormode…

【八股系列】Vue中的<keep-alive>组件:深入解析与实践指南

🎉 博客主页:【剑九 六千里-CSDN博客】 🎨 上一篇文章:【探索响应式布局的奥秘:关键技术与实战代码示例】 🎠 系列专栏:【面试题-八股系列】 💖 感谢大家点赞👍收藏⭐评论…

正则表达式;grep、sed、awk、soft、uniq、tr 详解

正则表达式 概念 正则表达式(Regular Expression,常简写为regex、regexp或RE)是一种强大的文本处理工具,它使用一种特殊的字符序列来帮助用户检查一个字符串是否与某种模式匹配。 标准正则表达式 首先安装正则表达式pcre库 创…