完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
01为什么制作整体控制板?
原因1:更换了大力矩步进电机 在实验室样品自动上样 双轴机械臂 调试之后,出现了的肩关节 运动力矩不足 的问题。为此将原来的驱动肩关节的 42HS48步进电机 更换成 57HSXXXXEIS步进电机 。力矩有原来的0.4N·M,增加到2.0N·M。 实际上对于57HS电机的控制与原来42HS48控制接口都是相同的,基本上是由脉冲(PULSE)、方向(DIR)、使能(EN)开关量控制组成。 原因2:增加机械爪 为了抓取试剂瓶,使用了 开关闭合式两爪机械爪 ,并配合以 FSR402电阻式薄膜压力传感器 来感知机械爪抓取的力度。 3. 整体控制板的功能
设计参考 基于STC8H1K28的双轴机械臂驱动模块:步进电机42HS348E,BH32角度传感器 中的方案,在它的基础上增加ADC端口。 02控制电路板设计1 1.原理图设计 电路核心还是基于STC8H来设计的。其中主要接口(485,步进电机脉冲等)都与 基于STC8H1K28的双轴机械臂驱动模块 的设计一致。 (1) 主要改动:
(2) SCH图 2.PCB设计 PCB各个端口定义如下图所示: 实验电路板使用单面覆铜板通过 一分钟制版法 制作。焊接完之后形成测试实验电路板。 3.单片机软件2 单片机软件在原来 双轴机械臂调试模块 基础上进行修改。 在8H基础上增加对于PWM的输出控制。 设置STC8H1K28的宏定义,启动Advance PWM 功能。 #define ADVANCE_PWM1_EN 1 1 //------------------------------------------------------------------------------ #if ADVANCE_PWM1_EN void AdvancePWM1Init(void) { //---------------------------------------------------------------------- _push_(P_SW2); P_SW2 = 0x80; PWM1_CCER1 = 0x00; // Clear CCERx before write CCMRx PWM1_CCMR1 = 0x60; // Set CC1 as PWM1 output mode PWM1_CCER1 = 0x01; // Enable CC1 channel PWM1_CCR1 = 1500; // Set duty 1500us PWM1_ARR = 19999; // Set Period PWM1_ENO = 0x01; // Set PWM1P as output: ENO1P,1N....,ENO4P,4N PWM1_IOAUX = 0x0; // PWM1_BKR = 0x80; // Enable main output PWM1_CR1 = 0x01; // Begin counter PWM1_PSCR = 34; // 35MHz as pre clock divide : clock 1us PWM1_PS = 0x1; // B01: PWM1P1.0, 2.0.... _pop_(P_SW2); } #endif // ADVANCE_PWM1_EN 03控制板调试 1.调试机械爪 在初始状态,将机械爪设置成如下的最大张开的状态。 在调试过程中,为了能够使得整体控制板输出驱动舵机的电功率,使用了 STC单片机功率控制下载板 作为中间过渡板,从而使得舵机的运动不会影响WiFi下载电路的电源波动。 2.增加FSR传感器 为了控制机械爪对于试剂瓶的夹持压力,在机械爪一个手指增加FSR传感器。 修改电路中的上拉电阻RCL=51k,这样使用手指压按FSR,测量得到的CLAWPRESS的电压在1.5 ~ 4.6V的变化。 3.测试加持力 使用机械爪抓取试剂瓶,同时测量FSR对应的ADC值。 下面是两次测量到的FSR分压后的电压ADC转换值。由于机械运动出现抖动,所以压力出现抖动。 ▲ 设置舵机的指令与读取FSR的AD值 ▲ 设置舵机的指令与读取FSR的AD值 ▲ 设置多级指令与压力传感器FSR读数 #!/usr/local/bin/python # -*- coding: gbk -*- #============================================================ # TEST1.PY -- by Dr. ZhuoQing 2020-09-05 # # Note: #============================================================ from headm import * from tsmodule.tsstm32 import * setv = linspace(1000, 1500, 100, endpoint=False) printf(setv) stm32cmd('servo 1000') time.sleep(1) fsrdim = [] for v in setv: stm32cmd('servo %d'%int(v)) stm32cmd('CLEAR') time.sleep(.25) while True: stm32cmd('fsr') val = stm32memo(1) if len(val) > 0: break time.sleep(.25) fsrdim.append(val[0]) printff(v, val[0]) tspsave('fsrdata', setv=setv, fsr=fsrdim) stm32cmd('servo 1000') plt.plot(setv, fsrdim) plt.xlabel("SETV") plt.ylabel("FSR") plt.grid(True) plt.tight_layout() plt.show() #------------------------------------------------------------ # END OF FILE : TEST1.PY #============================================================ ※ 结论 设计了双轴机械臂以及机械爪的驱动方案。同时调试初步完成了在原来 基于STC8H1K28的双轴机械臂驱动模块:步进电机42HS348E,BH32角度传感器 没有调试的机械爪的控制部分。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1606 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1538 浏览 1 评论
969 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
681 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1584 浏览 2 评论
1861浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
642浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
514浏览 3评论
528浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
501浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 22:51 , Processed in 0.759757 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号