Hallo,
ich arbeite mich grade in Arduino ein und wollte fragen, ob folgende
Gedanken relativ korrekt sind:
Ich habe einen Arduino Uno. Ziel ist es, einen Regelkreis aufzubauen,
der die Geschwindigkeit eines FAN auf Basis von Sensor-Informationen und
Poti etc. pp. steuert. So weit möchte ich aber noch gar nicht gehen. Mir
geht es zunächst einmal um eine einfache Transistor-Schaltung.
Mein 1,5Watt-FAN will mit 12V betrieben werden und wird sicher auch mehr
als die 40mA "fressen" als mit an einem Digital out/PWM Pin des Arduino
zur Verfügung stehen.
Daher hatte ich, um den FAN in Betrieb zu setzen, an eine Schaltung
gedacht, die an einem Digital-Out-Port beginnt (Randfrage: Wo schließe
ich den Miunus-Pol an? Einfach an einen beliebigen GRD-Pin?). Dabei
setze ich einen Transistor ein der einen anderen Stromkreis
öffnet/schließt.
Der Stromkreis zur Versorgung des FAN beginnt am Plus-Pol des 12V-Akkus,
geht zum Transistor, "hinter" dem Transistor haben wir den Plus-Pol des
FAN anschließend hängt der Minus-Pol des FAN am Minus-Pol des Akku.
Schließt der Transistor per digitalWirte(fanControlPin, HIGH)-Aufruf den
Stromkreis, sollte der FAN in Gang gesetzt werden. Bei
digitalWrite(fanControlPin, LOW) sollte der FAN wieder aus schalten.
fanControlPin referenziert den Digital-Pin, an dem die
Transistor-Schaltung beginnt.
Hier das Data Sheet von meinem FAN (SUNON GB1205PKV1-8AY.GN):
http://www.farnell.com/datasheets/35129.pdf
Außerdem möchte ich neben an/aus auch die Geschwindigkeit des FAN regeln
können.
Mein Gedanke war nun: Klasse, der Digital-Pin ist ja schon PWM-fähig!
Was, wenn ich also einfach in der loop() mit einem variablen Zeitabstand
z.B. 25ms arbeite und ständig zwischen HIGH und LOW wechsele --- dann
müsste sich doch durch den dadurch entstehenden kontinuierlichen
Zeitabstand in der Stromversorgung die Drehgeschwindigkeit des FAN
gleichmäßig regeln lassen? Der FAN sollte sich dann desto langsamer
drehen, desto höher der Zeitabstand zwischen den einzelnen HIGH und
LOW-digitalWrite()-Aufrufen ist. (Wäre dann, wie bei einer LED die per
PWM-Schaltung ja auch ständig ein/aus geschaltet wird und das Auge
erkennt sie als heller/dunkler je kleiner/größer der Zeitabstand ist)
Nun meine Fragen:
- Habe ich das soweit richtig verstanden, dass das funktionieren müsste,
um den FAN mittels Arduino korrekt zu betreiben/schalten?
- Welchen Transistor muss ich verwenden?
- Brauche ich irgendwo noch Vorwiderstände oder ähnliches?
- Oder gibt es vl. noch einen einfachen (ich bin Anfänger!)
alternativen Weg, der eleganter ist um meine o.g. Ziele zu erreichen?
- Welchen 12V-Akku-Typ verwendet man typischerweise zum Betrieb von
FAN's? (Ich möchte Arduino später auch über diesen Akku versorgen!)
Vielen vielen Dank schon mal im Voraus!
p.s. Als Softwareentwickler habe ich ein gewisses Grundverständnis und
die Arduino-Programmierung fällt mir leicht, aber mit Elektronik kenne
ich mich noch nicht so gut aus. Ich streng mich aber an. Wenn ich das
hier Stück für Stück auf die Reihe bekomm, möchte ich das ganze Zeug
gern Open Source veröffentlichen - es soll irgendwann mal eine coole,
autarke Holzofen-Steuerung werden :-)
LG
...ich habe noch etwas gegoogelt und bin dabei auf folgende Spec
aufmerksam geworden:
http://www.formfactors.org/developer%5Cspecs%5C4_Wire_PWM_Spec.pdf
Bedeutet das, ich kann einen FAN nur per PWM regeln, wenn er einen PWM
Input hat oder klappt das auch auf meine, zugegeben primitive Art &
Weise mit dem Transistor?
Ich könnte dann ja den Transistor weiterhin verwenden um AN/AUS zu
schalten. Für die PWM-Steuerung verwende ich dann einen anderen Digital
Out/PWM Pin vom Arduino?
Irgendwie wär's aber doch elegant, es in einem Schwung zu regeln...?
(Oder geht das dann zu Lasten der Langlebigkeit von Transistor und FAN)
Mike Mike schrieb:> FAN musst du genauer spezifizieren.
Ja, ich bin z.B. ein FAN der dieses Jahr neu in die Bundesliga
kommenden Eintracht Braunschweig. :-)
Gruss
Harald
Danke erstmal für eure Antworten :-)
@Mike: Ich hab in meinem Beitrag einen Link zum Datenblatt meines FAN's
geschrieben. Hier nochmal: http://www.farnell.com/datasheets/35129.pdf
Könnte ich den mit o.g. Plan regeln?
Danke euch!
Also zuerst mal glaube ich, dass es in dem Link, den du gepostet hast,
um die Lautstärke geht, die ein FAN mit 4-Wire PWM bzw. mit einer 3-Wire
PWM erzeugt (also die meinen dass der FAN bei einem 4er weniger Laut ist
als bei einem 3er).
Jetzt zu deiner Schaltung:
Die Idee ist schon ganz gut. Also dem Transistor sollte es wegen dem
dauernden ein und ausschalten nichts tun. Ich bin mir jetzt aber nicht
ganz sicher ob das für die Batterie so gut ist, da ein Motor immer sehr
hohe Einschaltspitzen hat. Ich weis jetzt nicht genau ob das auch so
ist, wenn sich die Felder der Spulen im Motor noch nicht ganz abgebaut
haben. Wahrscheinlich ist dann die Einschaltspitze etwas niedriger. Aber
am besten probierst du es einfach aus ;) oder du wartest bis einer
antwortet der sich besser damit auskennt.
Jetzt zum Transistor:
Am besten du nimmst einen MOSFET. Der benötigt ganz wenig Basisstrom. Du
musst aber auf den Maximalstrom achten. Dein FAN braucht mit 1.5 W bei
12V 125mA. Das sollte sogar ein BC547 aushalten (ja ich weis im
Datenblatt stehen 100mA). Aber wie gesagt der MOSFET braucht halt
weniger Basisstrom (ich weis jetzt nicht genau wie viel der Arduino
bringt).
Bei der Batterie weis ich jetzt auch nicht wirklich weiter. Ich hätte
einfach 2 9V Blöcke in Reihe geschalten (die Alkali-Mangan haben 500mAh)
und das ganze mit einem Spannungsteiler auf 12V geteilt. Da werden zwar
die anderen 6V verheitzt aber gut... (du kannst auch 8 1.5V Batterien in
Reihe schalten, dann kommst du genau auf 12V).
So ich hoffe du kennst dich jetzt besser aus!
lg
@Samuel
Danke Dir, das hilft mir auf jeden Fall schon mal ein Stückchen weiter
:-)
Der Arduino liefert btw. 5V und max. 40mA am digitalen Ausgangs-Pin.
Ich habe noch ein bischen gelesen und erfahren, dass man wohl sowas
einsetzen könnte:
http://www.irf.com/product-info/datasheets/data/irf9540.pdf
Für das direkte Durchschalten an einem Digital-Pin 0/5V habe ich
gelesen, dass man aus - mir unverständlichen Gründen - noch eine
"Transistorvorstufe" bräuchte.
Kann mich da jemand bitte aufklären? :-)
Vielen Dank!
Danke Hubert, das hilft mir richtig weiter.
Damit ich die Schaltung mal detaillierter darstellen kann, bin ich noch
auf der Suche nach einem Programm (das bestenfalls auch unter Mac OS X
läuft - ich kann aber auch die VM bemühen) womit ich die Schaltung
zeichnen kann.
Bestenfalls kennt das Programm Arduino Uno, damit ich das einfach
"wiren" kann. Gibt's da sowas wie Simulation?
Wenn es ein paar Euro kostet, ist das auch kein Weltuntergang.
Vielen Dank!
Also ich kenne jetzt nur ein gutes Simulationsprogramm
Es heißt Altium. Da kannst du auch sehr gut Schaltungen zeichnen, sie
dann auch, wenn es ein größeres Projekt ist, in ein PCB umwandeln und
dann eine Platine fertigen lassen. Das kostet aber mehr als nur ein paar
Euro :D
aber es gibt bestimmt noch andere kostenlose. Google mal
Der von dir angegebene FET würde in deinem Fall zwar sicher
funktionieren, wenn du aber einmal eine etwas größere Leistung schalten
willst, hat er sicher Probleme. Es ist kein Logiklevel-FET. Nimm einen
IRLZ34, der ist besser geeignet.
Klasse, vielen Dank für die umfangreiche Hilfe!
Ich habe EAGLE gefunden. Dafür gibts das Arduino Uno PCB-Layout auch als
Import:
http://arduino.cc/de/uploads/Main/arduino_Uno_Rev3-02-TH.zip
Das werde ich dann mal alles besorgen, Schaltung zeichnen.
Alles auf ein Bread Board bauen und erstmal den FAN mit nem
Labor-Netzteil und das Arduino Uno per USB versorgen.
Dann bau ich mir das Akku Pack zusammen, messe alles durch, und klemme
den FAN dann an das Akku-Pack. (Da brauch ich dann vl. noch nen
Vorwiderstand für etwaige Spannungsspitzen des Akku-Pack, oder?)
Anschließend klemm ich Arduino ebenfalls an das Akku Pack. (Arduino Uno
hat nen 12V-Eingang)
Mach ich dann von der Vorgehensweise her soweit alles richtig?
Danke euch & LG!
Es gibt spezielle Mosfets die man direkt an einen Logischen Ausgang
anschliessen kann, z.B. den IRLU 120N
Du schließt den einfach an deinen Arduino an, dann den Lüfter in Reihe
mit dem Mosfet in die Stromversorgung.
Und dann sorgst du dafür dass dein Arduino am Ausgangspin ein PWM Signal
bereitstellt.
Wenn der Akkupack 12V hat und der Arduino einen 12V Eingang hat und auch
der Lüfter 12V, kannst das einfach anschliessen.
In dem Arduinoprogramm gibt es ja vorgefertigte Beispiele für PWM und
Analoge Werte einlesen (z.B. für Potis).
Mit einem Steckbrett sollte das schnell machbar sein.
Da kannst sehen wie jemand ein Mosfet auf dem Steckbrett verwendet:
http://www.pretzellogix.com/2011/03/08/exploring-the-netduino-3-building-the-circuit-on-a-breadboard/
Einfach ausprobieren. Das einzige worauf du achten solltest ist, dass
keine 12V an einem I/O Pin des Arduinos anliegen
Wir haben hier einen Step-Up Wandler gebaut, um die 5V des Arduino auf
die 12 Volt des Lüfters zu erhöhen. Getestet werden sollen die Lüfter
selber, und das mit einem kleinen Kästchen, dass man nur am USB-Port
anschliesst.
Benutzt wird eine kleine Schaltung mit dem Mc34063.
http://www.mikrocontroller.net/articles/MC34063
Da brauchte es dann keinen zusätzlichen 12V Eingang.