Autor Thema: Mikrocontroller - Lüfterregelung, RS232, Temperaturgesteuert  (Gelesen 18884 mal)

Offline dennisstrehl

  • hat nen Monsterradi
  • ****
  • Beiträge: 235
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.

Temperaturmessung

Als 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.

Regelung

Der 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änge

Um 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-Schnittstelle

Das 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]
« Letzte Änderung: 31. Dezember 2007, 03:45:06 von dennisstrehl »

Offline nemon

  • Administrator
  • kühlt mit Trockeneis
  • ******
  • Beiträge: 1.628
  • Da bin ich wieder
Re: Mikrocontroller - Lüfterregelung, RS232, Temperaturgesteuert
« Antwort #1 am: 10. August 2006, 21:07:18 »
schön, dass du dieses projekt mitgenommen hast, ich bins chon sehr gespannt auf die bilder eines ersten prototyps.
zum rs232: kennst du die FTDI-chips? das sind usb zu rs232-wandler. damit könntest du deine lüftersteuerung auch an legacy-free-computern betreiben, ohne mit eigenen usb / rs232-wandlern hantieren zu müssen

Offline dennisstrehl

  • hat nen Monsterradi
  • ****
  • Beiträge: 235
Re: Mikrocontroller - Lüfterregelung, RS232, Temperaturgesteuert
« Antwort #2 am: 10. August 2006, 21:14:22 »
Ich kenne die Dinger, ja.
Das Problem ist dann allerdings die Steuerungssoftware auf dem PC. Mit HyperTerminal wird das dann nicht mehr gehen. Und in C++ etc. hab ich bisher keine Erfahrung.
Oder hab ich das jetzt falsch verstanden und es gibt dafür einen Treiber, der dann den COM-Port emuliert? Das wäre die beste Lösung, denn dann muss man nicht einmal mehr Kabel nach draußen legen.

So, ich habe eben in's Datenblatt geschaut, einen solchen Treiber scheint es zu geben. Ich werd schauen wo man den bekommt, dann brauch ich die Kabel nicht außenrum zu legen :D
Vielen Dank für den Tipp!

Edit: Gefunden. :blink: Boah sind die teuer... Naja, mal schauen was ich damit mach.
E²dit: Ich glaube ich lass den weg. Ich hatte eigentlich vor, das ganze auf Lochraster aufzubauen, aber den FT232 gibt's nur in SMD. Ich wollte die Schaltung eigentlich möglichst einfach nachbaubar machen.

Bis denne
« Letzte Änderung: 24. Dezember 2006, 00:19:33 von dennisstrehl »

Offline Mr.Malik

  • hat ne Kompressorkühlung
  • *
  • Beiträge: 539
  • Hobby-Mycologist
Re: Mikrocontroller - Lüfterregelung, RS232, Temperaturgesteuert
« Antwort #3 am: 10. August 2006, 22:12:33 »
Weiterhin sehr lobenswertes Projekt! Ich bin (leider, weiß ja das das noch etwas dauern wird) gespannt!

MfG,
Mr.Malik
       

Offline dennisstrehl

  • hat nen Monsterradi
  • ****
  • Beiträge: 235
Re: Mikrocontroller - Lüfterregelung, RS232, Temperaturgesteuert
« Antwort #4 am: 10. August 2006, 22:32:29 »
Danke, ich versuch mich zu beeilen. Eigentlich wollt ich's in den Ferien schon fertig bekommen... Naja, war irgendwie klar dass ich wieder nicht dazu komme.
Irgendwie hab ich ne miese Arbeitsmoral :cheesy:

Offline maxigs

  • Administrator
  • Singlestagebesitzer
  • *****
  • Beiträge: 1.224
    • maxigs.com
Re: Mikrocontroller - Lüfterregelung, RS232, Temperaturgesteuert
« Antwort #5 am: 11. August 2006, 10:52:45 »
E²dit: Ich glaube ich lass den weg. Ich hatte eigentlich vor, das ganze auf Lochraster aufzubauen, aber den FT232 gibt's nur in SMD. Ich wollte die Schaltung eigentlich möglichst einfach nachbaubar machen.

da gibts auch schon praktische vorbauten mit den ftdi chips, die dann in hübschem dip-format sind, sind zwar dann auch nicht ganz billig, aber sehr praktisch
- Feeding the trolls is funny :ugly: -

Offline dennisstrehl

  • hat nen Monsterradi
  • ****
  • Beiträge: 235
Re: Mikrocontroller - Lüfterregelung, RS232, Temperaturgesteuert
« Antwort #6 am: 11. August 2006, 11:08:11 »
Hallo,

Also ich hab noch ne serielle Schnittstelle am Rechner, und hatte eigentlich keine Lust dann nochmal min. 10€ (hab ich jetzt mal geschätzt, da ich bisher keinen FT232 mit Adapterboard gefunden hab) draufzulegen, nur damit's ordentlich aussieht (mein Rechner sieht nu eh nicht so toll, aus, ich schau nicht so auf die Optik - Wenn da dann halt nen Kabel raushängt, sch*** drauf).
Falls hier aber akutes Interesse an einer Steuerung per USB besteht, sei es wegen Optik oder weil der Rechner keine serielle hat, würde ich mich vielleicht nochmal umschauen.

MfG

Offline nemon

  • Administrator
  • kühlt mit Trockeneis
  • ******
  • Beiträge: 1.628
  • Da bin ich wieder
Re: Mikrocontroller - Lüfterregelung, RS232, Temperaturgesteuert
« Antwort #7 am: 11. August 2006, 12:04:39 »
bastel erstmal fertig, dann lässt sich noch immer sehen ;)
im nachinein lässt sich solch ein ic noch immer einügen, wenn die software so gestrickt ist,d ass du ur ewnig ändern musst.

Offline Bismarck

  • hat ne DualRadiWakü
  • ***
  • Beiträge: 111
  • Leistungsschläfer
    • Meine private HP
Re: Mikrocontroller - Lüfterregelung, RS232, Temperaturgesteuert
« Antwort #8 am: 31. August 2006, 09:56:27 »
Moin,

werde ich schief angeguckt wenn ich anmerke dass es USB auf RS232-Adapterkabel zu kaufen gibt? Wenn man da ein wenig rumschnitzt könnte man den intern im Rechner anschließen und hätte auch kein Kabel rumliegen...

Oder habe ich mich gerade geoutet weil ich nix verstanden habe? :whistle:

Sevus, B.
Alle Angaben wie immer ohne Gewähr!

Offline nemon

  • Administrator
  • kühlt mit Trockeneis
  • ******
  • Beiträge: 1.628
  • Da bin ich wieder
Re: Mikrocontroller - Lüfterregelung, RS232, Temperaturgesteuert
« Antwort #9 am: 31. August 2006, 23:11:08 »
nein, schief angeguckt wirst du nicht. die ftdi-chips sind vergleichbar mit den usb/rs232-adaptern, haben zudem den vorteil, dass du nicht noch einen max232 als pegelwandler benötigst

Offline nemon

  • Administrator
  • kühlt mit Trockeneis
  • ******
  • Beiträge: 1.628
  • Da bin ich wieder
Re: Mikrocontroller - Lüfterregelung, RS232, Temperaturgesteuert
« Antwort #10 am: 06. Januar 2007, 03:28:06 »
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...
hört sich ja gut an, so weit ;)
wie viel zeit draufgehen kann, nen kleines progrämmchen zu schreiben und nen schaltplan zu entwerfen, sowie auf eine platine zu bringen, erfahre ich derzeit ja auch ;)
schön, dass du dich für delphi entschieden hast, in meinen augen ist es eine gute sprache, da man mit ihr quasi alles machen kann, und dabei noch immer recht gut lesbaren quellcode ermöglicht. schreibst du nur die software aufm pc in delphi, oder nutzt du auch für den µC das programm mit einem pascalcompiler?

wenn du mit einer halben europlatine im eagle nicht hinkommst, sprich mcih mal an, ich hab die non-profitverson, die kann bis zum vollen euroformat.

Offline dennisstrehl

  • hat nen Monsterradi
  • ****
  • Beiträge: 235
Re: Mikrocontroller - Lüfterregelung, RS232, Temperaturgesteuert
« Antwort #11 am: 06. Januar 2007, 18:04:55 »
> wie viel zeit draufgehen kann, nen kleines progrämmchen zu schreiben und nen schaltplan zu entwerfen, sowie
> auf eine platine zu bringen, erfahre ich derzeit ja auch
Puh, freut mich dass ich dass es nicht nur mir so geht ^^
Das Layout zu erstellen ist schon irgendwie... Man kommt damit nicht vorran...

> recht gut lesbaren quellcode ermöglicht.
Also bei mir ist das alles nicht mehr sonderlich gut lesbar, aber ich mach das auch noch nicht lange :D

> schreibst du nur die software aufm pc in delphi, oder nutzt du auch für den µC das programm mit einem
> pascalcompiler?
Ich glaube, die Dinger (Mikrocontroller) lassen sich nicht mal eben in Pascal programmieren... Hab's in Assembler geschrieben.

Das mit der halben Europlatine passt scho (so gerade :D ), trotzdem Danke für das Angebot!

Gruß
Dennis