完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
➤01 机械臂调试 1.简介 对 基于STM32对于三轴机械臂控制器设计 中对应的控制电路读取肩部和肘部两个 角度编码器 ST-3806-15-RS 数据进行调试。 2.接口电路1 ▲ 角度读取的相关电路和PCB 2.单片机软件 单片机软件所在目录: D:zhuoqingwindowARMIARSTM32ApplicationXQWF2020CNTSTM103Srcmain.c ➤02 基本调试2 1. UART2输入输出 通过UART2发送字符,测试在MAX485的输出波形显示互补的信号。 2.建立ST3806文件 从 角度编码器 ST-3806-15-RS 拷贝 ST3806的头文件和C文件并建立相应的文件,加入Project。 具体文件内容参见附录。 注意:Control中调用ST3806Init()初始化的时候,需要注意到它的输入参数应该设置为1。 通过下面的过程,可以测量读取两个角度值所需要的缠绵大约在3 ~ 4ms。 if(++nShowCount >= 500) { nShowCount = 0; int nBegin = HAL_GetTick(); unsigned int nNumber1 = ShoulderAngle(); //ST3806ReadNumber(ST3806_CHANNEL_1); unsigned int nNumber2 = ElbowAngle(); //ST3806ReadNumber(ST3806_CHANNEL_2); int nEnd = HAL_GetTick(); printf("%d %d %drn", nNumber1, nNumber2, nEnd-nBegin); } 3.读取两个关节的最大值和最小值 从顶部看肩关节和肘关节的角度极值分别为: (1)肩关节角度极值范围
▲ 顺时针旋转,从左90°旋转刀右90° (2)肘关节角度极值范围
▲ 顺时针旋转,从左135°旋转刀右135° 4.角度左右补偿 (1)目标 由于传感器一周的分辨率是15bit,角度是以为周期重复的。所以机械臂在旋转过程中它的数值可能会从0x8000→0,或者0→0x8000突变。 通过角度增加一个偏置 ,使得修正后的角度,在机械臂旋转范围内,不会出现上述的突变。实际的角度通过如下公式计算: (2)获得偏移量 如何获得最佳的偏移量使得输出的角度值范围能够位于0x0 ~ 0x8000的中间位置0x4000呢? 下面给出了角度偏移量的计算公式。 #!/usr/local/bin/python # -*- coding: gbk -*- #============================================================ # TEST1.PY -- by Dr. ZhuoQing 2020-12-21 # # Note: #============================================================ from headm import * from tsmodule.tsstm32 import * def deltaA(amin, amax): amax = amax if amax >= amin else 0x8000+amax a0 = (amin + amax) // 2 delA = 0x4000-a0 if a0 <= 0x4000 else 0xc000-a0 return delA #------------------------------------------------------------ data = stm32memo(1) delA = deltaA(data[0], data[-1]) newdata = [(a + delA) % 0x8000 for a in data] printf('DeltaA:%d'%delA) printf(data, newdata) plt.plot(data, label='Origin') plt.plot(newdata, label='Modifier') plt.xlabel("Sample") plt.ylabel("Angle") plt.grid(True) plt.tight_layout() plt.legend(loc='upper right') plt.show() #------------------------------------------------------------ # END OF FILE : TEST1.PY #============================================================ (3)测试数值 对于肩关节:ΔA=15176 ▲ 肩关节经过修正后的角度变化范围 对于肘关节的数据: ΔA=7433 ▲ 肘关节角度补偿前和补偿后的曲线 ➤03 程序接口 下面分别是在control.h, control.c下的两个接口程序: //------------------------------------------------------------------------------ #define ARM_SHOULDER_OFFSET 15176 #define ARM_ELBOW_OFFSET 7433 unsigned int ShoulderAngle(void); unsigned int ElbowAngle(void); //------------------------------------------------------------------------------ unsigned int ShoulderAngle(void) { unsigned int nAngle; nAngle = ST3806ReadNumber(ST3806_CHANNEL_1); return (nAngle + ARM_SHOULDER_OFFSET) & 0x7fff; } unsigned int ElbowAngle(void) { unsigned int nAngle; nAngle = ST3806ReadNumber(ST3806_CHANNEL_2); return (nAngle + ARM_ELBOW_OFFSET) & 0x7fff; } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1780 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1081 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1679 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
731浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
596浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
556浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 17:49 , Processed in 0.817070 second(s), Total 45, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号