Also nochmal von vorne:
<Aktueller Status>Nach nem kleinen Umbau funktionierte plötzlich nichts mehr, der Controller war per RS232 nicht mehr ansprechbar.
14.08.2006: Ein bisschen was funktioniert wieder, d.h. der Controller kann schon wieder über RS232 reden. Der Zwischenspeicher macht allerdings noch Mist. Der Pointer, der für's auslesen der Daten aus dem RAM da ist, scheint Amok zu laufen - Das Programm merkt einfach nicht, wenn keine Daten mehr da sind, und gibt dann den kompletten RAM aus.
Übergang 14.-15.08.2006: Letztes Problem behoben. Allerdings fehlen jetzt immer ein paar Zeichen beim ausgeben.
15.08.2006: Menü funktioniert wieder einigermaßen. Fifo war zu klein, dadurch gingen zwischendurch immer nen Haufen Zeichen verloren. Dann war er zugroß und hat an Stellen geschrieben, wo er besser nicht hingeschrieben hätte. Jetzt passt's
Einstellungsmenü weist noch ein paar grobe Fehlfunktionen auf. k.A. weshalb.
16.08.2006 Jetzt funktioniert endlich wieder alles. Neue Features kommen heute Abend oder morgen rein.
23.12.2006 Ja, länger wieder keine Lust gehabt...
Neues:
- Die Steuerung wird ein vernünftiges Programm auf dem PC bekommen, über das Einstellungen vorgenommen werden und die Steuerung überwacht werden kann. Hab dazu schon ein bisschen Delphi gelernt, das Grundgerüst für das Programm steht, das Programm auf dem µC muss dann noch ein bisschen umgekrempelt werden
- Ich bin jetzt gerade dabei, einen Prototyp zu layouten. Da die Freeware-Version von Eagle nur Halb-Euro-Platinen zulässt, wird alles schön zusammengequetscht. Danach muss ich halt mal schauen, ob ich das hinbekomme ne Platine zu ätzen...
</Aktueller Status>Ich baue seit einiger Zeit an einer Lüfterregelung für meinen PC. Die Lüfter sollen so geregelt werden, dass immer eine Temperatur gehalten wird, egal wie viel Abwärme gerade abzuführen ist. Dadurch dreht der Lüfter immer mit der minimal möglichen Drehzahl und verursacht folglich geringstmöglichen Geräusche.
TemperaturmessungAls Temperatursensoren kommen KTY81-110 zum Einsatz. Das sind Silizium-Temperatursensoren, die vergleichsweise günstig sind und gleichzeitig sehr einfach zu linearisieren sind. Der Nachteil ist, dass sie nicht vorkalibriert sind, und relativ hohe Abweichungen aufweisen. Dies wird teilweise durch eine Kalibrierungsfunktion ausgeglichen, die noch programmiert werden will. Die Auflösung wird entweder 0,1°C oder 0,05°C betragen - darunter fängt der Wert an, zwischen zwei Zuständen zu springen.
Die Sensoren werden über eine Schaltung abwechselnd auf den Eingangsverstärker geschaltet, der das Signal vom Sensor so verstärkt, dass der Analog-Digital-Wandler im Mikrocontroller optimal genutzt werden kann. Die Schaltung häng ich an, die Widerstände mit den krummen Werten werden in der Praxis durch zwei Widerstände ersetzt, die zusammen den richtigen Wert ergeben.
Die maximale Anzahl der Sensoren ist nur durch den Speicher des Controllers begrenzt und wird vermutlich über 24 liegen - mehr wird wohl niemand brauchen.
RegelungDer Mikrocontroller liest die Werte vom Eingangsverstärker ein und regelt dann über einen sogenannten PI-Regler den entsprechenden Lüfter.
PI-Regler heißt, dass wenn die Temperatur über der eingestellten Temperatur liegt, die Abweichung jeweils ein mal pro Sekunde zum Lüfterwert dazuaddiert wird (Man könnte auch sagen, die Abweichung wird integriert => Integralteil, daher das I)
und gleichzeitig bei einer Temperaturerhöhung von einer Messung zur nächsten der Temperaturunterschied zum Lüfterwert dazuaddiert wird (Die Änderung der Temperatur ist proportional zur Änderung des Lüfterwertes => Proportionalteil, daher das P).
Zusammen ergibt das eine Regelung, die die eingestellte Temperatur immer sehr genau hält und zudem sehr stabil ist, d.h. der Regler fängt nicht an, zu schwingen.
Als Controller wird ein AtMega48 benutzt, möglicherweise muss ich noch auf den großen Bruder davon umsatteln, da der Flash-Speicher langsam knapp wird.
AusgängeUm die Lüfter anzusteuern, wird ein etwas ungewöhnliches Verfahren eingesetzt. Das Verfahren ist von Schaltreglern geklaut, das Prinzip wird so auch in PC-Netzteilen als auch auf Grafikkarten und dem Mainboard zur Spannungsversorgung verwendet.
Es wird ein gepulstes Signal mit sehr hoher Frequenz erzeugt, welches über einen MosFET verstärkt wird. Danach wird das Signal über eine Spule und einen Kondensator geglättet und anschließend dem Lüfter zugeführt.
Das Verfahren hat einen Haufen Vorteile: Es entsteht dabei kaum Abwärme, es treten keine Pulsgeräusche am Lüfter auf und das Tachosignal funktioniert auch noch. Im Gegenzug ist es nunmal nen Tacken komplexer aufzubauen als eine rein analoge bzw. PWM-Regelung.
Leider kann dieses Verfahren nur bei 4 der zur Verfügung stehenden Ausgänge angewandt werden, die anderen beiden Kanäle können nur mit 70 Hz betrieben werden, da die dazu genutzten Timer nebenbei für Timings im Programm verantwortlich sind. Die letzten beiden Kanäle werden deshalb entweder überhaupt nicht aufgebaut oder die Lüfter werden einfach mit einer 70 Hz PWM angesteuert. Hier funktioniert das Tachosignal dann nicht, und Pulsgeräusche entstehen an den Lüftern dabei auch noch.
RS232-SchnittstelleDas wichtigste kommt hier erst. Die ganze Steuerung wird an die serielle Schnittstelle am Rechner angeschlossen, und über diese kann die Steuerung konfiguriert werden. Dazu ist das Programm Hyper-Terminal nötig, welches bei jeder Windows-Version standardmäßig mitinstalliert wird. Die Steuerung stellt über dieses (oder über jedes andere Terminalprogramm auch) eine kleine Menüführung zur Verfügung, über die die Solltemperaturen, Mindestdrehzahlen etc. konfiguriert werden können. Auch die angesprochene Kalibrierungsfunktion und Einstellungen wie z.B. wie viele Sensoren angeschlossen sind stehen hier zur Verfügung, nebst einem Monitoring-Bereich.
Das war's erstmal. Hier noch der angesprochene Schaltplan, da ich (als das Forum das erste Mal lief
) danach gefragt wurde. Der OpAmp ist ein OP07.
Den kompletten Schaltplan, Sourcecode und das Binary für den Controller werden ich online stellen, wenn das Projekt fertig ist.
Verbesserungsvorschläge, Kritik u.ä. sind erwünscht.
MfG
[gelöscht durch Administrator]