Hallo
Ich möchte mir ein digitales Thermometer mit dem R8C13 basteln.
Die Temperatur wird mittels LM335 (10mV/°C) in eine Spannung umgesetzt
und am AN6 (Pin31) dem µC zugeführt.
Ausgegeben wird die Temperatur mittels 3 großen 7-Segment-Anzeigen.
Mit den Anzeigen klappt das auch schon ganz gut. Blos die
temperaturabhängige Spannung schwankt fürchterlich.
Wenn ich zB die 5V Versorgungsspannung messe, so bleibt die recht stabil
und wird auch so stabil angezeigt.
Bei der Umrechnung auf die Temperatur muss also das faule Ei sein - ich
komm blos nicht drauf.
Die Umrechnung sieht so aus:
####################
float u; // Spannung
float t; // Temperatur
u = ad_in(6);
u = u / 1023.0 * 5000.0;
t = u - 2730; // 2.73V = 0°C
####################
In weiterer Folge wird t etwa einmal pro Sekunde an die 7-Seg-Anzeigen
ausgegeben.
Leider springt die Anzeige bis zu 5°C pro Messung auf und ab. Sie
pendelt also bei Zimmertempertur zwischen 20 und 25°C.
Hat jemand einen Tipp ?
:-)
Was meinst du damit ?
Hardware ist nur 1k von 5V (=Ub) zum LM335 und der liegt mit dem anderen
Ende auf GND. Adjust ist offen.
Verbindung 1k mit LM335 geht zum Eingang am µC. Hier mit Kondensator
abzupuffern ist wirkungslos.
lg
Der R8 hat einen internen A/D Wandler. Der benötigt eine stabile
Referenz. Der Analogteil im IC hat eine eigene Spannungsversorgung. Die
muss sehr stabil sein. Schau bei Renesas in das Datenblatt und
application notes für Hinweise.
Ja ich weis.
Die analoge Versorgung ist hier gleich der Hauptversorgung. Also die
"normale" und die analoge Versorgungsspannung wird über EINEN 7805
hergestellt. Zusätzlich ist noch direkt am µC jeweils ein 100nF-Kerko.
Habe auch schon versucht zusätzlich 1000µF auf die Ub zu legen - aber
auch keine Wirkung ersichtlich.
Ich denke vielmehr, dass es an der "Rechnung", also an der Software
liegt.
lg
Na ja, rechnen wird er immer gleich. Schau dir die raw Daten - also
direkt die AD Werte - an. Ich schätze, die schwanken bereits. Hängt die
Anzeige auch an dem 7805? Zum Zeitpunkt der AD Wandlung bruacht es eine
absolut stabile AD Versorung und Referenz.
Mmmhhh.... wie löst der AD Wandler auf? Also wieviel mV/digit?
>> Hängt die Anzeige auch an dem 7805?
Nein die wird zZ. aus einer anderen Spannungsquelle versort (15V). Der
GND der 5V und der GND der 15V ist aber verbunden.
Mmmhhh.... wie löst der AD Wandler auf? Also wieviel mV/digit?
Wenn ich das wüsste. Es schein als wären es 5mV, das die Kommastelle der
Temp-Anzeige immer nur 0 oder 5 anzeigt.
Wie bekomme ich die Auflösung höher ?
Die Anzeige sollte 0.1°C auflösen - also auf 1mV.
lg
Der RC8 hat - glaube ich - nur 8 Bit. Dann wären das so um die
20mV/digit und bei dir ca. 2°C. Wenn der AD Wandler um 2 digit wackelt,
passt deine Beobachtung.
Du kommst am Datenblatt nicht vorbei. Auf geht es!
Deine Rechenformel ist ok, du ver(sch)wendest zwar
floating point, aber das kann der uC ja und du darfst
wohl die Leistung verschwenden.
Ein 7805 ist (mit -1.1mV/GradC) fast so temperaturabhängig
wie ein LM335 (10mV/GradC),
als Spannungsversorgung eines Thermometers taugt der
billigste der billigen Spannungsregler also nicht.
EIn LP2951-5 wäre präziser, aber normalerweise verwendet man
Referenzspannungsquellen, damit die absolute Genauigkeit
der Spannung deutlich besser wäre als 5mV (ergibt immerhin
eine Genauigkeit besser 1 GradC). Dummerweise sind solche
absolut genauen Referenzspannungsquellen teuer und schwer
beschaffbar, MC1403 nur 25mV, LP2951 nur 36mV, REF5050 5mV,
bingo, Reichelt Fehlanzeige, der hat nur die REF02 mit 15mV.
Da also absolut genaue Referenzspannungen sowieso zu schwer
zu bekommen sind, nimm die eingebaute, die ist zwar noch
ungenauer (1.19V bis 1.49V), du musst dann nur mit einer
bekannten Temperatur dein Thermometer kalibrieren, aber
immer 1000mal stabiler als deine 5V Versorgungsspannung die
du derzeit verwendest,
Allerdings kann sie keine 2.93V messen.
Nimmst du einen Spannungsteiler 1:3 und willst 2.73V (0 GradC)
bis 3.43V (70 GradC, Temperaturbereich des R8C) messen,
reicht dein A/D-Wandler nur von 795 bis 1000, also 200 Schritte
oder 0.35 GradC pro Schritt weit. Du müsstet die Spannung des
Sensors verstärken mit einem externen Operationsverstärker um
auf 0.1 GradC Auflösung zu kommen.
Alles in allem also recht ungünstig. Ich weiß nicht, ob man
dem R8C eine höhere untere Referenzspannung RefLO zuführen
kann (AVss also so bei 2.5V), vermutlich aber nicht.
Also bleibt dir nur ein externer OpAmp mit dem du das
alaogsignal des LM335 auf den ganzen Messbeerich von
0V (für 0 GradC) und 1.1V (für 70 GradC oder was du willst)
verstärkst.
Ein anderer Trick ist es, das Signal absichtlich mit Rauschen
zu unterlegen und im uC dann Mittelwerte mit höherer
Auflösung zu bilden, aber bei schon 3 digit absolute Ungenauigkeit
des A/D-Wandlers sind dein 0.1 GradC Auflösung dann sehr grosse
Schätzwerte.
Jochen schrieb:> Wie würde der Quellcode bei Verwendung des DS18B20 aussehen ?
Ja, wie, was denn???
Dir ist also egal, wie du an die Werte kommst? Dann kauf doch gleich
eine fertige Lösung beim Poolin oder Paerl oder sonst wo.
Wie sehen die Rohdaten des AD Wandlers beim RC8 aus? Sind die stabil
oder nicht? Post die Werte mal.
Danke für deine Worte !
Heist also:
Ein Thermometer mit 0.1° Auflösung ist mit dem R8C13 schwer bis garnicht
realisierbar.
Schade nur, weil ich bereits mit dem R8C eine Uhr gebaut habe. Und nun
sollte im selben Design noch ein Thermometer hinzukommen.
lg
>> Wie sehen die Rohdaten des AD Wandlers beim RC8 aus?>> Sind die stabil oder nicht? Post die Werte mal.
Was sind den Rohdaten ? Wo finde ich diese ? Was soll ich Posten ?
lg
Mit
u = ad_in(6);
liest du den AD Wandler aus. Das sind die digitalen Werte, die du durch
die anschließende Berechnung skalierst.
Wenn dieser Wert schwankt, musst du den Wandler stabilisieren.
> Was sind den Rohdaten ? Wo finde ich diese ? Was soll ich Posten ?
Hm...was ist denn in deinem Gehirn vorgegangen als du die Routine
geschrieben hast um den AD-Wandler auszulesen? Du wirst doch wohl noch
wissen wo du die Daten aus dem Register des AD-Wandlers kopierst.
Du koenntest auch dort mal in deine Variable direkt nach dem Auslesen
einen festen Wert in die Hilfsvariable schreiben. Dann sollte deine
Anzeige einen festen Wert anzeigen. Machst du das dann mit 2-3 Werten an
den grenzen deines erwarteten Temperaturbereich hast du gleich gelernt
wie du deinen Algorythmus testen kannst.
Wenn der Wert dann stabil sein sollte gibt es nur noch zwei
Moeglichkeiten. Entweder die AD-Wandlung selber ist ungenau weil der
Spannungswert rauscht, oder du wartest nicht bis der AD-Wandler mit der
Wandlung fertig ist.
> Ein Thermometer mit 0.1° Auflösung ist mit dem R8C13 schwer bis> garnicht realisierbar.
Ein Thermometer mit 0.1 Grad Aufloesung kannst du einfach durch rechnen
bekommen. Solltest du dagegen eine Genauigkeit von 0.1Grad erwarten so
ist das natuerlich mit dem R8C13 genauso einfach loesbar wie mit jedem
anderen Controller, aber es stellt natuerlich erhoehte Anforderungen an
deine Schaltung und die Kalibrierung der Temperatur. Das ist fuer
jemanden der noch auf dem Level 'blinkende LED' ist, nicht machbar. Aber
das macht nichts da kaeufliche Thermometer da auch luegen wenn sie nicht
sehr sehr teuer sind.
Olaf
> Mit> u = ad_in(6);> liest du den AD Wandler aus
Noe, damit ruft er eine Funktion auf die es macht.
Man muss bei diesem schweren Fall hier vermuten das er sie einfach
woanders abgeschrieben hat und diese Funktion aus dem zusammenhang
gerissen wurde. Wenn man den AD-Wandler auslesen sollte wenn er noch
wandelt dann kann das auch zu interessanten Ergebnissen fuehren.
Olaf
Olaf schrieb:> Man muss bei diesem schweren Fall hier vermuten das er sie einfach> woanders abgeschrieben hat und diese Funktion aus dem zusammenhang> gerissen wurde. Wenn man den AD-Wandler auslesen sollte wenn er noch> wandelt dann kann das auch zu interessanten Ergebnissen fuehren.
Immer locker aus der Hüfte ...
Es ist doch völlig egal, wie der Wert dahin kommt. Es bleibt die Frage:
Ist der Wert vor der Berechung stabil, oder nicht?
> Olaf, entspann dich mal.
Bin ich doch. Aber wenn man einem Fall maximaler Unwissenheit die
Wuermer einzeln aus der Nase ziehen soll weil der Source nur in Teilen
zu sehen ist, dann muss man sich halt mit Sarkasmus retten um nicht an
der boesen Welt zu verzweifeln. .-)
Olaf (jetzt erstmal einen beruhigenden Tee trinken geh)
Olaf schrieb:> Aber wenn man einem Fall maximaler Unwissenheit die> Wuermer einzeln aus der Nase ziehen soll weil der Source nur in Teilen> zu sehen ist, dann muss man sich halt mit Sarkasmus retten um nicht an> der boesen Welt zu verzweifeln. .-)
Nö, man kann auch http://www.youtube.com/watch?v=5KT2BJzAwbU
Hallo Olaf
Also wenn ich einen festen Wert angebe, dann steht der auch bombenfest
und "wackelt" nicht. Ist ja auch klar, denn dann messe ich ja nichts.
Die Funktion des AD-Wandlers hab ich schon so wie sie ist aus einem Bsp.
genommen - sie sieht so aus:
Jochen schrieb:> Also wenn ich einen festen Wert angebe, dann steht der auch bombenfest> und "wackelt" nicht.
Wo gibst Du einen festen Wert an?
Speichere ein paar der Rückgabewerte von ad_in(6) und schaue, ob die
Werte gleich sind.
> Ein Thermometer mit 0.1° Auflösung ist mit dem R8C13> schwer bis garnicht realisierbar.
Du benötigst, nebem den R8C mit Display und LM335,
einen OpAmp wie LM358.
Schwer bis gar nicht würde ich das nicht nennen,
aber viele Leute stehen auf Kriegsfuß mit Analogtechnik.
Für die ist das dann schwer bis gar nicht realisierbar.
Woran man wieder erkennen kann, daß Grundlagenkenntnisse
in Analogtechnik gar nicht so verkehrt wären.
VRef ---|+\
| >--+--+---+---------- ARef
+-|-/ | | R3
| | R1 +--|+\
+-------+ | | | >-+-- A/D
+---(--|-/ R4
| | |
+---(-------+
| |
R2 LM335
| |
GND
VRef ---|+\
| >--+--+---+---------- ARef
+-|-/ | | R3
| | R1 +--|+\
+-------+ | | | >-+-- A/D
+---(--|-/ R4
| | |
+---(-------+
| |
R2 LM335
| |
GND
Mit dieser Art "geschreibsl" blick ich ja schon gar nicht durch :-(
Ich gehe mal davon aus, das es zwei Opamps sind. Der erste ein
Impedanzwandler, der eine Referenzspannung niederohmig macht.
Der zweite OP vergleicht scheinbar die gemessene Spannung (Temperatur)
mit einem Spannungsteiler (mit Hysterese?).
Der Ausgang des zweiten OPs geht zum AD-Eingang des µC.
Was wird aber als Referenzspannung (VRef) angelegt?
Was ist ARef ?
Jochen schrieb:> Wo/Wie soll ich die den Speichern und schauen ?
Im Debugger oder Monitor Deiner Entwicklungsumgebung.
Notfalls geht auch Deine Anzeige:
1
t=ad_in(6);
2
// t anzeigen
Die Messungen sollten nicht zu schnell erfolgen, sonst sieht man ja
nichts.
Stimmt doch alles.
> Was wird aber als Referenzspannung (VRef) angelegt?
Eine brauchbar stabile Referenzspannung aus einem der
obejn genannten Spannungsreferenzen.
Falls es möglich ist, die Referenz des R8C auf einen
Ausgang geschaltet (hab ich aber im Datenblatt nicht
gefunden).
> Was ist ARef ?
Der ARef Eingang des R8C, falls eine externe Refeenz
verwendet wurde.
>> Wo/Wie soll ich die den Speichern und schauen ?> Im Debugger oder Monitor Deiner Entwicklungsumgebung.
Der Debugger läuft bei mir nicht (Win7/32).
> Notfalls geht auch Deine Anzeige:
Anzeigen ja - wo sonst, aber speichern ???
1
t=ad_in(6);
2
// t anzeigen
>> Die Messungen sollten nicht zu schnell erfolgen, sonst sieht man ja>> nichts.
Die 7-Seg-Anzeige flimmert nicht - da sieht man alles, nur der Messwert
"wackelt".
> Was wird aber als Referenzspannung (VRef) angelegt?>> Eine brauchbar stabile Referenzspannung aus einem der>> obejn genannten Spannungsreferenzen.>> Falls es möglich ist, die Referenz des R8C auf einen>> Ausgang geschaltet (hab ich aber im Datenblatt nicht>> gefunden).
Du meinst die normale Versorgungsspannung des R8C ?
> Was ist ARef ?
Der ARef Eingang des R8C, falls eine externe Refeenz
verwendet wurde.
Die analoge Versorgungsspannung ist gleich die "normale"
Versorgungsspannung.
So müsste VRef und ARef das gleiche sein - richtig ?
Jochen schrieb:> Anzeigen ja - wo sonst, aber speichern ???
Nocheinmal langsam:
Beim Ausgangspost hast Du vermutet, dass Deine Berechnung nicht stimmt.
Die "Experten" hier sind eher der Meinung, dass der AD Wandler bereits
wacklige Werte liefert. Eine einfache Möglichkeit dies zu prüfen, ist
direkt die AD Wandler Werte zu betrachten. Also machst Du es, wie
beschrieben.
anstatt
u = ad_in(6);
u = u / 1023 * 5000;
t = u - 2730;
t = 179; // nun wird t an die Ausgabe übergeben
machst Du
t = ad_in(6); // t an Anzeige übergeben
Auf der Anzeige siehst du jetzt die Rohdaten und kannst deren Stabilität
kontollieren.
>> machst Du>> t = ad_in(6); // t an Anzeige übergeben>> Auf der Anzeige siehst du jetzt die Rohdaten und kannst deren Stabilität>> kontollieren.
Jetzt weis ich erstmal was Rohdaten sind :-)
Gesagt, getan: Die Anzeige "wackelt" genauso.
> t = ad_in(6); // t an Anzeige übergeben> Die Anzeige "wackelt" genauso.
Richtigstellung:
"Genauso" stimmt nicht ganz - sorry:
Die Anzeige wechselt nur um ein, zwei oder auch mal drei Digits. Das
könnte also aus einer leichten Temperaturschwankung entstehen. Sie
bleibt auch mal für ein paar Messungen unverändert.
Jedenfalls deutlich stabiler als zuvor.
> Ist das so OK ?
Nicht ganz.
Die 5V aus dem 7805 reichen dem LM358 nicht als Versorgungsspannung um
seinerseits 5V ausgeben zu können. Du müsstest dem LM358 mit 15V
versorgen.
Da sollte man dann aufpassen, daß nicht mehr als 5V an die Eingänge des
uC kommen (z.B. ein 10k Widerstand zwischen A2 und den uC-Eingang)
Und die Widerstandswerte R4 R5 R7 müssen natürlich passend berechnet
werden, um deinen gewünschten Temperaturbereich, den du natürlich
niemandem erzählt hast, auf volle 0V bis 5V auszudehnen.
Letztlich sind die 5V des TL431 sogar so belastbar, daß man A1 weglassen
könnte. Da man aber A2 braucht, spart das kein Bauteil.
> Und die Widerstandswerte R4 R5 R7 müssen natürlich passend berechnet> werden, um deinen gewünschten Temperaturbereich, den du natürlich> niemandem erzählt hast, auf volle 0V bis 5V auszudehnen.
Hatte ich das nicht ?
Also von -30°C bis +60°C wäre wünschenswert.
Wie berechnet man die Widerstände ?
> Letztlich sind die 5V des TL431 sogar so belastbar, daß man A1 weglassen> könnte.
Das dachte ich mir auch schon.
> Da man aber A2 braucht, spart das kein Bauteil.
Man könnte aber einen Einzel-OP verwenden. Hätte noch TS321 im SOT23-5
vorrätig. Der würde mir schon aus platzgründen gut gefallen.
Nun habe ich mal mit dem TL431 eine stabile Referenzspannung aufgebaut
und diese an Aref des µC angelegt und auch den LM335 damit versorgt.
Erstmal ohne Opamp.
Nun schwankt die Anzeige nicht mehr um 5°C sondern um gut 15°C.
Auch die Rohdaten sind deutlich unstabiler.
Was läuft hier falsch ???
Jetzt habe ich Referenzspannung des TL431 nochmal zusätzlich mit 100µF
stabilisiert - und jetzt ist (fast) Ruhe eingekehrt. Die Anzeig wechselt
nur noch um 0.5°C mal nach oben, mal nach unten. Damit kann ich leben.
Vermutlich ein "Steckplatten-Problem" ?!
Was aber noch garnicht vertretbar ist, ist die Tatsache, dass die
Anzeige um gut 10°C zuviel anzeigt. Der LM335 sollte doch einigermaßen
genau sein. Nur wird aber um gut 10°C mehr Raumtemperatur angezeigt als
tatsächlich herscht. Natürlich könnte ich das per µC rausrechnen, ob das
aber die richtige Lösung ist ?
Die Genauigkeit sollte schon in vertetbaren Grenzen liegen. So etwa +/-
1°C Abweichung würde ich für vertretbar halten.
Ach ja, die Auflösung von 0.5°C gefällt mir auch nicht wirklich. Eine
Auflösung von 0.1°C würde ich anstreben.
> Also von -30°C bis +60°C wäre wünschenswert.> Wie berechnet man die Widerstände ?
-30 = 2.43V -> 0V
+60 = 3.33V -> 5V
Schnittpunkt der Geraden bei 2.97V, Spannungsteiler
der 5V könnte man also aus 8k2 und 12k aufbauen,
er hat am Knotenpunkt 4871.28 Ohm Quellwiderstand,
Verstärkung 5.5, also 4.5 mal grösseren Widerstand
für R7, also 21.920 Ohm = 22k.
Es fliessen dann bei soll=0V am Ausgang
180uA aus den +5V in den Ausgang des TS321,
das sind mehr als die 50uA die der TS321 so nah an 0V
noch abfliessen lassen kann, er kommt kaum unter 0.7V.
Also R4=82k, R6=120k, R7=220k geht runter bis 0.05V
und hat einen Eingangsfehler bei 500nA Eingangsoffsetstrom
von 20mV, den man zum guten Teil wegkalibriert.
Du siehst, 1% genaue Widerstände führen zu Abweichungen,
die man eigentlich schon bei der Rechenformel zur Anzeige
der Temperaturen mit einrechnen müsste.
Daher ist es notwendig das Thermometer hinterher zu kalibrieren,
was man wegen des bis zu 9 GradC ungenauen LM335
und 1% ungenauen TL431 sowieso tun muß.
Ein kleines bischen besser weil symmetrischer wird es,
wenn du in die +-Eingangsleitung des OpAmps noch einen
39k Widerstand einbaust, dann sehen beide Eingänge dieselbe
Quellimpedanz und unterscheiden sich nur noch um 150nA
statt 500nA, also unter 0.5 GradC statt 2 GradC.
Ein TL431B und ein LM235A und 0.5% Widerstände würde vielleicht
gerade eben ein abgleichfreies Thermometer ergeben,
je nach deinen wirklichen Genauigkeitsanforderungen.
A1 weglassen. Wenn du keinen 10k Widerstand vor den ARef-Eingang
baust (weil das vielleicht laut Datenblatt nicht zulässig ist,
man zumindest auch 100nF dahinter nach Masse legen müsste),
dann solltest du eine BAT49 Schottky-Diode von C2 nach C3 legen,
damit 5VRef nie mehr als 0.5V höher werden kann als VCC des R8C.
Kalibrierung:
Sollte ich irgendwo einen Trimmer vorsehen, oder wo/wie kann ich ansonst
kalibrieren ?
Anbei das Schaltbild.
Meinst du das mit den 39k-Widerständen so ?
lg
Jochen schrieb:> jetzt ist (fast) Ruhe eingekehrt. Die Anzeig wechselt> nur noch um 0.5°C mal nach oben, mal nach unten. Damit kann ich leben.
Gratuliere!
Da wackelt nur noch das letzte Bit:
5V Ref bei 10Bit AD Wandler ergibt ca. 5mV/digit
bei 10mV/°K Sensor ergeben sich 5mV = 0.5°K Auflösung.
Die Anzeige kann sich also nur in ca. 0.5° Schritten ändern. Um das zu
ändern, muss der AD Wandler höher auflösen (geht ja nicht) oder die
Eingangssignaländerung (jetzt noch 10mV/°K) vergrößert werden. Da bist
Du mit MaWin dran.
Ach ja, die Anzeige läßt sich durch Mittelwertbildung über 3 - 5
Messungen beruhigen.
> Sollte ich irgendwo einen Trimmer vorsehen, oder wo/wie kann ich> ansonst kalibrieren ?
Du hast einen Microcontroller und der kann Rechnen. Und er hat internes
Dataflash um kalibrierwerte abzulegen. Wenn du also irgendwo an deiner
Schaltung einen Taster hast dann koenntest du damit in einen noch zu
programmierenden Kalibriermodus wechseln. Da dann zwei
Referenztemperaturen messen und damit dann die Kalibrierung vornehmen.
> Gratuliere!> Da wackelt nur noch das letzte Bit:
Besser wird man den AD-Wandler auch kaum bekommen. Da wuerde ich dann
auch den Wert durch einen Filter schicken/mitteln wenn einen das stoert.
Oder vielleicht einfach auf 0.5Grad runden.
Olaf
Hallo
Irgendwie raff ich das Thermometer nicht (mehr)!
Ich sagte ja bereits, dass bei Raumtemperatur etwa 10°C zuviel
angetzeigt werden.
Nun habe ich den überschüssigen Wert per Software abgezogen, so dass bei
20° Raumtemperatur auch etwa 20° angezeigt werden. Soweit so gut.
Wenn ich nun damit in den Abstellraum gehe (hier zeigt das Quecksilber
12°C) zeigt mein Thermometer blos noch rund 7° an.
Leg ich es in die nähe der Heizung (Laserthermometer sagt 45°) zeigt
mein Superthermometer satte 65° an.
Ist der LM335 das Übel oder der µC oder was sonst ?
Alternativ hätte ich noch einen KTY81-110 (Temperatursensor) im TO92
oder
einen LM61 (Tempertursensor) im SOT23 anzubieten.
Wären hiermit vielleicht bessere Werte zu bekommen ?
lg
> Meinst du das mit den 39k-Widerständen so ?
Nur vor dem - Eingang, nicht vor dem + Eingang.
Aber noch ein 10k Widerstand zum A/D-uC-Eingang.
> Sollte ich irgendwo einen Trimmer vorsehen,
Ich würde so was eher in Software machen,
also Sensor in 0 GradC stopfen, Taste drücken
damit Umrechnnungswerte so gesetzt werden daß
0 GradC angezeigt werden, Sensor auf 37 GradC
erwärmen (lässt sich exakt mit Fieberthermometer
erfassen), Taste drücken damit 37 GradC angezeigt
werden.
Dazwischen rechnet der uC dann eine lineare
Interpolation.
> Ist der LM335 das Übel oder der µC oder was sonst ?
Da andere Leute durchauch 0.1 GradC auflösende und
1 GradC exakte Thermoemeter mit dem hinbekommen,
liegt es wohl eher an was anderem.
> Alternativ hätte ich noch einen KTY81-110> (Temperatursensor) im TO92 oder
vergleichbar genau vergleichbar einsetzbar
> einen LM61 (Tempertursensor) im SOT23 anzubieten.
Den könnte man direkt an einen A/D-Eingang
anschliessen wenn man den R8C auf interne
1.2V Referenz stellt, um -30 bis +60 GradC
anzeigen zu lassen mit fast voller Auflösung.
Allerdings muß auch er wie oben beschrieben
kalibriert werden, weil eben die interne
Referenz des R8C nicht so absolut genau ist,
sondern nur stabil.
Jegliche zusätzliche Elektronik entfällt.
Er ist ja auch ein modernerer Sensor, aber
auch er ist um 3 GradC ungenau.
Neues Schaltbild anbei.
Müsste jetzt so stimmen.
Um eine Kalibrierung, so wie du es beschrieben hast, durchzuführen, muss
aber noch eine entsprechende Funktion geschrieben werden.
Solch eine Funktion zu erstellen übersteigt bei weitem meine
Fehigkeiten.
Kannst du mir dabei helfen ?
lg
> Solch eine Funktion zu erstellen übersteigt> bei weitem meine Fehigkeiten.
Das ist Grundschulmathematik
angezeigte Temperatur =
aktueller A/D-Wandlerwert -
A/D-Wandlerwert der auf Tastendruck für 0 GradC gespeichert wurde
*
37
/
(A/D-Wandlerwert der auf Tastendruck für 37 GradC gespeichert wurde
A/D-Wandlerwert der auf Tastendruck für 0 GradC gespeichert wurde)
> Das ist Grundschulmathematik>> angezeigte Temperatur => aktueller A/D-Wandlerwert -> A/D-Wandlerwert der auf Tastendruck für 0 GradC gespeichert wurde> *> 37> /> (A/D-Wandlerwert der auf Tastendruck für 37 GradC gespeichert wurde> A/D-Wandlerwert der auf Tastendruck für 0 GradC gespeichert wurde)
Ich weis ja auch nicht wie ich das mit nem Tastendruck speichern soll -
das bekomm ich so nicht hin. Dazu hab ich viel zu wenig Ahnung vom
programmieren.
> ENTWEDER ein (Schottky-)Diode von VRef zu VCC des R8C,
Mach ich.
> Ich weis ja auch nicht wie ich das mit nem Tastendruck speichern soll -
Den Tastendruck sollst du nur erkennen,
speichern solltest du die beiden A/D-Wandlerwerte, falls der uC nach dem
Kalibrieren auch irgendwann mal wieder abgeschaltet wird, und beim
nächsten einschalten (Batterie-einlegen) nicht erneut kalibriert werden
soll.
Zum Speichern bietet dich EEPROM-Speicher an, den man abfragt, wenn nach
dem Einschalten (minutenlang) kein Taster gedrückt wurde.
Klingt vernünftig.
Hatte aber noch nie mit so einem EEPROM-Speicher zu tun. Weis nicht wie
der R8C mit dem Speicher kommuniziert - alles Fremdworte für mich.
Hab mir das wohl etwas einfacher vorgestellt.
Gibt es eine andere Möglichkeit einen brauchbaren Thermometer mit dem
R8C zu realisieren? Ohne Kalibrieren, ohne EEPROM?
lg
Hab eben bei Conrad geschaut, da gibt es einen DS18S20 um 5 Euro, von
-50° bis +125°C, zwar auch nur in 0.5°-Schritten, ist aber bereits
kalibriert.
Hier steht:
Dieser Temperatur-Sensor macht das "Thermo-Management" mit einem
direkten digitalen Ausgang leicht. Der Sensor ermöglicht ein direktes,
digitales Auslesen der gemessenen Temperatur, ohne dass ein A/D-Wandler
benötigt wird und ist kalibriert. Der Sensor beinhaltet ein digitales
Thermometer und verfügt darüber hinaus über Funktionen wie Thermostat,
programmierbarem, digitalen Thermostat oder Speicher.
Wie kann dieser Baustein mit dem R8C13 arbeiten - ohne AD-Wandler?
Wie bekommt man die Temperaturwerte angeboten?
lg
Ohne daß ich jetzt die Spec des LM335 genau kenne:
Kannst mal vergleichen mit dem Microchip MCP9700A (dto. 10mV/°C aber
Offset bzgl. der Null Grad Grenze, nur pos. Spannungen).
Dann gibt's noch den MCP971A , der hat 19,5 mV/°C , also fast doppelt so
hohe Spannungsänderung (dafür aber eingeschränkter Meßbereich).
http://ww1.microchip.com/downloads/en/DeviceDoc/21942e.pdf
Und in nachfolgenden Links kannste noch nachlesen, wie andere Leute das
machen, evtl. ergibt sich daraus was.
http://embedded-lab.com/blog/?p=4001http://www.microchip.com/forums/m594754.aspx
Generell kann man durch längere Mittelwertbildung eine Verbesserung
bzgl. des "wackelns" hinbringen, aber die 1/10° Anzeigestelle...
... Auflösung und Genauigkeit sind zwei Dinge !
Ohne Kalibrierung geht wohl keine Genauigkeit in 1/10 Grad, denke ich.
Das genaueste ohne Kalibrierung dürfte mit dem SMT160-30 sein. Dessen
PWM Signal muss man aber denn direkt mit einer Capture-Einheit des uC
auszählen und jede Periode einzeln ins Verhältnis setzen.
@ Erich
Das ist lieb gemeint - Danke, aber die verlinkten Seiten sind alle in
englisch - da kann ich leider nur Bilder ansehen.
Auch ist da nichts vom R8C13 zu sehen - mit anderen µC hatte ich noch
keine Erfahrung.
Mir schwebt vielmehr so ein "Temperaturonkel" vor, der zum einen bereits
kalibriert ist und zum anderen eine der Temperatur proportionele
Spannung ausgiebt.
Diese Spannung kann ich (dann auch mit meinen bescheidenen Wissen) mit
dem R8C zur Anzeige bringen.
Dass wäre Klasse :-)
lg
Jochen schrieb:> Autor:>> Jochen (Gast)> Datum: 06.02.2012 16:43>> @ Erich>> Das ist lieb gemeint - Danke, aber die verlinkten Seiten sind alle in> englisch - da kann ich leider nur Bilder ansehen.> Auch ist da nichts vom R8C13 zu sehen - mit anderen µC hatte ich noch> keine Erfahrung.
Hmmmm, du willst dich ernsthaft mit Mikrocontrollern befassen und bist
nicht in der Lage, englische Artikel über dieses Thema zu lesen ?
= VHS Kurs besuchen (Englisch)
= http://de.babelfish.yahoo.com/
= http://translate.google.de/
= ... oder vielleicht doch einfacheres Hobby suchen ?
Erich schrieb:> = ... oder vielleicht doch einfacheres Hobby suchen ?
Meine Fres.... Erich. Hooooooobbbbbbbyyyyyy! Der verdient kein Geld
damit. Ich finde er sich bisher sehr gut geschlagen.
Bitte unterstützen, oder einfach mal die Finger still halten!
Aufpasser schrieb:> Erich schrieb:>> = ... oder vielleicht doch einfacheres Hobby suchen ?>> Meine Fres.... Erich. Hooooooobbbbbbbyyyyyy! Der verdient kein Geld> damit. Ich finde er sich bisher sehr gut geschlagen.>> Bitte unterstützen, oder einfach mal die Finger still halten!
Vielen Dank lieber `Aufpasser` !
Mitlerweile denke ich an einen Temperatursensor, der (früher) bei
Multimetern mitgeliefert wurde. Man konnte ihn an die Buchsen V und COM
stecken. Den Messbereich stellte man (glaube ich) auf 200mV. Im Display
des DMM wurde dann direkt die gemessene Temperatur in °C angezeigt. Ich
denke aber ohne Kommastelle. Der Messbereich ging dabei oft weit unter
Null und auch weit über 1000°. Über die Genauigkeit weis ich auch nicht
Bescheid.
Aber so ein Sensor, sollte doch auch für meinen Zweck realiserbar sein.
Warum dann plötzlich Funkstille ?
Nur weil ich nicht englisch kann ?
lg
Jochen schrieb:> Neues Schaltbild anbei.> Müsste jetzt so stimmen.
Du bist doch fertig. Noch kalibrieren und gut isses. Das muss ja nicht
auf Knopfdruck gehen. Die Werte können auch fest compiliert werden. Ohne
Kalibrierung musst du etwas fertiges kaufen. Da übernimmt der Hersteller
dies für dich. Das macht aber keinen Spaß :-(
MaWin hat es oben beschrieben: Referenzthermometer nehmen, einen
Messpunkt im unteren Bereich, einen im oberen und schon kann jeder
beliebige Wert berechnet werden.
> MaWin hat es oben beschrieben: Referenzthermometer nehmen, einen> Messpunkt im unteren Bereich, einen im oberen und schon kann jeder> beliebige Wert berechnet werden.
Klingt so einfach wie ein Motorschaden:
Brauchst nur den Motor auszubauen, reparieren und wieder einbauen -
schwubs bist schon fertig - ist ja ganz einfach.
...
> Warum dann plötzlich Funkstille ?
Weil niemand Lust hat, deinen ständig ändernden Wünschen
hinterherzuhecheln.
Warum soll man für 10 verschiedene Sachen erklären wie es geht, wenn
danach doch nur die Frage nach der 11ten kommt ?
Warum soll eine Heerschar von Menschen für dich arbeiten, bloss weil du
zu faul bist selbst mal was zu lesen und selbst zu arbeiten ?
Trainierst du für deine Zukunft als Chef ?
Vergiss es.
> Nur weil ich nicht englisch kann ?
Das ist natürlich ein dickes Defizit.
Kauf dir was fertiges:
http://www.ebay.de/itm/Typ-K-Temperaturmessgerat-50-C-1300-C-Digital-Thermometer-Temperaturfuhler-/260937031048
Schade, dass der Thread hier so aprupt endet.
Wie so eine Kalibrierung aussieht hätte mich auch interessiert.
Womöglich macht sich jemand die Mühe um es mir näherzubringen.
Frage:
Ilvy schrieb:> Wie so eine Kalibrierung aussieht hätte mich auch interessiert.
Antwort:
... schrieb:> MaWin hat es oben beschrieben: Referenzthermometer nehmen, einen> Messpunkt im unteren Bereich, einen im oberen und schon kann jeder> beliebige Wert berechnet werden.