2019 Hackadayprize 中国区赛事正在火热报名 ing,我们将为大家介绍在过去几届 Hackadayprize 中获奖的作品,希望能给你带来启发!快点来报名参赛,12.5 万美元的终极大奖在等你认领:https://www.cirmall.com/hackadayprize_2019
如果您需要为项目添加一些旋转编码器, I2C 编码器是正确的选择!I2C 编码器是一个小型电路板,您可以使用经典的机械编码器和 I2C 总线。
读取旋转编码器并非易事,每个编码器至少需要 2 个中断引脚。 当您需要添加多个编码器时,实现准确读取会变得更加复杂。
功能:
- 它支持标准旋转编码器和 RGB 编码器
- 可以通过 SMD 跳线设置 I2C 地址的所有 7 位
- 尺寸为 25x25mm 或 0.98x0.98in
- 通过 c 形孔可以在 4 个侧面上连接多个板
- 可以焊接 I2C 总线上的上拉电阻
- 3 个通用引脚。 (GP 引脚)
- 256 字节的内部 EEPROM 分为 2 个 128 字节的存储区
- 高级配置尊重第一个版本
- A / B 信号的最大频率为 150Hz。
细节:
这个新版本由 PIC16F18345 供电。 在第一版上尊重 MCU,它有更多的 GPIO 和 EEPROM 存储器。该板的新设计支持标准编码器和发光 RGB 编码器。
器件:
此外,PC 的所有 4 个侧面都有 c 形孔,这样就可以通过焊接连接多个板。
还有 3 个可配置的 GPIO,它们与 RGB LED 具有相同的占位面积。 它们被称为 GP1 GP2 和 GP3。
但如果您使用的是 RGB 编码器,则可配置的 GPIO 仅为 2:GP1 和 GP2。
GPIO 配置:
- PWM:通过这种方式,您可以添加 RGB LED
- 输出:您可以将引脚用作标准数字输出。
- 模拟:引脚连接到 PIC 的内部 ADC。 通过这种方式,您可以添加传感器或电位计
- 输入:您可以将引脚用作标准数字输入。 另外,您还可以在边缘配置中断
I2C 地址设置
I2C 编码器 V2 是 I2C 从器件,可以设置 127 个不同的地址。 所有 7 位地址都可以通过焊接电路板底部的跳线 A0-A6 来定制。
当跳线打开时,它表示逻辑 0. 如果跳线短路则表示逻辑 1。
I2C 编码器 V2 具有 I2C 上拉电阻,默认情况下它们不是焊接的。 可以焊接两个电阻 R1 和 R2。 必须在主机没有这些电阻且必须在链中仅启用一个 I2C 编码器 V2 的情况下执行此操作。 该电阻的典型值为 4.7k。
中断配置:
INT 引脚是漏极开路输出,用于向主机发送中断。中断为低电平有效,并且有多个可以屏蔽的源。
中断来源:
- 按下编码器按钮
- 编码器按钮释放
- 编码器按钮被双推
- 顺时针移动编码器
- 编码器逆时针移动
- 计数器值达到最大值
- 计数器值达到最小值
- 配置为数字输入时,GP 引脚发生了变化
I2C 寄存器:
这是 I2C 总线上可访问的内部寄存器
在正常操作期间可以即时写入这些寄存器。
通过将寄存器设置为 I2C 总线,可以配置几个选项。 使用 GCONF 寄存器,可以配置多个参数。
在配置中,可以设置编码器正交信号的极性,也可以设置编码器的输出是 X1 还是 X2。
为了读取旋转编码器的运动,有 4 个 32 位寄存器:CVAL,CMAX,CMIN 和 ISTEP。
所有这 4 个寄存器都可以配置为 32 位 INT 或 IEEE 754 浮点数,这种格式可以在 GCONF 寄存器中设置。
每当编码器移动一步时,CVAL 寄存器的值就会增加或减少 ISTEP 的值。 旋转方向决定是否从 CVAL 中添加或减去 ISTEP。
CMAX 和 CMIN 用于设置 CVAL 的最小和最大阈值。 在 GCONF 寄存器中,有 WRAPE 位。 该位用于在超过阈值时启用或禁用 CVAL 的包装功能。
例如,如果我将 I2C Encoder V2 配置如下:
CVAL = 0
CMAX = 5
CMIN = -5
ISTEP = 1
在编码器的每个旋转步骤中,我将使 CVAL 增加 1。 CVAL 可以达到的最大值为 5,而最小值为 -5。
当 CVAL 达到值 5 时,WRAPE 设置为 1 时,在下一个增量 CVAL 处,它将被包装为 -5。
每当编码器旋转一步并且 CVAL 触摸阈值时,就会产生一个中断,并且可以在寄存器 ESTATUS 中读取。
蓝色和红色线是编码器旋转且禁用 WRAPE 时的 CVAL 值
蓝色和红色线是编码器旋转并启用 WRAPE 时的 CVAL 值
编码器按钮
I2C Encoder V2 还支持带按钮的旋转编码器。 按下按钮时,在上升沿和下降沿产生中断。
以这种方式,可以检查按下或释放按钮的时间。通过在寄存器 DPPERIOD 中设置窗口时间,还可以读取快速双按。
当在 DPPERIOD 窗口内进行双重推动时,会产生中断。如果 DPPERIOD 为 0,则禁用双推功能。
所有上述中断均可在寄存器 ESTATUS 中读取,也可通过寄存器 INTCONFIG 禁用。
淡入功能
I2C 编码器 V2 具有自动衰落功能。 可以为旋转编码器上集成的 RGB LED 或 GP 引脚的 PWM 输出启用此功能。
有两个寄存器:
- FADERGB:用于设置旋转编码器的 RGB LED
- FADEGP:用于设置 GP 引脚
您在这些寄存器中写入的值是衰落斜坡的步进速度,以毫秒为单位。 如果值为 0,则禁用淡入淡出功能。 这意味着当写入 PWM 的新值时,它会立即更新为输出。
当写入 PWM 值时,开始衰落过程。 根据您设置的 PWM 值完成衰落过程。 当内部衰减 PWM 值与 PWM 值相同时(意味着当衰落完成时),将产生中断。
原理:
如果你对这个项目感兴趣,想获取完整信息请访问:
https://hackaday.io/project/122039-i2c-encoder-v2
与非网编译内容,未经许可,不得转载!
有人说硬件技术将很快达到极限,而在我们看来,硬件创新,尤其是中国硬件工程师的创新,还远未走到尽头,而只是刚刚开始。作为致力于为全球硬件开发者提供技术共享服务的平台,与非网母公司 SupplyFrame 旗下最大的全球硬件开发者社区 Hackaday.com 已连续五年举办全球硬件开发者大赛 Hackadayprize,有超过 3000 多个硬件团队在这个赛事中互动交流、切磋技艺。
这个《硬件改变世界》系列,我们挑选在前几届 Hackadayprize 大赛中获奖的优秀作品加以展示,硬件技术可以多有意思,硬件开发者可以多有创意,从这些作品中你可以看到。
2019 年 3 月,Hackadayprize 中国区赛事将隆重开启,我们很期待看到国内的硬件开发者大开脑洞、大展技艺。你准备好了没,与来自全球的硬件开发者同台 PK?