|
發布時間: 2017-5-22 11:36
正文摘要:利用業余時間,研究出來的移相控制技術,若有不對的地方,還請大家指出。 可控硅移相控制交流電原理: 工作原理:我們知道220V市電的頻率是50HZ,周期就是20ms,上下半波各占10ms,所以我們想對交流電進行控制的 ... |
| 過零檢測從變壓器次級取樣,更安全一些。 |
謝謝,學習了。![]() |
| 好資料,51黑有你更精彩!!! |
| /* 單片機白熾燈調光程序(適配電路圖:STC12C2052AD + MOC3020 + BTA16) 晶振:11.0592MHz */ #include "reg52.h" // 包含STC12C2052AD寄存器定義 #include <intrins.h> // 提供_nop_()函數 // 引腳定義(與電路圖嚴格對應) sbit lamp_pwm = P1^0; // 可控硅觸發引腳(接MOC3020的2腳,經350Ω電阻) sbit key0 = P1^1; // 降低亮度按鍵(接P1.1) sbit key1 = P1^2; // 增加亮度按鍵(接P1.2) // 全局變量 unsigned int inc = 8000; // 定時器延時初值(800~8000,對應亮度從暗到亮) /************************************************ * 函數名:Key_Scan * 功能: 按鍵掃描(帶10ms軟件消抖) ************************************************/ void Key_Scan(void) { static unsigned char key_state = 1; // 按鍵狀態:1=未按,0=按下 static unsigned int key_delay = 0; // 消抖延時計數器 if((key0 == 0 || key1 == 0) && key_state == 1) { key_delay++; if(key_delay >= 10000) { // 約10ms消抖(11.0592MHz) key_state = 0; if(key0 == 0) { // 降低亮度(增大延時,觸發更晚) inc += 50; if(inc >= 8000) inc = 8000; } if(key1 == 0) { // 增加亮度(減小延時,觸發更早) inc -= 50; if(inc <= 800) inc = 800; } key_delay = 0; } } else if(key0 == 1 && key1 == 1 && key_state == 0) { key_delay++; if(key_delay >= 10000) { key_state = 1; key_delay = 0; } } else { key_delay = 0; } } /************************************************ * 函數名:INT0_ISR * 功能: 外部中斷0(過零檢測)服務函數 * 說明: 交流電過零時重置定時器,準備觸發可控硅 ************************************************/ void INT0_ISR(void) interrupt 0 using 0 { TR0 = 0; // 關閉定時器,防止沖突 TH0 = (65536 - inc) / 256; // 加載延時初值(高8位) TL0 = (65536 - inc) % 256; // 加載延時初值(低8位) TR0 = 1; // 啟動定時器,開始延時 } /************************************************ * 函數名:Timer0_ISR * 功能: 定時器0中斷服務函數(可控硅觸發) * 說明: 延時結束后輸出觸發脈沖,驅動MOC3020 ************************************************/ void Timer0_ISR(void) interrupt 1 using 0 { TR0 = 0; // 關閉定時器,避免重復觸發 lamp_pwm = 0; // 輸出低電平,觸發MOC3020內部LED _nop_();_nop_(); // 極短延時(確保LED導通) lamp_pwm = 1; // 恢復高電平,結束觸發 } /************************************************ * 函數名:main * 功能: 主函數(初始化+循環掃描) ************************************************/ void main(void) { TMOD |= 0x01; // 定時器0:工作方式1(16位定時) IT0 = 1; // INT0:下降沿觸發(匹配過零檢測的電平變化) EX0 = 1; // 使能外部中斷0 ET0 = 1; // 使能定時器0中斷 EA = 1; // 使能總中斷 while(1) { Key_Scan(); // 主循環持續掃描按鍵 } } |
|
謝謝了 下載看看 |
| 學習一下! |
| 這個是不是可以應用在電風扇上面? |
| 這個是不是可以應用的電風扇上面 |
| 謝謝提供,剛好想用單片機控制電烙鐵 |
| 謝謝分享,學到了很多東西! |
|
雙向可控硅開啟的條件為:雙向可控硅第一陽極T1與第二陽極T2間,無論所加電壓極性是正向還是反向,只要控制極G和第一陽極T1間加有正負極性不同的觸發電壓,就可觸發導通呈低阻狀態。 雙向可控硅關閉的條件為:雙向可控硅一旦導通,即使失去G極觸發電壓,也能繼續保持導通狀態。只有當第一陽極T1、第二陽極T2電流減小,小于維持電流或T1、T2間當電壓極性改變且沒有觸發電壓時,雙向可控硅才截斷,此時只有重新加觸發電壓方可導通。 在其電特性參數中可以看到門極觸發電流、觸發電壓分了I、II、III、IV,這里引入了一個概念,雙向可控硅按其門極G與控制極T2的電壓正負關系(即VGT1的電壓正負,VT2T1的電壓正負),分為三象限可控硅和四象限可控硅:
由于生產工藝等問題使可控硅第四象限需要的觸發電流較大,以及容易誤觸發等原因,三象限可控硅是四象限可控硅的優化產品,所以直接將第四象限給屏蔽了 |
gongzhu 發表于 2024-3-13 13:34 沒有變壓器,應該是5V開關電源 |
| 輸出只是半波吧,因為過零信號只取了一半,怎么沒有人發現? |
| 本來就有降壓變壓器了,為何過零不從低壓端取? |
挺好的!原理分析透徹![]() |
| 下來學習一下。51黑有你很精彩!!! |
| 感謝分享,正好要用到可控硅,學習一下 |
| 51很少出控制交流的文章了,比如交流電機,變頻電機NTC,頂你 |
|
好評,學習了 |
|
有3相實用的電路嗎 |
| 好辦法,好資料 |
| 我用于驅動單相電機時候,啟動的時候,電機噪音很大,是什么原因?可以解決嗎? |
| 好資料,51黑有你更精彩!!! |
yanstay 發表于 2019-9-4 08:28 應該和這個差不多 加兩個中斷吧 |
| 三相的道理應該差不多 |
| 好評,幫頂,學習了 |
| 好資料 問題一直困擾啊 終于找到了 |
| 不錯的資料 |
| 以前做過三相電鍍電源的觸發板。現在都是高頻電源了。 |
| 好資料,51黑有你更精彩!!! |
|
謝謝,不錯的帖子學習一下! |
| 看看,學習一下。 |
| 學習了 |
| 資料挺好,對于剛接觸可控硅的小白挺合適。 |
| 好資料,51黑有你更精彩!!! |
| 謝謝超級棒 |
|
有三相的相序檢測方面的嗎? |
| 這樣的過零檢測電路風險太大,只要三極管擊穿,單片機很容易燒,建議接L的1M電阻用多個電阻串聯代替,或用光耦隔離,形成單片機完全可隔離方案更佳 |
| 很不錯的資料,謝謝! |
| 謝謝分享! |