请问这个异常脉冲是怎么回事?
在使用STC8H2K08U,主频33.1776MHz驱动单相有感电机,使用上臂PWM切割,下臂IO推挽输出,HALL引脚中断换相。其换相代码如下所示:
//AH+BL
void motor_hb_on(u16 sw)//原为ha
{
//pwm1关闭,pwm0打开,
//////////////////// PWMA_ENO = 0x00;
PWMA_CCR3=0; //BH重载和比较都设为最高位,0是全低,1023是全高
//或者可用用pwm输出使能关闭:
AL=0;
interval();
BL=1;
// interval();
PWMA_CCR1=sw; //AH可调
}
//AL+BH
void motor_ha_on(u16 sw)//原为hb
{
//关闭1p输出
//////////////////// PWMA_ENO = 0x00;
PWMA_CCR1=0; //AH重载和比较都设为最高位,小于100是高电平,大于100是低电平,也就是占空比10%
BL=0;
interval();
AL=1;
// interval();
PWMA_CCR3=sw; //BH可调
}
使用示波器检测下臂输出,发现每次换相,下臂由高电平切到低电平后,下臂会随机出现一个长达50us的异常脉冲;其示波器图像如下:
上图黄色为上臂PWM,绿色下臂IO推挽;
请问这可能是什么原因导致的?试过将IO推挽换为准双向,也没有改善;
您提到的“异常脉冲”可能与电机驱动控制逻辑、PWM信号配置或HALL传感器中断处理有关。在使用STC8H2K08U单片机驱动单相有感电机时,若出现异常脉冲现象,需从以下几个方面进行排查和优化:
1. PWM信号配置问题
在您的代码中,PWMACCR3和PWMACCR1分别用于控制上臂和下臂的PWM占空比。需要注意的是,STC8H系列的PWM模块通常支持互补输出模式,若未正确配置互补通道的死区时间(Dead Time),可能导致上下桥臂同时导通,造成短路或异常脉冲。
建议检查以下几点:
PWM通道是否配置为互补输出模式;
死区时间设置是否合理(建议至少5μs以上);
是否存在PWM输出使能未关闭导致的残留信号。
2. HALL中断触发与换相逻辑冲突
HALL传感器用于检测转子位置并触发换相操作。若HALL中断处理程序执行时间过长或与PWM控制逻辑冲突,可能导致换相不及时或误触发,从而引发异常脉冲。
建议优化措施:
确保HALL中断服务函数(ISR)尽可能简短,避免长时间阻塞;
在换相过程中,确保PWM输出状态切换顺序正确,避免上下桥臂同时导通;
检查HALL信号的滤波和去抖处理,防止误触发。
3. IO推挽输出与PWM信号干扰
您提到下臂使用IO推挽输出,而上臂使用PWM输出。这种混合控制方式可能会因信号电平不一致或切换时序不当,导致异常脉冲。
优化建议:
确保IO推挽输出与PWM信号切换时序一致,避免电平冲突;
若条件允许,建议统一使用PWM控制上下桥臂,以提高控制精度和稳定性。
4. 软件延时函数 interval() 的影响
interval() 函数用于在换相过程中引入延时。若该函数实现方式不准确(如使用循环延迟而非定时器),可能导致换相时序不精确,进而引发异常脉冲。
建议:
使用定时器替代软件延时,提高控制精度;
确保延时时间符合电机换相要求(通常在几微秒至几十微秒之间)。
综上所述,建议您首先检查PWM配置和死区时间设置,确保上下桥臂不会同时导通;其次优化HALL中断处理逻辑,避免误触发;最后确认换相过程中的时序和延时是否准确。通过以上调整,可有效减少或消除异常脉冲现象。
[本文内容由国芯人工智能辅助生成,仅供参考] 国芯人工智能 发表于 2025-8-1 08:18
您提到的“异常脉冲”可能与电机驱动控制逻辑、PWM信号配置或HALL传感器中断处理有关。在使用STC8H2K08U单 ...
啊? bbgjtotg 发表于 2025-8-1 08:32
啊?
那是论坛的AI,别理他 JDBJXB 发表于 2025-8-1 09:09
那是论坛的AI,别理他
好的{:4_167:} 这是逻辑分析仪还是示波器图像 DebugLab 发表于 2025-8-1 09:48
这是逻辑分析仪还是示波器图像
示波器的,是H桥同一侧上下臂AH和AL的示波器抓取的信号,当从AH+BL切换为BH+AL时,AL会随机出现一个50us的高电平;当从BH+AL切换为AH+BL时,BL会随机出现一个50us的高电平; 确认下霍尔信号的抖动和噪声有没有彻底滤除,霍尔中断里面做个防抖处理 bbgjtotg 发表于 2025-8-1 10:05
示波器的,是H桥同一侧上下臂AH和AL的示波器抓取的信号,当从AH+BL切换为BH+AL时,AL会随机出现一个50us ...
可能是hall给的变换电平存在噪声,可以尝试用定时器产生一个虚拟的换向操作,暂时不使用外部的hall信号,看看还有没有这个异常电平 霍尔增加RC滤波。
页:
[1]