本人今天才接触STM8单片机 不过之前有别的单片机开发经验 因此上手比较快 现在写出了正弦波发生程序 明天搞了AD和PI算法就能做逆变了 慢慢搞
STM8实现SPWM.txt1和20输出SPWM波 11输出50Hz方波
本人今天才接触STM8单片机 不过之前有别的单片机开发经验 因此上手比较快 现在写出了正弦波发生程序 明天搞了AD和PI算法就能做逆变了 慢慢搞
STM8实现SPWM.txt1和20输出SPWM波 11输出50Hz方波
目前这么设计的 SPWM1 2和它们的反向直接驱动全桥
Shutdown脚用于实现过流保护超功率保护等功能
Shutdown Logic悬空时 Shutdown被拉地时锁定SPWMx的输出
Shutdown Logic接地后 Shutdown被拉低时关闭输出 当取消下拉时恢复输出
FrequencyDetermine 悬空时 输出50Hz正弦波 接地后输出60Hz正弦波
这次修改为TIM1产生SPWM波形 而且一次4个单极性波形都产生 带死区 直接驱动全桥无压力
但是为了方便使用还是保留了50Hz Sync即同步方波
未来的:
Beep用于连接蜂鸣器 在逆变器发生故障时(被从Shutdown脚关机或者电池电压过低等)出声
OutputFeedback用于反馈输出电压 稳定输出电压
Battert Low用于反馈蓄电池电压 外部需要电阻分压 来检测电瓶欠电 当这个脚电压低于1V时亮低电压灯 当低于0.8V时锁定逆变器 SPWM.zip
SPWM1 SPWM2等通过光藕隔离驱动全桥 光藕另一侧是15V的mos驱动电压
单片机是3.3V的
最新的程序SPWM (4).zip
增加1个Disable PID脚 接地时输出的正弦波的峰值从0-100%随着Output Feedback(0-单片机供电电压 通常3.3V) 变化 用于内部PID稳压无法满足需求时 外接运放实现稳压
现在程序功能应该完善了 可以试试驱动全桥了 这次争取来个12V300W逆变 带短路保护
程序看过了,提点建议
1、系统开启了至少2个定时器中断,使用了3个定时器,在这样的系统中中断冲突导致的延迟必须考虑,建议改成只使用tim1中断,每次中断更新下一个占空比,spwm表可以更细一些,比如用20k的载频,直接用400的spwm表,这个对于stm8来说没有问题。
2、只用一个定时器的情况下,50hz可以使用软件计数来输出的,不是问题,没有必要单独搞一个定时器来做更新
3、你的刹车信号使用了,但是没看到相应的中断服务,也就是说刹车中断只是硬关闭,不恢复的,这个在产品中是有问题的。刹车的恢复一般是延时一段时间后重新启动。
4、需要加上软启动部分否则还是挺危险的。
再补充一点,建议增加电流采样通道,硬件驱动刹车的用于保护危险的过流信号,比如负载短路,软件检测的电流信号用于控制过载,最好是有几秒甚至几分钟的过载允许范围
典型设计一般是
额定1000w
允许1200到1500w的120秒过载
允许1500w到2000w的3-5秒过载
超过1500或者2000w的话立即保护
一般商用的选前一组参数,工业的选后一种
一般来说选择的功率管都能短时间承受100%的过载的,但是散热系统通常不能容忍持续过载,否则体积和成本难以接受。所以实用的角度来看加上软件电流检测是有必要的,而且用于显示的话有电流采样就能显示功率(视在功率)信息了,对于应用价值相对较大
adc采样结果的反馈和pid计算的系数都存在问题,另外积分项的最大值也没有意义,不可能那么大,另外你这个计算出来的pid结果有可能是负数,会导致失控的情况出现。
一般说pid的计算结果是用来进行调整的,也是对调制度进行加操作,并且对调制度上下都要做限制,你当前的调制度出现负数是不能工作的