Hallo Ich habe einen Pic18F4550 und einen LM35 mit wem ich die aktuelle Raumtemperatur messen will und auf dem LCD-Display ausgeben... Das mit dem ausgeben auf dem lcd-display usw. funktioniert einwandfrei, nur bekomme ich vom LM35 einen ADC-Wert von 12-15 wenn ich den finger draufhalte.. wie rechne ich das auf eine Temperatur um?? Bitte um schnelle antwort, da es sich um ein Schulprojekt handelt welches in 2 wochen fertig zum präsentieren sein sollte ;) DANKE schonmal und lieben grüß
einfach (gemessene-körper-Temperatur minus 12..15) addieren.
Hallo, ich versteh nicht was du genau meinst, kannst du das mal in in form einer gleichung herschreiben? danke!
ich habe das dateblatt nun studiert, kann aber leider nichts finden was mir in irgend einer weise weiterhilft... kann mir wer helfen? DANKE!
Wie sieht denn Deine AD-Wandlung aus? Ich bastel auch gerade mit dem lm35 herum; er liefert wie im Datenblatt beschrieben 10mV/Grad; macht bei Körpertemperatur 370mV (allerdings nur in Bereichen, wo man den lm35 besser nicht hineinsteckt). Kalte Finger haben da schon mal nur 25 Grad. Was ist das für ein Wert von 12..15, den Du angesprochen hast?
ich habe den LM35 direkt auf dem adc pin 0... der code dazu: /* setup_adc_ports(an0); setup_adc(adc_clock_div_16); set_adc_channel(0); mess = read_adc(); //mess2 = (float)mess/51; printf(LCD_PUTC, "\fTemp: %2.3fV\n", mess); delay_ms(50); */ der wert von 12 bis 15 ist der ADC-Wert... 12 bei raumtemperatur ~15 wenn ich mit dem finger drauf halte... ein unterschied on 3°C --> die 10mV/°C stimmen also... der float wert mess2 ist dazu da, den adc wert (0-255) in eine temperatur umzuwandeln... nur wie rechne ich das jetzt um? das war meine eigentliche frage ;) mfg
Hallo! Mit mess2 müsstest Du eigentlich richtig liegen; die vom adc gelieferten Werte von 0...255 müssen in die möglichen Spannungswerte 0....5V umgerechnet werden (Dreisatz); die Division mit 51 tuts auch. d.h. der Wert, den Du erhältst entspricht einer Temperatur von bsp. 5V = 50C. Passt das? Joachim
ja, mess2 liefert die aktuelle spannung... aber bei 5V, die auf der lcd angezeigt werden, zeigt mein messgerät nur 4.6V am adc-eingang an, macht das was? wie soll ich den adc-wert von 12 bis 15 umrechnen? einen opv vorschalten um den bereich zu erhöhen? aber ich denke mir es muss ja einfach mit vin, gnd und vout auch so funktionieren... aber wie rechne ich das um, das möchte ich wissen^^ mfg und danke für eure antworten
Prüf erst mal Dein Meßgerät nach; danach die Spannung, die mit dem lm35 am adc anliegt und vergleiche sie mit der Anzeige auf dem lcd. Mit den Werten 12...15 kommst Du hier nicht weiter; nimm die werte aus dem mess2, der hat schon die richtige Skalierung. Teile den Wert aus mess durch 5 (oder 5,1), dann hast Du direkt die Temperatur und kannst sie auf dem lcd anzeigen. Mit dem int-Wert in das printf wid es nur merkwürdige Ergebnisse zeigen
also.. ich habe heute in der schule nachgemessen und es sind bei dem geeichten messgerät vom lehrer 4,9xx V ... also das müsste passen gerade probiere ich zuhause was in dem post über mir steht: " Du hier nicht weiter; nimm die werte aus dem mess2, der hat schon die richtige Skalierung. Teile den Wert aus mess durch 5 (oder 5,1), dann hast Du direkt die Temperatur und kannst sie auf dem lcd anzeigen. Mit dem int-Wert in das printf wid es nur merkwürdige Ergebnisse zeigen " ... dann hast du direkt die Temparatur und kannst sie auf dem lcd anzeigen... wenn ich was mache bekomme ich die Temperatur?? ich wäre euch sehr dankbar, wenn ihr mir die formel herschreiben würdet, da ich das nicht so ganz verstehe wie du mir das da erklärt hast... :/ also z.B.: mess = read_adc(); mess2 = (float)mess/51; printf(LCD_PUTC, "\fTemp: %2.3fV\n", mess2); was stimmt da nicht? sry dass ich mich so blöd anstelle aber ich komm auf keinen grünen ast ;) DANKE!!!
Vorausgesetzt, Du hast alles so weit eingestellt, daß der adc den Wertebereich von 0-5V in mess auf die Werte 0...255 abbildet (ist aber Standard bei 8bit) Dann liefert der lm35 5V bei 50 Grad Celsius und (fast) 0V bei 0 Grad. also 0 Grad = 0V =0 in mess 50 Grad = 5V = 255 in mess Das ergibt in einem Diagramm eine Gerade durch den Nullpunkt; Steigung (255-0)/(50-0) Die 5,1 ist die Geradensteigung im Diagramm (255/50): mess2 = mess/5,1 ergibt die Temperatur in Grad also nicht durch 51 dividieren; dann sollte das auch mit dem printf in dieser Form klappen, obwohl beim lm53 wie bei fast allen Temperaturmessern die dritte Stelle hinterm Komma keinen Sinn macht.
hallo, danke für deine schnell antwort erstmal! also wenn ich jetzt herschreib: mess = read_adc(); mess2 = (float)mess/5.1; printf(LCD_PUTC, "\fTemp: %2.2fV\n", mess2); delay_ms(50); dann bekomm ich am lcd einen wert von " Temp: 2.35V " wenn ich mit dem finger draufhalte, dann kommen diese ergebnisse: - Temp: 2.35V - Temp: 2.54V - Temp: 2.74V - Temp: 2.94V - Temp: 3.13V nach temperatur sieht mir das aber nicht aus^^ mit dieser formel werden die adc werte von 12 bis ca. 16 einfach durch 5.1 dividiert.. das macht doch keinen sinn?
Irgendwas stimmt mit Deiner Schaltung nicht. Welchen Wert bekommst Du in mess, wenn Du +5V , +2,5V und 0V anlegst? In mess sollte dann 255, 125 bzw 0 stehen ind in der Ausgabe über mess2 dann 50, 25 und 0. Mir scheint, als wenn in mess der zehnfache wert stehen sollte; Raumtemperatur 23,5 Grad, mit Finger drauf 31,3 macht mir mehr Sinn
ich hab gerade ein poti angeschlossen und bekomme deine werte... also wenn 5V am poti abfallen, ist der adc wert 255... bei 2.5V -> 125 und bei 0V -> 0 ... der lm35 gibt ja pro °C 10mV mehr/weniger aus... also bei 10 Grad gerade mal 0.1V liege ich da richtig? wenn ja, stimmen deine theorien nicht :/ ich habe gerade die adc-auflösung auf 10Bit eingestellt und jetzt bekomme ch mehr werte, also anstatt 12 bis 15 bekomme ich jetzt 49 bis 65... und daraus kann ich jetzt temperaturen von ~19°C bis 27°C problemlos darstellen indem ich den adc-wert durch 2.23 dividiere... es muss ja aber auch eine andere möglichkeit geben das andere mit 8 bit adc auflösung auszurechnen? gruß und danke ;)
'tschuldigung, ich hatte heute viel um die Ohren; bei 10 Grad liefert der lm35 natürlich nur 0,1V; bei raumtemperatur dann um die 0,2V; macht bei der Auflösung 5V->255 einen Wert von etwas über 10 in "wert"; von da her liegt das richtig Also noch mal: eine 1 in "wert" entspricht (1/51)V am adc 1V entspricht 10 Grad C vom lm35 also ist eine 1 in wert 10Grad/51 macht also bei einer 12 in wert 12* 10/51 Grad = 23 Grad. Ich hoffe, diesmal ist mir nicht der Kommafehler wieder dazwischengekommen
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.