PID mit Microcontroller

Diskutiere PID mit Microcontroller im Grundsätzliches Forum im Bereich Fragen und Tipps; Hallo, ich versuche zu Zeit, eine PID-Controllerplatine auf Basis des Microcontrollers ATMega8/16/32 zu entwickeln. Hier ein Ausschnitt aus der...

  1. #1 emc2, 18.08.2007
    Zuletzt bearbeitet: 28.08.2007
    emc2

    emc2 Mitglied

    Dabei seit:
    28.12.2006
    Beiträge:
    461
    Zustimmungen:
    0
    Hallo,

    ich versuche zu Zeit, eine PID-Controllerplatine auf Basis des Microcontrollers ATMega8/16/32 zu entwickeln. Hier ein Ausschnitt aus der Platine im CAD-Programm:


    [​IMG]

    Ich könnte Ratschläge bezüglich der Temperatursensoren gebrauchen, speziell von Leuten, die schon mal Sensoren verglichen haben.

    Die Platine im Anhang hat Eingänge für maximal 3 Sensoren (1 x Boiler, 1 x Tasse, 1 x Reserve). Vorgesehen sind für diese Platinenversion KTY-Sensoren im TO92-Mini-Gehäuse, ca 1 x 2 mm gross. Die Sensoren sind mit ~1.50 EUR/Stück sehr preiswert und in der Schaltung braucht man zur Auswertung nur 3 Widerstände und den im Microcontroller vorhandenen ADC. Die Genauigkeit und Kalibrierbarkeit ist gut, 1 Grad Genauigkeit um 100 Grad kein Problem. Es handelt sich um PTC-Sensoren auf Siliziumbasis. Diese Sensoren verwendet Gaggia in einigen Espresso-Maschinen.

    Eigentlich ideale Sensoren. Problematisch ist nur die Zeitkonstante (gibt an, wann nach einem Temperatursprung der Wert zu 63% erfasst ist): Die T63-Zeitkonstante des KTY-Sensors ist 1.5 Sekunden in einem fliessenden Medium. Das Sprungverhalten ist keine lineare Kurve, es braucht ca 5 Zeitkonstanten, bis eine neue Temperatur zu 99% erfasst ist. Für den Boiler könnte das ausreichen, sicher bin ich mir nicht. Die Zykluszeit der PID-Software wird wahrscheinlich grössenordnungsmässig bei 1 Sekunde oder darunter liegen. Ich habe aber auf jeden Fall Zweifel, dass man damit das Temperaturprofil beim Befüllen der Tasse, also über 25 Sekunden, sinnvoll aufzeichnen kann - und darauf möchte ich nicht verzichten.

    Die besten Alternative wären PT100/1000 oder Thermocouple (Thermoelement):

    Thermocouples reagieren am schnellsten, Zeitkonstante ist bei flinken Elementen ein Sekundenbruchteil. Sie können direkt in Wasser getaucht werden. Leider sind sie zickig: es müssen minimale Spannungen gemessen und >100-fach verstärkt werden (empfindlicher als das Messen mit Strömen, Gefahr des Einfangens von Störungen aus elektrischen Feldern) und es ist eine Kaltstellen-Kompensation notwendig, d.h. es muss die Temperatur am Platinen-Anschlusspunkt des Thermodrahtes gemessen werden. Dafür gibt es zwar integrierte ICs, aber die absolute Genauigkeit ist nicht hoch. Die Grundgenauigkeit dürfte im Bereich bis 150 Grad mindestens 2 Grad schlechter sein, als Platin-Sensoren. Ich weiss nicht, ob man die absolute Genauigkeit durch Kalibrieren retten kann, oder ob sich der Fehler durch Fluktuation der Kalbibrierung entzieht. Speziell ist mir unklar, wie sehr die unvermeidbare, starke Temperaturdrift der Platine nach dem Einschalten, durch Anbringen in/an einer Espressomaschine oder durch Bauteile darauf, via Kaltstellen-Kompensation auf das Messergebnis durchschlägt. Da Open-Junction-Sensoren eine eletrische Verbindung durch den Kontakt zum Boiler aufbauen (der auf Schutzerde liegt), gibt es u.U. elektrische Potential-Probleme. Ein Thermoelement kostet ca 10 EUR - 40 EUR, ja nach Genauigkeitsklasse und Bauform.

    PT100/1000 wären am genauesten, eine absolute Genauigkeit von 0.5 Grad ist damit kein Problem. Viele Platin-Fühler sind dick und deshalb langsam, aber es gibt schnelle Dünnfilm-Sensoren, die mit Thermocouples mithalten können (Zeitkonstante 1/10 Sekunde). Allerdings kann man diese nicht direkt in Wasser halten - und nach einer Isolierung sind sie vernutlich nicht schneller, als KTY-Sensoren - nur grösser. Die Sensoren sind bezahlbar (5 EUR/Stück). Platin-Sensoren erfordern ebenfalls eine Auswerteschaltung, da wieder Signale verstärkt werden müssen, sie sind aber unproblematischer, als Thermocouples, weil Strom statt Spannung gemessen wird und keine Temperaturmessung/Kaltstellenkompensation notwendig ist. Die Auswerteelektronik auf der Platine wäre dennoch teuer, weil wegen dem Platz und der gewünschen Präzision nur integrierte, temperaturkompensierte Lösungen wie XTR105 in Frage kommen - pro Kanal 11 EUR.

    Für das Kombinieren von Thermoelement für Tassen-Fühler und PT100/1000 für Boiler reicht der Platz auf der Platine nicht aus. KTY könnt man eventuell mit Thermoelement kombinieren (in der Kombination von KTY mit PT100/1000 sehe ich dagegen keinen Sinn).
     
  2. #2 PeterHH, 18.08.2007
    PeterHH

    PeterHH Mitglied

    Dabei seit:
    16.05.2007
    Beiträge:
    234
    Zustimmungen:
    1
    AW: PID mit Microcontroller

    Temperatursprünge treten doch mit Ausnahme des Brühbeginns am Tassenfühler nicht auf, oder? Ich würde mit den unkomplizierteren KTY-Sensoren anfangen. Auf jeden Fall ein sehr interessantes Projekt. Ich würde gerne hören wie es weitergeht!

    Peter
     
  3. #3 st, 19.08.2007
    Zuletzt bearbeitet: 19.08.2007
    st

    st Mitglied

    Dabei seit:
    31.05.2007
    Beiträge:
    62
    Zustimmungen:
    0
    AW: PID mit Microcontroller

    Zuerst die gute Nachricht: Der Temperatursprung ist sowas von einerlei, da die Atmels sowas von sauschnell sind, daß du in der einen Sekunde Zykluszeit (willste ein Windows dafür programmieren?) noch dein gesamtes Haus bzw. Wohnung steuern kannst, ohne daß das Ding ins Schwitzen kommt. - Ich übertreib mal ein wenig, um die Dimensionen klarzumachen. -

    Ich habe schon etwas rumexperimentiert mit dem Ding, habe noch ein altes Entwicklungsboard mit dem ebenso alten 8515. Die Zykluszeiten sind selbst mit Ausgabe auf einem LCD, das ja extrem langsam ist (ca 50ms zum Wiederbereitsein nach Daten einlesen) so kurz, daß du hier in der einen Sekunde soviele Meßwerte bekommst, daß du nicht mehr weißt, wohin damit.

    Ich gehe davon aus, daß du mit Assember programmierst, wie das in Basic oder C aussieht, kann ich dir nicht sagen, da ich nicht in den besagten Sprachen programmiere. Daher kenne ich auch nicht den Code, den die entsprechenden Compiler generieren. Allerdings steht fest, daß dieser Code definitiv sehr viel ineffektiver sein wird als das Assembler sein kann, wenn ich richtig unsinnige Dinge damit fabriziere. :)

    Die schlechte Nachricht: Der ADC "rampt" den Meßwert mit nem C, da schlagen die handelsüblichen Toleranzen zu Buche, die zum einen Temperaturbedingt schwanken und zudem Systembedingt recht hoch sind. Daher würde ich hier nicht zuviel Augenmerk auf die Genauigleit legen: Die wird nur erreicht, wenn die Spannungs- und Temperaturverhältnisse extrem genau eingehalten werden. Das wäre hier ein glatter Selbstbetrug, da nicht einzuhalten. Und dann kauf mal Kondensatoren mit hoher Genauigkeit: Do hauts di nieder!
     
  4. emc2

    emc2 Mitglied

    Dabei seit:
    28.12.2006
    Beiträge:
    461
    Zustimmungen:
    0
    AW: PID mit Microcontroller

    Wenn ein Sensor zu lange braucht, die Temperatur exakt festzustellen, dann kann der ATMega so schnell sein, wie er will, ohne die korrekten Temperaturmeldungen ist die Geschwindigkeit nutzlos. Leider haben ausgerechnet die einfach zu benutzenden Sensoren, z.B. DS1820, LM75 oder KTYx, schlechte thermische Zeitkonstanten. Das Schnellste, was ich jenseits von Pt100/1000 und TC gefunden habe, waren die KTY-Sensoren.

    Das sich anbietende Thermocouple-IC MAX6675 hat eine Zykluszeit von 170-220ms, d.h. es kann vier bis fünf Messwerte pro Sekunde liefern. Die Thermocouples hätten eine Zeitkonstante von 0.1 - 0.3 Sekunden. Nach vier bis fünf Zeitkonstanten ist der Wert auch nach Temperatursprüngen zu 99% exakt, das entspricht etwa einer Sekunde. Die optimale Zykluszeit für den diskreten PID-Algorithmus, der von Atmel als Beispiel veröffentlich wurde (http://www.atmel.com/dyn/resources/prod_documents/doc2558.pdf), ist ebenfalls mit "nicht viel grösser oder kleiner als eine Sekunde" angegeben und ergibt sich durch die Genauigkeit der vorgeschlagenen Berechung des I- und D-Anteils. Insoweit würden Thermocouples gut passen. Auch zum Messen des Temperaturverlaufs am Siebträger-Ausgang passt eine Sekunde Auflösung - oder soger besser - gut.

    Für Thermoelemente würde der ADC im MAX6675 benutzt. Durch Erwärmung ergibt sich im Bereich von 20 bis 70 Grad Umgebungstemperatur (die Bauteile werden alle für mindestens 70 Grad Umgebungstemperatur ausgewählt) für das IC laut Datenblatt ein zusätzlicher Fehler von 2 LSB bei einer Auflösung von 12 bit für 1024 Grad. Das entspricht, wenn man dem Datenblatt vertrauen darf, ~0.5 Grad Fehler durch Erwärmung der Platine.

    Bei Verwendung der KTY-Sensoren würde der ADC des ATMega benutzt. Die externe Beschaltung besteht dann aber nur aus drei Präzisions-Metallschicht-Widerständen der Temperaturklasse TK25 (+-25ppm) und lässt sich von der Erwärmung kaum beeindrucken. Für den ADC im ATMega ist ein typischer Fehler von 4.5 LSB angegeben, bei einer Auflösung von 10 bit für -10 - 150 Grad. Damit kommt die KTY-Lösung auf voraussichtlich ~0.7 Grad Fehler durch Erwärmung der Platine.
     
  5. #5 st, 21.08.2007
    Zuletzt bearbeitet: 21.08.2007
    st

    st Mitglied

    Dabei seit:
    31.05.2007
    Beiträge:
    62
    Zustimmungen:
    0
    AW: PID mit Microcontroller

    Anscheinend willst du nicht einfach nur ne PID bauen, sondern gleich massig Zusatzinfos mitloggen. Der große Vorteil der Thermokoppler dürfte sein, daß der Meßwert hier bereits digital vorliegt, also keine Wandlung mehr notwendig ist.
    Anscheinend soll der Fühler ins Wasser rein und nicht am Gehäuse befestigt werden. Sicher die beste Lösung, nur ist hier die Frage, inwieweit die Erhöhung der Trägheit durch Isolierung des Thermokopplers oder die Verzögerung durch Messung an der Kesselwand ähnlich sind oder sich unterscheiden. Wäre bestimmt interessant zu testen.
    Für die Referenztemperatur könntest du mit einem Max6610 arbeiten, allerdings sind die Ungenauigkeiten im erwarteten Temperaturbereich laut Datenblatt mit 6610 bei 0.8°C und ohne Kompensation ca 1°C. Das Geld läßt sich hier vielleicht auch sparen. Der Unterschied ist hier einfach nicht hoch genug. Bleiben halt nur die Meßzyklen, die auf 4-5 max pro Sekunde begrenzt sind. Sehe ich eigentlich kein Problem drin.
    Allerdings ist mir gerade aufgegangen, daß die Zykluszeit eben diese eine Sekunde für die zuverlässige Messung sein sollte, oder? Hab ich dich vermutlich erst falsch verstanden.
    Beim Einsatz des KT kannst du natürlich nahezu konstant messen, allerdings kostet das Wandeln auch Zeit, wobei die Wandlung das ganze bestimmt in dieselbe Zeitregion rückt. Dürfte sich aber letztendlich alles im selben Rahmen bewegen. Ist nur mehr Programmierschweiß drin.
    Ein sehr interessantes Projekt. Ich würde in dem Aufwasch vielleicht auch gleich den Kesselfüllstand mit reinnehmen in die Steuerung.
    Die ist bei meiner Maschine auch so gelöst, daß der Wasserwiderstand bzw. die Änderung zur Abschaltung der Pumpe genommen wird. Es fließt hier auch ein Strom vom Steuergerät über den Kessel. Durch Potentialausgleich werden Meßfehler vermieden.
    Als größtes Problem sehe ich fast das Ein/Ausschalten der Heizung, die dürfte hier für einigen Ärger durch Spannungssprünge sorgen. Mit einer kontinuierlichen Regelung ist das viel harmloser, ansonsten sehe ich hier viel mehr Aufwand für die Netzteildimensionierung (Siebung).
     
  6. emc2

    emc2 Mitglied

    Dabei seit:
    28.12.2006
    Beiträge:
    461
    Zustimmungen:
    0
    AW: PID mit Microcontroller

    Dafür ist ein Solid-State-Relais vorgesehen. Da die Boilerheizung keine (?) induktive Last ist, verzichte ich auf einen diskreten Snubber. Das vorgesehene Solid-State-Relais von SHARP, S202S12, hat aber einen kleinen, internen Snubber und schaltet im Nulldurchgang der Netzspannung. Für einen Netzfilter reicht leider der Platz auf der Platine nicht mehr - die spannungssicheren X2-Kondensatoren sind ziemlich gross. Falls ein Filter notwendig sein sollte, gibt es notfalls Kaltgerätestecker-Buchsen mit Netzfilter für die Gehäusewand. Ich hoffe, dass das so gut geht.
     
  7. Stefan

    Stefan Mitglied

    Dabei seit:
    05.11.2001
    Beiträge:
    9.093
    Zustimmungen:
    738
    AW: PID mit Microcontroller

    Mit den Netzbuchsenfiltern wirds dann aber auch schon knapp, je nach Heizleistung der Maschine. Es gibt zwar z. B. von Schurter Modelle mit 16A Nennstrom, aber da passen die normalen Kaltgerätestecker nicht mehr da es sich um die nächstgrössere (rechteckige) Bauform mit liegenden Kontakten handelt. Die 'normalen' gefilterten Kaltgeräteanschlüsse gehen nur bis 10A.
     
  8. emc2

    emc2 Mitglied

    Dabei seit:
    28.12.2006
    Beiträge:
    461
    Zustimmungen:
    0
    AW: PID mit Microcontroller

    Ja, wenn das Projekt klappt und Du es nachbauen wolltest, wären das die wichtigsten externen Teile. Dazu kommen noch hitzebeständige Kabel (PTFE/"Teflon" oder Silikon-Isolierung) und die Thermoelemente. Ich mache mir keine Hoffnung, dass es billig wird, schon die Herstellung der Platine kostet bei 1er-Stückzahl 45 EUR.
     
  9. #9 emc2, 22.08.2007
    Zuletzt bearbeitet: 22.08.2007
    emc2

    emc2 Mitglied

    Dabei seit:
    28.12.2006
    Beiträge:
    461
    Zustimmungen:
    0
    AW: PID mit Microcontroller

    Der Line-Filter kommt, wenn er benötigt werden sollte, vor die Controller-Schaltung, die sehr wenig Strom benötigt, nicht vor die Espressomaschine (die Espressomaschine ist über Solid State Relais galvanisch vom Controller getrennt). Der kleinste verfügbare Line-Filter, z.B. 1A, sollte demnach ausreichen. Für die Leistungsseite - d.h. Relais - plane ich übrigens für 8A. Meine Espressomaschine Gaggia Coffee benötigt 1400VA / ~6A.
     
  10. st

    st Mitglied

    Dabei seit:
    31.05.2007
    Beiträge:
    62
    Zustimmungen:
    0
    AW: PID mit Microcontroller

    Was hältst du von der Idee, den internen PWM des Mikrokontrollers zu verwenden, um so eine stufenlose Regelung der Heizung zu bekommen? Das hätte eben noch den Vorteil der nicht mehr benötigten Filterung der Netzspannung. Und würde mit Sicherheit Kosten sparen helfen.
    Und ist sicherlich eine sehr elegante Lösung...
    Bis jetzt scheint das ganze ja zumindest auf Hardwareseite schon fertig zu sein, wie sind denn deine Ideen zur Software? Wie programmierst du das? In Assembler oder mit Hochsprache?
    Wieviele Infos willst du auf dem Display ausgeben? Willst du evtl auch Steuerungsparameter im Betrieb ändern? Ich denke doch, daß dem so sein soll.
    Willst du das alles alleine durchziehen oder wäre das eine Sache, die du mit anderen zusammen entwickeln willst?
    So eine Entwicklung bringt jedenfalls ein extrem gutes Verständnis für die einzelnen Zusammenhänge der im einzelnen einfachen, aber im Zusammenspiel sehr komplexen Vorgänge, die zu gutem oder schlechtem Kaffee führen können. Mich interessiert die Thematik sehr und ich bin gerne bereit, Zeit, Kaffee und Laune dafür zu investieren.
     
  11. emc2

    emc2 Mitglied

    Dabei seit:
    28.12.2006
    Beiträge:
    461
    Zustimmungen:
    0
    AW: PID mit Microcontroller

    Der PID-Algorithmus liefert die PWM gratis, d.h. er bestimmt die Dauer der Heizimpulse. Es handelt sich um PWM mit <=1Hz Auflösung, IMHO ausreichend zur quasi-stufenlosen Regelung einer Heizung. Hardware-Pulsweiten-Modulation zu nehmen, wäre übertrieben (im Kilohertz-Bereich nützlicher, beispielsweise zur Erzeugung von Tönen). Zudem kann das ausgewählte SSR sowieso nicht mit beliebiger Frequenz schalten, da es eine Nulldurchgangserkennung besitzt.

    Du meinst das Layout? Mehr oder weniger abgeschlossen. Die Hardware ist noch lange nicht fertig, frühestens im nächsten Monat lasse ich die Platine ätzen.

    Software ist ein Thema in weiter Ferne ;) Erst die Platine beenden, fertigen lassen und testen, um eine Basis zu haben. Vieleicht wird ein zweiter oder dritter Versuch fällig - ich bin Espressotrinker, kein Elektroingenieur. Vieleicht klappt es auch gar nicht mit der Elektronik, wer weiss. Sollte es klappen, dann erfolgt die Programmierung in C, möglicherweise kombiniert mit einem kleinen RTOS, um die zahlreichen parallelen Aufgaben bequemer in den Griff zu bekommen.
     
  12. emc2

    emc2 Mitglied

    Dabei seit:
    28.12.2006
    Beiträge:
    461
    Zustimmungen:
    0
    AW: PID mit Microcontroller

    Kennst Du dich zufällig mit Schurter-Filtern aus? Metallgehäuse bedeutet Schutzklasse 1, also würde ich z.B. SHURTER 5110.1043.1 wählen (bzw. eine Variante davon mit passender Strombelastbarkeit). Aber wie wird die Schutzerde angeschlossen? Laut Schaltplan im Datenblatt sollte der Filter auf beiden Seiten einen Anschluss für Schutzerde haben. Auf der Last-Seite wollte ich die vorhandenen Schutzerde-Kabel zu den verschiedenen Gehäuseteilen anstecken. Im Filter-Foto sieht man aber keinen Schutzerde-Anschluss auf der Lastseite (allerdings auch ungünstige Perspektive). Reichelt.de bezeichnet den Filter explizit als "zweipolig", dort läuft er unter der Artikel-Nummer ESF5110 10A SN. In der Datenblatt-Zeichnung kann ich nicht erkennen, ob er auf der Lastseite einen Schutzerde-Anschluss hat, es sieht aber eher nicht so aus:

    http://www.schurterinc.com/pdf/german/typ_5110.pdf

    Alleine über das Gehäuse des Filters erwarte ich keine ausreichende Erdung.
     
Thema:

PID mit Microcontroller

Die Seite wird geladen...

PID mit Microcontroller - Ähnliche Themen

  1. Einfaches Druckprofil ohne Microcontroller

    Einfaches Druckprofil ohne Microcontroller: Ich spiele mit dem Gedanken einen einfach aufgebauten Mod zu machen der einfache Druckprofile zulässt. Es handelt sich hierbei um eine reine...
  2. Cigar Box Microcontroller tot. Dalla Corte Mini

    Cigar Box Microcontroller tot. Dalla Corte Mini: K*CK*!!! Ich hab bei meiner DC-mini soeben den Microcontroller in der Cigar Box geschossen. Die Maschine hat schon länger gesponnen und immer...
  3. Projekt: Timer mit Microcontroller

    Projekt: Timer mit Microcontroller: Hallo Zusammen, in einem anderen Thread hatte ich schon mal angedacht den Timer mit dem Arduino neu zu projektieren. Da ich den Arduino zwar gut...
  4. Microcontroller - eine HX Steuerung selbst bauen

    Microcontroller - eine HX Steuerung selbst bauen: Hallo, dieser Thread gehört zu diesem hier . Blu, hast Du schon mal darüber nachgedacht dir die ganze HX Steuerung selbst zu bauen? Damit...
  5. PID mit Microcontroller - Zwischenstand

    PID mit Microcontroller - Zwischenstand: So sieht die Platine aus: [IMG]