Temperaturmessung mit dem R8C/13

Software und Quellcodes für Microcontroller

Software und Quellcodes für Microcontroller

Moderator: Moderatorengruppe

Re: Temperaturmessung mit dem R8C/13

Neuer Beitragvon anders am Dienstag 20. November 2012, 12:16

as LCD zeigt also rund 50mV mehr an als das DVM. Das kann durchaus ein Messfehler vom DVM sein.
Wenn dein DVM so schlecht ist, solltest du es entsorgen.
Wenn du nicht gerade eine lange Masseleitung von der Stromversorgung als Vorwiderstand benutzt, und dann am Netzgerät Masse für die Spannugsmessung abgreifst, dann ist das kein Nullpunktsfehler, mit 50mV ware der auch ein bischen groß, sondern die Referenzspannung des ADC ist ungenau.
Ein Nullpunktsfehler wird auch dabei sein, aber der bewegt sich gewöhnlich in der Größenordnung 3..10mV.

Das Dumme ist, dass du entgegen meiner Empfehlung schon an den Meßwerten herumgerechnet hast, und ich das nun zurückrechnen muss.
Dabei geht zwangsläufig die Genauigkeit über Bord.
Das Einzige was an der Stelle erlaubt wäre, wäre eine Filterung zur Reduzierung des Rauschens.
Aber auch dafür ist ein einfaches FIR-Filter geeigneter als das kurze IIR-Filter.
Du könntest z.B. 16 Messwerte in ein FIFO schreiben, und den Mittelwert bilden, indem du alle 16 aufaddierst und dann durch 16 dividierst oder 4 Bit nach rechts schiebst. Binär mag so etwas.

Immer wenn ein neuer Wert vom ADC kommt, entfernt man zuerst den ältesten Wert, fügt den neuen hinzu und berechnet den Mittelwert neu.



Die vom ADC gekommenen Digits könnten also gewesen sein:
223
417
623
835
1021
Nun bestimmen wie als Erstes mit dem PC-Taschdenrechner die Steilheit:
(4918-1038)/(1021-223)=4,8621553884711779448621553884712 mV/digit.
Du kannst das ja auch mal mit den anderen Meßwerten machen, und daraus einen Mittelwert bilden.

Nun interessiert uns noch der Nullpunktsfehler, also wieviel Digits gibt der ADC für U=0.
Das bestimmt man am einfachsten mit ein paar kleinen Messwerten und nicht direkt, weil er durchaus auch ein negatives Vorzeichen haben kann, aber der ADC dann stets nur 0 abliefert.
Hier könnte man also berechnen, daß einem ADC-Wert 0 die Eingahgsspannung von 1038mV - 223*4,862.. mV = -46,260651629072681704260651629073 mV entspricht, oder daß du bei 0mV bereits 9..10 Digits angezeigt bekommst.

Das ist ein recht schlechter Wert und ich empfehle dir deshalb die Messungen noch einmal zu wiederholen und dabei auf mathematische Zaubereien zu verzichten.
Insbesondere solltest du bei den Messungen, die über die Lage des Nullpunkts entscheiden, keine Meßbereichsumschaktungen am DMM machen.
anders
48846
Moderator
 
Beiträge: 4686
Registriert: Freitag 28. Februar 2003, 13:46

Re: Temperaturmessung mit dem R8C/13

Neuer Beitragvon Menson am Dienstag 27. November 2012, 12:15

Hallo allerseits

Ich habe inzwischen einiges geändert:

Da wäre mal der Temperatursensor. Der LM61 war mir nicht vertrauenswürdig genug (zu viel Abweichung). Nun verwende ich einen LM35CAZ (±0.2°C @ 25°C). Das scheint mir eine gute Ausgangssituation zu sein.
Der LM35 gibt auch 10mV/°C aus. Bei 0°C=0V, bei +25°C=250mV, und bei -10°C=-100mV.
Den LM35 hab ich über einen LM385-1.2 gelegt, so dass das Massepotential des LM35 um 1.235V höher liegt. Erforderlich um auch negative Temperaturen anzeigen zu können.

Weiters habe ich die analoge Versorgungsspannung durch einen hochpräziesen Spannungsregler (AD586 (5.000V)) hergestellt.

Der Code sieht so aus:

Code: Alles auswählen
void temperatur()
{

   float u;
   long int t;
   u = (float) ad_in(6);
   u = u / 1023.0 * 5.0;
   u = u - 1.235;      // LM385-1.2


   initlcd();               // LCD Refresh

   lcd_pos (1,8);            // LCD Position (1.Zeile, 8.Zeichen)


   lcd_integer(filter(1000*u));      // schreibe Variable u ins Display


   t=0;
   while (t<100000){t=t+1;}      // Pause (~1/10sec)

}


So weit, so gut.
Wenn ich nun ein DVM zwischen Pin 2 und Pin 3 des LM35 anschließe kann ich direkt die Temperatur ablesen. Dabei entsprechen zB. 203mV 20.3°C.
Das LCD zeigt aber einen abweichenden Wert an: Bei 203mV zB. 21.7°C. Wie kommt es zu dieser Abweichung ?

lg, Menson
Sie haben keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Menson
Threadstarter
48890
Bronze Mitglied
 
Beiträge: 37
Registriert: Mittwoch 12. November 2008, 19:35

Re: Temperaturmessung mit dem R8C/13

Neuer Beitragvon derguteweka am Dienstag 27. November 2012, 16:51

Moin,

Mach' halt noch die filter() Funktion raus, nimm die Originalfunktion lcd_integer() und lass die direkt den Wert des ADC anzeigen, also zB. so:
Code: Alles auswählen
lcd_integer(ad_in(6))

Dann musst du mal im Kopf/mit'm Taschenrechner rechnen, ob der Wert des ADC schon falsch wird, oder ob der noch stimmt. Wenn er noch stimmt, dann gehts spaeter schief (also entweder in filter() oder bei einer der unzaehligen Wandlungen zwischen Integer und Float), wenn der ADC-Wert schon daneben ist, ist der ADC ungenau oder du hast Stoerungen irgendwo.
Du kennst aber schon so Chips wie den LM75A als Temperatursensor?

Gruss
WK
derguteweka
48892
Moderator
 
Beiträge: 1048
Registriert: Freitag 18. August 2006, 15:47

Re: Temperaturmessung mit dem R8C/13

Neuer Beitragvon Menson am Dienstag 27. November 2012, 18:25

Danke für deine Antwort

Mit
Code: Alles auswählen
lcd_integer(ad_in(6))

weicht das LCd noch weiter ab - bis auf 29°C.

Der ADC ungenau ??? Was nun ???
Welche Störungen ? Woher ? Was kann ich dagegen tun ?

Den LM75A kenn ich grade nicht.
Der ändert wohl auch nichts am ungenauen ADC oder an möglichen Störungen :(

Was kann ich tun ?


lg, Menson
Menson
Threadstarter
48894
Bronze Mitglied
 
Beiträge: 37
Registriert: Mittwoch 12. November 2008, 19:35

Re: Temperaturmessung mit dem R8C/13

Neuer Beitragvon anders am Dienstag 27. November 2012, 18:34

Was kann ich tun ?
Schaltplan zeigen und Aufbau fotografieren.
anders
48895
Moderator
 
Beiträge: 4686
Registriert: Freitag 28. Februar 2003, 13:46

Re: Temperaturmessung mit dem R8C/13

Neuer Beitragvon Menson am Dienstag 27. November 2012, 19:56

Hallo

Schaltplan anbei.

Der Aufbau - naja, Steckplatte eben ... :me:

lg, Menson
Sie haben keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Menson
Threadstarter
48899
Bronze Mitglied
 
Beiträge: 37
Registriert: Mittwoch 12. November 2008, 19:35

Re: Temperaturmessung mit dem R8C/13

Neuer Beitragvon derguteweka am Dienstag 27. November 2012, 19:59

Moin,

Menson hat geschrieben:Der ADC ungenau ??? Was nun ???
Welche Störungen ? Woher ? Was kann ich dagegen tun ?

Tja, hmm, also meine Kristallkugel kriegt grad einen neuen Zahnriemen und neue Zuendkerzen...
Wenn die Abweichungen immer gleich bleiben, also sich nicht noch ueber die Zeit veraendern, dann kannst du sie natuerlich per Software rausrechnen (nachdem du sie vorher mal gemessen hast).
Wenn du hast, guck' dir deine Spannungsversorgungen alle mal mit m Scope an, vielleicht schwingt da was.

Menson hat geschrieben:Den LM75A kenn ich grade nicht.
Der ändert wohl auch nichts am ungenauen ADC oder an möglichen Störungen :(

Dann lern' den vielleicht mal kennen, der hat seinen eigenen ADC eingebaut und ist sicher simpler zu verschalten als deine Linearregler- und Z-Diodenansammlung. Musst nur softwaremaessig "i2c-Bus" mit dem Sensor sprechen.

Gruss
WK
derguteweka
48901
Moderator
 
Beiträge: 1048
Registriert: Freitag 18. August 2006, 15:47

Re: Temperaturmessung mit dem R8C/13

Neuer Beitragvon Menson am Dienstag 27. November 2012, 20:11

Wenn die Abweichungen immer gleich bleiben, also sich nicht noch ueber die Zeit veraendern, dann kannst du sie natuerlich per Software rausrechnen (nachdem du sie vorher mal gemessen hast).

Verändern tun sie sich scheinbar nicht. Aber sie sind bei unterschiedlichen Temperaturen auch unterschiedlich groß. Ob linear weis ich noch nicht. Wenn linear, dann ist rausrechnen kein Problem. Mich irritiert nur, dass es überhaupt eine so große Abweichung gibt.


@ LM75A: Dann lern' den vielleicht mal kennen, der hat seinen eigenen ADC eingebaut und ist sicher simpler zu verschalten als deine Linearregler- und Z-Diodenansammlung.

Z-Diodensammlung ist gut - hab grad mal eine :wink:
Laut Datenblatt hat der ne Abweichung von ±3°C. Das gibt das gleiche Desaster wie mit dem LM61.
Der LM35, den ich jetzt verwende weicht nur um ±0.2°C (bei 25°C) ab.


Musst nur softwaremaessig "i2c-Bus" mit dem Sensor sprechen.

Leichter gesagt als getan, wenn man keine Ahnung vom Programmieren hat :(


lg, Menson
Menson
Threadstarter
48902
Bronze Mitglied
 
Beiträge: 37
Registriert: Mittwoch 12. November 2008, 19:35

Re: Temperaturmessung mit dem R8C/13

Neuer Beitragvon derguteweka am Dienstag 27. November 2012, 20:49

Moin,

Menson hat geschrieben:Wenn linear, dann ist rausrechnen kein Problem.

Wenn nicht linear, geht's auch; das gabs hier
http://www.loetstelle.net/forum/viewtopic.php?t=4451 und hier
http://www.loetstelle.net/forum/viewtopic.php?t=2673 schon.

Menson hat geschrieben:Mich irritiert nur, dass es überhaupt eine so große Abweichung gibt.

Ja, wuerde es mich auch. Aber da kann ich grad keinen heissen Verdacht aus dem Aermel schuetteln...


Laut Datenblatt hat der ne Abweichung von ±3°C. Das gibt das gleiche Desaster wie mit dem LM61.
Der LM35, den ich jetzt verwende weicht nur um ±0.2°C (bei 25°C) ab.

Die Genauigkeit hilft dir ja nix, wenn du sie nicht gemessen kriegst...

Leichter gesagt als getan, wenn man keine Ahnung vom Programmieren hat :(

Ja, da haste auch wieder recht.

Gruss
WK
derguteweka
48903
Moderator
 
Beiträge: 1048
Registriert: Freitag 18. August 2006, 15:47

Re: Temperaturmessung mit dem R8C/13

Neuer Beitragvon anders am Dienstag 27. November 2012, 23:26

Der Aufbau - naja, Steckplatte eben ...
Wenn ich das sehe, brauche ich mir den Schaltplan gar nicht mehr anzuschauen: Es ist ein Wunder, daß da überhaupt irgend etwas funktioniert.
anders
48905
Moderator
 
Beiträge: 4686
Registriert: Freitag 28. Februar 2003, 13:46

Re: Temperaturmessung mit dem R8C/13

Neuer Beitragvon Menson am Mittwoch 28. November 2012, 06:50

Wie sieht es auf deiner Steckkarte aus ?

Was gefällt dir an meiner nicht ?
Leiterbahnen sind hierbei schwer zu realisieren.

lg
Menson
Threadstarter
48906
Bronze Mitglied
 
Beiträge: 37
Registriert: Mittwoch 12. November 2008, 19:35

Re: Temperaturmessung mit dem R8C/13

Neuer Beitragvon BernhardS am Mittwoch 28. November 2012, 07:33

anders hat geschrieben:Wenn ich das sehe, brauche ich mir den Schaltplan gar nicht mehr anzuschauen: Es ist ein Wunder, daß da überhaupt irgend etwas funktioniert.


Der Aufbau ist strukturiert und übersichtlich.
Du hast noch keinen provisorischen Aufbau von mir gesehen. Die Schaltung bringe ich auf einem einzelnen Steckboard unter.
$2B OR NOT $2B = $FF
BernhardS
48908
Moderator
 
Beiträge: 4597
Registriert: Donnerstag 17. Februar 2005, 17:50
Postleitzahl: 84028
Land: Germany / Deutschland

Re: Temperaturmessung mit dem R8C/13

Neuer Beitragvon Menson am Mittwoch 28. November 2012, 08:56

BernhardS hat geschrieben:Der Aufbau ist strukturiert und übersichtlich.
Du hast noch keinen provisorischen Aufbau von mir gesehen. Die Schaltung bringe ich auf einem einzelnen Steckboard unter.


Bestimmt geht sich das aus. Hier sind aber drei Boards vorhanden. Ich wollte aber beim besten Willen die andern beiden nicht absägen.

Auch wenn ich sie auf nur einem Board aufgebaut hätte, glaubst du, dass das Ergebnis anders wäre? Ich nicht.

@ derguteweka:
An meinem Exemplar des R8C/13 liegt der Fehler mal nicht. Hab einen anderen reingemacht und das Programm aufgespielt - gleicher Anzeigefehler.
Mein alter Oskar konnte keine Schwingungen odgl. auf den Betriebsspannungen feststellen.
Wie weit sich bei unterschiedlichen Temperaturen die Eingangsspannung vom angezeigten Wert unterscheidet, konnte ich noch nicht testen. Ab morgen soll es ja wieder etwas kälter werden, dann kann ich mit der ganzen Schaltung mal nach draußen, um mal zwei Werte (innen/außen) vergleichen zu können.

lg, Menson
Menson
Threadstarter
48909
Bronze Mitglied
 
Beiträge: 37
Registriert: Mittwoch 12. November 2008, 19:35

Re: Temperaturmessung mit dem R8C/13

Neuer Beitragvon derguteweka am Mittwoch 28. November 2012, 16:44

Moin,

Also den Aufbau find ich fuer die erwarteten Frequenzen voellig OK. Spannung schwingt nicht - wieder eine heisse Spur weniger... Was mir noch aufgefallen ist: den R4 haett' ich so ausm Bauch raus eher mit vielleicht 1KOhm angenommen. Aber lt. Datenblaetter sollten die 10k auch OK sein.
Was noch sein koennte, insbesondere wenn der Fehler sich als linear herausstellen sollte, dass man den ADC irgendwie noch vorher initialisieren muss, evtl. noch dazusagen, welche Referenzspannung er nehmen soll, etc. - also auch eine Softwaregeschichte. Grab' mal diesbezueglich in den Datenblaettern zu dem µC. Um bei der Messerei temperaturunabhaengiger zu werden, kannste ja den ganzen Spannungsregler,Z-Dioden und Temp.Sensorkram durch ein Poti (als Spannungsteiler) mit parallelgeschaltetem Voltmeter ersetzen. Dann kannst du ja mal von 0..5V ein 10-20 Messpunkte aufnehmen und immer die Spannung am Voltmeter und die Anzeige am Display (den unverarbeiteten ADC-Wert) notieren.Vielleicht kommen wir so dem Fehler auf die Spur.

Gruss
WK
derguteweka
48910
Moderator
 
Beiträge: 1048
Registriert: Freitag 18. August 2006, 15:47

Re: Temperaturmessung mit dem R8C/13

Neuer Beitragvon Menson am Mittwoch 28. November 2012, 17:49

Hallo

Hab das mal so gemacht - von 0 bis 300mV mit Poti (entspricht von 0 bis 30°C).
Messergebnis siehe Anlage.

Das sieht mir nach einem stark linearen Anzeigefehler aus. Ich könnte mir vorstellen den damit rauszurechnen:

Code: Alles auswählen
u = u - (u * 0.035);


Die 'Trockenübung' mit dem Poti funktioniert damit einigermaßen.
Wie sieht es dann aber bei negativen Temperaturen aus ?

lg, Menson
Sie haben keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Menson
Threadstarter
48911
Bronze Mitglied
 
Beiträge: 37
Registriert: Mittwoch 12. November 2008, 19:35

VorherigeNächste

Zurück zu Software

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 Gäste