# ArduinoESP32EncodingMotor **Repository Path**: clg-123/ArduinoESP32EncodingMotor ## Basic Information - **Project Name**: ArduinoESP32EncodingMotor - **Description**: ESP32 直流编码电机闭环调速测速 - **Primary Language**: C - **License**: GPL-3.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-10 - **Last Updated**: 2025-12-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ArduinoESP32EncodingMotor 该项目是用于Arduino ESP32平台的编码电机控制,结合PID控制算法实现精确的速度控制。它包含了多个测试版本,适用于需要精确电机控制的应用场景,例如机器人或自动化设备。 ## 文件结构 - **PIDTest_20250709**:初步实现的PID电机控制代码。 - **PIDTest_20250726_MT**:改进版本,支持多线程处理,提高了电机控制的实时性。 - **CLMotor.cpp / CLMotor.h**:闭环电机控制类,包含PID控制逻辑。 - **DCMotor.cpp / DCMotor.h**:直流电机控制类,用于基础电机驱动。 - **Encoder.cpp / Encoder.h**:编码器类,用于读取电机速度和位置信息。 - **WemosD1R32_pins.h**:引脚定义头文件,适配Wemos D1 R32开发板。 ## 主要功能 - **PID 控制**:支持设置比例、积分、微分参数,实现精准速度控制。 - **编码器支持**:通过A/B相编码器读取电机速度,实现闭环反馈。 - **多线程支持**:改进版本支持定时器中断处理,提高控制精度和响应速度。 - **方向控制**:支持电机方向反转,满足不同应用场景需求。 ## 使用方法 1. 将代码下载到支持ESP32的开发板,如Wemos D1 R32。 2. 根据硬件连接修改`WemosD1R32_pins.h`中的引脚定义。 3. 通过串口调试工具观察输出,调整PID参数以获得最佳控制效果。 ## 示例代码 ```cpp CLMotor motor; motor.attach(12, 13, 14, 15, 16); // 连接IN1, IN2, PWM, EN1, EN2 motor.setPID(1.0, 0.1, 0.05); // 设置PID参数 motor.setTargetSpeed(100); // 设置目标速度 motor.update(); // 启动控制循环 ``` ## 硬件需求 - Arduino兼容的ESP32开发板(如Wemos D1 R32) - 电机驱动模块(如L298N) - 编码电机(带A/B相信号输出) ## 注意事项 - 请确保电机供电稳定,避免电压波动影响控制精度。 - PID参数需根据具体电机特性进行调整,以获得最佳性能。 ## 开源许可 本项目采用MIT License开源协议,详情请参见 LICENSE 文件。 --- 以上为自动生成的README内容,基于项目代码结构和功能分析得出。