首先这个可控硅移相控制,我之前在51上做过,成功的,现在用的是STM32F103C8T6,利用外部中断做过零检测电路,在交流电的过零点时启动定时器,定时时间保证在10ms以内,比如定时6ms,然后触发MOC3041打开可控硅,稍延时几us,断开MOC3041触发信号,因为断开触发信号后,可控硅会依然保持在下一个零点信号之前一直导通中,现在我按照这个原理来干,触发导通3041后,延时的时间在1000us以内,灯泡都不亮,把延时时间加大至1500us,灯泡亮了,一直闪烁,明显不对,没有实现调压效果,问题出在哪呢?
这个延时时间应该只要几us,或者几十us就行了,太大了,就不对了。
外部过零检测电路,我在做过测试,没问题,用LED在中断里看到效果了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
设为9,即1ms
理解错了你的程式
以为你的TIM3是设定为6ms,
但以上的都不应该有你说的问题
我猜你的问题是, Tim3的溢出时间错了
再就是触发维时不够,通常我做可控硅控制时, 触发时间一定不是规格书上的极限, 因为那是要求峰值电流计算下的时间.
如果是我, 我不会用delay_us,而是会改为
num++;
if (num==6){
UPWM=0;
}
if (num==7){
TIM_Cmd(TIM3, Disable);
UPWM=1;
num=0;
}
仅供参考
还有你需要确定一个过零点是否触发了两次中断,这个很重要
另外你的moc3041限流电阻会不会太大了,500R的电阻只有不到5ma的电流
可控硅不比Mos或三极管, 它不是你想象的, G极给个信号它就导通, 不给就关掉
它是依靠G极触发, 然后用T1至T2的电流保持导通的状态(而不是靠G极来保持导通的状态)
简单而言, G极只负责触发它导通, 要关掉T1至T2的电流, 靠的是这电流归零, 所以不会有人把可控硅用在直流开关上, 因为电流永远不会归零, 也就是永远关不了
一个过零点只触发一次中断, 根据你的电路它应该配置为下降沿, 因为是全波整流, 如果说以50Hz来算, 1秒应该产生100次外部中断
如果说, int0只是接到CPU, 没用在别处, 根本就不应该用到510R, 用4.7K~10K即可, 正因你用了510R, 所以R2的1.5K是非常的不合理, 就你这1.5K的电阻所消耗的功率=220^2/1500=32W, 不知道的还以为你做的是电热毯呢。光耦的LED端开关的电流一般都是5mA压右, 这类型的应用甚至低到2~3mA, 你呢, 用了200多mA
另外在光耦的1&2脚并联47K电阻吧
一周热门 更多>