Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: LM35 Kategorie: Sensoren (von André H. - 14.05.2006 15:28)
Als Antwort auf LM35 von DieterF - 11.05.2006 22:37
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT V3.0, OSOPT V3.1
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)