这个我经常用,电机调速控制,严格说这不是PWM,是可控硅移相触发。
电路很简单,一个可控硅触发电路,一个过零检测电路,配合一段中断服务程序就能完成。
不知道你应用的一些详情,简单说一下思路。
可控硅触发一般使用MOC3021,相关手册上有典型电路,CPU端接一个GPIO就可以。
闭环控制时过零检测不需要很精确,一般用一个双向光耦就足够,光耦输入接交流电输入,输出接CPU中断,用史密特整形一下输出信号最好。
中断程序的结构分成两部分,过零中断与延时中断。
过零中断做两件事,输出复位,开始延时。如果定时器有外部管脚复位启动功能,可以不要这段。
延时中断做一件事,触发输出。如果定时器有触发输出功能,可以没有这段中断程序。
具体的延时时间,由主程序控制,一般是根据PID的计算结果进行设置。注意,延时时间越长,输出电压越小。