这是一个小的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用于“逆时针上升”接线,与数据表编号相匹配,建议进行面包板测试。
2021-04-21 18:05:59 1.11MB 传感器 编码器 mcp23008 电路方案
1
STM32F105RBT6 MCP23008_40路IO工业级数据采集板PDF硬件原理图PCB+AD集成库, ALTIUM工程转的PDF原理图PCB文件+AD集成封装库,已在项目中验证,可以做为你的设计参考。
STM32F105RBT6 MCP23008 40路IO工业级数据采集板AD版硬件原理图+PCB+封装库文件,,采用2层板设计,板子大小为200x60mm,单面布局双面布线,主要器件为STM32F105RBT6,TJA1040, MCP23008,HT7533A等。 AltiumDesigner 设计的工程文件,包括完整的原理图、PCB文件,可以用Altium(AD)软件打开或修改,已经制板并在实际项目中使用,可作为你产品设计的参考。