mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mit ATMega32 Lüfter über PWM ansteuern


Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich wollte mich nun mal mit einem Anliegen an euch wenden, was für mich 
gerade einfach undurchschaubar ist.

Für ein Schulprojekt soll ich über einen ATMega32 mit einem 
Temperatursensor einen Lüfter ansteuern, und die Temperatur auf dem 
Display ausgeben. Alles klappt soweit, aber eine Sache bereitet mir 
gerade ziemliches Kopfzerbrechen:

Wie kann ich mit dem ATMega32 den Lüfter ansteuern, und was für einen 
Lüfter sollte ich benutzen? Der darf ruhig sehr klein sein.
Habe mal einen rausgesucht, der folgende technische Daten hat:
Maße: 92 x 92 x 25 mm
Drehzahl: 0 - 2.500 U/Min. (±10%)
Geräuschpegel: 0,00 - 31,07 dB(A)
Luftdurchfluss: 0,00 - 55,55 CFM = 0 m³/h - 95 m³/h
Spannung: 12 V
Stromstärke: 0,07 A
Gewicht: 90g
Anschluss: 4pin Molexstecker (PWM)
Lagertyp: Gleitlager
MTBF: 30.000 Stunden

Die Idee war, dass vielleicht ab 17°C der Lüfter anspringt und bei 22°C 
auf Hochtouren fährt. In dem 5°C-Zwischenbereich sollte sich die 
Drehzahl des Lüfters langsam erhöhen.

Da ich aber vom Programmieren nicht viel verstehe und auch nicht genau 
weiß, was ich beim Ansteuern des Lüfters beachten muss, wollte ich 
fragen ob mir einer in diesem Forum vielleicht helfen könnte, das wäre 
echt super! Weil mir fehlt hier leicht der Ansatz...


Viele Grüße und vielen Dank im Voraus,
Jürgen

Autor: Oliver B. (irq)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jürgen,

ein Lüfter ist im prinzip nichts anderes als ein 
Gleichstrom-Elektromotor. Nur dass eben noch ein Rotor dran befestigt 
ist. Du kannst ihn einfach mit Spannung versorgen und er fängt an zu 
drehen. Je höher die Spannung, desto höher die Drehzahl. Das kannst du 
z.B. mit einem verstellbaren Netzgerät mal testen und so ungefähr die 
Spannungswerte herausfinden, die du für die zwei Betriebsmodi (> 17° bzw 
> 22°) fahren möchtest.

Um mit deinem Atmel unterschiedliche Spannungen zu erzeugen, kannst du, 
wie du schon richtig erkannt hast, PWM verwenden. Das funktioniert im 
Grunde genommen so:

Der PWM Pin wird während einer konstanten Taktperiode immer eine gewisse 
Zeit eingeschaltet und den Rest der Zeit ausgeschaltet. Das Verhältnis 
von An/Taktperiode nennt man den Tastgrad. Ist dieser z.B. 50% ist der 
Pin die gleiche Zeit aus wie an.

Da die Taktperiode sehr klein ist und der Motor aus Spulen gebaut ist, 
die auf solche schnellen an/aus Änderungen nur langsam reagieren, sieht 
es für den Motor aus, als würde man ihn nur mit einem Teil der Spannung 
betreiben, die während der An-Phase am PWM-Pin anliegt (5V beim Atmel). 
Genaugenommen ist es U_pwm = 5V * Tastgrad.

Indem du den Tastgrad veränderst kannst du so Spannungen von 0V bis 5V 
erzeugen. Achtung: Du kannst nicht den Lüfter direkt an den Atmel 
hängen, sonst geht der Controller kaputt (zu hohe Ströme)! Außerdem hast 
du ja einen 12V-Lüfter, d.h. du brauchst einen Verstärker am 
PWM-Ausgang. Am einfachsten ist es, wenn du den Lüfter direkt an 12V 
anschließt und einen Transistor als Schalter verwendest. Bei der 
Dimensionierung der Bauteile kann dir sicher dein Lehrer behilflich 
sein.

So, nun aber zu dem Teil, der dich eigentlich interessiert, nämlich wie 
die PWM im Atmel funktioniert:

Der Atmel hat einen Zähler, der ständig hochzählt. Die Geschwindigkeit 
kannst du über sog. Prescaler einstellen, aber das ist erstmal nicht so 
wichtig.
Der aktuelle Wert des Zählers wird ständig mit einem Vergleichswert 
verglichen. Je nachdem, ob der Zählerwert größer/kleiner als dieser 
Vergleichswert ist, wird der PWM-Pin an- oder ausgeschaltet. Der 
Vergleichswert bestimmt also den Tastgrad.

Ich glaube beim Atmel sind das 8bit-Zähler, d.h. sie zählen immer von 
0-255. Du kannst also die Geschwindigkeit deines Motors in 256 Stufen 
einstellen.

Es gibt verschiedene PWM-Modi, die sind im Datenblatt zum Atmega32 
erklärt. Wie du die Register setzen musst, suche dir einfach mal aus dem 
Netz, ich möchte hier jetzt nichts reinstellen, das ich nicht getestet 
habe.

Viele Grüße, Oliver.

Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Oliver,

vielen Dank für die schnelle Hilfe! Das hat mir schon gut 
weitergeholfen. Dann werde ich nun von diesem Ansatz ausgehend schauen, 
wie ich die Register setze und die Ansteuerung realisieren kann.

Schönen Abend und viele Grüße,
Jürgen

Autor: Ben ___ (burning_silicon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schau dir den "fast PWM mode" an, ich glaube das ist das was du suchst.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.