Forum: Mikrocontroller und Digitale Elektronik Thermoelement - ADC - Überlagerte Wechselspannung


von Johannes B. (panstone)


Angehängte Dateien:

Lesenswert?

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 :)

von Purzel H. (hacky)


Lesenswert?

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.

von Anja (Gast)


Lesenswert?

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

von Johannes B. (panstone)


Lesenswert?

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

von Anja (Gast)


Lesenswert?

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

von Johannes B. (panstone)


Lesenswert?

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?

von Anja (Gast)


Lesenswert?

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

von Johannes B. (panstone)


Lesenswert?

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.

von Purzel H. (hacky)


Lesenswert?

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

von Anja (Gast)


Lesenswert?

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

von Johannes B. (panstone)


Lesenswert?

Direkt an Masse oder über einen Kondensator an Masse?

von Anja (Gast)


Lesenswert?

Ich würde direkt an Masse anschließen. (Spart einen Kondensator)

Gruß Anja

von Elena (Gast)


Lesenswert?

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

von Purzel H. (hacky)


Lesenswert?

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.

von Johannes B. (panstone)


Lesenswert?

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 :)

von Elena (Gast)


Lesenswert?

Zeige uns doch bitte erst einmal, wie deine Schaltung aussieht!

von Johannes B. (panstone)


Lesenswert?

Ich hab das oben schon beschrieben und versuch es jetz aber gerne 
nochmal zu skizzieren:



 ----------------------------> PA0 (ATmega)
<-
 ----------------------------> PA1 (ATmega)
                       -
                       -
                      ___
                     10µF
                      ___
                       -
                      GND

von Elena (Gast)


Lesenswert?

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.

von Johannes B. (panstone)


Lesenswert?

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 :(

von Elena (Gast)


Lesenswert?

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

von Anja (Gast)


Angehängte Dateien:

Lesenswert?

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

von Anja (Gast)


Lesenswert?

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

von Johannes B. (panstone)


Lesenswert?

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?

von Elena (Gast)


Lesenswert?

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

von Elena (Gast)


Lesenswert?

>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?

von Johannes B. (panstone)


Lesenswert?

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? :)

von Purzel H. (hacky)


Lesenswert?

Betrachte das Thermoelement als relativ niederohmige Spannungsquelle.

von Elena (Gast)


Lesenswert?

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

von Johannes B. (panstone)


Lesenswert?

Wozu dient die Diode denn dann? Einfach nur damit das Potential 
angehoben wird? Das könnte man doch auch mit einem simplen Wiederstand 
erreichen?

von Arc N. (arc)


Lesenswert?

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.

von Johannes B. (panstone)


Lesenswert?

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 
:)

von Purzel H. (hacky)


Lesenswert?

Die Diode laesst dich die Kaltstelle messen, denn deren Temperatur 
aendert sich mit -2mV/K

von Johannes B. (panstone)


Lesenswert?

Muss ich diese Spannung dann noch extra messen oder wie?

von Purzel H. (hacky)


Lesenswert?

Ja. So jede hunderste Messung sollte genuegen. Und dann die 
Kaltstellentemperatur zur Thermoelemente Temperatur addieren. Denn das 
Thermoelement misst differentiell.

von Johannes B. (panstone)


Lesenswert?

Aber warum ist die Diode dann direkt mit einer thermoleitung in Anjas 
Zeichnung verbunden?

von Arc N. (arc)


Lesenswert?

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.

von Anja (Gast)


Lesenswert?

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

von Johannes B. (panstone)


Lesenswert?

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 :)

von Elena (Gast)


Lesenswert?

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

von Purzel H. (hacky)


Lesenswert?

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
Noch kein Account? Hier anmelden.