■ 简介


在博文 BH60绝对位置编码器测试 中介绍了对BH60,通过其MODBUS(485)读取相应绝对角度的方式。为了便于为了进行高精度角度实验,制作基于STC8H1K28的BH60角度读取模块。并使其可以通过 串口ISPHUB 通过命令统一进行读取。

01模块设计


1.实验电路设计1


2.接口定义

除了上面的四芯ISP接口之外,下面的6芯接口定义为:

管脚 1 2 3 4 5 6
功能 VCC GND A+ B- CLEAR INIT

3.单片机软件2

  • 工作OSC:35MHz, UART1:460800bps

▲ 初始化后的电路板

□ 拷贝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 !\r\n", VERSION_STRING);else IFARG0("bh60clear") {ON(CLEAR_PIN);WaitTime(100);OFF(CLEAR_PIN);
} else IFARG0("bh60read") {printf("%ld\r\n", 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 !\r\n", 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.3f\r\n", nDim[3] / 128.0);
} else IFARG0("readhctl") {printf("%d\r\n", HCTL2020Read());
} else IFARG0("bh60read") {printf("%ld\r\n", BH60ReadNumber());
} else IFARG0("bh60clear") {BH60Clear();
} else IFARG0("pulse") {sscanf(SDA(1), "%d", &nNumber);ULC2003Pulse(nNumber);
}else printf("Error command : %s !\r\n", 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角度读取模块工作符合前期设计的要求。


  1. 实验模块AD工程文件:AD\Test\2020\Tools\BH60ReadSTC8H1K28.SchDoc ↩︎

  2. 单片机C51工程文件:C51\STC\Test\2020\Tools\BH60ReadSTC8H1K28\BH60ReadSTC8H1K28.uvproj ↩︎

  3. ISPALL单片机STC8H1K28的工程文件:C51\STC\Test\2020\Tools\ISPHUBALLSELSTC8H1K28\ISPHUBALLSELSTC8H1K28.uvproj ↩︎

基于STC8H1K28的BH60的角度读写模块相关推荐

  1. 基于FM1712的通用射频卡读写模块设计

    射频卡(非接触IC卡)是最近几年发展起来的一项新技术,与传统的接触式IC卡磁卡相比较,利用射频识别技术(radio frequency identifica-tion)开发的非接触式IC卡成功解决了无 ...

  2. 基于STC8H1K28的双轴机械臂驱动模块:步进电机42HS348E,BH32角度传感器

    作者:卓晴博士,清华大学自动化系 更新时间:2020-08-08 Saturday ■ 设计背景 这是一款用于化学实验室样品上样器的机械臂.设置有肘关节.肩关节以及上下移动关节. ▲ 双轴机械臂结构 ...

  3. 嵌入式RFIDIC卡读写模块|读卡刷卡模块HX880D系列的应用与操作说明

    HX880 系列模块是基于ISO/IEC14443 –1,-2,-3和ISO15693国际标准协议开发的非接触式智能卡读写模块.它采用高集成度读卡专用芯片.先进的看门狗和电压监控电路方案设计而成:集成 ...

  4. 基于癌症基因组学数据的miRNA 功能模块识别算法研究

    题目: 基于癌症基因组学数据的miRNA 功能模块识别算法研究 摘要: 大量研究表明miRNA 的异常表达与癌症的发生.发展有关,且miRNA 通常以组合的 方式发挥其协同调控作用.因此,研究miRN ...

  5. java bs架构书_基于BS架构的图书借阅管理模块的分析与设计(JSP+MySQL)(新品)

    基于BS架构的图书借阅管理模块的分析与设计(JSP+MySQL)(新品) 来源:2BYSJ.cn 资料编号:2SJ295500 资料等级:★★★★★ %D7%CA%C1%CF%B1%E0%BA%C5% ...

  6. 判断用户是否存在再进行新增_基于tableau从商业分析模型角度对业务数据进行多维度分析--【商业分析类】...

    基于tableau从商业分析模型角度对业务数据进行多维度分析 常规商业数据分析方法: 财务多维指标 客户生命周期 客户价值RFM 客户留存分析 购物篮关联分析 漏斗转化ABtest 以下内容主要从商业 ...

  7. 基于nginx实现缓存功能及uptream模块详细使用方法

    基于nginx实现缓存功能及uptream模块详细使用方法 一般情况下,前端使用nginx做代理或7层负载并向后实现varish/squid做cache server的效果要好的多 nginx与squ ...

  8. ltp︱基于ltp的无监督信息抽取模块

    ltp︱基于ltp的无监督信息抽取模块:https://zhuanlan.zhihu.com/p/44890664 无监督信息抽取较多都是使用哈工大的ltp作为底层框架.那么基于ltp其实有了非常多 ...

  9. maven多模块项目部署到服务器,GitHub - baxias/foweb: 一个基于 Spring+SpringMVC+Mybatis 的Maven多模块项目。(实现前后端分离的服务器端)...

    Foweb Framework A multi-modules maven project base on Spring+SpringMVC+Mybatis. 一个基于 Spring+SpringMV ...

最新文章

  1. Ditto剪贴板增强工具 ,方便复制粘贴多条历史记录
  2. C和C++线性表基本概念
  3. uploadify的使用错误
  4. 批量生成100万张小程序码?了解一下。
  5. Jackson相关的一些注解
  6. postman使用_postman如何使用集合断言?
  7. 上采样(放大图像)和下采样(缩小图像)(最邻近插值和双线性插值的理解和实现)
  8. 文件操作,列表实例NiceHexSpiral
  9. ios项目 swift 定义常量 其他文件引用_面试应该注意的Swift知识点
  10. 英文论文中“such as, for example, e.g., i.e., etc., et al. ”的用法分析 (转)
  11. 自动控制原理--卢京潮 2009(免费)课本完整
  12. oracle获取中位数
  13. 2021-07-03 dd命令拷贝数据错误的问题定位及解决方法
  14. 《爱的五种能力》读后感
  15. pdf添加水印的方法,pdf加水印步骤
  16. SpringBoot整合RabbitMQ之整合配置篇
  17. 辉芒微IO单片机FT60F011A-RB
  18. RGBD相机的标定和图像配准
  19. Arduino基础入门篇26—步进电机
  20. 海康威视人脸识别智能终端获取设备事件二次开发Java

热门文章

  1. 常用Maven插件介绍(上)
  2. 删除a3.txt文件中含dong的行
  3. windows2008R2下CA(CS)服务迁移
  4. SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性
  5. UGUI世界转屏幕坐标
  6. 关于线程池运行过程中,业务逻辑出现未知异常导致线程中断问题反思
  7. jdk动态代理和cglib动态代理的区别
  8. 在用虚拟机做Windows Server 2008 R2实验时应注意的问题
  9. 神技能!研究人员利用扫描仪成功从物理隔离设备中偷出数据
  10. python的模块itsdangerous