Hallo liebe Mikrocontroller.net Member. Ich lese seit dem ersten Tag an dem ich anfing mit Mikrocontrollern zu arbeiten hier mit und habe viel Wissen aus diesem Forum ziehen können. Jetzt habe ich jedoch ein Problem, wo ich nicht weiterkomme, und ein bisschen Hilfe gebrauchen könnte. Zum Thema: Ich habe für meine Studienarbeit ein Heizelement entwickeln lassen. Dieses hängt an 230V AC. In der Nähe der Heizwendel ist ein Thermoelement Typ K eingebaut/eingelassen (direkt in der Keramik) An einem JUMO 2PKT Regler funktioniert alles einwandfrei, jedoch möchte ich einen eigenen Regler bauen auf Basis eines ATmega32 der momentan auf dem STK500 montiert ist. Als Software benutze ich das AVR Studio. Zu Guter letzt sei noch gesagt, dass ich relativ wenig Wert auf höchstgenaue Werte lege. ±10 Grad tut mir nicht weh, da es bei der Anwendung auf genaueres nicht unbedingt ankommt. Also bitte nicht darauf eingehen, dass ich noch ein PT100 zur Kaltstellenkompensation oder ähnliches benötige, darum geht es erstmal nicht. So nun zum eigentlichen Problem: Ich greife die Thermospannung am Thermoelement ab, und verbinde beide Leitungen mit PA0 und PA1. Im ADC stelle ich die Register auf Differenzeingangsmessung mit GAIN=200. Ich starte die Wandlung über eine Funktion, warte bis das ADC Bit zurückgesetzt wurde und gebe das Register zurück. Hier bei lasse ich links ausrichten und gebe nur ADCH zurück, wandle also in 8 Bit. Ich starte zurzeit 8 Messungen und bilde daraus den Mittelwert. Laut Datenblatt und ein wenig Nachdenken können bei Differenzmessung die Werte also vom negativen (dass ich nicht benötige) bis +127 gehen. Den Mittelwert lasse ich mir über die serielle Schnittstelle ins Putty übertragen. Ich messe im 50 ms Abstand und verzögere einfach mit der delay Funktion. Wenn ich nun messe, schwanken die Werte nur um ±1 oder 2 was denke ich am Gain Error des eingebauten Amps liegen wird. Die Werte stimmen auch fast genau mit den Umrechnungstabellen für Typ K überein. Heize ich jedoch, springen die Werte in der Aufheizphase ziemlich stark hin und her. Meiner Meinung wird über die Heizwendel eine Wechselspannung in die Leitung bzw direkt ins Thermoelement induziert. Also habe ich mir das auf dem Scope auch mal angesehen. Ich besitze zwar nur ein uraltes Conrad Oszi aber man konnte erkennen, dass eine Wechselspannung überlagert wird. Da die Auflösung des Oszis bei maximal 10mV/T liegt, und die Thermospannung ja von 0 bis ungefähr 33mV in meinem Fall geht, kann man schwer erkennen, wie genau diese Wechselspannung aussieht. Was ich nicht verstehe ist jedoch, wenn ich das Thermoelement am ADC hängen habe, und parallel dazu mit dem Osci messe, habe ich sehr genaue und lineare Werte auch während dem Aufheizen. Es sind keinerlei Schwankungen vorhanden. (Oszi Eingangsimpedanz 1MOhm und 32pF). Kann mir einer da vielleicht erklären warum dies so ist? Desweiteren habe ich dann versucht, einen RC Tiefpass vor den ADC zu schalten, um die Wechselspannung zu dämpfen. Als Knickfrequenz habe ich ca 1,6 Hz gewählt mit 10k und 10µF, habe jedoch keine unmittelbare Verbesserung erkennen können. Hier haben die Werte sogar einen kleinen Offset wenn ich aufhöre zu heizen. Für meine geplante Zweipunktregelung benötige ich allerdings nicht-schwankende Werte, um korrekte Hysteresabfragen starten zu können. Vielleicht seh ich den Wald vor lauter Bäumen nicht aber irgendwie verwirrt mich das mittlerweile so sehr, dass ich einfach hoffe, dass hier jemand einen Tipp für mich hat. Auf dem ersten Bild ist die Aufheizphase zu sehen, wo das Thermoelement direkt am ADC hängt, Bild zwei ist mit parallel angeschlossenem Oszi und Bild 3 mit dem RC-Tiefpass. Hier erkennt man schön dass bei der 100 die Spannung für die Heizwendel abgeschaltet wurde, und die Spannung schlagartig sinkt. Ich hätte es gerne so wie im Bild 2 ;) Hoffe ich habe nicht zu viel geschrieben, ist ja doch recht lang geworden :)
Ein Thermoelement bringt dermassen wenig, dass ich mal gratuliere, wenn ueberhaupt was kommt. Fuer so kleine Spannungen sollte man differentiell arbeiten. Analog differentiell. Ich bin mir nicht sicher wie gut der Differenzverstaerker des Mega ist. Ich verwende zb einen ADC mit differentialeingang. An den Minus-eingang des ADCs kommt ein Spannungsteiler, der mit Referenzspannungs-halbe bringt, plus der eine Anschluss des Thermoelementes. An den Plus-eingang des ADCs kommt der andere anschluss des Thermoelmentes. Der ADC hat einen richtigen Differenzverstaerker am Eingang. Sowas wuerd ich nun auch vorschlagen. zB einen LT 2053, oder so, der die Differenzstufe macht vorschalten. Alternativ waere zu mitteln. Eine Heizung ist selten schnell.
Hallo, ich vermute mal daß du dir irgendwelche Kriech oder Ableitströme (Kapazitiv) über deine Schaltung ziehst. Wenn dann das Oszi dranhängt fließt der (AC-) Strom über die Oszi-Masse. Um 50Hz Brumm auszufiltern müßtest Du deine 8 (oder mehr) Meßwerte innerhalb von exakt einer Periode von 20 ms an äquidistanten Winkeln verteilen. Ich würde eher so alle 1 ms messen und dann 20 Meßwerte Mitteln. Gruß Anja
@Quad Oschi Danke erstmal für die schnelle Antwort aber ich kann die Spannung ja genau messen. Auch wenn das mit dem eingebauten Verstärker vll nicht die optimale Lösung ist, aber sie funktioniert ja. Es geht eher um die Schwankungen der Werte, die NUR während den Heizperioden auftreten und nicht um das Messen allgemein, denn das funktioniert einwandfrei so. Und warum diese Schwankungen durch das parallele Messen mit einem Oszilloskop verschwinden. @Anja: Woher könnten denn diese Kriechströme kommen? Es muss doch wenn etwas mit der Verschaltung des STK zu tun haben, denn ansonsten verwende ich ja "keine" zusätzliche Schaltung. Das mit den 20 Werten probier ich gerade mal aus.
Johannes Bühler schrieb: > Woher könnten denn diese Kriechströme kommen? Durch irgendeine kapazitive Kopplung von den 230V auf das Thermoelement. Die Ströme werden dann durch die Eingangsschutzdioden des ADCs auf GND abgeleitet. An der seriellen Schnittstelle ist dann deine Schaltung über den Schutzleiter des PCs geerdet. Oder Du hast eines von den neumodischen Steckernetzteilen wo möglicherweise Y-Kondensatoren direkt von der 230V-Seite auf die Niedervoltseite angeschlossen sind um Funkstörungen zu beseitigen. Es müßte also auch helfen den einen ADC-Eingang direkt oder über einen großen Kondensator >= 100nF an GND zu legen. Gruß Anja
Ach Anja ich könnte dich küssen :D Habe jetzt den 10µF Cap einfach zwischen PA0 und GND vom STK gehängt und schon klappt alles wunderbar. Ich habe ein hama 46611 Universal Netzteil mit einstellbarer Spannung. Habe ich das jetzt richtig verstanden, dass die kapazitiven Kriechströme jetzt einfach über den Kondensator nach GND fließen und somit nicht mehr in den AD hinein?
Johannes Bühler schrieb: > und verbinde beide > Leitungen mit PA0 und PA1. Moment mal heißt das etwa daß das Thermoelement keinen Bezug zur Schaltungsmasse hat? Zeig mal deine Eingangsbeschaltung. Gruß Anja
Nein hat keinen Bezug. Dachte das brauche ich für die differentielle Messmethode nicht. Und die brauche ich ja weil beim Single-ended ja keine Verstärkung vom ATmega zu erwarten ist. Eingangsbeschaltung ist einfach wie beschrieben die beiden Thermoelementleitung an die Pins vom Atmega. Eine Leitung (die grün markierte) geht an PA1 und die andere an PA0.
>Nein hat keinen Bezug. Dachte das brauche ich für die differentielle
Messmethode nicht.
Nur schon gegen EMV sollte man beide Anschluesse des Thermoelementes mit
100nF gegen GND abblocken.
Johannes Bühler schrieb: > Dachte das brauche ich für die differentielle > Messmethode nicht. Doch du mußt auf jeden fall sicherstellen daß beide Spannungen im "Common mode input Voltage Range" bleiben. Beim ATMEGA müßte dies zwischen 0V und AVCC sein. Wenn die Eingänge floaten können sie ein beliebiges Potential (bis zu den Eingangsspannungsschutzdioden) annehmen. Der ADC wird dann allerdings nicht-linear. -> also entweder einen Eingang direkt an Masse oder eine Hilfsspannung (Spannungsteiler oder Diode + Pull-up falls du noch eine Kaltstellenkompensation machen willst). Die Hilfsspannung dann gut abblocken. Gruß Anja
Direkt an Masse oder über einen Kondensator an Masse?
Ich würde direkt an Masse anschließen. (Spart einen Kondensator) Gruß Anja
>Auch wenn das mit dem eingebauten Verstärker vll nicht die >optimale Lösung ist, aber sie funktioniert ja. Nein, es funktioniert ja gerade nicht, sonst würdest du hier nicht posten, oder? >Nein hat keinen Bezug. Dachte das brauche ich für die differentielle >Messmethode nicht. Oh je, oh je! >Eine Leitung (die grün markierte) geht an PA1 und die andere an PA0. Hä? Wo ist was grün markiert? >Direkt an Masse oder über einen Kondensator an Masse? Du mußt uns schon deine Schaltung zeigen. So geht das nicht.
Ich wuerd nicht gegen Masse messen. Denn dann ist die Thermospannung ein paar uV gegen Masse. Da haben Verstaerker noch Muehe. Dann bin ich lieber auf Vref/2.
Also du würdest wie oben beschrieben VRef/2 an den einen Eingang + 1 Thermoleitung die dadurch auch auf VRef/2 gehoben wird. Die andre Thermoleitung dann an den anderen Eingang. Aber dann habe ich doch direkt eine Riesendifferenz zwischen beiden Leitungen oder nicht? Kannst du vll mal aufzeichnen wie du die Beschaltung meinst denn ich blick da irgendwie nicht ganz durch :)
Zeige uns doch bitte erst einmal, wie deine Schaltung aussieht!
Ich hab das oben schon beschrieben und versuch es jetz aber gerne nochmal zu skizzieren: ----------------------------> PA0 (ATmega) <- ----------------------------> PA1 (ATmega) - - ___ 10µF ___ - GND
Setze das Potential von PA1 zumindest etwas höher als 0V. Verwende dazu einen Spannungsteiler, den du von deiner Referenzspannung zum PA1-Eingang führst und von dort zu GND. Dadurch wird der PA1-Anschluß auf ein definiertes Potential gelegt, welches nicht wegdriften kann und welches der Diff-Verstärker vor allem handeln kann. Den Cap von Anja kannst du dort lassen.
Ok werde ich versuchen aber: Wie verhält es sich mit der Differenzspannung wenn ich einen Eingang auf festes Potential hebe? Hab da irgendwie noch ein Verständnisproblem, leider :(
>Wie verhält es sich mit der Differenzspannung wenn ich einen Eingang auf >festes Potential hebe? Der Differenzverstärker verstärkt bestenfalls nur die Differenz der Eingangssignale und läßt den Gleichtaktanteil unverstärkt. Also, wenn du 10mV auf 1V sitzen hast, also der eine Eingang 1V hat und der andere 1,01V, dann verstärkt der Differenzverstärker nur die Differenz, also 10mV. Am ADC-Eingang erscheint diese Spannung mit dem Verstärkungsfaktor verstärkt. Der 1V Offset wird nicht mitverstärkt, sondern unterdrückt.
So habe ich das ursprünglich gemeint. Wenn Du die Spannung über der Diode mißt hast Du gleich die Kaltstellenkompensation (ca -2mV/K). Bei differentieller Messung die Temperaturdifferenz. Den Offset macht die Diode. (0,6-0,7V) Die Störungen werden durch die beiden 100nF erledigt. wichtig ist halt daß die 100nF und die Diode dicht an den ADC-Eingängen sitzen. (+ kurze Masseleitung). Gruß Anja
Anja schrieb: > Wenn Du die Spannung über der Diode mißt hast Du gleich die > Kaltstellenkompensation (ca -2mV/K). Nicht daß Mißverständnisse auftreten: Die mußt Du (falls Du sie haben willst) natürlich entsprechend der Empfindlichkeit von deinem Thermoelement im Controller mit verrechnen. Gruß Anja
Ja das mit der reinen DIfferenz verstehe ich. Aber zum Thema Thermoelement: Die eine Leitung ist ja durch PA1 dann auf sagen wir mal 1V angehoben. Also hat diese Leitung das feste Potential von 1V. Wird dann automatisch dieses "Grundpotential" auch auf die andere Leitung übertragen durch die Verbindung an der Kontaktstelle der Thermoelements? Zusätzlich dazu natürlich die reine Thermospannung von wie angenommen zB 10mV. Dann ist der eine Eingang (PA1) auf 1 V der andere (PA0) auf 1,01V und diese Differenz wird verstärkt. Sehe ich das so richtig?
>Wird dann automatisch dieses "Grundpotential" auch auf die andere Leitung >übertragen durch die Verbindung an der Kontaktstelle der Thermoelements? >Zusätzlich dazu natürlich die reine Thermospannung von wie angenommen zB >10mV. Ja. >Dann ist der eine Eingang (PA1) auf 1 V der andere (PA0) auf 1,01V und >diese Differenz wird verstärkt. Sehe ich das so richtig? Ja.
>Nicht daß Mißverständnisse auftreten: >Die mußt Du (falls Du sie haben willst) natürlich entsprechend der >Empfindlichkeit von deinem Thermoelement im Controller mit verrechnen. Und die Diode muß dort sitzen, wo die Thermolement-Leitungen mit den Kupferleitungen der Platine verbunden werden, damit sie dieselbe Temperatur wie diese Kontaktstelle hat, gell?
Ok ich fasse nochmal zusammen und hoffe dass ich es jetzt richtig verstanden habe: An der Diode fällt von den 5 V ca 0,7V ab. Der Wiederstand dient der Strombegrenzung. Dadurch wird die mit - markierte Thermoelementleitung auf 0,7V angehoben. Durch den Kontakt ergeht es der anderen Leitung genauso + die Thermospannung also ist die mit + markierte Leitung bei 10mV auf 0,71V. Diese Differenz wird verstärkt und kann gemessen werden. Erhöht sich nun die Temperatur an der Messstelle, ändert sich die Spannung die an der Diode abfällt um -2mV/K. Dadurch werden dann aber auch gleichzeitig die "Grundpotentiale" beider Leitungen mitverschoben und ich messe weiterhin die reine Differenz. Die Störungen werden über die Kondensatoren auf Masse gezogen. Soweit korrekt? :)
Betrachte das Thermoelement als relativ niederohmige Spannungsquelle.
>Erhöht sich nun die Temperatur an der Messstelle, ändert sich die >Spannung die an der Diode abfällt um -2mV/K. Nein, die Diode hängt an der gleichen Temperatur wie die Kontaktstelle, wo du die Thermoelementleitungen mit den Kupferleitungen der Platine verbindest. Denke daran, daß du ja an den Enden der Thermoelementleitungen weitere Thermoelemente hast! Mach dich mal schlau mit dem richtigen Anschluß von Thermoelementen und gurgle nach Begriffen wie "Kaltstellenkompensation".
Wozu dient die Diode denn dann? Einfach nur damit das Potential angehoben wird? Das könnte man doch auch mit einem simplen Wiederstand erreichen?
Etwas passt noch nicht... Falls die Angaben von oben stimmen: Thermospannung 0 - 33 mV (Tdiff ~ 800 °C), Verstärkung 200 wären 0 - 6.6 V am Ausgang. Das wird nicht funktionieren da 1. der Controller (wahrscheinlich) nur mit 5V betrieben wird und max. 6V verträgt, 2. die Referenzspannung ebenso hoch sein müsste, 3. die Referenzspannung bei differentieller Messung nur AVCC - 0.5V betragen darf. Anders gesagt: VCC = AVCC = 5V, VREF = 4.5V max, 4.5V / 200 = 22.5 mV max (keine 33 mV), 22.5 mV / 2^7 Bit = 175 uV d.h. Auflösung beträgt max. ~ 4 °C d.h. Oversampling um die Auflösung zu erhöhen bzw. um das Rauschen zu senken wäre angebracht.
Hatte ich vergessen zu erwähnen: Momentan bin ich bei 8 Bit natürlich mit 800 Grad zu hoch. Etwas um die 22mV (wie du korrekt errechnet hast) kann ich mit den 128 Schritten auflösen. Aber das ist ein anderes Problem und sollte ja mit einem externen AD Wandler mit anderem Verstärker oder vorgeschalteter Verstärkerschaltung machbar sein. Trotzdem Danke für den Hinweis. Was meinst du mit Oversampling? Bzw wie soll ich das erreichen mit der jetzigen Schaltung? Werde mich nach dem Kino nochmal in das Thema Kaltstellenkompensation einlesen müssen. Aber ein zwei Sätze zur Funktion der Diode wären noch ganz hilfreich. Sry für die vielen Fragen aber jeder fängt mal klein an würde ich sagen :)
Die Diode laesst dich die Kaltstelle messen, denn deren Temperatur aendert sich mit -2mV/K
Muss ich diese Spannung dann noch extra messen oder wie?
Ja. So jede hunderste Messung sollte genuegen. Und dann die Kaltstellentemperatur zur Thermoelemente Temperatur addieren. Denn das Thermoelement misst differentiell.
Aber warum ist die Diode dann direkt mit einer thermoleitung in Anjas Zeichnung verbunden?
Quad Oschi schrieb: > Ja. So jede hunderste Messung sollte genuegen. Und dann die > Kaltstellentemperatur zur Thermoelemente Temperatur addieren. Sry, genauso bitte nicht. - Spannung des Thermoelements messen - Temperatur der Kaltstelle bestimmen - Temperatur der Kaltstelle in die Thermoelementspannung umrechnen - umgerechnete Spannung zur Spannung des Thermoelements addieren - die Summe in die eigentliche Temperatur umrechnen > Denn das Thermoelement misst differentiell.
Johannes Bühler schrieb: > Aber warum ist die Diode dann direkt mit einer thermoleitung in Anjas > Zeichnung verbunden? Damit Du 2 Widerstände eine Diode und einen ADC-Kanal einsparen kannst. Gruß Anja
Klack. :) ich mess dann einmal differenz und direkt danach single ended die diode und schalte softwaremäßig um. aber dann hatte ich doch recht, dass wenn sich die Temperatur an der Diode ändert, ändert sich auch die Spannung die an ihr abfällt und dementsprechend verschiebt sich das Potential der thermoelementleitung auch. Macht keinen Unterschied für die differenzspannung aber nur damit ich das verstehe :)
>aber dann hatte ich doch recht, dass wenn sich die Temperatur an der >Diode ändert, ändert sich auch die Spannung die an ihr abfällt und >dementsprechend verschiebt sich das Potential der thermoelementleitung >auch. Wenn du mit "Meßstelle" DIESE Seite der Thermoelementleitungen meinst, also die, die du mit der Schaltung verbindest, dann ja. Aber mach dich wirklich mal schlau mit der Physik der Thermoelementmessung und der Kaltstellenkompensation. Da kann man eine Menge falsch machen...
Man kann's auch zu kompliziert machen. Das erste ist natuerlich die Wahl des Thermoelementes. Wenn man's gerne kompliziert macht, dann nimmt man ein Typ B, Rhodium, das hat einen Durchhang, dh zwei Temperaturen bringen dieselbe Spannung. Beim Typ K ist das aber nicht so. Je nach Temperaturbereich kann man allenfalls eine Konstante einsetzen und vergibt so ein paar Grad Genauigkeit.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.