完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
■ 简介
在博文 BH60绝对位置编码器测试 中介绍了对BH60,通过其MODBUS(485)读取相应绝对角度的方式。为了便于为了进行高精度角度实验,制作基于STC8H1K28的BH60角度读取模块。并使其可以通过 串口ISPHUB 通过命令统一进行读取。 01模块设计 1.实验电路设计1 2.接口定义 除了上面的四芯ISP接口之外,下面的6芯接口定义为: [tr]管脚123456[/tr]
3.单片机软件2
□ 拷贝BH60文件: 将BH60.H,BH60.C拷贝到当前的工作目录下并添加到工程中去。 □ 修改STC8H文件:增加UART2gsng ; 将UART2的波特率定时器2的时间常数修改为:0xFE38 □ 在BH60中增加对于485的DIR管脚定义与控制: 在BH60中增加DIR_PIN的定义。 #define DIR_PIN 1, 2 □ 测试BH60读取功能: 读取正常。 □ 增加BH60的一些功能: 增加BH60Clear的功能。通过测试,将清零(红线)线设置为VCC超过100ms,可以将BH60的内部计数清零。 4.单片机接口命令 if(strcmp("hello", (char *)STD_ARG[0]) == 0) printf("%s is ready !rn", VERSION_STRING); else IFARG0("bh60clear") { ON(CLEAR_PIN); WaitTime(100); OFF(CLEAR_PIN); } else IFARG0("bh60read") { printf("%ldrn", BH60ReadNumber()); } else IFARG0("bh60readb") { lnNumber = (unsigned long)BH60ReadNumber(); SendChar((unsigned char)(lnNumber >> 24)); SendChar((unsigned char)(lnNumber >> 16)); SendChar((unsigned char)(lnNumber >> 8)); SendChar((unsigned char)(lnNumber)); } 02测试ISPHUB的读取功能 1.增加相应命令 使用在 ISPHUBALL 中的STC8H1K28的下载板3的STC8H1K28工程文件增加对BH60读取的相关程序。 在ISPHUBALL工程的serialtxt增加了如下的命令。 if(strcmp("hello", (char *)STD_ARG[0]) == 0) printf("%s is ready !rn", VERSION_STRING); else IFARG0("adt") { ADT7410ReadT(nDim); printf("%5.3f ", nDim[0] / 128.0); printf("%5.3f ", nDim[1] / 128.0); printf("%5.3f ", nDim[2] / 128.0); printf("%5.3frn", nDim[3] / 128.0); } else IFARG0("readhctl") { printf("%drn", HCTL2020Read()); } else IFARG0("bh60read") { printf("%ldrn", BH60ReadNumber()); } else IFARG0("bh60clear") { BH60Clear(); } else IFARG0("pulse") { sscanf(SDA(1), "%d", &nNumber); ULC2003Pulse(nNumber); } else printf("Error command : %s !rn", STD_ARG[0]); 2.测试实验 使用 STC8K28步进电机OC触发器 模块驱动步进电机带动BH60旋转。设置驱动器的拨码开关处于OFF,OFF,OFF,OFF,即40000步/周。 读取对应的角度: ▲ 在步进电机带动下BH60读取的旋转角度 #!/usr/local/bin/python # -*- coding: gbk -*- #============================================================ # TEST1.PY -- by Dr. ZhuoQing 2020-07-15 # # Note: #============================================================ from headm import * from tsmodule.tsstm32 import * stm32cmd('bh60clear') time.sleep(.5) angle = [] for i in range(100): stm32cmd('pulse 100') time.sleep(.1) stm32cmd('CLEAR') stm32cmd('bh60read') time.sleep(.1) value = stm32memo(1)[0] printf(value) angle.append(value) tspsave('angle', angle=angle) plt.plot(angle) plt.xlabel("Steps") plt.ylabel("Angle") plt.grid(True) plt.tight_layout() plt.show() #------------------------------------------------------------ # END OF FILE : TEST1.PY #============================================================ ※ 结论 设计的BH60角度读取模块工作符合前期设计的要求。 |
||||||
|
||||||
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1800 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1629 浏览 1 评论
1096 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
735 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1684 浏览 2 评论
1944浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
744浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
578浏览 3评论
601浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
564浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 01:40 , Processed in 1.140217 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号