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

VIP专享 2021-04-21 17:19:41 1.11MB ZIP
12
收藏 收藏
举报

这是一个小的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用于“逆时针上升”接线,与数据表编号相匹配,建议进行面包板测试。

...展开详情
立即下载 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
  • 至尊王者

关注 私信
上传资源赚钱or赚积分
最新推荐
128位高分辨率绝对编码器(电路设计+代码)-电路方案 (VIP专享) VIP下载
1/0