作者:卓晴博士,清华大学自动化系
更新时间:2020-08-08 Saturday

■ 设计背景


这是一款用于化学实验室样品上样器的机械臂。设置有肘关节、肩关节以及上下移动关节。

▲ 双轴机械臂结构

肘关节和肩关节运动驱动电机使用的是 42HS48EIS闭环步进电机 , 该电机的 转动角度使用高精度角度传感器 进行测量过。两个关节的步进电机的外部接口是一致的,只是输出在肩关节所使用得到功率(输出扭矩)大一些,体积长。

  • 存在的一个问题:步进电机42HS48EIS 资料中提到该电机是一款闭环步进电机,带有不丢步高效低发热编码器。这个性能在后面实验中需要加以验证。

□ 说明:关于42HS48EIS闭环特性在下面博文中进行了验证: 双轴机械臂调试:步进电机42HS348E,BH32角度传感器,MCU:STC8H1K28

▲ 角度传感器、步进电机

角度传感器使用了 BH38绝对位置14bit角度传感器 ,使用MODBUS RS485协议读取角度。采用该角度传感器是为了形成两个关节运动的角度闭环。

  • 相关工作:
  1. 双轴机械臂调试

01模块设计


1.性能指标

(1) 设计要求

  • 具有两路步进电机驱动脉冲输出
  • 具有两路MODBUS接口,读取两路BH38绝对角度穿就穿数值;
  • 具有统一的WiFi调试接口。

(2) 设计参考

  • 步进电机驱动接口可以参照: STC8K28步进电机ULC2003触发器 中的方案。实际控制输出信号包括有三个:PUL,DIR,MF(步进电机释放)

  • BH38的485总结接口参照 BH38旋转编码器初步测试 中的接口。对于两路的RS485的输入,则通过 肖特基二极管1N5819 (40V,1A,Vf=0.34V)组成与门之后发送到单片机的RXD。

▲ 使用二极管与门合成两路RS485输入到单片机

2.电路设计1

(1) 原理图设计

(2) PCB设计

  • 角度传感器接口定义:
PIN 符号 功能
1 +5V 工作电源
2 GND 电源地
A RS485 A+
B RS485 B-
5 CLR 清楚传感器角度(+5V)
6 INIT 设置(+5V)
  • 步进电机控制接口定义:
PIN 符号 功能
1 +5V 上拉电源
2 PUL 脉冲输出
3 DIR 方向控制
4 ENA 使能控制

3.单片机软件2

  • OSC:35MHz, DEBUG UART:460800bps

(1) 设置UART2波特率

在35MHz时钟频率下, UART2输出19200的波特率设置。T2=0xFE38T_2 = 0xFE38T2​=0xFE38。

测量TXD2发送0x55波形,可以确定输出的波特率为19200bps。

▲ 测量TXD2发送波形

(2) 测试IO

测试其它IO的功能。

02双路角度传感器读取


1.BH60文件模块拷贝与修改

(1) 拷贝生成BH60文件模块

将在博文基于STC8H1K28的BH60的角度读写模块对应的BH60头文件和C语言文件拷贝到当前工程文件中。

(2) 对BH60进行修改

  • 增加DIR1_PIN,DIR2_PIN的定义以及初始化;
  • 去除PROGRAM_PIN, CLEAR_PIN的定义和初始化
  • 定义g_ucBH60Channel定义;
  • 增加BH60DirOnOff()定义。
  • 对BH60SendBuffer()函数进行更新。

2.测试BH60读写角度

(1) 传感器接口

按照BH38绝对位置14bit角度传感器中对于BH38传感器的接口定义来制作传感器的接头。这与本电路板的接口定义是一样的。

(2) 角度读写实验

将两个端口的CLEARx_PIN, PROGRAMx_PIN都初始化为0。分别测试PANG1,PANG2上的对于传感器的读取功能。

注意: BH60Init(1):其中的地址使用缺省的1。

▲ 第一通道RS485的DIR(蓝色)与接收到RI(青色)信号

注意:在上述波形中,返回的RI波形低电平大于1.5V,实际上STC8H1K28无法接收到这个波形。通过更换MAX487芯片之后,接收到的波形低电平接近0V,此时STC8H1K28才能够正常接收到返回的数据。

通过改造BH60ReadNumber(ucChannel),可以分别读取两个角度传感器的角度。

//----------------------------------------------------------------------
if(++nShowCount >= 500) {nShowCount = 0;            printf("%ld %ld\r\n", BH60ReadNumber(0), BH60ReadNumber(1));
}

▲ 分别使用BH60,BH38进行双通道读取实验

通过验证,可以正确的读取两个通道的角度。

(3) 读取角度的时间

读取两个通道的角度所需要的时间:20mS。
如果没有连接角度传感器:读取两个通道的角度所需要的时间14ms。
因此,平均读取一个通道的角度,所需要的时间:没有安装角度传感器时需要7ms,安装角度传感器的时候需要10ms

//----------------------------------------------------------------------
if(++nShowCount >= 500) {nShowCount = 0;            g_ucTime0MS = 0;BH60ReadNumber(0);BH60ReadNumber(1);nShowCount = g_ucTime0MS;printf("%ld %ld, %d\r\n", BH60ReadNumber(0), BH60ReadNumber(1), nShowCount);
}

03步进电机驱动


★ 注意:电机的供电电压需要大于15V。可以选择16~24V的电压。

1.改造主循环频率

将原来的主循环中的WaitTime(1)修改成Delay(100),主循环的周期变为:Tp=0.0358ms。如果形成脉冲,则可以形成的频率为:fp=12⋅Tp=13.85kHzf_p = {1 \over {2 \cdot T_p }} = 13.85kHzfp​=2⋅Tp​1​=13.85kHz

下图是设置Delay(50)情况下的旋转情况。

2.串口命令

下面给出了串口命令。其中

  • angle : 读取两个角度数值
  • step1,step2,step12分别控制pulse1,2的数量。参数是一个长整数。大于0:你是转旋转;小于0:顺时针旋转。
else IFARG0("angle") {printf("%ld %ld\r\n", BH60ReadNumber(0), BH60ReadNumber(1));
} else IFARG0("step1") {sscanf(SDA(1), "%ld", &g_lnPulse1Number);if(g_lnPulse1Number > 0) {ON(DIR1_PIN);} else {g_lnPulse1Number = -g_lnPulse1Number;OFF(DIR1_PIN);}} else IFARG0("step2") {sscanf(SDA(1), "%ld", &g_lnPulse2Number);if(g_lnPulse2Number > 0) {ON(DIR2_PIN);} else {g_lnPulse2Number = -g_lnPulse2Number;OFF(DIR2_PIN);}} else IFARG0("step12") {sscanf(SDA(1), "%ld", &g_lnPulse1Number);sscanf(SDA(2), "%2ld", &g_lnPulse2Number);if(g_lnPulse1Number > 0) {ON(DIR1_PIN);} else {g_lnPulse1Number = -g_lnPulse1Number;OFF(DIR1_PIN);}  if(g_lnPulse2Number > 0) {ON(DIR2_PIN);} else {g_lnPulse2Number = -g_lnPulse2Number;OFF(DIR2_PIN);}

※ 结论


制作了基于STC8H1K28单片机的双轴机械臂的控制板。并给出的基于ASCII串口命令的调试方式。使用基于WiFi调试模块,可以方便进行远程下载程序和调试参数。

■ 相关文献链接:

  • 42HS48步进电机实验
  • 使用高精度旋转编码器BH60测量步进电机转动角度
  • 三拓高速42闭环步进电机驱动器一体机编码器48mm60mm大扭矩NEMA17-淘宝网
  • 双轴机械臂调试:步进电机42HS348E,BH32角度传感器,MCU:STC8H1K28
  • BH38旋转编码器初步测试
  • STC8K28步进电机ULC2003触发器
  • 肖特基二极管1N5819
  • 基于STC8H1K28的BH60的角度读写模块
  • 两轴机械臂+机械爪整体控制电路设计

  1. AD设计工程文件:AD\XQWF\2020\机械臂\CNT2AXESSTC8H.SchDoc * ↩︎

  2. C51工程文件:C51\STC\Project\XQWF\2020\STC8H2AXES\STC8H2AXES.uvproj ↩︎

基于STC8H1K28的双轴机械臂驱动模块:步进电机42HS348E,BH32角度传感器相关推荐

  1. 双轴机械臂位置闭环控制:STC8H1K28,42HS48EIS,BH32

    ■ 背景介绍 对于 一款用于化学实验室样品操作机械臂 的调试过程中,在博文 双轴机械臂调试:步进电机42HS348E,BH32角度传感器,MCU:STC8H1K28 可以看到初步的通过带有 闭环控制的 ...

  2. 双轴机械臂调试:步进电机42HS348E,BH32角度传感器,MCU:STC8H1K28

    ■ 前言 这款双轴机械臂是应用于实验室中进行自动样品转换的执行机构.为了能够在一定范围内将试剂瓶(试管) 完成自动搬运,需要完成对样品的抓取,提升和放下.水平移动(二维) 等功能.使用带有肘关节.肩关 ...

  3. 基于STM32F103双轴机械臂完整电路板设计

    ➤01 机械臂设计   在 基于STM32对于三轴机械臂控制器设计 设计了机械臂的控制电路板.采用了双板分开设计方式.并分别进行了如下的测试:   1. 对于STM32F103三轴机械臂控制器进行基本 ...

  4. 双轴机械臂串口控制命令开发与测试:STM32F103控制板,简易调试命令集合

    ▌01 底层串口控制命令 1.调试说明 本文是继 调试机械臂一体化控制电路 博文中对于 两轴机械臂+机械爪整体控制板设计与机械爪控制调试 在 基于STM32F103双轴机械臂完整电路板 控制下进行串口 ...

  5. 基于STM32对于三轴机械臂控制器设计

    简 介: 本文使用了STM32对于一款三轴机械臂进行初步驱动,调试他的各个关节的运动情况. 关键词: 机械臂,三轴机械臂,STM32 ➤ 01背景 在 组装肩部带有减速器双轴机械臂组装与调试 的调试基 ...

  6. 组装肩部带有减速器双轴机械臂组装与调试

    ➤ 00背景 在 增加了机械爪的双轴机械臂 安装调试之后, 发现进行平顺控制效果不好 ,因此在原来的基础上进行了如下的改动: 肩部和肘部的角度传感器采用了: 角度编码器 ST-3806-15-RS 读 ...

  7. 双轴机械臂建模分析数据

    作者:卓晴博士,清华大学自动化系 更新时间:2020-08-19 Wednesday ■ 背景 在 对于实验室双轴机械臂进行运动调试过程中,设计最后的控制器需要对运动对象进行力学建模分析.利用肩关节. ...

  8. 双轴机械臂中的闭环步进电机平顺控制算法: 42HS48EIS,57HS

    ■ 实验背景 在 两轴机械臂+机械爪整体控制板设计与机械爪控制调试 的基础上对于机械臂各关节进行了 双关节机械臂+机械爪运动控制 ,其中存在的主要问题还是肩关节运动不平稳的情况. ▲ 机械臂肩部运动 ...

  9. 两轴机械臂+机械爪整体控制板设计与机械爪控制调试

    简 介: 在实验室样品自动上样双轴机械臂调试之后,出现了肩关节的运动力矩不足,这里使用了57HSXXXX步进电机进行增加力矩.下面是相关的调试过程. 关键词: 两轴机械臂,机械爪,上样机械臂 01为什 ...

最新文章

  1. 线性代数可以速成吗_广播/学习吉他速成靠谱吗?真的可以速成吗?
  2. matlab中有哪些有趣的命令?好玩的matlab彩蛋
  3. 图解机房空调制冷系统
  4. Google发布用于Google Cloud的.Net API
  5. codeforces 7.22 F Pairwise Modulo
  6. Django中手动创建虚拟环境
  7. mybatis学习(47):嵌套查询--一对一
  8. Fast R-CNN整体把握
  9. 关于发布DIPS的MVC项目的IIS 7.0环境配置的方法
  10. 网页上无缝滚动的实现
  11. Apache Flink Meetup ·上海站精彩回顾(附PPT下载)
  12. GIS 矢量切片(Vector Tile)-地图定制化的时代
  13. 高德地图纠偏 php,驾车轨迹纠偏-轨迹纠偏-示例中心-JS API 示例 | 高德地图API
  14. 小鑫の日常系列故事(一)——判断对错
  15. word分栏第一栏没满内容跑到下一栏
  16. Excel vba 调用outlook发送邮件
  17. 一文搞懂JVM架构:微信抢红包实战案例
  18. 3559a sample_vio 修改中遇到的奇怪问题
  19. 白盒测试方法|白盒测试的六种方法比较分析
  20. android移动点餐系统内容和要求,基于Android云计算的移动点餐系统

热门文章

  1. Ubuntu Server上的LVM配置
  2. [转载]TFS与Project、Excel同步
  3. 特征变换(3)小波变换
  4. 利用bat批量执行脚本文件
  5. 总结一下Page_Load和OnLoad
  6. 中小企业网络结构设计1(华为版)
  7. .vue文件中style标签的几个标识符
  8. 表格排序——tablesorter.js使用(支持中文排序)
  9. AMD之A系列APU问世 引领平板市场与高清视频
  10. C语言中标准输入流、标准输出流、标准错误输出流