PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Temperaturmessung 0->1000°C | Meßumformer & ADC- Wand



Fighter-2
14.11.2007, 23:33
Hey!

Ich brauche mal eure Hilfe!

Undzwar habe ich eine Temperaturmessung vor, die ich für Abgasmessungen benutzten möchte!

Ich möchte eine Temperatur messen und diese auf einem LCD Display anzeigen lassen!

So nun zum Technischen!

Ich werde ein Thermoelement dafür benutzen, denn Pt100, reichen vom Messbereich und der Schnelligkeit leider nicht aus!

Habe ein Thermoelement des Typ's "K" in Sicht! Hat einen Messbereich von -200°C bis 1200°C, reicht als völlig, denn die Abgase gehen bis max 900°C!

Da man die Thermospannung, ja leider net so, am AVR messen kann, habe ich mir eine Schaltung mit einem Messumformer überlegt!

Undzwar sieht die Schaltung so aus:

http://img87.imageshack.us/img87/1552/schaltungicix7.jpg

Ich habe eine Spannungsversorgung von 24V für den Messumformer!

Denn er hat eine Arbeitsspannung von 12V DC bis 24 V DC!

Dieser Messumformer ist natürlich auf das Thermoelement abgestimmt ect!

Nun arbeitet der Messumformer halt so, das der in der Leitung von der eigentlichen Spannungsversorgung einen bestimmten Strom fliesen läßt! Das natürlich Temperaturabhägig ist!

Ich habe den Messumformer auf einen Messbereich von 0°C -- > 1000°C gestellt, das heißt bei 0°C fleißen 4mA über den Wiederstand R1 und dann bei 1000°C 20mA über den R1!

Jetzt stelle ich mir die Frage, wie kann ich das perfekt umwandeln, das der AVR damit arbeiten kann? Ich habe auch schon erfahren, das der AVR 0 -> 5V am ADC Port messen kann!

Da ja bei 20mA dann quasi 5V am R1 abfallen müssten, damit man den MAX Wert hat, müsste man einen Wiederstand von 250 Ohm verwenden!

Aber wäre es nicht besser unter den 5V zubleiben? Oder kann man am AD Port auch mehr V's messen? Dachte so daran, das man besser bei 1000°C 4,5V am AD Port hat, damit man noch was Freiraum hat, oder?

Also einen Wiederstand mit 225 Ohm?

Was meint ihr?

Wird das ein hartes Programmierstück für mich? Oder ist das noch relativ einfach?

Wie viel LEistung vom AVR ist damit den schon vergeben? Bekommt der noch andere Sachen hin, wie Port abfragen, LCD texte Uhrzeit ect! Oder sprengt man irgentwann die Leistungen vom AVR?

Achja ich wollte einen Atmega32 verwenden!

So freue mich sehr über eure Unterstützung! :)

LG Christian

robodriver
15.11.2007, 10:01
Also ADC-Werte auszuwerten und auf dem Display anzuzeigen schaft ein Mega32 mit links, da ist er sogar noch ziemlich unterfordert ;)

Zu deiner Schaltung: Du hast da noch einen kleinen Denkfehler drinne: Wenn über R1 5 Volt abfallen dann hast du an deinem Messpunkt 19 Volt! (24-5)
Also müsstest du den Widerstand schonmal auf der einen seite am Masse (-) schalten damit du die 5 Volt Spannungsfall auch an deinem Messpunkt hast (der sich ja an Masse Orientiert)
Wenn du nun sagst das die Abgase maximal 900°C haben, dann kannst du es Problemlos so machen, das die Messspannung bei 1000°C 5 Volt entspricht.
Beachten solltest du auf jeden Fall die Toleranzen des Widerstandes!

Generell ist es so: Umso größer dein Messbereich, desto kleiner die Messgenauigkeit.
Der Mega32 hat einen 10 Bit AD Wandler. Also 0-1024 das entspräche bei einem Messbereich 0-1000°C dann etwa 0,97Kelvin pro Bit.

Also ich würde hier den 250 Ohm Widerstand einsetzen. Ich denke 1 Kelvin ist genau genug oder?


PS: Warum willst du den Mega32 benutzen? ein Mega8 oder noch kleiner tuts in diesem falle genauso gut und schonen den Geldbeutel ;)

robodriver
15.11.2007, 10:41
Sorry, ich muss mich korrigieren:

0-1000°C entsprechen ja 4-20 mA; also bei 250 Ohm = 1-5 Volt

Das heißt du hast auf 1000K nur 4V Spannungsdifferenz, also nur eine Auflösung von 1,22 Kelvin pro Bit.

Durch abändern der Schaltung (Spannungsteiler) kannst du aber auch wie oben beschrieben die maximale Auflösung von 0,97K erreichen, wenn du das brauchst.

Fighter-2
15.11.2007, 17:56
Joa der Atmega32 is doch gut oder??

Welcher AVR is noch besser??

Mir würde es auch reichen, wenn ich ne Auflösung von 5°C habe! ;)

Wie muss ich die ADC Werte den intern umrechnen??

Hat einer von euch nen Beispiel?? Zu dem Wiederstand, wie soll ich das den machen? In die Masseleitung vom Messumformer den Wiederstand rein setzten? Dann hat der ja masse und der Strom is ja auch dort,! ;)

Was meint ihr?

LG Christian

robodriver
15.11.2007, 18:18
Es geht nicht darum ob ein anderer AVR besser ist. Dieser ist keine Frage ein sehr guter uC. Für deine Aufgabe reicht aber ein wesentlich kleinerer. Warum einen so großen umfangreichen Chip kaufen, wenn man ihn dann nur zu 1% oder so nutzt...
Sollte nur eine Frage der Effektivität sein...

Generell ist das alles sehr einfach:

Konfigurieren des ADC:


Config Adc = Single , Prescaler = Auto


Starten des ADCs:


Start Adc


Einlesen von Werten am ADC0:


Wert = Getadc(0)


und dann nur noch die Berechnung:
wie gesagt: 0-1000°C entsprechen 1-5 Volt.
Also der Wert = 205 bis 1024
da 205 = 0°C entspricht würde ich den Wert zunächst mit 205 subtrahieren.
Dann hast du einen Bereich 0-1000° = 0-819
da 819 = 1000° sind muss man den Wert mit 1,22 Multiplizieren.
Und das wars schon.
Im Code sieht das dann so aus:


Wert = Getadc(0)
Wert = Wert - 205
Wert = Wert * 1.22


und ums dann auf dem Display anzuzeigen:


Cls
Locate 1,1
lcd Wert


So und das wars schon.
Jetzt kommt es noch drauf an wie oft du einen Messwert erfassen möchtest.

Und naja, die paar Befehle, da bleibt der Controler halt sowas von leer, das es unnütz wäre einen solch großen Controler zu kaufen.

Du benutzt im einem Auto als Scheibenwichermotor auch keinen 100KW Motor, weil es halt unnötig ist und ein kleinerer ebenfalls tut und billiger ist.

Funktionieren tut der Mega32 definitiv, aber ein günstigerer Controller halt genauso ;)

Gruß Robodriver

Fighter-2
15.11.2007, 18:57
Boar verdamt geil! Danke!! ;) :) :) ;)

Das es soo einfach ist hätte ich nicht gedacht! ;) Voll happy gerade, das du mir so gut geholfen hast! :)

Wie oft kann man den den Messwert abfragen?

Ja ich werde den Atmega halt noch mehr belasten! ;)

Mit paar Port abfragen mit Transestoren, halt das LCD Display!

Mit verschienden Anzeigen aufn Display, wie ein Boot Screen beim anmachen!

Und noch paar viele Spielerreien! :)

Danke !! :)

Edit:

Habe eben nochmal nach gerechnet!

Wofür muss ich den die 1,22 mal nehmen? Womit?

Wenn ich das mit den 819 * 1,22 = 999,18 kommt das herraus?


In welchen Schritten bewegt sich den nun die Zahlen?? Wie genau is nun die Messung? in Einerschritten oder zB in 5er?

danke schonmal!

robodriver
15.11.2007, 19:16
die Zahlen bewegen sich in 1,22er Schritten.
Das es rechnerich nicht komplett aufgeht ist damit bedingt, wie genau man die zahl nimmt. Also mit * 1,221 bist du schon näher dran ;)

Ansonsten kannst du theoretisch mehrfach Pro Sekunde einen Wert erfassen. Das Problem ist nur: Du kannst sie nicht alle anzeigen, da ein LCD Display recht träge ist und bis zu 200ms braucht bis es den Text anzeigt. Also vom Display her machen nur maximal 2 Werte Pro Sekunde sinn. Maximal!
Aber ich denke mal das reicht die aus...

Fighter-2
15.11.2007, 20:07
ja reicht, jede sek nen Wert zubekommen! ;)

Kann man den den die Kommerstellen irgentwie weglassen?

Also das das LCD falls, nachkommerstellen entstehen, die ohne Kommerstellen angezeigt werden?

lg chirs

robodriver
15.11.2007, 20:13
Na logo brauchst das Ergebnis ja einfach bloß zu runden!

also:
Wert = round(wert)

Fighter-2
15.11.2007, 20:19
super vielen dank! :)

Ich kann den Messumformer ja komplett einstellen!

Halt den Messbereich, könnte man nicht den Messbereich so verstellen nur zB von 0 --> 999°C damit die 1,22 wegfallen? Wenn dies doch 1 wäre, wäre es doch genauer oder??

LG Chris

robodriver
15.11.2007, 20:23
Falsch. Das ist egal.

1. Was stört dich an der 1,22? Die steht ja ausschließlich in der Software und wird ein Anwender von außen niemals zu gesicht bekommen.
2. Diese Zahl braucht man halt zum berechnen.
3. Was macht es für einen Sinn seinen Messumformer so anzpassen das die Software keine kommastellen enthält???? Das macht ja mal überhaupt gar keinen Sinn. Es wird immer die Software an den Messbereich angepasst.
4. Wenn der Wert 1 sein soll, dann kannst du nur noch bis 819°C messen

Fighter-2
15.11.2007, 21:05
Okay... sry... war nur eine Überlegung! ;) 8-[

Vielen vielen dank!! :)

\:D/ \:D/ \:D/ \:D/ \:D/

robodriver
15.11.2007, 21:10
kein Thema, meld dich einfach wieder wenn du Fragen hast...