Hi,

letztes Mal hatten wir uns mit dem Servo ein Bauteil angeschaut, dass dem Arduino sehr genau positionierbare Bewegungen ermöglicht. Das ist einer der wichtigen Fälle, wie in der Technik Bewegungen umgesetzt werden. Ein weiterer Standardfall ist, dass man eine fortlaufende Drehbewegung erzeugen möchte.

Jetzt kommt Bewegung ins Spiel

Das ist für alle Antriebe nötig, egal ob du eine Schiffschraube, den Rotor eines Hubschraubers oder ein Bodenfahrzeug antreiben willst. Heute schauen wir uns dafür nach dem Servo eine andere wichtige Art von Elektromotor an, den Gleichstrom-Motor oder DC-Motor.

Als weiteres sehr wichtiges Bauteil wirst du den Transistor kennenlernen. Und um das Ganze wieder in ein nützliches kleines Rahmenprojekt einzubinden, habe ich mir überlegt, dass wir eine Lüftersteuerung entwickeln.

Dass elektronische Geräte gekühlt werden müssen, ist ein alter Hut. Je mehr Leistung umgesetzt wird, desto wärmer werden die Baugruppen und Bauteile und die feinen Halbleiterstrukturen können durch zuviel Hitze zerstört werden. Daher hat jeder PC  mehrere Lüfter eingebaut, die eine zu große Erwärmung der wichtigen Bauteile verhindern sollen.

Wie wäre es, wenn wir einen Lüfter bauen, der sich bei Überschreiten einer kritischen Temperatur automatisch einschaltet? Den kannst du dann als Kühleinheit für andere Projekte verwenden, bei denen leistungsstarke Bauteile zum Einsatz kommen.

Wir verwenden einen kleinen Lüfter, wie du ihn im  Elektronikladen kaufen kannst. Stattdessen kannst du aber auch einen „nackten“ Gleichstrommotor wie in der Abbildung verwenden und die Rotorblätter selbst bauen.  Ventilatorblätter gibt es auch im Modellbau-Shop kaufen, oder du hast sogar die Möglichkeit, einen 3D-Drucker zu benutzen, dann druckst du dir die Rotorblätter einfach selbst aus!

Achte in jedem Fall darauf, dass der Lüfter oder Motor auf 5V Betriebsspannung ausgelegt ist und möglichst nicht mehr als 250 mA Strom zieht. Falls er doch mehr Strom benötigt, versorge den Arduino nicht über den USB-Port eines Rechners mit Strom, sondern verwende ein externes Netzteil.

Ansonsten brauchst du noch folgende Bauteile:

  • 1 x Widerstand 270 Ohm
  • 1 x Diode 1N4001
  • 1 x Transistor PN2222
  • 1 x DC-Motor oder Minilüfter 5V

Für die Temperaturmessung:

dcmotor
Kleiner DC-Motor
minifan
Mini-Lüfter

Kommen wir also zur Motorsteuerung. Um den Stromfluss durch den Motor von den digitalen Ausgängen des Arduino zu trennen, kommt ein Transistor zum Einsatz.

Der Transistor: Ein Ventil für elektrischen Strom

Ein Transistor ist wie ein Ventil für elektrischen Strom. Er hat drei Anschlüsse. Einer davon, die sogenannte Basis (B), steuert den Strom, der durch die beiden anderen durchgeleitet wird. Man nennt sie Kollektor (C) und Emitter (E). Grob gesagt lässt die Kollektor-Emitter Strecke umso mehr Strom durch, je größer die Spannung an der Basis ist. Der Sinn des Ganzen? An der Basis genügt ein winzig kleiner Strom, um einen großen Effekt zu erzielen. Du kannst also mit kleinen Steuerströmen viel größere Leistungen kontrollieren. Ein Verstärker!

Genau dafür wurden die ersten Transistoren auch eingesetzt, daher kommt auch der heute noch gängige Begriff des Transistor-Radios. Aber nicht nur, um ein schwaches Signal zu verstärken kommen Transistoren zum Einsatz, inzwischen ist die wichtigste Eigenschaft ihre Verwendung als elektronische Schalter. Abhängig vom Pegel an der Basis lässt sich der Transistor an- und ausschalten. So repräsentiert man elektronisch die 0- und 1-Zustände eines Bits, das ist die Grundlage der gesamten Digitaltechnik. Eine moderne CPU vereinigt mehr als eine Milliarde Transistoren auf einem Chip klein wie ein Fingernagel.

Ein NPN-Transistor mit Schaltsymbol
Ein NPN-Transistor mit Schaltsymbol

Wir verwenden mit dem PN2222 einen günstigen Allzwecktransistor, der in einem sogenannten TO-92 Gehäuse sitzt. Die drei Anschlussbeinchen passen perfekt ins Breadboard.

Damit kann der Arduino über die Steuerausgänge Geräte mit hoher Leistung ansteuern, ohne dass die Ausgänge selbst nennenswert belastet werden.  Denn der DC-Motor verbraucht schon etwas mehr Strom, verglichen mit den LEDs oder dem LCD-Display, die bisher in den Projekten zum Einsatz kamen. Über eine Transistorstufe kannst du im Prinzip beliebig starke Motoren ansteuern, natürlich reicht dann aber irgendwann die Stromversorgung über die USB-Schnittstelle nicht mehr aus.

Schauen wir uns den Schaltplan an:

Motor_Ansteuerung_Schaltplan

Der digitale Pin 13 wird über einen 220 Ohm Vorwiderstand an die Basis des Transistors gelegt.

Steht der Ausganggspegel auf LOW, dann ist der Transistor geschlossen und der Motor steht. Sobald der Arduino den Pegel von Pin 13 auf HIGH anhebt, schaltet der Transistor durch. Er ist jetzt wie eine leitende Verbindung und der Motor beginnt zu drehen.

Beim PN2222 ist immer das mittlere Anschlussbeinchen die Basis. Zeigt die runde Seite des Gehäuses von dir weg, dann ist der Emitter (E) links und der Kollektor (C) rechts.

Die Diode schützt den Arduino

Auch die Diode bauen wir ein, um den Arduino zu schützen. Ein Gleichstrommotor wandelt nicht nur elektrische Energie in Bewegung um, sondern funktioniert genauso gut umgekehrt, also als Generator: Wenn die Welle des Motors bewegt wird, dann entsteht an den Anschlüssen eine Spannung.

Schaltet man die Versorgungsspannung bei laufendem Motor plötzlich aus, dann läuft der Motor noch etwas nach. Dadurch entstehen Spannungsspitzen, die der Betriebsspannung entgegengesetzt sind. Die sind nicht gut für die empfindlichen Schaltkreise des Mikrocontrollers, daher überbrücken wir den Motor in dieser Richtung mit einer Diode. Die Diode lässt den Strom nur in einer Richtung durch. Für die positive Spannung in Laufrichtung des Motors ist die Diode in Sperrrichtung geschaltet, stört also nicht. Negative Spannungsspitzen beim Abschalten werden aber einfach kurzgeschlossen.

Hier siehst du den Aufbau der Motorsteuerung auf dem Breadboard:

Motor_Ansteuerung_Steckplatine

Der zugehörige Sketch zum Testen schaltet den Motor alle 10 Sekunden kurz ab:

Und so sieht der Aufbau auf einem kleinen Breadboard aus:

dcmotorsteuerung
Die DC-Motorsteuerung mit Transistor und Diode

Der Motor bzw Ventilator läuft? Prima, dann  kommen wir nun zur Temperaturmessung.

Und mal wieder Temperaturmessung

Letztes Mal hatten wir dafür den DHT11 Sensor verwendet. Wenn du das Projekt nachgebaut hast, dann weißt du, dass dieser Sensor die Temperatur nur in 1 Grad Schritten ausliest. Der DHT11 wurde speziell für die Erfassung von Lufttemperaturen konzipiert, um ihn in Wetterstationen einzusetzen.  Doch um die Temperatur eines elektrischen Bauteils zu messen, stellen wir etwas andere Anforderungen: Der Sensor sollte direkten Kontakt mit dem Bauteil haben können, um dessen Temperatur möglichst genau zu messen. Außerdem sollte er eine genauere Messung liefern, als nur in ganzen Gradschritten. Daher entscheiden wir uns für den TMP36 Temperatursensor.

Äußerlich sieht er dem Transistor täuschend ähnlich, denn auch er steckt in einem Standardgehäuse für Halbleiter-Bauelemente.

An die beiden äußeren Anschlüsse kommt eine Spannung zwischen 3 und 5 Volt. Dabei ist GND rechts, wenn die Rundung des Gehäuses von dir weg zeigt.

Der mittlere Anschluss dient dann zum Auslesen der Temperatur. Bei einer Temperatur von 0 Grad liegen genau 0.5 V an,  pro Grad Temperaturdifferenz ändert sich die Spannung am mittleren Pin um 10 mV.

Aus der Ausgangsspannung V in Volt  erhältst du daher die Temperatur in °C nach der Formel:

Wir verbinden den TMP36 mit der 5V-Versorgungsspannung und legen den mittleren Pin an den analogen Eingang 0.

Damit lässt sich die Temperatur schon bestimmen, die wir mit folgendem Sketch an den seriellen Monitor schicken:

aufbau
Der komplette Aufbau mit Lüftungsventilator und Temperatursensor

Alles geregelt dank Arduino

Jetzt müssen wir nur noch die Temperaturregelung und das Schalten des Lüfters per Software verbinden. Du hast sicher schon längst eine Idee, wie das gemacht werden kann.

Einfach den Ventilator per If-Abfrage einschalten, sobald eine bestimmte Grenztemperatur überschritten wird. Und genauso schalten wir ihn wieder ab, wenn die Temperatur unter einen vorgegebenen Schwellenwert sinkt und damit die Bauteile wieder vor dem Hitzetod sicher sind.

Du solltest dabei  immer die Ausschalttemperatur um ein paar Grad niedriger wählen, als die Einschalttemperatur. Diesen Abstand zwischen den Schaltpunkten nennt man Hysterese. Dadurch wird sichergestellt, dass der Ventilator genug Zeit hat zum Anlaufen und einen stabilen Luftstrom aufzubauen.

Wenn Aus- und Einschaltwert gleich wären, dann würden in diesem Temperaturbereich durch Messfluktuationen ständig Schalvorgänge ausgelöst und das würde die Bauteile zu stark belasten,  der ganze Regelvorgang würde damit schlechter funktionieren. Deswegen ist eine solche Hysterese immer Standard, wenn bei einer elektronischen Regelung ein bestimmter Schwellenwert einer Messgröße benutzt wird, um etwas ein- und auszuschalten.

Hier kommt der Code für die Regelung:

Die Ein- und Ausschaltpunte werden mit den Variablen EinTemp und AusTemp  definiert.

Um die Temperatur eines Bauteils zu überwachen, lötest du am besten den Temperatursensor an drei Drähte an und befestigst das Gehäuse des TMP36 über etwas Wärmeleitpaste mit dem zu überwachenden Bauteil. Den Ventilator kannst du mit Klebstoff oder Schrauben so fixieren, dass der Luftstrom über das zu kühlenden Bauteil streicht.

Denkbar wäre als Erweiterung natürlich auch, das LCD-Display wieder einzubauen und als Temperaturanzeige zu verwenden. Dieses könnte bei einer Geräte-Konstruktion dann außen am Gehäuse angebracht werden.

Den Ideen für eine  Anwendung sind wie immer keine Grenzen gesetzt. Wenn du ein Terrarium oder Gewächshaus hast, könntest du z. B. auch wieder den DHT11 (oder den DHT22) als Temperatur- und Feuchtesensor einsetzen und einen Ventilator zur Klimaregulierung  einsetzen. Damit könntest du dann zusätzliche zur Temperatur auch die Luftfeuchtigkeit im Terrarium überwachen und regeln.

Eine Anmerkung aber noch: Wenn ein stärkerer  Motor über die Stromversorgung des Arduino läuft, kann es passieren, dass bei laufendem Motor elektromagnetische Störungen an den analogen Eingängen auftreten. Das erkennst du daran, dass der angezeigte Temperaturwert einige Grad nach oben springt, sobald der Motor anläuft.

Dies kann ein Problem werden, wenn die Schwankungen in derselben Größenordnung sind, wie der Abstand zwischen Ein- und Ausschaltpunkt. Hier hilft es, die gemeinsamen GND-Kontakte von Motor und Sensor möglichst kurz zu halten, damit Störungen weniger gut einstreuen können.

Gänzlich abschalten lässt sich der Effekt leider nicht und wenn er zu stark wird, hilft nur eine externe Motorsteuerung, zum Beispiel über ein Arduino-Shield.

Soviel für heute, viel Spaß beim Nachbau und bis zum nächsten Mal!

Eine temperaturgeregelte Lüftersteuerung

3 Gedanken zu „Eine temperaturgeregelte Lüftersteuerung

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.