对于STM32F103三轴机械臂控制器进行基本功能测试-上下运动功能
简 介: 本文针对基于在基于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三轴机械臂控制器进行基本功能测试-上下运动功能相关推荐
- 对于STM32F103三轴机械臂控制器进行基本功能测试-关节角度读取
➤01 机械臂调试 1.简介 对 基于STM32对于三轴机械臂控制器设计 中对应的控制电路读取肩部和肘部两个 角度编码器 ST-3806-15-RS 数据进行调试. 2.接口电路1 ▲ 角度读取的相关 ...
- 基于STM32对于三轴机械臂控制器设计
简 介: 本文使用了STM32对于一款三轴机械臂进行初步驱动,调试他的各个关节的运动情况. 关键词: 机械臂,三轴机械臂,STM32 ➤ 01背景 在 组装肩部带有减速器双轴机械臂组装与调试 的调试基 ...
- 对于STM32F103控制的三轴机械臂基本功能测试-关节转动控制
➤01 机械臂调试 1.简介 对于 基于STM32对于三轴机械臂控制器设计 的设计已经进行了如下的调试: 对于STM32F103三轴机械臂控制器进行基本功能测试-关节角度读取 对于STM32F103三 ...
- 基于STM32F103双轴机械臂完整电路板设计
➤01 机械臂设计 在 基于STM32对于三轴机械臂控制器设计 设计了机械臂的控制电路板.采用了双板分开设计方式.并分别进行了如下的测试: 1. 对于STM32F103三轴机械臂控制器进行基本 ...
- Rviz玩转三轴机械臂
前言 最近想加深ROS仿真机械臂的理解,所以笔者参考一些资料与博客,在ROS下搭个简单的三轴机械臂,在Rviz下实现各轴关节转动,如果后续有时间的话,可能会更新下Gazebo下仿真,如果时间不够的话, ...
- 六轴机械臂控制器 控制卡 软件 机械臂
六轴机械臂控制器 控制卡 软件 机械臂27400624681113128教学实训设备
- grbl控制3轴机械臂 原理 实现 (四) 之GRBL源码修改驱动三轴机械臂
往期回顾: 第一篇:grbl控制3轴机械臂 原理 实现 (一) 之2D机械臂模拟及实现 第二篇:grbl控制3轴机械臂 原理 实现 (二) 之3D机械臂模拟及实现 第三篇:grbl控制3轴机械臂 原理 ...
- 逆运动学:RRR型 2D 三轴机械臂的IK求解 | 机械臂运动学笔记(二)
任务: 给定末端的(x,y, \phi),求各轴角度( θ 1 , θ 2 , θ 3 \theta_1 , \theta_2, \theta_3 θ1,θ2,θ3) 先将多个空间几何拆解成平面 ...
- 三轴机械臂/三自由度四足单腿DH正逆运动学及matlab验证
实物模型 DH建立坐标系以及正逆运动学推导 Matlab验证 clear; clc; a1=-9.57*0.001;alpha1=pi/2; a2=-59.2*0.001; a3=-77*0.001; ...
最新文章
- 【CTF】实验吧 Fair-Play
- RDKit | 基于RDKit绘制带原子和键的索引、注释和立体化学
- gcc选项-g与-rdynamic的异同
- php htmlentities函数的问题
- 2009 年 5 月 忙碌的一个月
- 深入学习http协议(转)
- Qt中颜色选择框输出所选中的颜色值
- 使用JMeter如何实现上传文件
- 关于System.AccessViolationException异常
- C++动态内存管理好难怎么办?零基础图文讲解,小白轻松理解原理
- python如何解析xml请求 http_怎么用python处理xml请求和xml响应,wsdl, soap,希望有源码参考。...
- matlab解六元一次方程,如何用MATLAB编写六元一次方程组
- awvs无法启动问题
- APM Agent 之 动态注入 agent
- android悬浮功能实现,Android利用悬浮按钮实现翻页效果
- Java博客项目(重点)
- QWebEngineView 实现网页触屏滑动
- 使用Scratch制作项目《弹珠游戏》
- FPGA设计开发(基础课题):74LS160计数器芯片设计
- 华为HCIE有什么方向?哪个最热门