教程二 无编码器电机控制例程
来自Waveshare Wiki
各模块使用教程
- 序章 安装Arduino IDE
- 教程一 带编码器电机控制例程
- 教程二 无编码器电机控制例程
- 教程三 ST3215总线舵机控制例程
- 教程四 PWM舵机控制例程
- 教程五 IMU数据读取例程
- 教程六 SD卡读取例程
- 教程七 INA219电压电流监测例程
- 教程八 OLED屏幕控制例程
- 教程九 激光雷达和在ROS2中发布雷达话题
- General Driver for Robots 主页
无编码器电机
无编码器电机无法获得速度反馈,只能进行开环控制,也就是说,当你将电机和驱动板连接上并接通电源后,使电机进入转动状态后,驱动板会将程序的指令一次性输向电机。之后,无法对电机的变化作进一步的控制。以下提供无编码器电机转动控制程序。
例程
上传程序
下载压缩包后双击打开nospeedget.ino,用USB线将多功能驱动板和计算机连接起来(此处插入的是多功能驱动板USB的Type-C接口),点击“工具”→“端口”,再点击新出现的COM(我这里新出现的COM为COM26)。
在Arduino IDE中,点击“工具”→“开发板”→“ESP32”→“ESP32 Dev Module”。开发板以及端口都选择好后上传程序。上传程序后,将无编码器电机和驱动板上的电机接口PH2.0 2P连接上,将XH2.54供电接口接上电源后运行程序,可以看见电机开始转动。
程序解析
const uint16_t PWMA = 25; const uint16_t AIN2 = 17; const uint16_t AIN1 = 21; const uint16_t BIN1 = 22; const uint16_t BIN2 = 23; const uint16_t PWMB = 26; const uint16_t ANALOG_WRITE_BITS = 8; int freq = 100000; int channel_A = 0; int channel_B = 1; int resolution = ANALOG_WRITE_BITS; void initMotors(){ pinMode(AIN1, OUTPUT); pinMode(AIN2, OUTPUT); pinMode(PWMA, OUTPUT); pinMode(BIN1, OUTPUT); pinMode(BIN2, OUTPUT); pinMode(PWMB, OUTPUT); ledcSetup(channel_A, freq, resolution); ledcAttachPin(PWMA, channel_A); ledcSetup(channel_B, freq, resolution); ledcAttachPin(PWMB, channel_B); } void forwardA(uint16_t pwm){ digitalWrite(AIN1, LOW); digitalWrite(AIN2, HIGH); ledcWrite(channel_A, pwm); } void forwardB(uint16_t pwm){ digitalWrite(BIN1, LOW); digitalWrite(BIN2, HIGH); ledcWrite(channel_B, pwm); } void setup() { initMotors(); } void loop() { forwardA(400); forwardB(400); }