简 介: 本文针对基于在基于STM32对于三轴机械臂控制器设计 中设计了控制电路板。本文记录对其在机械臂实际部件进行调试的过程。

关键词STM32F103机械臂三轴上下运动

01 机械臂控制器


1.简介

基于STM32对于三轴机械臂控制器设计 中设计了控制电路板。本文记录对其在机械臂实际部件进行调试的过程。

本文记录了机械臂上下运动测试相关信息。

2.单片机软件

单片机软件所在目录:

D:\zhuoqing\window\ARM\IAR\STM32\Application\XQWF\2020\CNTSTM103\Src\main.c

02 上下运动控制


1.控制接口

(1)运动控制电机

A.控制器和接口

使用PSM3进行步进电机接口控制。包括有:Pulse,Dir,Enable三根线控制。其中Enable线时域肩关节和肘关节的步进电机的Enable是公用的。

驱动器 DM542 控制信号中,ENABLE施加信号时候(即:Enable施加电压),驱动器禁止工作。

▲ 步进电机接口

在Enable施加信号的时候,驱动器输出禁止。驱动器上的红色LED点亮。

▲ Enable通电后

B.步进电机

驱动机械臂上下运动的步进电机为 两相四线86步进电机86HBP80AL4 。它位于机械臂底座下,输出轴直接驱动丝杠旋转。

▲ 机械臂上下运动驱动步进电机

它的外部引线定义为:

▲ 步进电机外部引线

制作步进电机驱动器DM542与控制器的接口。

▲ 步进电机与控制板的接口

(2)上下位置限制

▲ 机械臂上下限位

将下限位置开关连入控制板的PP1端口; 上限位传感器连入PP2 端口。

注意:位置开关的输出引脚与控制板的输出引脚顺序不是一致的。

限位开关的三条线的输出引脚功能定义:

PIN1 PIN2 PIN3
VCC GND SIGNAL

控制板上的接口定义为:

PIN1 PIN2 PIN3
VCC SIGNAL GND

2.控制口检测

(1)测试PSM3的输出波形

根据原理图,在control.h定义步进电机输出控制端口:

#define SM_PUL1         GPIOA,4
#define SM_DIR1         GPIOA,5
#define SM_PUL2         GPIOA,6
#define SM_DIR2         GPIOA,7
#define SM_PUL3         GPIOB,0
#define SM_DIR3         GPIOB,1
#define SM_ENABLE       GPIOC,15

在control.c: ControlInit(…)初始化控制端口:

OFF(SM_PUL1);
OFF(SM_DIR1);
OFF(SM_PUL2);
OFF(SM_DIR2);
OFF(SM_PUL3);
OFF(SM_DIR3);
OFF(SM_ENABLE);OUT(SM_PUL1);
OUT(SM_DIR1);
OUT(SM_PUL2);
OUT(SM_DIR2);
OUT(SM_PUL3);
OUT(SM_DIR3);
OUT(SM_ENABLE);

在main.c中输出相应的波形测试:

if(nCount & 0x1) ON(SM_PUL1);
else OFF(SM_PUL1);
if(nCount & 0x2) ON(SM_DIR1);
else OFF(SM_DIR1);
if(nCount & 0x4) ON(SM_PUL2);
else OFF(SM_PUL2);
if(nCount & 0x8) ON(SM_DIR2);
else OFF(SM_DIR2);
if(nCount & 0x10) ON(SM_PUL3);
else OFF(SM_PUL3);
if(nCount & 0x20) ON(SM_DIR3);
else OFF(SM_DIR3);
if(nCount & 0x40) ON(SM_ENABLE);
else OFF(SM_ENABLE);

(2)测试底座电机

根据 DM542 使用说明书,对DM542进行设置:

1)DM542驱动器工作电压: +24V; 静态工作电流:30mA。
2)DM542设置开关:

  • SW1,2,3: OFF
  • SW4:OFF: 有半流设置。半流功能是指无步进脉冲500ms后,驱动器输出电流自动降为额定输出电流的70%,用来防止电机发热。
  • SW5,6,7,8:ON,OFF,ON,ON:电机每周步数:800.

通过将ENABLE信号关闭,工作电流 0.4A。
如果将SW4修改为:ON,工作电流约 1.5A。

通过输出PUL3脉冲(周围2ms,占空比50%),可以观察到步进电机上升和下降。

3)运动方向:

  • ON(SM_DIR3): Move Up
  • OFF(SM_DIR3): Move Down

3.上下位置传感器

(1)电路板对应管脚

▲ 上下位置接口

注意 :机械臂的下限位连入PP1, 机械臂的上限位连入PP2

(2)软件管脚配置

STM32输入管脚分别为:

  • PS0:PA0: Input-Pin, Pull-Up
  • PS1:PA1: Input-Pin, Pull-Up

▲ STM32F103cb管脚配置

03 运动控制


1.运动中断程序

构建中断程序ArmMoveUpDownISR()完成对于机械臂上下运动脉冲输出以及位置上下限的检测。

接口函数:

  • ArmMoveUp():机械臂运动到最上面机械位置;
  • ArmMoveDown(): 机械臂运动到最下面极限位置;

使用系统1ms中断程序输出步进电机的脉冲,脉冲频率为500Hz。上下运动速度有些缓慢:

  • 上下限位之间的距离:14.5厘米;
  • 上下限位之间的运行时间:23秒。

下面通过提高输出中断程序频率来提高运动速度。

2.修改中断程序

  • 中断频率:10kHz
  • 驱动器细分设置:SW5,6,7,8: OFF,OFF,ON, ON;每周1600脉冲。

运动上下中断次数:46300(左右)

运行时间:4.6秒

➤※ 结论


对于机械臂的上下运动进行了软件和硬件调试,设置了相应的调用程序。

■ 相关文献链接:

  • 基于STM32对于三轴机械臂控制器设计
  • DM542
  • 两相四线86步进电机86HBP80AL4

对于STM32F103三轴机械臂控制器进行基本功能测试-上下运动功能相关推荐

  1. 对于STM32F103三轴机械臂控制器进行基本功能测试-关节角度读取

    ➤01 机械臂调试 1.简介 对 基于STM32对于三轴机械臂控制器设计 中对应的控制电路读取肩部和肘部两个 角度编码器 ST-3806-15-RS 数据进行调试. 2.接口电路1 ▲ 角度读取的相关 ...

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

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

  3. 对于STM32F103控制的三轴机械臂基本功能测试-关节转动控制

    ➤01 机械臂调试 1.简介 对于 基于STM32对于三轴机械臂控制器设计 的设计已经进行了如下的调试: 对于STM32F103三轴机械臂控制器进行基本功能测试-关节角度读取 对于STM32F103三 ...

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

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

  5. Rviz玩转三轴机械臂

    前言 最近想加深ROS仿真机械臂的理解,所以笔者参考一些资料与博客,在ROS下搭个简单的三轴机械臂,在Rviz下实现各轴关节转动,如果后续有时间的话,可能会更新下Gazebo下仿真,如果时间不够的话, ...

  6. 六轴机械臂控制器 控制卡 软件 机械臂

    六轴机械臂控制器 控制卡 软件 机械臂27400624681113128教学实训设备

  7. grbl控制3轴机械臂 原理 实现 (四) 之GRBL源码修改驱动三轴机械臂

    往期回顾: 第一篇:grbl控制3轴机械臂 原理 实现 (一) 之2D机械臂模拟及实现 第二篇:grbl控制3轴机械臂 原理 实现 (二) 之3D机械臂模拟及实现 第三篇:grbl控制3轴机械臂 原理 ...

  8. 逆运动学:RRR型 2D 三轴机械臂的IK求解 | 机械臂运动学笔记(二)

    任务: 给定末端的(x,y, \phi),求各轴角度( θ 1 , θ 2 , θ 3 \theta_1 , \theta_2, \theta_3 θ1​,θ2​,θ3​) 先将多个空间几何拆解成平面 ...

  9. 三轴机械臂/三自由度四足单腿DH正逆运动学及matlab验证

    实物模型 DH建立坐标系以及正逆运动学推导 Matlab验证 clear; clc; a1=-9.57*0.001;alpha1=pi/2; a2=-59.2*0.001; a3=-77*0.001; ...

最新文章

  1. 【CTF】实验吧 Fair-Play
  2. RDKit | 基于RDKit绘制带原子和键的索引、注释和立体化学
  3. gcc选项-g与-rdynamic的异同
  4. php htmlentities函数的问题
  5. 2009 年 5 月 忙碌的一个月
  6. 深入学习http协议(转)
  7. Qt中颜色选择框输出所选中的颜色值
  8. 使用JMeter如何实现上传文件
  9. 关于System.AccessViolationException异常
  10. C++动态内存管理好难怎么办?零基础图文讲解,小白轻松理解原理
  11. python如何解析xml请求 http_怎么用python处理xml请求和xml响应,wsdl, soap,希望有源码参考。...
  12. matlab解六元一次方程,如何用MATLAB编写六元一次方程组
  13. awvs无法启动问题
  14. APM Agent 之 动态注入 agent
  15. android悬浮功能实现,Android利用悬浮按钮实现翻页效果
  16. Java博客项目(重点)
  17. QWebEngineView 实现网页触屏滑动
  18. 使用Scratch制作项目《弹珠游戏》
  19. FPGA设计开发(基础课题):74LS160计数器芯片设计
  20. 华为HCIE有什么方向?哪个最热门

热门文章

  1. 一张图解释SQL Server集群、镜像、复制、日志传送
  2. Entity Framework 6 Recipes 2nd Edition(10-5)译 - 在存储模型中使用自定义函数
  3. java虚拟机学习(四)类的加载过程
  4. RabbitMQ启动参数具体含义
  5. 不同网段使用同一台网络打印机
  6. admin及admin888 经过 md5加密后16位和32位代码
  7. [COCI2015]COCI
  8. ASP.NET MVC+HighCharts开发统计图表
  9. 《C语言程序设计:问题与求解方法》——3.9节常见编程错误
  10. 为什么新来的技术很难接手维护一个系统