2 Kanal Lüfterregelung, temperaturabhängig | |
---|---|
Entwickler | Stefan Gänsler |
Aktuelle Version | 0.1 |
Datum | 30.03.2013 |
Status | fertig |
Lizenz | GPLv3 |
Kontakt | bitte klicken |
Download |
Beschreibung
Ziel:
- Beruhigung zweier Lüfter ohne Gefährdung der Elektronik (somit temperaturgeregelt)
- Realisierung mit vorhandenen Bauteilen als Feierabend-Projekt
- Spannungsversorgung des Mikrocontrollers aus Spannung des ersten Lüfters (>= 7 V); Bauteile von Kanal 2 können ohne Seiteneffekte weggelassen werden
- Regellogik: T < 25 °C: Lüfter komplett aus. T > 50 °C Lüfter komplett an. Dazwischen wird eine stufenlose Zweipunktregelung realisiert.
Projekt war von der Code-Qualität und -Dokumentation nicht zur Veröffentlichung gedacht, auf Wunsch von lighter habe ich es hiermit veröffentlicht. Support oder Garantie kann nicht gegeben werden.
Entwurfsgrundlagen
- Lüftersteuerung soll bzgl. Temperatursensoren Fail-Safe sein. Wenn beim Starten kein Temperatursensor erkannt wird (oder dieser im Betrieb abgesteckt wird), läuft der entsprechende Lüfterkanal einfach voll.
- bei Inbetriebnahme laufen die Lüfter die ersten 5 Sekunden voll, dient v.a. der optischen Fehlererkennung bei defektem Lüfter
- gemächliche Regelcharakteristik um Schwingen des Regelkreises zu eliminieren (eine Temperaturmessung pro Sekunde, Änderung der Lüftergeschwindigkeit erst wenn Temperaturdifferenz > 1 °C)
- beim Einschalten eines Lüfters läuft dieser erst 2 Sekunden voll, damit er anläuft
- PWM Grundfrequenz von 30 kHz, da Einbau in Audiosystem erfolgte
Bauteilliste
Bezeichnung |
Reichelt-Bestellnr. |
Bezeichnung |
Preis |
C1, C2, C4 |
KERKO 100N |
Abblock-Kondensator |
0,21 € |
C3 |
RAD FC 470/16 |
Stabiliserungskondensator |
0,23 € |
JP1 - JP7 |
SL 1X36G 2,54 |
Stiftleisten |
0,15 € |
R1, R2 |
METALL 39,0K |
Widerstände |
0,16 € |
NTC1, NTC2 |
NTC-0,2 10K |
NTC Temperaturfühler |
0,66 € |
T1, T2 |
IRLR 2905 |
N-MOSFET, TTL Pegel kompatibel |
1,10 € |
U$1 |
ATTINY 45-20SU |
Atmel ATtiny45-20SU |
1,05 € |
IC1 |
µA 7805 |
Spannungsregler 5V |
0,27 € |
Gesamt: |
2,73 € |
Preise: Stand 02.01.2015
zzgl. Basismaterial + Anschlussleitungen/Stecker
Platine
Quellcode
Zweipunktregelung
Fancontrol.c:149 und analog Fancontrol.c:169
fan1 = (32.0 / (237 - 98) * temp1 - 22.561);
Stellt die Gerade der Zweipunktregelung dar.
- 22,561 gibt den minimalen Wert der Lüftergeschwindigkeit an. Dieser Wert muss experimentell bestimmt werden. Dies ist der fan1 Wert, bei welchem der Lüfter sich in allen Anwendungsfällen sicher noch langsam dreht - anlaufen muss er bei diesem Wert nicht mehr, dafür wird automatisch gesorgt.
- 32,0 gibt die Steigung der Zweipunktregelung an. Muss so gewählt werden, dass am oberen Wert (50 °C bzw. ADC Messwert 98 ein Ergebnis von >= 0 herauskommt)
- 237 ist der ADC Messwert bei 25 °C (berechnet)
- 98 ist der ADC Messwert bei 50 °C (berechnet)
Fuses Mikrocontroller
So konfigurieren, dass der Mikrocontroller mit internem Oszillator auf 8 MHz läuft
Müsste Low = 0xE2 und High = 0xDC sein.
Temperaturmessung
Temperaturmessung findet einmal pro Sekunde statt, und wird mit T_n = (T_(n-1) + T_mess) / 2 geglättet
Platzierung der Temperatursensoren
- an der heißesten Stelle des zu überwachenden Bereichs (Lüfter läuft erst ab 25 °C an - wenn der Temperatursensor aufgrund eines fehlenden Luftstroms diese nicht erreicht, obwohl an anderen Stellen des Bereichs eine kritische Temperatur herrscht, ist der Temperatursensor falsch montiert)
- idealerweise außerhalb des direkten Luftstroms des Lüfters (Vermeiden von Schwingungen der Regelschleife)
- üblicherweise an Rand des Kühlkörpers (Anbringung mit Kabelbinder genügt, thermischer Kontakt ist ausreichend gegeben)
- Zuordnung Temperatursensor 1 -> Lüfter 1 muss logischerweise eingehalten werden
Verbesserungsvorschläge
- reines SMD-Layout entwickeln
- Quellcode überarbeiten + dokumentieren
- Bug im Quellcode: Wenn beim Start kein Temperatursensor erkannt wird, läuft der Kanal auch nach Anstecken des Temperatursensors weiterhin mit voller Leistung
- Bug im Quellcode: 2 Sekunden Totzeit bei Anlaufen des Lüfters blockieren Temperaturmessung und Regelung des jeweils anderen Kanals