警告!! 本項目中討論的電路圖僅用于教育目的。請注意,使用 220V 交流電源電壓需要采取極端的預防措施,并應遵循安全程序。電路運行時,請勿觸摸任何元件或電線。
就像我們在許多基于 Arduino 的家庭自動化項目中所做的那樣,使用開關或使用某種控制機制很容易打開或關閉任何家用電器。但是有很多應用需要我們部分控制交流電源,例如控制風扇的速度或燈的強度。在這種情況下,使用了PWM 技術,所以在這里我們將學習如何使用 Arduino 生成的 PWM 來控制 Arduino 的交流風扇速度。
在這個項目中,我們將演示使用 TRIAC 的 Arduino 交流風扇速度控制。這里使用交流信號的相位控制方法來控制交流風扇的速度,使用 Arduino 生成的 PWM 信號。在之前的教程中,我們使用 PWM 控制直流風扇的速度。
所需組件
Arduino UNO
4N25(過零檢測器)
10k 電位器
MOC3021 0pto耦合器
(0-9)V、500 mA 降壓變壓器
BT136 可控硅
230 VAC 軸流交流風扇
連接線
使用 Arduino 進行交流風扇控制
工作可以分為四個不同的部分。它們如下
1. 過零檢測器
2. 相位角控制電路
3. 控制風扇轉速量的電位器
4. PWM 信號發生電路
1. 過零檢測器
我們家中的交流電源是 220v AC RMS,50 HZ。該交流信號本質上是交替的,并且會周期性地改變其極性。在每個周期的前半部分,它沿一個方向流動,達到峰值電壓,然后下降到零。然后在下一個半周期,它以交替方向(負)流動到峰值電壓,然后再次變為零。為了控制 AC Fan 的速度,需要對兩個半周期的峰值電壓進行斬波或控制。為此,我們必須檢測要控制/斬波信號的零點。電壓曲線上電壓改變方向的這一點稱為過零電壓。
下圖所示的電路是用于獲取過零點的過零檢測器電路。首先,使用降壓變壓器將 220V AC 電壓降為 9V AC ,然后在其引腳 1 和 2 處饋入 4N25 光耦合器。4N25 光耦合器具有內置 LED,引腳 1 為陽極,引腳 2 為陰極。因此,根據下面的電路,當交流波接近零交叉點時,4N25 的內置 LED 將關閉,因此,4N25 的輸出晶體管也將關閉,輸出脈沖引腳將被拉到5V。同樣,當信號逐漸增加到峰值時點,然后 LED 打開,晶體管也將打開,接地引腳連接到輸出引腳,這使得該引腳為 0V。使用此脈沖,可以使用 Arduino 檢測過零點。
2. 相位角控制電路
檢測到過零點后,現在我們必須控制電源開啟和關閉的時間量。該PWM 信號將決定輸出到交流電機的電壓量,進而控制電機的速度。這里使用了BT136 TRIAC,它控制交流電壓,因為它是用于控制交流電壓信號的電力電子開關。
TRIAC是一種三端交流開關,可由其柵極端的低能量信號觸發。在 SCR 中,它僅在一個方向上導通,但在 TRIAC 的情況下,可以在兩個方向上控制功率。要了解有關TRIAC和SCR的更多信息,請閱讀我們之前的文章。
如上圖所示,通過向 TRIAC 施加一個小的柵極脈沖信號以 90 度的觸發角觸發 TRIAC。時間“t1”是根據調光要求給出的延遲時間。例如,在這種情況下,觸發角為 90%,因此功率輸出也將減半,因此燈也會以一半的強度發光。
我們知道這里交流信號的頻率是 50 Hz。所以時間段將是 1/f,即 20ms。對于半個周期,這將是 10 毫秒或 10,000 微秒。因此,為了控制交流燈的功率,“t1”的范圍可以在 0-10000 微秒之間變化。
光耦:
光耦也稱為光隔離器。它用于保持兩個電路(如直流和交流信號)之間的隔離。基本上,它由發射紅外光的 LED 和檢測紅外光的光電傳感器組成。這里使用 MOC3021 光耦合器從微控制器信號(直流信號)控制交流風扇。
TRIAC和光耦連接圖:
3. 控制風扇轉速的電位器
這里使用電位器來改變交流風扇的速度。我們知道電位器是一個三端器件,它充當分壓器并提供可變電壓輸出。這個可變的模擬輸出電壓在 Arduino 模擬輸入端給出,用于設置交流風扇的速度值。
4. PWM信號發生單元
在最后一步中,根據速度要求向 TRIAC 提供PWM 脈沖,從而改變 AC 信號的 ON/OFF 時序并提供可變輸出來控制風扇速度。在這里,Arduino 用于生成 PWM 脈沖,該脈沖從電位器獲取輸入,并將 PWM 信號輸出到 TRIAC 和光耦合器電路,進一步以所需的速度驅動交流風扇。
電路原理圖
這個基于 Arduino 的 230v 風扇速度控制電路的電路圖如下所示:
注意:我在面包板上展示了完整的電路,只是為了便于理解。您不應該直接在面包板上使用 220V 交流電源,我使用虛線板進行連接,如下圖所示
為 Arduino 編程以控制交流風扇速度
硬件連接后,我們需要為 Arduino 編寫代碼,它會產生一個PWM 信號,使用電位器輸入來控制 AC 信號的 ON/OFF 時序。我們以前在許多項目中使用過 PWM 技術。
這個Arduino AC風扇速度控制項目的完整代碼在這個項目的底部給出。下面給出代碼的逐步解釋。
第一步,聲明所有需要的變量,這些變量將在整個代碼中使用。這里 BT136 TRIAC 連接到 Arduino 的引腳 6。并且聲明了變量speed_val來存儲速度步長的值。
int TRIAC = 6; int speed_val =0;
接下來,在setup函數中,將TRIAC引腳聲明為輸出,因為 PWM 輸出將通過該引腳生成。然后,配置一個中斷來檢測過零。這里我們使用了一個名為attachInterrupt的函數,它將 Arduino 的數字引腳 3 配置為外部中斷,并在其引腳檢測到任何中斷時調用名為zero_crossing的函數。
無效設置() { pinMode(燈,輸出); attachInterrupt(digitalPinToInterrupt(3), zero_crossing, CHANGE); }
在無限循環中,從連接在 A0 的電位器讀取模擬值,并將其映射到 (10-49) 的值范圍。
要找出這個范圍,我們必須做一個小計算。早些時候有人說,每半個周期相當于 10,000 微秒。所以這里的調光將被控制在 50 步,這是一個任意值,可以改變。這里的最小步數取為 10,而不是零,因為 0-9 步給出的功率輸出大致相同,最大步數取為 49,因為實際上不建議采用上限(在這種情況下為 50)。
那么每一步的時間可以計算為 10000/50= 200 微秒。這將在代碼的下一部分中使用。
無效循環() { int pot=analogRead(A0); int data1 = map(pot, 0, 1023,10,49); speed_val=data1; }
最后一步,配置中斷驅動函數zero_crossing。在這里,可以通過將單個步進時間乘以 no 來計算調光時間。的步驟。然后在此延遲時間之后,可以使用 10 微秒的小高脈沖觸發 TRIAC,這足以打開 TRIAC。
無效過零() { int 斬波時間 = (200*speed_val); 延遲微秒(chop_time); 數字寫入(TRIAC,高); 延遲微秒(10); 數字寫入(TRIAC,低); } 下面給出了使用 Arduino 和 PWM進行交流風扇控制的完整代碼
int TRIAC = 6;
int speed_val=0;
無效設置()
{
pinMode(TRIAC,輸出);
attachInterrupt(digitalPinToInterrupt(3), zero_crossing, CHANGE);
}
void zero_crossing()
{
int Chop_time = (200*speed_val);
延遲微秒(chop_time);
數字寫入(TRIAC,高);
延遲微秒(10);
數字寫入(TRIAC,低);
}
無效循環()
{
int pot=analogRead(A0);
int data1 = map(pot, 0, 1023,10,40);
speed_val=data1;
}
-
PWM
+關注
關注
116文章
5364瀏覽量
217960 -
TRIAC
+關注
關注
0文章
26瀏覽量
24059 -
風扇控制
+關注
關注
0文章
8瀏覽量
6919 -
Arduino
+關注
關注
188文章
6490瀏覽量
190058
發布評論請先 登錄
基于DSP的小型直流風扇自動化測試系統
抗電磁干擾的PWM風扇控制器原理及應用

pwm風扇,使用PWM控制直流風扇

評論