BLDC控制程序怎么编程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BLDC控制程序怎么编程相关的知识,希望对你有一定的参考价值。
无刷电机6路换向PWM信号的程序,我想了想,半桥控制方法(下桥一直闭合,上桥壁PWM信号)用3个PWM管脚,这样进行编程是否可行?还是一般用6路的PWM模块(像2407dsp一样)这样编程才行。当然除了驱动电机运行还需检测一些其他量实现其他功能。
“(下桥一直闭合,上桥壁PWM信号)”???楼主是什么意思,将下桥全关?这样怎么成回路,没有回路电流如何流。一般BLDC的控制(功率管上)应该分直通调制和PWM波调制(也就是楼主说的PWM信号),由此出来的2V2组合,也就是有四种控制方式:上下都是直通调制、上下分别是直通和PWM波调制、上下分别是PWM波和直通调制(这种我没见过)、上下都是PWM波调制。看怎么用,负载要求和功耗要求都有那就用上下都PWM波调制合适。至于检测那就是位置和扭矩信息,具体就看你用什么要求的了。 参考技术A 编程示例如下:Uint16 shunNum[6]=0x0f3d,0x03fd,0x03df,0x0fd3,0x0df3,0x0d3f;
//顺时针换向表
interrupt void T1_Cap_isr(void);
int count=0;
int mm=0;
void main(void)
/*初始化系统*/
InitSysCtrl();
/*关中断*/
DINT;
IER = 0x0000;
IFR = 0x0000; //清中断
// LedCount = 0;
/*初始化PIE*/
InitPieCtrl();
/*初始化PIE中断矢量表*/
InitPieVectTable();
/*初始化定时器0*/
InitCpuTimers();
/*初始化外设*/
InitPeripherals();
/* 初始化事件管理器,确定PWM*/
InitEv();
/*受EALLOW保护的捕捉中断矢量,重新映射捕捉中断入口*
/EALLOW;
//允许访问EALLOW保护的寄存器
PieVectTable.CAPINT1 = &T1_Cap_isr;
//指向中断服务寄存器捕捉1的地址
PieVectTable.CAPINT2 = &T1_Cap_isr;
PieVectTable.CAPINT3 = &T1_Cap_isr;
//重新EALLOW保护
/*使能中断捕捉,向量是查表得,INT3.5-INT3.7*/
PieCtrl.PIEIER3.bit.INTx7=1;
PieCtrl.PIEIER3.bit.INTx6=1;
PieCtrl.PIEIER3.bit.INTx5=1;
IER|= M_INT3;
//使能INT3
EDIS;
EINT; // 开放全局中断,Enable Global interrupt INTM
ERTM; // 开放全局实时中断,Enable Global realtime interrupt DBGM
for(;;)
interrupt void T1_Cap_isr(void)
mm=1;
//换向,
if (count==5)
count=0;
else count++;
EvaRegs.ACTR.all=shunNum[count];
EvaRegs.EVAIFRC.all=0x0007;
//三个捕捉中断标志位清零
//响应中断寄存器清除,写1清0,进而才能接收下一外围中断
PieCtrl.PIEACK.bit.ACK3=1;
PieCtrl.PIEIFR3.all = 0;
参考技术B 都可以,多看看资料,有几种方法,每个方法都有自己的特点,DSP核的处理器常用你说的2407的方法 参考技术C ”闭合“就是导通。我知道各种驱动方式啦,我是说编程具体实现。当然了,有像2407这种3路SPWM驱动最好了,如果CPU只是有几路单独的PWM,是不是通过编程也容易实现
以上是关于BLDC控制程序怎么编程的主要内容,如果未能解决你的问题,请参考以下文章