除了海凌科的HLK-DL03电调模块,我还买了线面这款电调模块,

没买专用的PWM控制器,为了方便测试,用Arduino编写了专门的控制输出PWM的程序,
const int pwmPin = 5; // 使用D1(GPIO5)作为PWM信号的输出端
void setup() {
Serial.begin(115200);
pinMode(pwmPin, OUTPUT);
analogWriteFreq(1000); // 默认 1 kHz
analogWriteRange(100); // 占空比分辨率范围 0~100
analogWrite(pwmPin, 0); // 初始 0% 占空比
Serial.println("命令格式:F<频率> D<占空比>,例如:F500 D25");
}
void loop() {
if (!Serial.available()) return;
String cmd = Serial.readStringUntil('\n');
cmd.trim();
if (cmd.length() == 0) return;
long freq = -1;
int duty = -1;
// 提取 F 后面的频率
int fPos = cmd.indexOf('F');
if (fPos >= 0) {
freq = cmd.substring(fPos + 1).toInt();
}
// 提取 D 后面的占空比
int dPos = cmd.indexOf('D');
if (dPos >= 0) {
duty = cmd.substring(dPos + 1).toInt();
}
// 更新频率(有效范围建议 100 ~ 40000 Hz)
if (freq >= 100 && freq <= 40000) {
analogWriteFreq((uint32_t)freq);
Serial.printf("频率已设为 %ld Hz\n", freq);
} else if (freq != -1) {
Serial.println("频率范围建议 100 ~ 40000 Hz");
}
// 更新占空比(analogWriteRange 默认 0~1023)
if (duty >= 0 && duty <= 1023) {
analogWrite(pwmPin, duty);
Serial.printf("占空比已设为 %d / 1023 (%.1f%%)\n", duty, duty * 100.0 / 1023);
} else if (duty != -1) {
Serial.println("占空比范围 0 ~ 1023");
}
}用这个程序可以通过串口动态调节ESP8266输出不同频率和占空比的PWM信号,方便控制电调模块。
一般的电调模块使用的PWM频率为1KHz ~ 10KHz,这个程序可以作为PWM的信号发生器。
我要赚赏金
