Forum: Mikrocontroller und Digitale Elektronik Elektronische Drehzahlregelung eines Gleichstrom-Motors


von GFunk (Gast)


Lesenswert?

Hallo Elektronik-Spezialisten,

ich möchte einen kleinen Gleichstrom-Motor in der Drehzahl regeln. 
Konkret geht es um einen Lüfter, so wie er auch in PC-Netzteilen 
verwendet wird. Das ist eines meiner ersten Projekte, und ich würde mich 
über Unterstützung bei meinen Überlegungen echt freuen!!
Was gibt es da überhaupt für Möglichkeiten? Ich dachte gleich mal an 
einen Mikrocontroller, deswegen bin ich auch hier in diesem Forum 
gelandet. Bin nämlich günstig an einen ATmega-168 gekommen. Der ist 
vielleicht etwas übertrieben für so ein kleine Aufgabe, aber ich würde 
ohnehin gerne mal lernen wie so etwas funktioniert. Meine erste Idee: 
mit dem µC eine PWM ausgeben, die im Mittel ja wieder eine 
Gleichspannung unterschiedlicher Höhe ergibt. Dementsprechend müsste 
sich der Lüfter je nach Spannung unterschiedlich schnell drehen?
Oder kann ich auch ganz einfach einen MOSFET in Reihe zu dem Lüfter 
schalten und damit den Stromfluss steuern?
Ihr seht schon, ich bin noch ganz am Anfang mit diesem Vorhaben, aber 
für euch sind das sicher einfache Fragen. Für Hilfe also im voraus 
schonmal vielen Dank!
Mfg, GFunk

von Kai Klaas (Gast)


Lesenswert?

Warum willst du denn den Lüfter in der Drehzahl regeln? Um ihn leiser zu 
machen? Das geht oft schief, weil das PWM-Getakte dann oft nerviger ist. 
Temperaturgeregelte sind oft leiser.

Große PA-Endstufen verfolgen oft ein mehrstufiges Konzept. Sie haben 
zwei Lüfter und schalten entweder keinen, einen oder alle beide an.

Kai Klaas

von GFunk (Gast)


Lesenswert?

Wow, echt klasse wie schnell hier eine Antwort kommt ;-) Vielen Dank!
Also der Lüfter muss nicht leise sein. Ich betreibe ihn ja nicht im PC, 
sondern so auf dem Tisch. Später will ich ihn dann mal in eine Kiste 
einbauen, um darin die Temperatur konstant zu halten. Das Geräusch ist 
da erstmal zweitrangig. Mir geht es auch momentan eher um Unterstützung 
bei meinen Ideen was es überhaupt für Möglichkeiten gibt die Drehzahl zu 
regeln.
Also irgendwie muss ich doch die Spannung an den Klemmen des Lüfters 
einstellen? Was mir dazu einfällt ist ein Vorwiderstand, aber das ist 
unpraktisch, weil ich will es ja elektronisch regeln (mit einem µC), 
oder eben die PWM-Steuerung. Oder wie schon erwähnt: ich lege konstant 
12V an den Lüfter und versuche irgendwie den Stromfluss mit einem 
Transistor zu steuern falls das funktioniert.
Was sind das für temperaturgeregelte Teile von denen du sprichst?

von Kai Klaas (Gast)


Lesenswert?


von meima (Gast)


Lesenswert?

ich hab mal auch so was benötigt, allerdings hab ich das mit einem NE555 
gelöst.


http://www.atx-netzteil.de/pwm_mit_ne555.htm#Schaltung%202


Wenn du mit nem µC was machen willst, musst du dich mit dem 
Programmieren beschäftigen und einiges beachten. Ich weiß auch nicht wie 
fit du mit den µC´s bist.

Evtl. ist die Schaltung mit einem NE555 für dich besser.

Du hast bei der Schaltung ein Poti dran, mit dem du die Drehzahl steuern 
kannst

ich hab ma da mehrere Platinen gebaut

Geht auch zum Steuern der Helligkeit von LED´s

mfG

von GFunk (Gast)


Lesenswert?

ah, ok, der sieht nicht schlecht aus. Nur, wie kann ICH diesen Lüfter 
regeln? Ich möchte nicht dass er sich selbst regelt, sondern schon etwas 
flexibler sein, daher will ich es auch selbst bauen (abgesehen von dem 
Lerneffekt bei meinem neuen Hobby hier ;-)
Also stelle ich meinen bisherigen Plan mal etwas präziser vor, wennglich 
ich mich noch ganz am Anfang befinde und möglichweise nachher alles ganz 
anders mache. Momentan ist da der ATmega168, von dem ich noch nicht weiß 
wie er zu programmieren ist, aber das bringe ich mir gerade parallel 
bei. An einem Analogeingang lege ich eine Spannung an, von 3V bis 3,5V 
einstellbar über einfachen Spannungsteiler mit Poti. Hierüber will ich 
eine Temperatur vorgeben (später soll statt dem Poti eine 
Temperatursensor hin). Jedenfalls soll der Atmel dann eine PWM ausgeben 
und den Lüfter entsprechend ansteuern. Bei unter 3V am Analogeingang 
soll der Lüfter aus sein. Und bei 3,5V volle PWM. Habe gerade noch 
gegoogelt und bei ebm-pabst Lüfter gefunden die direkt ein PWM-Signal 
verarbeiten können. Hab aber nicht gefunden wie genau das funktioniert. 
Ansonsten muss ich mir noch was überlegen wie die PWM auf den Lüfter zu 
geben ist. Der Strom kann ja nicht vom Atmel kommen. Also muss ich da 
noch einen Transistor vorsehen?
Mfg, GFunk

von GFunk (Gast)


Lesenswert?

@meima: oh, der Beitrag hat sich gerade mit meinem überschnitten. Das 
mit dem NE555 ist auch ne gute Idee. Werde es mir gleich näher ansehen.

von GFunk (Gast)


Lesenswert?

Ich habe gerade die Schaltung von meima genauer studiert. Wenn das so 
funktioniert wäre es für mich echt die bevorzugte Lösung, zumal ich 
tatsächlich noch keine Ahnung habe wie der Atmel zu programmieren wäre. 
Aber irgendwie will ich das schon noch lernen, zumindest da ich ja jetzt 
schonmal einen habe.
Nun werde ich versuchen die Schaltung von meima an meine Bedürfnisse 
anzupassen und statt dem Poti einen temperaturabhängigen Widerstand 
einbauen (pt100). Werde dann später mal den Plan hier reinstellen. 
Bestimmt ergibt sich auch noch die eine oder andere Frage.

Aber zunächst vielen Dank an meima!! Super Plan!
btw: womit hast du den Schaltplan gezeichnet? sieht echt schön aus.

von David (Gast)


Lesenswert?

Das mit dem PT100 ist schonmal der richtige ansatz, wiso du den 
allerdings als ersatz fürs poti siehst, verstehe ich nicht ganz...
sinnvoll wär docvh ein pt100 um die temperatur zu messen, und ein poti 
(ich würd nen drehencoder bevorzugen) um die gewünschte temperatur 
einzustellen...
ob es sinnvoll ist die drehzahl zu regeln wäre eine andere frage, da der 
zusammenhang zwischen spannung und drehzahl nicht linear ist (drehzahl 
ist von der spannung abhängig nicht vom strom...) ich würde nen 2-punkte 
regler empfehlen, hätte den vorteil, dass du auch kein pwm benötigen 
würdest, sondern den lüfter einfach über einen mosfet an und ausschalten 
kannst...

von meima (Gast)


Lesenswert?

@GFunk:

also der Plan ist leider nicht von mir. Schau mal auf den besagten Link. 
Da steht unten eine kontaktangabe! ;-)

Freut mich, wenn ich dir helfen konnte ;-)
Mich würde dein Ideen auch sehr interessieren!
Schau dir mal die anderen Projekte auf der besagten Seite an, ist 
interessantes dabei!

von GFunk (Gast)


Angehängte Dateien:

Lesenswert?

Also das ist doch alles nicht so einfach. Wie immer halt ...
Die Schaltung von meima (s.o.) eignet sich für mich doch nicht so recht. 
Da kann ich zwar die Drehzahl einstellen, dann aber bleibt sie konstant 
so wie eingestellt. Ich will aber die Temperatur bestimmen, und in 
Abhängigkeit davon den Lüfter regeln, d.h. die Drehzahl ändert sich 
ständig. Das ist doch ein klassischer Anwendungsfall für den µC. 
Außerdem bin ich damit flexibel und kann in der Software auch eine 
andere Temperatur einstellen.
Nun habe ich den festen Entschluss gefasst mit dem µC weiter zu machen.

Also im Anhang mal mein Plan: Der PT100 ändert seinen Widerstand mit der 
Temperatur. Die sich einstellende Spannung über dem Spannungsteiler gebe 
ich an einen Analogeingang, und kann damit im Programm die exakte 
Temperatur bestimmen. Nun will ich in meiner Kiste konstant 30°C haben! 
Also bei 31° gebe ich volle PWM aus, d.h. der Lüfter dreht mit maximaler 
Drehzahl. Wenn die Temperatur sinkt, kann ich die Drehzahl verringern. 
Bei 29° mache ich den Lüfter aus.
Den MOSFET übernehme ich aus der Schaltung von meima, finde ich ganz gut 
so. Damit kann ich einen Standard-Lüfter verwenden, und brauche nicht so 
einen mit PWM-Eingang von ebmpabst besorgen.

Sodele, wäre super wenn ihr meinen Plan noch kommentiert, damit ich 
morgen mit der Programmierung beginnen kann (schätze das wird die größte 
Herausforderung ...).
@David: Das mit der 2-punkt-regelung meinst du so wie ich es jetzt auch 
geplant habe, oder? Das mit der Einstellung über Drehencoder habe ich 
nicht ganz verstanden. Kannst du es vlt. nochmal erläutern?

Ich wünsche einen schönen Abend!
Mfg, GFunk

von Philipp B. (philipp_burch)


Lesenswert?

Hallo GFunk,

das was du oben beschrieben hast (Bei 31°C ein, bei 29°C aus) ist eine 
Zweipunktregelung. Für einfache Zwecke (Ohne übermässige 
Genaugikeitsanforderungen) reicht das aus und funktioniert auch ganz 
gut. Wenn es genauer sein soll, müsste schon ein "richtiger" Regler her. 
Bei den "gewöhnlichen" Lüftern aus PCs wirst du aber mit PWM 
höchstwahrscheinlich ein Problem bekommen. Nicht unbedingt wegen dem 
Pfeifen, sondern weil du die Lüfterinterne Steuerung damit 
durcheinanderbringst. Das sind ja nicht einfache DC-Kollektormotoren, 
sondern elektronisch kommutierte Synchronmaschinen (Oder sowas in der 
Art). Jedenfalls ist eine gescheite Drehzahlsteuerung meistens nur per 
Analogspannung möglich. Oder halt mit einem dafür ausgelegten Lüfter.

von Mike H. (-scotty-)


Lesenswert?

@GFunk
Ich lese aus deinem Beitrag das du mit µC noch keine Erfahrung hast.
Daher mein Tipp erst mal das Tutorial des Forums Schritt für Schritt
durchzuarbeiten und nicht gleich mit PWM zu beginnen. Die Tools muss
man ja auch erst mal in den Griff bekommen.

von Hans (Gast)


Lesenswert?

Mein Tipp:

Verwende einen PC-Lüfter mit 4 Pin Anschluss: dann brauchst du keinen 
Mosfet und hast weniger Probleme mit der Ansteuerung.

Prinzipiell kannst du auch noch die Drehzahl bestimmen.

von GFunk (Gast)


Angehängte Dateien:

Lesenswert?

Sodele, das mit der Programmierung wird schon klappen. Ich brauch immer 
ein konkretes Ziel um sowas zu lernen. Und in diesem Forum bin ich ja 
genau richtig ;-)

Habe eben meinen Schaltplan nochmal angepasst. Eine 2-punkt-regelung 
über +/-1° finde ich schon ziemlich genau. Der PT100 ändert seinen 
Widerstand dabei um weniger als 1 Ohm. Nach meiner Berechnung kann das 
der µC mit 10bit garnicht auflösen. Deshalb habe ich nun noch einen 
Differenzverstärker davor gebaut. Der PT100 hat bei Raumtemperatur ca. 
110 Ohm. Darauf stelle ich auch das Poti ein, und verstärke dann die 
Differenz um den Faktor 82. Für meinen Fall ergibt das dann einen Hub 
der analogen Spannung um ca. 0,6V bei einer Temperaturerhöhung von 1°. 
Das sollte der µC erkennen.

Bezüglich Lüfter nehme ich dann halt doch so ein Modell von ebm-pabst 
mit direktem PWM-Eingang. Habe nur keine Ahnung wie der anzuschließen 
ist. Wozu ist denn der vierte Anschluss? Hier habe ich mal so Lüfter 
gefunden:
http://www.pcsilent.de/de-pd-Papst-Luefter-4412-F_2GP-120mm-PWM-Luefter-Pabst-Luefter-PWM-Steuerung-633.html
Nur finde ich halt kein Datenblatt dazu...
Würde mich echt freuen wenn mir da noch jemand weiterhelfen kann! Und 
Kommentare zu meinem bisherigen Schaltplan?

Mfg, GFunk

von Michael (Gast)


Lesenswert?

Hallo

der 4. PIN ist ein Tachosignal. Mit einem Pullup (Widerstand ca. 1k nach 
+5V) bekommst du hier jede Umdehung einen digitalen Impuls. Das ist für 
eine Drehzahlregelung optimal.

Temperaturmessung würde ich mit NTC und R in Reihe nach 5V machen. Ist 
einfacher und normalerweise genau genug.

Mfg

Michael

von aaa (Gast)


Lesenswert?

Man bekommt evtl auch mehrere Impulse (2m teilweise 4) pro Umdrehung

Zum Anschließen der Pins:

http://www.ebmpapst.com/media/content/products_1/downloads_9/compact_fans/Kompaktluefter_Specials_2008_DE.pdf

Evtl. hier nachschauen, was dein Lüfter "hat"

http://www.ebmpapst.com/media/content/products_1/downloads_9/compact_fans/Kompaktluefter_DC_2008_DE.pdf

von GFunk (Gast)


Angehängte Dateien:

Lesenswert?

Super, das waren genau die Dokumente die ich gebraucht habe.
Ich nehme dann so einen Lüfter mit 4 Pins, wobei ich das Tachosignal 
vorerst mal nicht auswerten muss. Bei 100% PWM sollte er halt mit 
Maximaldrehzahl laufen, aber das werde ich dann schon sehen. Anbei noch 
mein Detail-Plan, wie ich den Lüfter anzuschließen gedenke.

Hardware steht dann soweit :-)
Nun geht's ans Programmieren ...

Vielen Dank an alle guten Ratgeber!
Mfg, GFunk

von GFunk (Gast)


Lesenswert?

Nun habe ich mich eine gute Weile mit dem Tutorial zur Programmierung 
des ATmega befasst. Wie ich das so sehe gibt es im wesentlichen zwei 
Möglichkeiten: 1. Assembler (AVR Studio), 2. C-Code (WinAVR GCC).
Da ihr ja nun schon mein Vorhaben kennt, was würdet ihr mir denn 
empfehlen? Welche Art der Programmierung eignet sich besser für so eine 
PWM-Steuerung?

Mfg, GFunk

von ozo (Gast)


Lesenswert?

Da scheiden sich die Geister...
Hast du schonmal was mit C gemacht? Magst du den Buchstaben C? Kennst du 
andere Hochsprachen? Dann nimm C ;)

Grüsse

von GFunk (Gast)


Lesenswert?

puuh, also da bin ich wieder
habe mich für C entschieden, und zwischenzeitlich das GCC-Tutorial 
durch.
Ist klar soweit, und echt ganz cool. Also der Aufwand hat sich gelohnt 
;-)

Habe inwzischen auch ein Programm das läuft, aber ein paar Fragen dazu. 
Wäre das ok, wenn ich den Code hier mal reinstelle?

Und so allgemein: Wie erzeugt man denn kontinuierlich eine PWM in 
Abhängigkeit vom eingelesenen Analogwert? Aktuell lese ich den Wert aus 
dem ADC-Register und werte diesen dann in einer if-verzweigung 
stufenweise aus. Aber das ist etwas umständlich und bei vielen Stufen 
auch nervig. Der ADC läuft übrigens ständig (free-running). Da muss ich 
nicht warten bis der eine Umwandlung fertig hat, oder?

Dann noch was zu dem Lüfter mit 4 Pins: Bei 0% PWM dreht der sich 
trotzdem. Ist das normal?

Viele Grüße und einen schönen Abend,
GFunk

von GFunk (Gast)


Lesenswert?

achso, ich hab jetzt doch nen anderen µC, und zwar AT90CAN128,
aber egal. prinzipiell funktioniert alles so wie im tutorial.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.