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).
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..
Wo liegt jetzt das Problem? T(X) ist deine Spannung die du mit deinem A/D-Wandler misst und jetzt brauchst du nur die Gleichung umstellen!
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.
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
Ok da ist natürlich nen kleiner fehler in der formel ;-) müsste dann heißen (500/1023*ADC)-273,15
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 !
Eine Frage: Wie lang darf der Kabel vom Sensor bis zur Platine sein ? Gibt es da ein Verlust wenn der Kabel zu lang ist =?
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 ?
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
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.
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
Übrigens Anstatt den 5000 (für 5 V) würd ich eher 2560 einsetzen und auf die interne Referenzspannung (falls der Controller sowas hat) zurück greifen. Da ja wie du schon bemerkt hast, deine 5V nicht sooo stabil sind. Gruß Roland
Hallo Roland ! Danke für deine Erklärung. Ich habe die interne Referenz eingestellt. Durch: Reference = Avcc. Damit nimmt er die Referenz von VCC des AD Wandlers.
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 ?
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.
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 ? :).
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
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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.