Re: LM35 Kategorie: Sensoren (von André H. - 14.05.2006 15:28) | ||
Als Antwort auf LM35 von DieterF - 11.05.2006 22:37 | ||
| ||
Hallo Dieter, Rene und Krassos haben zwar bereits das wichtigste geschrieben, aber ich gebe auchnoch meinen Senf dazu. ;-) Erstmal zur Hardware: Durch das Me�verfahren des Controllers kann es zu Ungenauigkeiten kommen, wenn das Eingangssignal nicht niederohmig genug ist. Abhilfe schafft hier in den meisten Fällen bereits ein Kondensator am AD-Port. Setze also einfach einmal einen 100nF-Kermik-Kondensator zwischen AD-Port und GND. Das hat bereits oft Wunder bewirkt. ;-) Nun zur Software: Die Interpolation von 10 Me�werten, wie es Rene vorschlägt, bringt meist eine Reduktion von Störeinflüssen. Allerdings erscheinen mir 100ms Pause zwischen den Messungen etwas hoch. Mit sehr viel kleineren Pausen sollten ebenso funktionieren Gut, Temperaturmessung ist meist nichts zeitkritisches, womit das egal wäre. Was mir, aber auch Krassos schon etwas Spanisch vorkommt, sind die "mal 0,35" in Deinem Code. Abgesehen von dem Problem, das Krassos schon beschreibt, wie kommst Du auf die 0,35 ?? Wenn Du die Spannung ausgeben willst, mu�t Du den AD-Wert mit 4 multiplizieren bzw. den AD-Wert um zwei Bit nach links schieben. Du erhälst dann die Spannung in mV: Spannung /*in mV*/ =ports.adc(0) shl 2; //alternativ: Spannung /*in mV*/ =ports.adc(0) *4; Noch ein paar Anmerkungen/Tips zu Deinem Code: - Du benötigst kein lcdext.clear() nach dem Init. Die Initialisierung beinhaltet bereits das Löschen des LCD-Inhalts. - �hnlich ist das mit lcdext.line(1). Nach dem LCD-Init befindet sich der Cursor bereits in der ersten Zeile. - mit hwcom.print() kannst Du einen String einfacher ausgeben, da Du nicht die Länge angeben mu�t. - Mit hwcom.num() kannst Du direkt Zahlen ausgeben, und mu�t nicht erst str.putint() benutzen. MfG André H. > Hallo, > > ich habe an die Station einen LM35DZ an folgende Anschlüsse > GND an Klemme12 GND > U-TEMP an Klemme 28 AD0 > 5V an Klemme 14 5V > > Wenn ich mit dem Voltmeter zwischen GND und U-TEMP messe bekomme ich erwartungsgemä� eine stabile Spannung von 0,227 Volt > Wenn die die AD0 auswerte bekomme ich wilde Sprünge > > AD0=27 > AD0=23 > AD0=25 > AD0=26 > AD0=23 > AD0=25 > AD0=26 > > Das Programm dazu sieht so aus: > //------------ > thread main > //------------ > { > stports.init(); > string s; > int n,ad; > lcdext.init(); > lcdext.clear(); > lcdext.line(1); > lcdext.print("Terminal Ser1"); > sleep 1000; > hwcom.init (); > hwcom.setspeed (hwcom.SPEED_9600); > loop > { > > s = "AD0="; > ad=ports.adc(0)*0.35; > str.putint (s,ad); > hwcom.send(s,str.length(s)); > hwcom.put(13); > sleep 1000; > } > } > > wo kann mein Problem liegen? > > Gruss Dieter > Antworten bitte nur ins Forum! Fragen per EMail auf Forum-Postings werden nicht beantwortet! Das macht meine Heizung gerade | ||
Antwort schreiben Antworten: Re: LM35 (von DieterF - 14.05.2006 19:54) Re: LM35 (von DieterF - 19.05.2006 18:28) Re: LM35 (von DieterF - 19.05.2006 18:30) |