Lüfterdrehzahl steuern und messen

Nachdem die Temperaturmessung und die Anzeige auf einem 7-Segement-Display funktioniert muss die Ansteuerung des Lüfters entwickelt und getestet werden. Zusätzlich soll die Drehzahl gemessen werden, wobei in erster Linie wichtig ist ob sich der Lüfter überhaupt dreht.

Aber erstmal ein paar Grundlagen.

Die Geschwindigkeit des Lüfters soll per PWM geregelt werden. PWM bedeutet Pulsweitenmodulation. Man stelle sich eine Lampe vor die man 5 Sekunden anschaltet und 5 Sekunden ausschaltet, die Lampe blinkt. Macht man das im Mikrosekundenbereicht sieht man das blinken nicht mehr, die Lampe leuchtet aber nur noch in der halben Helligkeit. Es entspricht meist nicht direkt der halben Helligkeit, aber es soll erstmal nur das Prinzip erklären. Verändert man das Verhaltnis zwischen eingeschalteter und ausgeschalteter Zeit wird die Lampe heller (mehr eingeschaltete als ausgeschaltete Zeit) bzw. dunkler (mehr ausgeschaltet aus eingeschaltet). Dieses Prinzip kann man auch auf einen Lüfter anwenden und darüber die Drehzahl regeln.

Die Mikrocontroller, somit auch der mega8, besitzen Timer. Diese können für bestimmte Zeitfunktionen genutzt werden. Unter anderem kann man die Timer für PWM konfigurieren. Es kann z.B. festgelegt werden das ein Timer innerhalb einer bestimmten Zeit von 0 bis 255 zählt. Weiterhin kann man festlegen das er bei einem Vergleichswert größer x einen Ausgang (der ist bei Hardware PWM auf einem festen Pin gelegt) auf high legt. Die restliche Zeit auf low. Durch die Veränderung von x kann man die Ein- und Ausschaltzeit festlegen. Die Lampe wäre heller oder dunkler bzw. der Lüfter wurde schneller oder langsamer drehen.

Dies erstmal zum allgemeinen Prinzip. Die Programmierung ist keine Problem. Der Timer muss konfiguriert werden und x entspricht einer Variable im Mikrocontroller.

Allerdings gibt es ein anderes Problem. Ein Mikrocontroller, auch die Anzeige und die Schieberegister, arbeiten mit 5 Volt. Ein normaler PC-Lüfter, wie ich ihn verwenden will, arbeitet mit 12 Volt. Also muss eine Schaltung her die aus den 5 Volt PWM-Ausgang 12 Volt PWM erzeugt. Da ich nicht sehr viel Ahnung von Elektronik habe unterstützte mich mein Vater in dieser Hinsicht. Er hat da einfach mal schnell was aufgemalt. ;-)

Das Prinzip ist einfach. Eine Transistorschaltung mit der 5 Volt PWM an der Basis schaltet die 12 Volt durch. Zusätzlich kommt noch ein Kondensator für die Glättung zum Einsatz. Da die PC-Lüfter bei einem direkten schalten der Betriebsspannung manchmal Brummgeräusche verursachen (wahrscheinlich durch eingebaute Elektronik) glättet der Kondensator die PWM geschaltete Betriebsspannung. Das Verhältnis von PWM zu Betriebsspannung ist dann zwar nicht mehr linear (50% PWM entspricht dann nicht 50% von 12 Volt) aber das soll erstmal nicht stören.

Pwm-ansteuerung-150x150 in Lüfterdrehzahl steuern und messen

Die zweite Sache ist das Auslesen des Tachosignales eines Lüfters um zu erkennen ob der Lüfter läuft oder nicht. Das Tachosignal ist ein Open-Kollektor-Anschluss, durch die Verschaltung mit 12 Volt wechselt dieser pro Umdrehung 2 mal zwischen GND und 12 Volt. Da das Signal an dem Mikrocontroller ausgewertet werden muss wird wiederum nur 5 Volt benötigt bzw. sind nur 5 Volt zulässig. Einfach nur ein Widerstand bringt nicht viel, da die Betriebsspannung durch das PWM nicht definitiv 12 Volt ist sondern schwank (etwa zwischen 5 und 12 Volt). Auch hier kann wieder eine Transistorschaltung angewandt werden um von der Spannung des Lüfters auf die 5 Volt für den Mikrocontroller zu kommen. Dieses umgewandelte Tachosignal wird an einen Interrupteingang des Mikrocontrollerst gelegt. Kurz ein Wort dazu. Man könnte das Tachosignal an einen ganz normalen Eingang am Mikrocontroller anschließen und diesen im laufenden Betrieb einfach auf Änderung (Wechsel von High nach Low bzw. Low nach High) kontrollieren. Problem ist aber das das Programm evtl. mal eine längere Berechnung oder sonstiges durchzuführen hat und man „übersieht“ einen dieser Flankenwechsel. Dafür gibt es Interrupts. Schließt man das Tachosignal an einen Interrupteingang so wird bei einer Änderung an diesem Eingang das laufende Programm unterbrochen und eine (von mir) festgelegte Routine durchgeführt. Ich zähle in dem Moment einfach eine Variable hoch. Danach wird das Hauptprogramm an der Stelle fortgesetzt wo es unterbrochen wurde. Es wird also kein Takt übersehen und das Hauptprogramm wird nur kurz unterbrochen (die Zeit kann eigentlich vernachlässigt werden). Da ich zwei Lüfter ansteuern will muss ich auch zwei Drehzahlen kontrollieren und der mega8 hat glücklicherweise genau zwei dieser Interrupteingänge. Auch bei dieser Schaltung hat mir mein Vati geholfen.

Luefterrueckmeldung-150x150 in Lüfterdrehzahl steuern und messen

Nun zum Test.

Die aufgemalte Schaltung hab ich auf einem Steckbrett zusammengesetzt. Das ganze habe ich mit dem bereits vorhandenen Aufbau mit Temperatursensor und Anzeige verbunden und es ging auf Anhieb. Wer hätte es gedacht. ;-)

Hardware Luefteransteuerung-150x150 in Lüfterdrehzahl steuern und messen Testlauf Lueftersteuerung-150x150 in Lüfterdrehzahl steuern und messen

Über PWM ist der Lüfter jetzt bzgl. der Geschwindigkeit einstellbar und das Tachosignal wird ausgelesen. Perfekt.

An dieser Stellen nochmal ein Dank an meinen Vati. Ist schon irgendwie beeindruckend wenn er in paar Minuten so ne Schaltung aufmalt und meint „passt schon“. Dann steckt man das dann zusammen und es passt tatsächlich. Da macht sich die jahrelange Erfahrung in dem Bereich bezahlt. ;-)


Kommentar schreiben

Deine Email-Adresse wird nicht veröffentlicht

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du dich damit einverstanden. Desweiteren verwendet diese Website den Open Source Webanalysedienst Matomo. Die Datenerfassung kann über das Impressum unter dem Abschnitt Matomo deaktiviert werden.

Schließen