无感BLDC简易实验

不信幼儿 2021-04-28 05:29:14
平时能看到的BLDC驱动在硬件及软件上较复杂,不利于小白们的动手实验。为了简化无感BLDC的驱动试验,也为了降低成本,做了一个无感BLDC实验。欢迎指教或拍砖!
硬件有:
ESP32-DEV-MODULE(CPU应该能用STM32F103C8T6,成本更低)
MX1508
相机平台用无刷电机(无感)
电源
软件程序如下:
//testBldcEsp32.ino
//ESP32 GPIO2脚连接GPIO13脚
#include <ESP32Servo.h>
ESP32PWM pwm;
byte ledPin = 2, sequence = 0, plusPin = 13, tri1 = 17, tri2 = 18, tri3 = 19;
int pwmFreq = 120; //起动脉冲频率,按需调整
float dutyRatio = 0.5; //脉冲占空比

void bldcRun(){
sequence++; // 三相线圈通电顺序
pwmFreq++; // 运行脉冲变频
if (pwmFreq > 165) pwmFreq--;//运行脉冲频率,按需调整
}

void switchRun(byte i){
if (sequence > 6) sequence = 1;
switch(i){ //1H,2L,3H,1L,2H,3L
case 1: digitalWrite(tri1, HIGH); break;
case 2: digitalWrite(tri2, LOW); break;
case 3: digitalWrite(tri3, HIGH); break;
case 4: digitalWrite(tri1, LOW); break;
case 5: digitalWrite(tri2, HIGH); break;
case 6: digitalWrite(tri3, LOW); break;
}
pwm.adjustFrequency(pwmFreq);
}

void setup() {
pinMode(tri1, OUTPUT); // MX1508-A1
pinMode(tri2, OUTPUT); // MX1508-A2
pinMode(tri3, OUTPUT); // MX1508-B1
pwm.attachPin(ledPin, pwmFreq, 10); //PWM发生器
pwm.writeScaled(dutyRatio);
attachInterrupt(plusPin, bldcRun, CHANGE); //由PWM脉冲导致的外部中断
}

void loop(){ switchRun(sequence); }
// pwmFreq(max) = 25KHZ时 8.333KHZ/trix
...全文
420 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
seedundersnow 2021-04-30
  • 打赏
  • 举报
回复
无感电驱一般需要有电流和反电动势反馈,否则轻载效率差而重载会丢失同步停转。
m0_57792257 2021-04-30
  • 打赏
  • 举报
回复
说错了,16进制
m0_57792257 2021-04-30
  • 打赏
  • 举报
回复
脉冲就是字节,或者8进制数。你直接写数据,人家才看得懂。不要老画图,看不懂
不信幼儿 2021-04-29
  • 打赏
  • 举报
回复
因无感,所以不可判断,也不用判断,有简单的开机慢启动功能。需按供电电压及电机特性等实际情况调试决定。见《起动脉冲频率,按需调整》。
zhllei 2021-04-29
  • 打赏
  • 举报
回复
怎么判断初始位置?

27,510

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧