自制无感无刷电机驱动板
分别测试了基于C251的STC32G单片机、Arduino AVR的ATmega328PB、以及ARM的ST32F103单片机。
- 🧲测试转动效果
- ✒目前市面上开源的有关无刷电机的项目数不胜数,其控制原理都大同小异,在没有领透其技术要领情况下,关键是找到一个合适自己的,资料齐全的,有针对性的学习。
-
✨学习资料阅读推荐《无感无刷直流电机之电调设计全攻略》
-
🎉现成的无感无刷驱动测试资料来源:
-
📓STC三相无刷电机驱动-STC32G-无HALL资料地址 :
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=7472&extra=page%3D1
-
📍ATmega328PB移植可以参考 ATmega8 MK 电调开源程序 V0.42 版:
https://svn.mikrokopter.de/websvn/listing.php?repname=BL-Ctrl&path=%2Ftags%2FV0.42%2F&#a4bfcc0886576e3118d94460220fa558a
- ATmega328PB相关移植参考文章:
https://www.amobbs.com/thread-4652868-1-1.html
- 👉 如果自制驱动板,推荐还是和控制芯片集成到一起,因为需要连接的线比较多,连接不稳定容易出问题。
- 📍ST32F103无感无刷驱动资料来源参考
- 🔖匠心科技BLDC开发板资料
c
链接:https://pan.baidu.com/s/1s5YjzRSDLKQvl86lBVAqKA?pwd=a6cx
提取码:a6cx
***** 解压密码:JXKJ_RALDNW
- 🔖本论坛的BLDC驱动程序资料:
https://blog.csdn.net/snail_dongbin/article/details/82803076
c
链接:https://pan.baidu.com/s/1uXD7UBV3R_NEV85zf-jmZg?pwd=7esq
提取码:7esq
- 🔬使用无感驱动程序,配合自制电机驱动板,在开环测试下没有问题。
- 📑个人自制无刷电机驱动板原理图
- PCB其它相关功能还未测试,最终PCB电路还未正式确认,暂时没有开源发布出来。
c
链接:https://pan.baidu.com/s/1jxZzWpBFSaQAJqjUw6hTgQ?pwd=o5q7
提取码:o5q7
- 🍁初稿原理图
- 🌿由于驱动板没有集成MCU,在使用时,需要根据个人使用的单片机,进行相关代码的移植。
🌼驱动程序说明
- 📍基于STC32G单片机的驱动程序:
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=1822&highlight=bldc&page=1&extra=#pid11784
- 使用STC32G驱动程序,在开环低速测试没有问题,在开启PID功能调试模式不行,PID参数没有调整好。
- 🌿Arduino 328PB开环测试程序
🥕仅供测试使用,这是让无感无刷电机强制转起来。主要用于验证基本驱动电路是否正常。如果需要使用328P驱动可以参考:德国MK项目BLDC电调项目,详见上面的相关链接。
c
#include "Arduino.h"
int AA1=3;
int AA2=5;
int BB1=11;
int BB2=10;
int CC1=9;
int CC2=6;
int enable=2; //This is not used for now, The ESC is always enabled
int emfA=A0;
int emfB=A1;
int emfC=A2;
int fase=1;
int deltaA=0;
int emA=0;
int sum=0;
int IN=A3;
unsigned int Delay=3600;
int it=0;
int it2=1;
static int delta= 0;
static int Lastdelta= -1;
unsigned long previousMicros = 0;
void setup() {
Serial.begin(9600);
pinMode(AA1,OUTPUT);
pinMode(AA2,OUTPUT);
pinMode(BB1,OUTPUT);
pinMode(BB2,OUTPUT);
pinMode(CC1,OUTPUT);
pinMode(CC2,OUTPUT);
pinMode(enable,OUTPUT);
pinMode(IN,INPUT);
pinMode(emfA,INPUT);
pinMode(emfB,INPUT);
pinMode(emfC,INPUT);
//digitalWrite(enable,HIGH);
//previousMillis = micros();
}
void loop() {
int emA = analogRead(emfA);
int emB = analogRead(emfB);
int emC = analogRead(emfC);
int sum = (emA+emB+emC)/3;
unsigned long currentMicros = micros();
if(currentMicros - previousMicros >= Delay){
previousMicros += Delay;
//Phase1 C-B
switch(fase){
case 1:
digitalWrite(AA1,LOW);
digitalWrite(AA2,LOW);
digitalWrite(BB1,LOW);
digitalWrite(CC2,LOW);
digitalWrite(BB2,HIGH);
digitalWrite(CC1,HIGH);
delta = emA-sum;
break;
//Phase2 A-B
case 2:
digitalWrite(AA2,LOW);
digitalWrite(BB1,LOW);
digitalWrite(CC1,LOW);
digitalWrite(CC2,LOW);
digitalWrite(AA1,HIGH);
digitalWrite(BB2,HIGH);
delta = emC-sum;
break;
//Phase3 A-C
case 3:
digitalWrite(AA2,LOW);
digitalWrite(BB1,LOW);
digitalWrite(BB2,LOW);
digitalWrite(CC1,LOW);
digitalWrite(CC2,HIGH);
digitalWrite(AA1,HIGH);
delta = emB-sum;
break;
//Phase4 B-C
case 4:
digitalWrite(AA1,LOW);
digitalWrite(AA2,LOW);
digitalWrite(BB2,LOW);
digitalWrite(CC1,LOW);
digitalWrite(BB1,HIGH);
digitalWrite(CC2,HIGH);
delta = emA-sum;
break;
//Phase5 B-A
case 5:
digitalWrite(AA1,LOW);
digitalWrite(BB2,LOW);
digitalWrite(CC1,LOW);
digitalWrite(CC2,LOW);
digitalWrite(AA2,HIGH);
digitalWrite(BB1,HIGH);
delta = emC-sum;
break;
//Phase6 C-A
case 6:
digitalWrite(AA1,LOW);
digitalWrite(BB1,LOW);
digitalWrite(BB2,LOW);
digitalWrite(CC2,LOW);
digitalWrite(CC1,HIGH);
digitalWrite(AA2,HIGH);
delta = emB-sum;
break;
}
if (Lastdelta < 0)
{
if (delta > 0)
{
Lastdelta=delta; //save the last delta
fase= fase + 1;
if (fase > 6) {
fase = 1;
}
}
}//Zero cross from - to +
if (Lastdelta > 0)
{
if (delta < 0)
{
Lastdelta=delta;
fase= fase + 1;
if (fase > 6) {
fase = 1;
}
}
}//Zero cross from + to -
}//Case ends
int t =analogRead(IN); //From the potentiometer
// Delay=map(t,0,1024,1,1000); //we obtain the delay speed using the potentiometer
//we map the values from 1 to 1000 microseconds
Serial.println(t);
} //loop ends
- 🌿使用匠心科技BLDC相关资料中的stm32f103,无感无刷驱动程序,完全适配的上个人自制的驱动板,并且可以很平稳的驱动转起.来。具体资料详见上面链接。里面的驱动部分关键实现也是参考了德国MK电调项目相关内容。
🔰其他相关内容学习参考
- 🌿对应无感无刷电机驱动,换相检测电路检测部分计算,可以进一步阅读:
https://blog.csdn.net/qq_41100189/article/details/119832506
- 🔖后续有新内容在补充更新。