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   阅读(149)   评论(0)
 标签: 创客 ESP32

涨知识
3D打印

3D打印技术是增材制造技术,它利用计算机将需打印的物体3D模型切成一系列一定厚度的“薄片”,3D打印机自下而上地制造出每一层“薄片”,最后叠加成形出三维的实体物件。

评论:
相关文章
Arduino-ESP32与ESP-IDF的版本对应表

Arduino-ESP32与ESP-IDF的版本对应表。


Arduino-ESP32文件系统全解析:SPIFFS、LittleFS、SD卡操作

Arduino-ESP32提供了多种文件系统解决方案,本文将深入解析SPIFFS、LittleFS和SD卡三种主流存储方案,帮助你做出最佳选择。


ESP32-P4-WIFI6开发板

ESP32-P4-WIFI6-DEV-KIT是一款微雪(Waveshare)设计的基于 ESP32-P4 的多媒体开发板,并集成 ESP32-C6,支持 Wi-Fi 6 和 BLE 5 无线连接。它提供丰富的人机交互接口,包括 MIPI-CSI (集成图像信号处理器 ISP)、MIPI-DSI、SPI、I2S、I2C、LED PWM、MCPWM、RMT、ADC、UART 和 TWAI 等。


ESP-Hosted 入门介绍 &使用指南

ESP-Hosted 解决方案提供了将 ESP 板用作 Wi-Fi 和 Bluetooth/BLE 连接的通信处理器的方法。


设备上云太麻烦?ESP-Hosted一站触达!

ESP-Hosted 提供了一种将ESP芯片和模组用作通信协处理器的解决方案,该解决方案为主机微处理器或微控制器提供无线连接,使主机能够与其他设备通信。简单来说为网卡方案。


ESP32 + Arduino使用TFT_eSPI库

Arduino+ESP32上使用TFT_eSPI库快速点亮这个屏幕,驱动芯片ST7789


ESP32 利用 SPI 连通 TFT 彩屏

本文给出了一个ESP32与SPI 接口TFT显示屏接线的详细说明,供大家参考。


在Micropython下使用ESPNow功能进行数据传输

本文讲解如何在Micropython环境下使用ESP32的ESPNow功能进行数据传输。


用 ESP32-S3 打造多功能 USB Dongle

ESP-Dongle 是一款基于 ESP32-S3 芯片开发的多功能 USB Device 解决方案。它不仅外形小巧,功能齐全,更集成了无线 U 盘、SD 卡读取以及 USB 无线网卡等多项功能。


利用 ESP32-S3 和 CSI 技术打造智能家居

ESP32 系列芯片可以利用 CSI 数据实现动作检测和存在检测。无论是自动调节灯光、风扇,还是节能控制,CSI 技术为智能家居带来了新的可能性。随着 CSI 技术的发展,未来的智能家居将能够更精确地感知和响应我们的行为,实现更高效、更人性化的控制。