Forum: Mikrocontroller und Digitale Elektronik PC Lüfter Drehzahl regeln


von Martin (Gast)


Lesenswert?

Hallo,

ich habe jetzt 30min in der Forensuche und 15 min google Suche bemüht, 
aber noch nicht wirklich weiter gekommen.
Ich wollte einen PC-Lüfter regeln in der Drehzahl mit einem 
Mikrcontroller (AVR). Mein Hauptproblem ist zunächst einmal die 
Regelung. Wie macht man so etwas? Die Drehzahl kann ich bereits einlesen 
über den ICP und auf einem Display ausgeben, das funktioniert soweit.
Nur wie beginne ich bei der Regelung? Habe so etwas noch nie gemacht. 
Hat jemand vielleicht einen brauchbaren Link (bestmöglichst mit 
Quellcode in C)?

Das einzig brauchbare was ich hier gefunden habe ist das hier:
http://www.pcfilter.de/AVR-Ecke/Page15.html


Hat sonst noch jemand weiterführend Links oder Tipps für mich?

Merci,

Martin

von Electronics'nStuff (Gast)


Lesenswert?

Also ersteinmal ist eine Wasserkühlung etwas 100 mal komplizierter als 
einen Lüfter zu steuern.

Zweitens: Du brauchst Hardware. Irgend einen FET oder was, den du an den 
AVR klatschen kannst, und welchen du am besten über PWM (siehe Tutorial 
hier) ansteuerst.

Gruss

von MaWin (Gast)


Lesenswert?

> Nur wie beginne ich bei der Regelung?

Regeln heisst, Istwert und Sollwert zu vergleichen.

Den Istwert kannst du also schon ermitteln, fein.

Kennst du denn deinen Sollwert ?

Dann kann man regeln:

a) Einschalten wenn Istwert < Sollwert, ausschalten wenn Istwert > 
Sollwert.

b) Oder mehr Gas geben wenn Istwert < Sollwert, Gas wegnehmen wenn 
Istwert > Sollwert.

Es gibt dutzende Regelalgorithmen, von denen man sich den passenden nach 
seinen Anforderungen heraussuchen kann. Temperaturregelungen 
funktionieren meist nach a) (Bimetallschalter) oder b) (wenn der Lüfter 
auch mal Halbgas laufen soll).

von Martin (Gast)


Lesenswert?

Ich dachte an einen Regelalgorithmus der Istwert und Sollwert 
vergleicht.
Bei großer Abweichung soll eben viel nachgestellt werden, bei kleiner 
Abweichung wenig. Ein Überschwingen sollte möglichst vermieden werden.

von Martin K. (maart)


Lesenswert?

Na dann los: Hol' dein Reglungstechnikskript raus und ran an den Feind.

von Dietrich L. (dietrichl)


Lesenswert?

Martin schrieb:
> Ich dachte an einen Regelalgorithmus der Istwert und Sollwert
> vergleicht.
> Bei großer Abweichung soll eben viel nachgestellt werden, bei kleiner
> Abweichung wenig. Ein Überschwingen sollte möglichst vermieden werden.

Sowas heißt dann PID-Regler, wobei das Hauptproblem ist, die 3 Parameter 
für P, I und D richtig einzustellen.

Gruß Dietrich

von TestX .. (xaos)


Lesenswert?

Dietrich L. schrieb:
> Martin schrieb:
> wobei das Hauptproblem ist, die 3 Parameter
> für P, I und D richtig einzustellen.

nicht wirklich...bei sonem einfachen system reicht die sprungantwort und 
dann nach tabelle die parameter ablesen/berechnen...

von Volker U. (volkeru)


Lesenswert?

Na, also bei so einer Aufgabenstellung muss es doch keine aufwändige 
Regelung sein! Ich würde einfach pro Sekunde n Drehzahl-Messungen 
durchführen und bei Überschreiten des Sollwerts das zur PWM gehörende 
Output Compare Register um eins runterzählen und bei Unterschreiten des 
Sollwerts um eine Stufe hochzählen.

Je mehr solche Mess- und Zählvorgänge je Sekunde durchgeführt werden, 
desto dynamischer wird die Regelung, aber desto leichter gibt es auch 
Überschwingen bzw. Instabilitäten. Wenn man die Dynamik erhöhen will, 
ohne der Genauigkeit zu schaden, kann man das Compare-Register bei 
großen Abweichungen des Istwerts vom Sollwert auch jeweils um 10 hoch- 
bzw. runterzählen und bei kleinen Abweichungen nur um 1. Oder (noch 
eleganter) man errechnet das Inkrement bzw. Dekrement für das 
Compare-Register aus der Differenz zwischen Soll- und Istwert.

von Hubert G. (hubertg)


Lesenswert?

Wenn du dann die ganze Regelung fertig hast, dann kommst du drauf das 
sich der Lüfter mit PWM nicht regeln lässt.
Sehr viele Lüfter mögen PWM überhaupt nicht und lassen sich nur in einem 
gewissen Bereich mit Spannungsänderung regeln.

von Udo S. (urschmitt)


Lesenswert?

Hubert G. schrieb:
> Sehr viele Lüfter mögen PWM überhaupt nicht und lassen sich nur in einem
> gewissen Bereich mit Spannungsänderung regeln.

Vor allem funktioniert die Drehzahlerkennung mit PWM nicht mehr (so 
einfach).

von Volker U. (volkeru)


Lesenswert?

Ich glaube, wir reden über Lüfter, die sich regeln lassen. Für Lüfter, 
die sich nicht regeln lassen, wäre dieser Thread wohl überflüssig ;)

von Manuel X. (vophatec)


Lesenswert?

Und um ganz sicher zu gehen nimmt man 4pin Lüfter. ;)

http://www.formfactors.org/developer/specs/REV1_2_Public.pdf

von Volker U. (volkeru)


Lesenswert?

Ein anderer wäre wohl auch kaum sinnvoll gewesen ;). Die Auswahl an 
PWM-Lüftern ist riesig:

http://www.caseking.de/shop/catalog/Luefter/PWM-Luefter:::26_10448.html

Und wer technische Hintergründe dazu wissen will:

http://www.heise.de/ct/hotline/PWM-Luefter-322024.html

von Jens (Gast)


Lesenswert?

> Wenn du dann die ganze Regelung fertig hast, dann kommst du drauf das
> sich der Lüfter mit PWM nicht regeln lässt.
> Sehr viele Lüfter mögen PWM überhaupt nicht und lassen sich nur in einem
> gewissen Bereich mit Spannungsänderung regeln.

Was ist denn so schwer daran, aus dem PWM Signal eine analoge Spannung 
zu machen? Hier wird legendlich noch eine Diode und eine Speicherspule 
benötigt, beides ist beim ersten Link enthalten (inklusive Stückliste 
für Reichelt Bestellung). Damit lassen sich also auch problemlos 
3-Polige Lüfter regeln.

von Martin (Gast)


Lesenswert?

Aber das PWM Signal muss doch geregelt sein bzw. brauche ich ja hierfür 
ein Regel-Algorithmus.

von Jens (Gast)


Lesenswert?

> Aber das PWM Signal muss doch geregelt sein bzw. brauche ich ja hierfür
> ein Regel-Algorithmus.

Im C-Prigi unter der Routine „System_einstellen“ findest Du den 
PID-Regler (ist alles kommentiert). Des Weiteren findest Du auch noch in 
der Doku eine Beschreibung unter „Das Leistungsteil – die PWM Endstufe“ 
und „Die Speicherdrossel“, da wird die Hardware auch noch etwas genauer 
erklärt. Und zum Regler findest Du auch noch etwas unter „PID-Regler 
Einstellungen“.

Wenn das nicht reichen sollte, dann kannst Du auch noch hier 
nachschauen:
http://www.sprut.de/electronic/switch/schalt.html
oder weiter im Internet nach der Funktionsweise von „Stepp-Down-Reglern“ 
suchen, da gibt es Unmengen an Internetseiten. Und wenn Du selber 
Berechnungen durchführen möchtest, dann ist der Link sehr Hilfreich:
http://schmidt-walter.eit.h-da.de/smps/smps.html
Und wie ein Regler funktioniert wird unter anderem hier beschrieben:
http://www.rn-wissen.de/index.php/Regelungstechnik

von Volker U. (volkeru)


Lesenswert?

Jens schrieb:
> Was ist denn so schwer daran, aus dem PWM Signal eine analoge Spannung
> zu machen?

Das habe ich mich zuerst auch gefragt. Ältere Mainboards regeln auf 
diese Weise auch ältere Lüfter ohne PWM-Regelmöglichkeit.

Allerdings würde ich bei den Preisen für PWM-Lüfter nicht den Aufwand 
treiben, aus der PWM des Mikrocontrollers eine Gleichspannung zu 
erzeugen. Falls doch, würde ich dazu mit Hilfe eines 
Operationsverstärkers und eines Kondensators einen Spannungsfolger 
(Impedanzwandler) bauen. Auf Induktivitäten würde ich dabei 
grundsätzlich verzichten, wenn es irgendwie geht. ;)

von Volker U. (volkeru)


Lesenswert?

Martin schrieb:
> Aber das PWM Signal muss doch geregelt sein bzw. brauche ich ja hierfür
> ein Regel-Algorithmus.

Und spricht etwas gegen die von mir weiter oben beschriebene, ganz 
einfache Methode der Regelung durch Differenzbildung?

von Jens (Gast)


Lesenswert?

Volker U. schrieb:
> Allerdings würde ich bei den Preisen für PWM-Lüfter nicht den Aufwand
> treiben, aus der PWM des Mikrocontrollers eine Gleichspannung zu
> erzeugen.

Kommt immer darauf an ob man mit den „Rahmenbedingengen“ der PWM-Lüfter 
leben will. Mich stört es z.B. ungemein dass sich die Dinger nicht 
abschalten lassen (bei PWM=0), sie laufen immer mit 25% ihrer Leistung 
weiter. Bei den 3-Pin Lüftern gibt es so schöne leise Modelle, da lohnt 
sich der Umbau auf Gleichspannung... ;-)

> Falls doch, würde ich dazu mit Hilfe eines
> Operationsverstärkers und eines Kondensators einen Spannungsfolger
> (Impedanzwandler) bauen. Auf Induktivitäten würde ich dabei
> grundsätzlich verzichten, wenn es irgendwie geht. ;)

Mehr oder weniger kommt es ja darauf an was man hinten an Leistung dran 
hängt. Bei einem einzigen Lüfter ist ein OPV sicherlich die erste Wahl, 
da hält sich die Wärmeentwicklung auch noch in Grenzen. Wenn man da aber 
mehrere Lüfter anschließen möchte (oder eine Wasserpumpe), dann kommt 
man ohne „Stepp-Down-Regler“ nicht mehr aus (zumindest dann nicht, wenn 
man den FET nicht als Heizung verwenden will)... ;-)

von Jens (Gast)


Angehängte Dateien:

Lesenswert?

Hab noch eine einfache OPV Schaltung für kleinere Lasten (ein Lüfter) 
gefunden, vielleicht hilft es ja weiter...

von MaWin (Gast)


Lesenswert?

> Hab noch eine einfache OPV Schaltung für kleinere Lasten (ein Lüfter)
> gefunden, vielleicht hilft es ja weiter...

Kaum, denn die regelt ja nict, die versorgt nur den Lüfter mit 
verringerter Spannung, woraufhin dieser weniger Drehmoment entfaltet, 
was normalerweise zu geringerer Drehzahl führt aber vor allem zu weniger 
Kraft und damit die Lebensdauer erheblich verringert, denn ein Lüfter 
ist am Ende, wenn seine Kraft nicht mehr reicht, die verharzten, 
vergammelten Lager und Staubablagerungen zu überwinden.

Ein 12V Lüfter der an 8V betrieben wird hält maximal 1/4 der Zeit, bevor 
er ausfällt und Folgeschäden nach sich zieht weil zu kühlende Bauteil 
überhitzt.

Wenn schon, dann REGELN, also die Auswertung des Tachosignals oder der 
Temperatur.

von Martin (Gast)


Lesenswert?

Jens schrieb:
> Im C-Prigi unter der Routine „System_einstellen“ findest Du den
> PID-Regler (ist alles kommentiert)

Was ist C-Prigi?

von Jens (Gast)


Lesenswert?

MaWin schrieb:
> Kaum, denn die regelt ja nict, die versorgt nur den Lüfter mit
> verringerter Spannung,...........................

Richtig, es handelt sich hier also nur um das Leistungsteil, welches die 
Lüfterspannung von 0V bis 12V an Hand der PWM einstellen kann, mehr 
nicht. Es muss also nach wie vor das Tachosignal (oder die Temperatur) 
erfasst werden, im Mµ verarbeitet werden und dann kann das PWM-Signal 
die passende Spannung an den Lüfter weiter geben. Sorry das ich das 
nicht genauer erklärt habe...

von Jens (Gast)


Lesenswert?

Martin schrieb:
> Was ist C-Prigi?

Sollte Progi heißen. Wenn Du Dir die Dateien hierunter lädst (von 
http://www.pcfilter.de/AVR-Ecke/Page15.html) findest Du da auch den 
C-Quellcode (Datei Main.c), das meinte ich mit C-Progi.

von Martin (Gast)


Lesenswert?

Ok, danke. Das wollte ich mir sowieso einmal in einer ruhen Stunde 
ansehen.

von Volker U. (volkeru)


Lesenswert?

Wenn es darum geht, die Grundlagen der (analogen) Regelungstechnik 
anhand eines praktischen Beispiels zu erlernen und umzusetzen, ist das 
okay. Aber wenn es nur darum geht, einen Lüfter möglichst einfach und 
effektiv zu regeln, ist es mit Kanonen auf Spatzen schießen. ;)

von dolf (Gast)


Lesenswert?

Martin schrieb:
> Ich wollte einen PC-Lüfter regeln in der Drehzahl mit einem
> Mikrcontroller (AVR).

geht rein analog ganz gut.
elv.de hat dazu bausätze.

von Martin (Gast)


Lesenswert?

Im oben genannten Beispiel findet sich der folgende Code:
1
void System_einstellen(void) {               // Beginn System einstellen
2
   // Temperatur einlesen
3
   DS1621_lesen(Adr_Wasser);                 // DS1621 Temperatur einlesen
4
   // Variabeln
5
   uint8_t Reset_OK = 0;                     // 0 = OK - Alarm zurück setzen
6
   int16_t Temperatur = (DS1621_Temperatur * 10) + DS1621_Kommastelle;  // Temperatur zur Berechnung
7
   int16_t Tmp_Not_Aus = Sollwert + Not_Aus;  // Sollwert + Not-Aus
8
   int16_t Tmp_SWP = OCR1AL;                 // Temp Schrittweite PWM für Berechnung
9
   int16_t D_Anteil = 0;                     // D-Anteil im PID-Regler
10
   int16_t P_Anteil = 0;                     // P-Anteil im PID-Regler
11
12
 // --- PID-Regler - PWM Wert einstellen ---------------------------------------------
13
   if (Zeit_Messung >= Messung_Ende) {       // wenn Messzeit erreicht, dann...
14
      Zeit_Messung = 0;                      // Reset - Zeit neu einstellen
15
16
      // D-Anteil im Regler bestimmen
17
      D_Anteil = (Temperatur - Temperatur_alt) * KD_Multi;  // D-Anteil * KD multiplizieren
18
      Temperatur_alt = Temperatur;           // Wert neu einstellen
19
      // MAX D-Anteil festlegen
20
      if (D_Anteil < -16) { D_Anteil = -16; }  // Untere D-Anteil Grenze festlegen
21
      if (D_Anteil > 16) { D_Anteil = 16; }  // Obere D-Anteil Grenze festlegen
22
23
      // P-Anteil im Regler bestimmen
24
      P_Anteil = (Temperatur - Sollwert) * KP_Multi;  // P-Anteil * KP multiplizieren
25
      // MAX P-Anteil festlegen
26
    if (P_Anteil < -16) { P_Anteil = -16; }  // Untere P-Anteil Grenze festlegen
27
    if (P_Anteil > 16) { P_Anteil = 16; }  // Obere P-Anteil Grenze festlegen
28
29
      // I-Anteil bei Gleichheit
30
      if (Temperatur == Sollwert) {          // wenn Sollwert erreicht, dann...
31
         if (KI_Multi > 20) { KI_Multi = 20; }  // Obere I-Anteil Grenze festlegen
32
         Tmp_SWP = Tmp_SWP - KI_Multi;       // Integral-Wert simulieren
33
      }                                      // Ende wenn Sollwert erreicht
34
35
      // Anteile dem PWM Wert dazu geben
36
      Tmp_SWP = Tmp_SWP + P_Anteil;          // P-Anteil zur PWM hinzufügen
37
      Tmp_SWP = Tmp_SWP + D_Anteil;          // D-Anteil zur PWM hinzufügen
38
39
   }  
40
}

Was ich aber nicht ganz verstehe ist der I-Regler.
a) Warum wird dessen Stellgröße nur bei Gleichheit von Ist- und 
Sollgröße berechnet? Angenommen ich habe ein recht "unruhiges" System, 
das hin und her schwingt, so kommt der I-Regler doch gar nicht zum 
Einsatz.
b)Kann mir jemand diese Zeilen des I-Reglers erklären
1
Tmp_SWP = Tmp_SWP - KI_Multi;       // Integral-Wert simulieren

von Karl H. (kbuchegg)


Lesenswert?

Der Teil dürfte empirisch entstanden sein und keine nähere Begründung 
haben. Sprich: Da hat er einfach ein wenig rumprobiert.

Wenn du dir den Code ansiehst, dann wird KI_Multi nirgends berechnet. 
Auch wenn er da I-Anteil dazu geschrieben hat, es ist kein integraler 
Anteil.


Edit:
Der ganze Regler sieht ein wenig empirisch aus. Auch die Behandlung des 
P-Anteils ist anders als bei einem PID Regler. Ich schätze mal, das das 
auch der Grund ist, warum er I wieder still gelegt hat.

von Jens (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Der Teil dürfte empirisch entstanden sein und keine nähere Begründung
> haben. Sprich: Da hat er einfach ein wenig rumprobiert.

Genau so war es, der I-Anteil ist mehr oder weniger nur Spielerei (steht 
auch in der Doku). Bei dem System (Wasserkühlung) hat das Wasser bereits 
eine sehr große Verzögerungswirkung, so dass der I-Anteil hier ehr 
hinderlich war.

Martin schrieb:
> Tmp_SWP = Tmp_SWP - KI_Multi;       // Integral-Wert simulieren

Du musst hier schon die gesamte IF Anweisung betrachten, die einzelne 
Zeile ist aus dem Zusammenhang gerissen. Wenn der Regler den Sollwert 
erreicht hat (und die Zeit-Messung abgeschlossen ist), dann soll der 
Regler den PWM-Wert weiter absenken. Für Deinen Fall ist das Humbug, da 
Du ja den Sollwert erreichen willst. Bei der Wasserkühlung führt es dazu 
dass die Lüfterdrehzahl weiter abgesenkt wird, so dass der Regler 
absichtlich aus dem Gleichgewicht gebracht wird. Damit wird versucht die 
Lüfterdrehzahl immer so gering wie möglich zu halten, funktioniert das 
nicht (Abweichung wird zu groß), dann wird die Lüfterdrehzahl wieder 
angehoben.
Aber auch hier noch mal der Hinweis, hier findest Du eine Beschreibung 
wie die Regler „richtig“ funktionieren:
http://www.rn-wissen.de/index.php/Regelungstechnik

von Volker U. (volkeru)


Lesenswert?

Jens schrieb:
> Kommt immer darauf an ob man mit den „Rahmenbedingengen“ der PWM-Lüfter
> leben will. Mich stört es z.B. ungemein dass sich die Dinger nicht
> abschalten lassen (bei PWM=0), sie laufen immer mit 25% ihrer Leistung
> weiter. Bei den 3-Pin Lüftern gibt es so schöne leise Modelle, da lohnt
> sich der Umbau auf Gleichspannung... ;-)

Naja, wenn man eine Komplettabschaltung benötigt, dann stellt man die 
Spannungsversorgnung eben über einen Schalttransistor zur Verfügung, den 
man mit einem Pin des MC an- und ausschalten kann. Den Bereich zwischen 
0 und 25% erreichst du damit zwar nicht, aber braucht jemand einen 
Lüfter, der weniger als 25% seiner Leistung bringt? ;-)

>> Falls doch, würde ich dazu mit Hilfe eines
>> Operationsverstärkers und eines Kondensators einen Spannungsfolger
>> (Impedanzwandler) bauen.

> Mehr oder weniger kommt es ja darauf an was man hinten an Leistung dran
> hängt. Bei einem einzigen Lüfter ist ein OPV sicherlich die erste Wahl,
> da hält sich die Wärmeentwicklung auch noch in Grenzen. Wenn man da aber
> mehrere Lüfter anschließen möchte (oder eine Wasserpumpe), dann kommt
> man ohne „Stepp-Down-Regler“ nicht mehr aus (zumindest dann nicht, wenn
> man den FET nicht als Heizung verwenden will)... ;-)

Und wie wäre es, bei mehr benötigter Leistung einfach mehrere OPV 
parallel zu schalten? :-) Da die Eingangsimpedanz sehr hoch ist, macht 
das keine Probleme.

von Volker U. (volkeru)


Lesenswert?

Jens schrieb:
> Wenn der Regler den Sollwert
> erreicht hat (und die Zeit-Messung abgeschlossen ist), dann soll der
> Regler den PWM-Wert weiter absenken. Bei der Wasserkühlung führt es dazu
> dass die Lüfterdrehzahl weiter abgesenkt wird, so dass der Regler
> absichtlich aus dem Gleichgewicht gebracht wird. Damit wird versucht die
> Lüfterdrehzahl immer so gering wie möglich zu halten, funktioniert das
> nicht (Abweichung wird zu groß), dann wird die Lüfterdrehzahl wieder
> angehoben.

Alles sehr schön für die relativ komplizierte Wasserkühlung. Allerdings 
frage ich mich ganz ernsthaft, worum es hier nun eigentlich geht? Die 
Diskussion hat für mich rein akademischen Charakter. Sorry, aber kein 
Mensch der Welt benötigt einen PID-Regler, um einen einfachen PC-Lüfter 
zu regeln!!! Die Wirkung eines Lüfters ist von so vielen Faktoren 
abhängig, dass eine derart präzise Lüfterregelung einfach unsinnig ist. 
Insbesondere, sofern man nur eine Ist-Temperatur als Regelgröße nimmt. 
Man muss dann auch noch die Störgrößen betrachten und diese in die 
Regelung einfließen lassen, wenn das halbwegs sinnvoll sein soll! Dazu 
gehören z.B. die Lufttemperatur und der Luftdruck.

Einzig sinnvoll ist eine Lüfterregelung durch Differenzbildung. Also 
das, was ich hier schon ganz zu Anfang vorgeschlagen habe:

(Istwert - Sollwert) * k

oder wem es besser in C gefällt (s.o.):

P_Anteil = (Temperatur - Sollwert) * KP_Multi;

Das ist ein P-Regler. Alles andere ist totaler Hirnriss für diese 
Aufgabe.

Frage an Martin: Was genau willst du eigentlich machen oder lernen? Die 
theoretischen Prinzipien der Regelungstechnik? Die AVR-Programmierung in 
C? Den technischen Einsatz eines AVR für eine Lüfterregelung? Oder geht 
es schlichtweg darum, einen PC-Lüfter möglichst einfach und 
kostensparend zu regeln?

Gruß, Volker

von Martin (Gast)


Lesenswert?

Ich wollte ein Projekt, an dem ich meine (wenigen) µC Kenntnisse selbst 
zu Hause praktisch vertiefen kann. Gleichzeitig wollte ich dabei das 
"Thema" Regelung lernen und mich damit befassen.
Also ein bisschen hiervon und ein bisschen hiervon, aber keineswegs auf 
einem hohen akademischen Grad, denn da sind noch zu wenig Kenntnisse 
vorhanden, um das konkret umzusetzen.
Ich denke ich versuche es mal mit der P-Regelung.

Danke.

von Volker U. (volkeru)


Lesenswert?

Hi Martin!

> Ich wollte ein Projekt, an dem ich meine (wenigen) µC Kenntnisse selbst
> zu Hause praktisch vertiefen kann. Gleichzeitig wollte ich dabei das
> "Thema" Regelung lernen und mich damit befassen.

Ah, das ist doch eine konkrete Aussage!

Welchen AVR hast du denn im Sinn gehabt? Für diese einfache Aufgabe böte 
sich der ATtiny25 oder 45 oder 85 an. Je nachdem, wieviel Code du 
produzieren willst :).

Ich nehme an, dass du schon eine funktionierende Entwicklungsumgebung 
hast und auch ein paar ganz einfache C-Programme getestet hast, um Ports 
auf High bzw. Low zu schalten.

Im Handbuch zum ATtiny25 würde ich mir dann das Kapiel 11 (8-bit 
Timer/Counter0 with PWM, speziell Kapitel 11.7.3 - Fast PWM Mode) 
reinziehen. Insbesondere die Pins 5 und 6 (OC0A und OC0B) mit den 
zugehörigen Compare Registern OCR0A und OCR0B sind dann interessant, da 
an diese die PWM geschaltet werden kann.

Dann würde ich mir einen PWM-Lüfter kaufen. Weiter oben habe ich ja 
einen Link auf eine Auswahl solcher Lüfter gesetzt.

Ich weiß nicht, woher du derzeit deine Temperatur (das wird ja 
vermutlich die Regelgröße sein) bekommst. Falls du noch keine Regelgröße 
hast, würde ich den digitalen 1-wire Temperatursensor von Dallas 
empfehlen: DS18B20 oder DS18S20. Der Unterschied zwischen den beiden ist 
nur, dass man beim B20 die Auflösung programmieren kann, während sie 
beim S20 immer 12 bit ist.

Wenn du dann die Temperatur messen kannst, wird es spannend. Denn du 
musst ja nicht - wie zu Anfang von allen vermutet - nur die Drehzahl 
nach einem Drehzahl-Sollwert regeln, sondern den Drehzahl-Sollwert auf 
der Basis der Temperatur bestimmen. Hier kann die weiter oben 
vorgeschlagene Sprungantwort helfen. D.h. man heizt den Prozessor bis an 
die zulässige Grenze hoch ohne dass der Lüfter läuft. Dann schaltet man 
den Lüfter schlagartig auf volle Leistung (Führungsgröße / Sollwert 
macht einen Sprung -> Register OCR0A oder OCR0B geht von von 0 (Lüfter 
aus / Maximaltemperatur) auf 255 (Lüfter volle Leistung / 
Minimaltemperatur)) und misst den Temperaturverlauf über der Zeit (also 
die Abkühlung). Aus dieser Kurve kann man das Übertragungsverhalten der 
Regelstrecke weitgehend ablesen. Es gibt viele unterschiedliche 
Verfahren, aus diesen Daten die richtigen Werte für den Regler zu 
bestimmen. Das ganze Verfahren wird mit zahlreichen Beispielen und sehr 
verständlich auch auf der Seite 
http://www2.informatik.hu-berlin.de/~kauerhof/Hu/Ki/Regelungstechnik2.html 
erläutert.

Gruß, Volker

von Jens (Gast)


Lesenswert?

Volker U. schrieb:
> Naja, wenn man eine Komplettabschaltung benötigt, dann stellt man die
> Spannungsversorgnung eben über einen Schalttransistor zur Verfügung,
> den man mit einem Pin des MC an- und ausschalten kann.

Jo, ist natürlich auch eine Lösung, wenn man denn die zusätzlichen Ports 
zur Verfügung hat. Ist halt wie bei den meisten Sachen, es führen halt 
mehrere Wege nach Rom...

> Und wie wäre es, bei mehr benötigter Leistung einfach mehrere OPV
> parallel zu schalten?

Mit OPVs habe ich mich noch nicht nähr beschäftigt, bis jetzt habe ich 
nur den LM358 verbaut. Wenn ich das richtig sehe, dann kann der LM358 
20mA treiben und ein durchschnittlicher Lüfter liegt bei 150mA. Ich 
müsste dann ja 8x OPVs parallel schalten, warum das ganze dann nicht 
lieber mit einem FET realisieren? Oder reden wir aneinander vorbei und 
Du meinst etwas ganz anderes? Hast Du ein Beispiel (Schaltplan) für so 
eine OPV Beschaltung?

von Volker U. (volkeru)


Lesenswert?

Jens schrieb:
> Jo, ist natürlich auch eine Lösung, wenn man denn die zusätzlichen Ports
> zur Verfügung hat. Ist halt wie bei den meisten Sachen, es führen halt
> mehrere Wege nach Rom...

Och naja, an Ports mangelt es doch heute nicht mehr. Atmel hat seine µC 
doch so wunderbar skaliert, dass für jeden Zweck die richtige Portzahl 
vorhanden ist. Also ich nehme meist die Reihenfolge "ATtiny85 (8 Pin), 
ATtiny84 (14 Pin), ATmega328 (28 Pin) und ATmega1284 (40 Pin). In der 
SMD-Version gibts teilweise jeweils noch mehr Pins.

>> Und wie wäre es, bei mehr benötigter Leistung einfach mehrere OPV
>> parallel zu schalten?
>
> Mit OPVs habe ich mich noch nicht nähr beschäftigt, bis jetzt habe ich
> nur den LM358 verbaut. Wenn ich das richtig sehe, dann kann der LM358
> 20mA treiben und ein durchschnittlicher Lüfter liegt bei 150mA.

Jo, das Teil ist für sowas auch nicht geeignet. In folgendem Thread 
gibts Hinweise zu OPV mit hohem Ausgangsstrom: 
Beitrag "OPVs mit hohem Ausgangsstrom"

Natürlich gehts auch mit einem FET, aber dessen Übertragungsverhalten 
ist nicht linear - im Gegensatz zum OPV. Und deshalb ist der eher 
ungeeignet, wenn es auf eine gute Regelung ankommt.

von Jens (Gast)


Lesenswert?

Volker U. schrieb:
> Jo, das Teil ist für sowas auch nicht geeignet. In folgendem Thread
> gibts Hinweise zu OPV mit hohem Ausgangsstrom:
> Beitrag "OPVs mit hohem Ausgangsstrom"

Danke für den Link. Also ich währe nie im Traum darauf gekommen einen 
Audioverstärker für eine Lüftersteuerung zu verwenden... ;-)))

von Hubert G. (hubertg)


Lesenswert?

Ein L272 würde es aber auch tun und benötigt weniger rundherum.

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.