適當的散熱是當今電子產品的基本規則。電子元件的最佳工作溫度為 25 度(標準室溫)。一些商業設備中的散熱沒有正確完成,這會影響設備的壽命和性能。因此,嵌入一個緊湊的自動冷卻風扇控制器板會很有用。此外,它還可用于保護您自己設計的電路及其功率元件,例如穩壓器、MOSFET、功率晶體管等。
之前,我已經介紹了一個控制冷卻風扇的電路,但是,我的目的是不使用任何微控制器并使其盡可能簡單。因此,該設備是風扇的簡單開/關開關,具體取決于定義的溫度閾值。這一次,我決定設計一個完整且更專業的電路,使用 LM35 溫度傳感器和 ATTiny13 微控制器來控制大多數標準風扇(25KHz PWM)。
我使用了 SMD 元件,PCB 板很緊湊。它可以控制一個或多個并聯的標準3線或4線風扇,例如CPU風扇。此外,可以使用繼電器保護目標設備/組件免受過熱影響。還通過視覺/聲音警告(閃爍的 LED 和蜂鳴器)通知用戶。
為了設計原理圖和 PCB,我使用了 Altium Designer 22 和 SamacSys 組件庫(Altium 插件)。我最初在面包板上測試了電路。我使用 Siglent SDM3045X 萬用表準確檢查電壓,并使用 Siglent SDS1104X-E 示波器檢查 PWM 脈沖的形狀、占空比和頻率。
風扇控制器技術規格
- 電源電壓:12VDC(見正文)
- 負載過溫保護:有(60度以上)
- PWM頻率:25KHz
- 風扇電壓:12VDC
- 最大負載電壓/電流:250V-10A (AC/DC)
- 有效溫度閾值:25C 至 60C
- 過溫警告:是(閃爍的 LED 和蜂鳴器)
電路分析
Figure 1 shows the schematic diagram of the PWM cooling FAN controller device. The heart of the circuit is an ATTiny13 microcontroller [1]. It reads the temperature values and decides what to do with the FAN, Relay, and the Buzzer.
According to the ATTiny13 datasheet: “The ATtiny13 is a low-power CMOS 8-bit microcontroller based on the AVR enhanced RISC architecture. By executing powerful instructions in a single clock cycle, the ATtiny13 achieves throughputs approaching 1 MIPS per MHz allowing the system designer to optimize power consumption versus processing speed.”
I have configured the clock source of the IC1 for 9.6MHz, internal. It is enough for our applications without using an external clock source, such as a crystal. R1 is a pull-up resistor for the Reset pin to prevent the MCU to Reset unwantedly. C2 and C3 are decoupling capacitors to reduce the noise of the +5V supply.
Power Supply for Fan Controller
電源的主要元件是REG1,它是一個78L05穩壓器。我為此調節器選擇了 SO-8 封裝。P5 是一個兩針公 XH 連接器,為控制板和風扇供電。電源電壓 (12V) 的電流取決于連接的風扇數量,否則 +5V 電源軌的電流消耗非常低。R7和C7在輸入端構建了一個低通RC濾波器,以盡可能降低輸入噪聲,但RC濾波器上的壓降對穩壓器的工作影響不大。D3 是一個 0805 綠色 LED,用于顯示正確的電源供應,R8 將電流限制到 D3。C5 和 C7 用于降低輸出電壓噪聲。
警報
此部分的組件是 R5、R6、P4 和 D2。D2 是一個 0805 紅色 LED,當發生過熱時會閃爍。R5 限制 D2 電流。P4 為 2 針 XH 公頭連接器,用于連接 5V 蜂鳴器。R6 限制蜂鳴器的電流。
中繼
該部分的組件是 Q1、D1、R4、C4、K1 和 P3。K1 是一個 12V-10A 繼電器,用于在發生過熱時關閉負載。它是常閉(NC),這意味著負載是打開的。D1 保護 Q1 免受繼電器電感器的反向電流的影響,C4 抑制電流尖峰。Q1 是一個 2N7002 [3] Mosfet,用于切換繼電器。R4 用于拉低 Q1 的柵極引腳以避免不必要的觸發。
LM35 溫度傳感器
P1 是一個 3 針公 XH 連接器,用于將 LM35 傳感器連接到電路板。您應該使用導熱膠將 LM35 安裝在散熱器上,并使用短線將傳感器連接到電路板。C1 是一個去耦電容,用于降低噪聲。
用于風扇控制器的 AVR ISP 編程器
ISP 是一個 5 針公頭,用于對板載微控制器進行編程。您可以使用任何您喜歡的編程器,例如便宜的 USBasp 編程器或類似的編程器。
12V 風扇散熱
P2 是一個 3 針 XH 公頭連接器,用于將風扇連接到電路板。Q2 用于將 PWM 脈沖傳輸到風扇的控制引腳。R2 是一個 10K 的上拉電阻,可將 5V PWM 信號電平轉換為 12V。R3 是一個下拉電阻器,以避免不必要地觸發 Q3 的柵極引腳。圖 2 顯示了一個典型的 Intel CPU 風扇,它可能是您使用此控制器板冷卻組件的選項之一。
PCB布局
圖 3 顯示了設計的 PCB 布局。它是一個兩層 PCB 板,除了繼電器和連接器外,其他組件都是 SMD。最小的封裝尺寸是 0805,焊接組件應該沒有任何問題,盡管您可以訂購它完全組裝。
當我決定為這個項目設計原理圖和 PCB 時,我意識到我的組件庫存儲中沒有 Q1 、Q2、REG1 和 IC1 的組件庫。因此,像往常一樣,我選擇了 IPC 級 SamacSys 組件庫,并使用免費的 SamacSys 工具和服務安裝了缺少的庫(原理圖符號、PCB 封裝、3D 模型)。導入庫有兩種方法:您可以訪問componentsearchengine.com并手動下載并導入庫,或者您可以使用SamacSys CAD插件并自動將庫導入/安裝到設計環境中。圖 4 顯示了所有支持的電子設計 CAD 軟件. 很明顯,所有著名的球員都得到支持。我使用 Altium Designer,所以我使用 SamacSys Altium 插件安裝了缺少的庫(圖 5)。圖 6 顯示了 PCB 板和裝配圖的 3D 視圖。
微控制器代碼
我使用 Arduino IDE 編寫和編譯微控制器的代碼。我在庫管理器中安裝了 MicroCore ,以便能夠為 ATtiny13 編譯代碼。你可以考慮下面的代碼:
#include
// Clock at 9.6MHz
#define F_CPU 9600000
const int PWMPin = 1;
analog_pin_t PotPin = A3;
const unsigned char relayPin = 0, buzzerPin = 4;
unsigned int rawTemp = 0, out = 0;
unsigned char counter = 0;
void setup()
{
analogReference(INTERNAL1V1);
pinMode(PWMPin, OUTPUT);
pinMode(relayPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
digitalWrite(relayPin, 0);
digitalWrite(buzzerPin, 0);
// Phase Correct PWM Mode, no Prescaler
// PWM on Pin 1(PB1), Pin 0(PB0) disabled
// 9.6MHz / 192 / 2 = 25Khz
TCCR0A = _BV(COM0B1) | _BV(WGM00);
TCCR0B = _BV(WGM02) | _BV(CS00);
// Set TOP and initialize duty cycle to zero(0)
OCR0A = 192; // TOP - DO NOT CHANGE, SETS PWM PULSE RATE
OCR0B = 192; // duty cycle for Pin 1(PB1)
}
void loop()
{
rawTemp = analogRead(PotPin) + rawTemp;
counter ++;
if (counter == 15) {
rawTemp = rawTemp / 15;
if (rawTemp < 232) {
OCR0B = 192;
} else {
out = map(rawTemp, 232, 558, 192, 0);
OCR0B = out;
}
if (rawTemp > 560)
{
emergency_OFF();
}
counter = 0;
rawTemp = 0;
}
_delay_ms(25);
}
void emergency_OFF() {
while (1) {
digitalWrite(relayPin, 1);
digitalWrite(buzzerPin, 1);
_delay_ms(250);
digitalWrite(buzzerPin, 0);
_delay_ms(250);
}
}
我已將 ADC 參考電壓定義為 1.1V 內部。這意味著對于 1100mV 的輸入電壓,ADC 的最大值為 1023。LM35溫度傳感器25度輸出電壓為250mV,60度輸出電壓為600mV。因此,它非常適合 ADC 輸入范圍,最高 110 度,無需任何硬件修改。
要更改閾值,您應該修改out = map(rawTemp, 232, 558, 192, 0),例如,將溫度上限閾值從 60 度增加到 70 度。
要安裝 MicroCore,您應該在 Arduino IDE 的首選項部分的Additional Boards Manager URLs中插入此 URL :
https://mcudude.github.io/MicroCore/package_MCUdude_MicroCore_index.json
圖 7 顯示了 Arduino IDE 的這一部分。
然后你應該去Tools菜單和Boards Manager并安裝MicroCore。然后您將看到已安裝的板,如圖 8 所示。
要生成 HEX 文件并對 MCU 進行編程,您應該轉到Sketch菜單并按Export Compiled Binary。圖 9 顯示了該過程的圖片。
然后只需將您的編程器連接到 PCB 板的 ISP 接頭并編程 MCU。熔絲位應設置在9.6MHz 內部時鐘上,沒有時鐘分頻。
測試
從 YouTube 視頻中可以清楚地看出,在設計原理圖和 PCB 之前,我在面包板上測試了電路。因此,您可以確保一切正常。圖 10 顯示了 FAN 控制器引腳的 PWM 信號。我使用 Siglent SDS1104X-E 示波器捕獲信號。
風扇控制器物料清單
圖 11 顯示了該項目的材料清單和零件編號。
審核編輯:劉清
-
微控制器
+關注
關注
48文章
7552瀏覽量
151423 -
PWM
+關注
關注
114文章
5186瀏覽量
213939 -
RC濾波器
+關注
關注
0文章
75瀏覽量
16665
發布評論請先 登錄
相關推薦
評論