AD采样过零检测 (闭环不成功)
6步换相的开环启动还是比较容易的,转起来了,也能加速到较高的速度。但开AD 检测过零 闭环就不大成功了。
方案是STM32的, AD采样用连续扫描方式的 使用最高转速速率,约1us 采样一次, 开启了连续扫描和DMA 通道,A、B、C 三路采样的数据就分别放到开辟的一个数据结构中(里面有三个变量)。
连续扫描 和DMA 通道的好处就是,数据实时更新,只要去读取都是最新刷新上去的,不用不读就是了,无需去开启关闭ADC。
另外开启了一路定时器,每50us 进入一次定时器中断,去判断AD 值过零状态。
在开环加速进入稳态后开启定时器。可是我一开定时器,电机启动完之后就卡着没法继续下去了,昨晚试了一下,电机还是没法闭环转动,只转了启动开环加速,然后就停了
我的想法是进入闭环后,定时器每隔50us 就做一次判断 并换相,此外主程序就留给通讯或别的使用了
ADC检测代码如下,Average_G1A,Average_G1B,Average_G1C,分别是存放3组ADC值 的变量, StepMotorControl(); 是换相函数。
switch(BlmcStep.M1)
{
case 1:
NonceBEMF = BEMF_ZERO + Average_G1C - (Average_G1A/2);
if((MotorGroup1.NonceBEMF < BEMF_ZERO-10)) // A(B)-------C-A
{
delayus(10); StepMotorControl(); delayus(10);
}
break;
case 2:
NonceBEMF = BEMF_ZERO + Average_G1B- (Average_G1A/2);
if(MotorGroup1.NonceBEMF > BEMF_ZERO+10) // A(C)-------B-A
{
delayus(10); StepMotorControl(); delayus(10);
}
break;
case 3:
.NonceBEMF = BEMF_ZERO + Average_G1A- (Average_G1B/2);
if((MotorGroup1.NonceBEMF < BEMF_ZERO-10)) // B(C)-------A-B
{
delayus(10); StepMotorControl(); delayus(10);
}
break;
case 4:
NonceBEMF = BEMF_ZERO + Average_G1C- (Average_G1B/2);
if(MotorGroup1.NonceBEMF > BEMF_ZERO+10) // B(A)-------C-B
{
delayus(10);StepMotorControl(); delayus(10);
}
break;
case 5:
NonceBEMF = BEMF_ZERO + Average_G1B- (Average_G1C/2);
if((MotorGroup1.NonceBEMF < BEMF_ZERO-10)) // C(A)-------B-C
{
delayus(10); StepMotorControl(); delayus(10);
}
break;
case 6:
NonceBEMF = BEMF_ZERO + Average_G1A- (Average_G1C/2);
if(MotorGroup1.NonceBEMF > BEMF_ZERO+10) // C(B)-------A-C
{
delayus(10); StepMotorControl(); delayus(10);
}
break;
} 自己顶一个,目前闭环能进去了,但大约10s 后出现卡的现象,卡两下就死掉了,数次实验都这样。目前mos 烧了。明天修板子,得后天大后天晚上才能继续了~~~ 无敌缓慢啊 调试电调的时候用带恒流的稳压电源吧,不至于烧管,空载的时候电流不大,3-5A的电源就够了。 GDYJ 发表于 2012-11-18 21:31 static/image/common/back.gif
调试电调的时候用带恒流的稳压电源吧,不至于烧管,空载的时候电流不大,3-5A的电源就够了。 ...
买了个稳压电源的,12V6A 输出,不过mos 只要一通 稍不注意就烧了,这个保护没做好。 电机转不起来,还没心情做别的,呵呵。 电流给限制了,怎么还会烧管! GDYJ 发表于 2012-11-25 19:28 static/image/common/back.gif
电流给限制了,怎么还会烧管!
12V 6A 当短路或者负载大的时候,肯定不是12V的,可能8V也可能更低,这样出的电流估计就是十几 二十A 了,详细的到多少伏后电源保护掉这个我倒没测过,也有关系我买到的mos 是假货的问题吧 BRUCE$GAN 发表于 2012-11-26 22:32 static/image/common/back.gif
12V 6A 当短路或者负载大的时候,肯定不是12V的,可能8V也可能更低,这样出的电流估计就是十几 二十A...
你这个根本都没有限流
页:
[1]