• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

128位高分辨率绝对编码器(电路设计+代码)

2017/07/07
60
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

编码器原理图和PCB源文件.zip

共4个文件

这是一个小的8位灰色码头旋转位置传感器,提供128个独特的位置。它使用单个编码器轨道进行管理,其中8个触点间隔均匀。该“数字旋钮”编码器可用于控制您的arduino项目,它也可以用于寿命有限的运动控制系统。附件内容分享的代码是针对Arduino UNO R3开发的。它应该在任何Arduino上工作。该代码目前支持MCP23008,PCF8574和PCF8574A I2C扩展器。

128位高分辨率绝对编码器实物展示:

使用以下地址选择这些

  • 0x00 - 0x07 MCP23008地址0x20-0x27。(这与较早的库修订版向后兼容)
  • 0x20 - 0x27 PCF8574
  • 0x38 - 0x3F PCF8574A

请注意,MCP23008和PCF8574芯片使用相同的i2c地址范围。许多LCD背包也使用这些芯片之一。在同一总线上混合所有这些时要小心,以避免重复地址。为了进一步混淆事物,原始I2C地址具有作为读/写信号的最低位,因此一些文档(如某些PCF8574数据表)将参考0x40和0x70,0x20和0x38向左移位一位。


安装

封闭的示例草图ACE128test通过任意一个和I2C背包驱动2x16显示,或直接从Arduino驱动,具体取决于您是否注释了LCD_I2C宏。

公共方法



用法

请参见ACE128测试示例。

  • 包括您需要的所有编码器映射(见下文),以匹配ACE单元的引脚序列。
  • 使用ACE128构造函数声明所有ACE128对象。它需要I2C地址和指向编码器映射的指针。可选的第三个整数可以取一个正整数来显示在eeprom中存储零信息的位置。允许三个字节。
  • 从setup()调用每个ACE128对象的begin方法。这将使用eeprom设置或回退将当前位置设置为零。
  • pos()和upos()方法返回相对于逻辑零位置的位置,而不是由机械任意位置的编码器返回的零位置。当它滚动时,转动被存储以供mpos使用并保存在eeprom中
  • 每循环一次(),调用pos(),upos()或mpos()并将值存储在一个变量中。访问i2c总线需要一些周期,所以每次要引用它时都不要调用pos()。
  • 有三个设置功能
  • setZero() - 将当前位置设置为零(不更新多圈)
  • setZero(int) - 将零点设置为给定的0-127数字
  • setMpos(int) - 将当前位置设置为此多圈值

编码器地图

该库带有各种编码器映射,可以在ACE和IO扩展器之间实现引脚的不同接线。这些由包含的make_encodermap示例草图生成。生成自定义编码器图:

  • 编辑make_encodermap草图
  • 更改pinOrder数组以匹配您的接线
  • 更改pinString以匹配您的接线
  • 将草图加载到Arduino
  • 将串行监视器输出复制到ACE128文件夹中的新.h文件。

12345678用于“逆时针上升”接线,与数据表编号相匹配,建议进行面包板测试。

  • 编码器原理图和PCB源文件.zip
    下载
    描述:原理图和PCB源文件,用eagle6.9软件打开
  • 编码器源码等更多资料.zip
    下载
    描述:编码器源码等更多资料
  • 编码器数据手册.pdf
    下载
    描述:编码器数据手册
  • 原文出处.txt
    下载
    描述:原文出处

相关推荐