这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 一款用于三相无刷电机电调模块的PWM信号发生器

共1条 1/1 1 跳转至页

一款用于三相无刷电机电调模块的PWM信号发生器

专家
2026-11-12 15:08:56     打赏

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

image.png

没买专用的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的信号发生器。






关键词: 大懒猫的试用笔记     电调模块     PWM信号发生器    

共1条 1/1 1 跳转至页

回复

匿名不能发帖!请先 [ 登陆 注册 ]