Was mache ich falsch ?

Gast #548755
Lesenswert?

Hallo alle !

Ich versuche gerade mit meinem LM335 Temperaturen zu messen, aber zeigt 
mein DVM mir zu viel V an.

Ich habe mir dieses hier durchgelesen:
Beitrag "LM335 an Mega8"


Und habe die Schaltung so aufgebaut:

  5V
  |
  |
  |
  |
  2.2k
  |
  |            >Es müssen ja c.a. 3-5 k Ohm sein, da habe ich zwei 2.2
  |              genommen... müsste doch gehen...
  2.2k
  |
  |----------------- + an DVM
  |
  |
 LM335
  |
  |
  |
  |
  GND und GND vom DVM

Ich bekomme bei 25.8C eine Spannung von 4.79V... das müssten etwas mit 
2.9xx sein. Was ist da los ?

Mein Netzteil hat 5V (DVM misst aber 5.12).


Gast #548767
Lesenswert?

LOL

Ich habe GND und ADJ vertauscht... jetzt zeigt er bei 26.2 C 2.99V an.

Das stimmt mit der Gleichung:

T(X) = 0.010V * X + 2.7315

wobei: X = Grad ist.
       X => 0

Wie kann ich das jetzt am ADC auswerten ? Ich weiß wie ich die Daten 
annehmen kann und so nur mir fehlt die Rechnung..
Gast #548779
Lesenswert?

Nene der ist net gehimmelt.

Genug Strom bekommt er.

Ich habe folgendes getestet:

Ich habe mir meinen Wecker genonnem, der auch einen Temperatursensor 
besitzt.
Dann habe ich meine LM335 Schaltung neben den Wecker gestellt.

Jetzt habe ich meine Tischlampe genommen (Keine HAlogen) sondern diese 
alten Birnen die sehr sehr viel Hitze ausstoßen (Tut mir leid für diese 
CO2 Emission... ;) ).

Die Spannung stieg von 2.98 auf 3.01.

Hab dann mal so getestet:

T(X) = 0.010V * Grad vom Wekcer + 2.7315. Raus kam: 3.01 3.02... also 
kann man doch davon ausgehen das der Sensor noch lebt. Beim abschaltet 
der Lampe wurde die Spannung 3.00 und dann 2.99... Normal.. es kühlt ja 
ab.

Mein Problem liegt, wie ich das jetzt durch das Ergebnis vom AD Wandler 
in Celsius umwandeln kann. Bräuchte da eine Gleichung mit der ich das 
umwandeln kann.
Habe da aber keine Idee. Hab sogar im Deutsch Unterricht (Film: Kabale 
und Liebe aneguckt... x( )  aus langeweilige etwas rum probiert 
(Rechnerisch), aber ohne Erfolg kam auf keine Formel.
Gast #548784
Lesenswert?

wenn ich es noch richtig weiß hat der lm335 ja eine spannung von 2,7315 
V bei 0°C also ist die spannung die rauskommt der wert der temperatur in 
kelvin... von kelvin nach °C umrechnen ist ja nicht so schwer ;-)

und die spannung mit dem ADC zu ermitteln auch nicht
je nach dem ob du 8 oder 10bit verwendest kannst du ja mittels der 
referenz spannung und dem maximalen adc wert die schrittweite ausrechnen 
z.B. 5V referenzspannung bei 8 bit sind 5/255 ungefähr 0,02V pro schritt 
bei 10Bit dann halt 5/1023 ungefär 0,005V pro schritt...

also ist die Formel (5/1023*ADC)-273,15
Gast #548800
Lesenswert?

Juchu !

Ich weiß nicht woran das Problem lag.. ich kam einfach nicht drauf. Mein 
Problem ist, das ich bei einfachen Aufgaben (Gleichungen) immer mehr 
Probleme habe als bei schweren Aufgaben... K.a. woran das liegt, 
vielleicht denk ich immer nur so komplex obwohl es einfach ist...

Vielen dank !
Gast #548849
Lesenswert?

Hallo !

Habe jetzt das Programm geschrieben:
 $regfile = "m8def.dat"
 $crystal = 8000000


 '// LCD Display einstellungen
 Config Lcd = 16 * 1a
 Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , 
Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4
 Config Lcdbus = 4
 Cls
 Locate 1 , 1
 '\\

 Dim Ad As Word
 Dim Temp As Long
 Config Adc = Single , Prescaler = Auto , Reference = Avcc


Start Adc

Do

 Cls
  Ad = Getadc(0)


  Temp = 500 / 1023
  Temp = Temp * Ad
  Temp = Temp - 273.15


  Locate 1 , 1
  Lcd "Temp:" ; Temp

  Wait 1

 Loop

Er zeigt bei mir nur -27 Grad an g... so kalt ist es aber nicht ^^...

Ich sehe da keinen Fehler.... ihr ?
#548862
Lesenswert?

Ich weiß jetzt nicht ob deine Formel stimmt, aber ich weiß was definitiv 
nicht stimmt:

Dim Temp As Long
...
Temp = 500 / 1023

Das ergibt nämlich 0kommanix. Du musst die Formel so umstellen dass du 
die Division (wenn du eine brauchst) erst ganz zum Schluss ausführst.

Gruß
Roland
Gast #548866
Lesenswert?

Also ich habe mein Source so  gelassen:

Habe nur Dim Temp As Single gemacht und jetzt zeigt der mir 22 Grad 
an... wenn ich den Sensor anfasse... 24 Grad...

Aber die Temperatur stimmt nicht ganz.

Meine beiden Wecker zeigen 25.9 an... dann musst der Sensor auch 25 oder 
26 anzeigen.. eine kleine Abweichung gibt es immer... aber von 25 bzw. 
26 auf 22..... Woran kann das liegen ? Muss ich den AD Wandler noch in 
10Bit Modus einstellen odr macht er das von allein ?

Wie soll ich den diese Formel bitte umstellen... Dann würde doch ein 
falsches Eregbnis herauskommen.
#548869
Lesenswert?

Der Tempsensor hat eine Empfindlichkeit von 0.010V/K


0 = 0 V = 0K (Kelvin)
1024 = 5V = 500K

Somit folgt:

Temp = AD-Wert/1024 * 500K

Da du vermutlich gern noch ne Komma-Stelle hättest, und nicht mit 
Fließkomma-Arithmetik den Controller zustopfen willst, würd ich mit 
1/10K rechnen. Dann ergibt sich:

Temp10 = AD-Wert*5000 / 1024

Temp10 = Temp10 - 2731 (auf 1/10 Grad umrechnen)

Vorkomma = Temp10 / 10;
Nachkomma = Temp10 % 10;

Wie man in Basic den AD Wandler initialisiert weiß ich nicht. Uund ob 
der da 8 oder 10 Bit macht leider auch nicht
Gast #548891
Lesenswert?

Also irgendwie bin ich net in der Lage deine Rechnungen in BASCOM zu 
übersetzen....

Ich habe mal den AD Eingang gecheckt bei mir kommt 604 raus... das 
umgerechnet in V also:

5/1024 * 604 = 2.94921V.  Sind 21 Grad.

Probe = 0.010 * 21 + 2.7315 = 2.9415.

Aber beide Wecker zeigen: 26.1 Grad an.... Was ist bloß los ?
Gast #548898
Lesenswert?

Ich habe mal die Versorgungsspannung beim laufenden Betrieb der Platine 
gemessen:

Diese schwankt "nur" zwischen 5.08 und 5.09.

Jetzt habe ich folgendes getestet:

5.09/1024 * 604 = 2.9964V

Probe:

0.010 * 26 + 2.7315 = 2.9915 V   Also 26 Grad. Stimmt mit den Weckern 
ein.

So gut und schön... was mache ich jetzt  :(.  Zur Info: Ich benutze den 
Atmega8.

Da ich mich für die interne Referenzspannung entschieden habe, habe ich 
AREF mit 100nF mit Masse verbunden und mit Bascom: Reference = Avcc 
gemacht. Ist das nicht die interne Referenz ? Soweit ich weiß schon.
Gast #548906
Lesenswert?

Wenn ich mich auf die obere Formel beziehe:

(500/1023*ADC)-273,15

Ist 500 iine Referenzspannung von 5V. Wenn mein Netzteil aber zwischen 
5.08 oder 5.09 schwankt könnte ich doch 508 oder 509 benutzen oder nicht 
?

Ich habe das Probiert, jetzt ist das Ergebnis: 26.7 Grad.

Wecker: 26.6.

Ist das zufall ? Oder nur eine gute Problemlösung von mir ? :).
#548967
Lesenswert?

Avcc ist die Spannung die am Avcc Pin anliegt, also 5.? Volt.


Schau dir mal das Datenblatt an.
http://www.atmel.com/dyn/resources/prod_documents/doc2486.pdf
Seite 197. Da siehst du wie der DAC intern aufgebaut ist und wie das mit 
Aref funktioniert und dass da eine 2,56V Referenz eingebaut ist

Probier mal folgendes um diese zu aktivieren
Reference = Ainternal (oder so, kann kein bascom)

Du hast wahrscheinlich dann noch ein Problem, das nennt sich Rauschen, 
d.h. deine untersten Bits "wackeln" hin und her.

hierzu kann man die Werte mitteln, dazu macht man einfach mehrere (z.B. 
4) Messungen hintereinander:


Adc = 0;
for i = 1 to 4
  Adc = Adc + GetADC(0)
next

d.h. dein Temp hat jetzt eine "Auflösung" von 12 Bit (0..4096)

Um die Temperatur jetzt auszurechnen müsstest du erst mal auf Spannung 
umrechnen:
Vref = 2.56
U = (Adc / 4096) * Vref;

Kelvin = U / 0.010V/K

=> Kelvin = Adc / 4096 * Vref / 0.01 =
            Adc / 4096 * 2.56 * 100  =
            (Adc * 256) / 4096.
=> Grad = Kelvin - 273;

Da ich aber an deiner Stelle auf Fließkommaarithmetik verzicheten würde,
und einfach immer mit Zehntelgrad rechnen würde und dies nur bei der 
Anzeige entsprechend umrechnen würde ( 214 entspricht dann 21.4 
Grad)ergibt sich folgende Formel:

ZehntelKelvin =  (Adc * 2560) / 4096.
ZehntelGrad =  ZehntelKelvin - 2731

GradVorkomma = ZehntelGrad / 10
GradNachkomma = ZehntelGrad % 10


Hoffe das hast jetzt verstanden, wie das mit Einsetzen und umstellen 
funktioniert. Die Division sollte man halt erst nach allen 
Multiplikationen ausführen, weil es sonst zu großen numerischen Fehlern 
kommt .

Gruß
Roland



Gast #548991
Lesenswert?

Ich will jetzt nichts falsches behaupten aber wenn er 2,56V als 
Referenzspannung nimmt kann er doch nur noch bis zu einer bestimmten 
Temperatur messen oder? Er misst ja bei 26°C schon ca. 3V...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren