ESP32Encoder:高效的ESP32旋转编码器库

ESP32Encoder库是一个利用ESP32脉冲计数器硬件外设实现高效旋转编码器读取的软件库。
ESP32Encoder:高效的ESP32旋转编码器库

ESP32Encoder是什么?

ESP32Encoder是一个用于ESP32微控制器的开源库,它利用ESP32内置的脉冲计数器(PCNT)硬件外设来读取旋转编码器的信号。与软件轮询方式相比,该库利用硬件中断处理,极大地降低了CPU负载,提高了读取精度和效率,特别适合需要实时处理旋转编码器数据的应用场景。

ESP32Encoder:高效的ESP32旋转编码器库

ESP32Encoder能做什么?

ESP32Encoder主要用于读取各种类型的旋转编码器,例如增量式编码器,并将其转换为数字信号,以便微控制器进行后续处理。这在许多应用中至关重要,例如:

  • 机器人控制:精确控制机器人的关节角度、速度和位置。

  • 工业自动化:监控和控制各种机械设备的运行状态。

  • 仪器仪表:读取旋钮或刻度盘上的数值。

  • 用户界面:作为一种人机交互方式,例如音量调节、菜单选择等。

ESP32Encoder的核心功能和特性:

  • 硬件加速: 利用ESP32的PCNT硬件外设进行计数,极大地减少了软件处理负担,提高了效率和精度。

  • 低中断负载: 只有一个中断用于处理计数器溢出,极大地减少了中断处理的CPU开销,保证系统稳定运行。

  • 多通道支持: 支持最多8个同时运行的编码器(ESP32和ESP32C2),ESP32S3支持2个。

  • 多种计数模式: 支持全四象限计数、半四象限计数和单边沿计数三种模式,以适应不同类型的编码器和应用需求。

  • 内部弱上拉/下拉电阻: 可以配置内部弱上拉/下拉电阻,简化电路设计。

  • 可配置中断服务CPU内核: 允许用户指定中断服务程序运行的CPU内核,避免并发问题。

  • 硬件去抖动: 提供硬件去抖动功能,有效滤除编码器信号中的抖动噪声。对于KY-040等易产生抖动的编码器,需要配合外部电容进行去抖动,并设置适当的滤波参数。

  • 易于使用: 提供简洁的API接口,方便用户快速集成到自己的项目中。

  • 良好的文档: 提供Doxygen生成的详细文档,方便用户查阅和学习。

兼容性:

  • • 支持ESP32和ESP32-C2芯片。

  • • ESP32-C3不支持,因为该芯片没有脉冲计数器硬件。

  • • ESP32-S3仅有两个PCNT模块,因此仅支持两个硬件加速的编码器。

使用示例 (简化):

#include <ESP32Encoder.h>

ESP32Encoder encoder1(2, 4);// 使用GPIO 2和4连接编码器

void setup() {
  Serial.begin(115200);
  encoder1.setFilter(1023);// 设置最大硬件去抖动
  encoder1.setCount(0);// 设置初始计数为0
}

void loop() {
  long count = encoder1.getCount();
  Serial.print("Encoder Count: ");
  Serial.println(count);
  delay(100);
}

关于KY-040及类似编码器的注意事项:

KY-040等开关式编码器容易产生较大的信号抖动,需要外部电容进行去抖动(通常在0.1uF到2uF之间)。同时,在使用ESP32Encoder库时,需要设置 setFilter(1023) 以获得最大的硬件去抖动效果。

总结:

ESP32Encoder库是一个高效、易用、功能强大的旋转编码器读取库,它充分利用了ESP32的硬件资源,极大地简化了编码器的使用,并提高了系统性能。无论是简单的应用还是复杂的项目,ESP32Encoder都能提供可靠的旋转编码器读取解决方案。

项目地址:https://github.com/madhephaestus/ESP32Encoder

来源:https://mp.weixin.qq.com/s/EhyENMEBG7R0FZ6G_CbCig

- 本文内容来自网络,如有侵权,请联系本站处理。

07-07   阅读(2)   评论(0)
 标签: 创客 ESP32

涨知识
勾股定理

勾股定理,是一个基本的几何定理,指直角三角形的两条直角边的平方和等于斜边的平方。中国古代称直角三角形为勾股形,并且直角边中较小者为勾,另一长直角边为股,斜边为弦,所以称这个定理为勾股定理,也有人称商高定理。

评论:
相关文章
适合学习物联网的几款盒子

本文对比了几款适合物联网开发的盒子硬件参数,供大家参考。


乐动掌控

乐动掌控采用掌控板作为主控,塑胶一体式外壳,侧面和底面开具多个乐高扩展孔位,兼容乐高积木,可完成多种创意应用。


ESP32 MicroPython存储数据到闪存

在MicroPython的ESP32库中,NVS类用于管理非易失性存储,支持 32 位有符号整数和 二进制blob。


Arduino-ESP32 Preferences库使用详解

Arduino-ESP32项目提供的Preferences库是一个专为ESP32设计的非易失性存储解决方案,它替代了传统的Arduino EEPROM库,提供了更强大、更可靠的数据存储功能。


小鹏物联网 MicroPython 图像采集方案

本方案是一个基于ESP32-CAM + 物联网的图像采集方案。


esp32cam开发板烧录micropython固件

‌ESP32-CAM与MicroPython结合可实现摄像头图像采集、视频流传输等功能,不过Micropython官方没有支持ESP32-CAM的固件,需要烧录第三方的专有固件。


小鹏物联网 MicroPython 智能浇花方案

相信很多人都有把绿植给养死的经历,可能是浇水过多、忘记浇水、较长时间不在家不能浇水等,本文介绍一种可以灵活定制的智能浇花方案。


MicroPython 开发ESP32应用之线程介绍及实例分析

MicroPython 在 ESP32 上支持线程(Thread)功能,通过_thread模块实现。线程允许程序并发执行多个任务,适合处理需要同时运行的场景,例如传感器数据采集和网络通信。


盛思发布掌控板3.0

掌控板3.0升级了主控,还主打AI。带有双麦克风阵列,增加了音频解码芯片,板载了一个1W喇叭,还把之前的单色屏幕换成了1.47寸的彩色屏幕,有更多的可玩性。


ESP-TOUCH 用户指南

乐鑫自主研发的 ESP-TOUCH 协议采⽤的是 Smart Config(智能配置)技术,帮助用户将采用 ESP8266 和 ESP32 的设备(以下简称“设备”)连接至 Wi-Fi 网络。

搜索
小鹏STEM教研服务

专属教研服务系统,助您构建STEM课程体系,打造一站式教学环境。