还是用电源芯片稳妥一些,自已做的容易炸机呀!
佩服楼主的创新精神,开关电源确实不容易做,还是使用专业的芯片靠谱,毕竟术业有专攻 本帖最后由 huiyong828 于 2024-4-1 19:51 编辑
huiyong828 发表于 2024-3-31 16:59
设置输出开关频率100KHz,占空比1%,芯片上电重启时序如下
问题2:原因是PWM模块设置问题,设置PWM5为PWM模式,PMW6,PWM7, PWM8 输出比较模式,使能PMW6,PWM7, PWM8 比较更新中断
这个是PWM没有更新输出的波形,很稳定。
中断函数如下:
void PWMB_ISR(void) interrupt 27
{
if(PWMB_SR1 & 0x01)
{
PWMB_CCR6H = (uint8_t)(PWM6_Duty_Temp >>8);
PWMB_CCR6L = (uint8_t)(PWM6_Duty_Temp);
PWMB_CCR7H = (uint8_t)(PWM6_Duty_Temp >>8);
PWMB_CCR7L = (uint8_t)(PWM6_Duty_Temp);
PWMB_CCR8H = (uint8_t)(PWM5_Duty_Temp >>8);
PWMB_CCR8L = (uint8_t)(PWM5_Duty_Temp);
PWMB_SR1 &= ~0x01;
}
else if(PWMB_SR1 & 0x04)
{
PWMB_CCR6H = (uint8_t)(PWM6_Duty_Temp >>8);
PWMB_CCR6L = (uint8_t)(PWM6_Duty_Temp);
PWMB_SR1 &= ~0x04;
}
else if(PWMB_SR1 & 0x08)
{
PWMB_CCR7H = (uint8_t)(PWM6_Duty_Temp >>8);
PWMB_CCR7L = (uint8_t)(PWM6_Duty_Temp);
PWMB_SR1 &= ~0x08;
}
else if(PWMB_SR1 & 0x10)
{
PWMB_CCR8H = (uint8_t)(PWM5_Duty_Temp >>8);
PWMB_CCR8L = (uint8_t)(PWM5_Duty_Temp);
PWMB_SR1 &= ~0x10;
}
else
{
PWMB_SR1 = 0;
}
}
问题3:为什么不能进入比较更新中断。
我感觉先做驱动变压器的方案,只需要一路PWM就可以了,简化了驱动控制部分 huiyong828 发表于 2024-3-31 16:59
设置输出开关频率100KHz,占空比1%,芯片上电重启时序如下
想要两组PWM完全同步还要兼具PI环,STC32G感觉跟不上 菜鸟大神 发表于 2024-5-5 19:04
我感觉先做驱动变压器的方案,只需要一路PWM就可以了,简化了驱动控制部分 ...
一路不可以,后期需要做移相控制,需要四路PWM输出方式实现. 菜鸟大神 发表于 2024-5-5 19:06
想要两组PWM完全同步还要兼具PI环,STC32G感觉跟不上
STC32G芯片用于相位差90度,四路PWM不太合适,现在已经改用STC8A8K64D芯片
正在调试中 STC8A8K64D这个芯片已经很老了,频率够用? huiyong828 发表于 2024-4-1 19:43
问题2:原因是PWM模块设置问题,设置PWM5为PWM模式,PMW6,PWM7, PWM8 输出比较模式,使能PMW6,PWM7, PW ...
用两组 互补pwm使用单端驱动芯片一组互补固定前段 另一组做移相后端 能完美解决全桥电源驱动 就是pwm精度不高
页:
1
[2]