- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 16

Thema: Mehrere Analogeingänge abfragen erzeugt nur wirre Daten vom LM35...

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    06.09.2009
    Beiträge
    23

    Mehrere Analogeingänge abfragen erzeugt nur wirre Daten vom LM35...

    Hallo Leute!
    Ich steh hier gerade vor einer Wand, und habe gehofft ihr könnt mir vielleicht weiterhelfen...

    Ich baue gerade mit einem Arduino Mega2560 und einem EthernetShield eine Telemetrie für meine Heizung.
    Soweit funktioniert das ganz gut, schließe ich einen LM35 an kann ich ihn wunderbar auslesen und an meine Website senden.
    Aber wehe ich versuche mehrere Analoge eingänge auszulesen! Dann kriege ich nur wirres Zeug raus!
    Ich habs gestern schon bemerkt, als ich 5 Eingänge ausgelesen hab, aber nur an einem Eingang einen LM35 hatte, hat der komische Werte gebracht (immer 10-20° zuviel angezeigt, und jeder Messwert anders). Ich habs drauf geschoben dass ich an den anderen Pins nix habe und durch das Auslesen störungen verursacht. Also die entsprechenden Zeilen vom Code auskommentiert und alles war wunderbar.
    Jetzt hab ich heute einen PT1000 für die Außentemperatur an einen anderen Pin angeschlossen, und plötzlich zeigt der LM35 wieder nur Müll an, der PT1000 dagegen liefert aber absolut saubere Werte. Sobald ich die Zeile, die den PT1000 liest auskommentiere, kommen vom LM35 auch wieder schöne Temperaturen.
    Ich hab auch schon andere Pins versucht, keine Änderung.

    Hier mal ein Bild meiner Beschaltung vom LM35:
    Bild hier  

    Und der Ausschnitt meines Codes:

    Code:
    #include <SPI.h>
    #define aref_voltage 3.34
    
    
    int Sensor1 = A11;
    int Sensor5 = A15;
    float Temperatur1 = 0;
    float Temperatur5 = 0;
    
    void setup()
      {
      Serial.begin(9600);
      analogReference(EXTERNAL);
      Serial.println("Programm gestartet");
      }
    
    void loop()
      {
      Sensor_lesen();
    
    
      delay(1000);
      }
    
    void Sensor_lesen()
      {
      Temperatur1 = (analogRead(Sensor1) * aref_voltage / 1024 * 1000) / 10;
      Serial.print("S1: ");Serial.println(Temperatur1); 
    
      int S5r = analogRead(Sensor5);
      Serial.print("S5: ");Serial.println(S5r);
      }
    Ich hoffe mein Code ist übersichtlich, hab noch nie in C programmiert

    Ich hoffe ihr habt einen heißen Tipp für mich... Ich möchte ungern nur PT1000 verwenden, wegen Kosten...!
    100nf an VCC und GND direkt am LM35 haben übrigens nichts geholfen
    Auch ein delay(1000); zwischen beiden Sensoren hat nichts genützt...


    Ach ja, der LM35 hängt mittlerweile am A11, also nicht wundern warum im Code was anderes steht als auf dem Bild zu sehen ist

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.09.2009
    Ort
    Berlin (Mariendorf)
    Beiträge
    1.023
    Wirre Messwerte von verschiedenen ADC-Kanälen beruhen manchmal auf zu kurzer Samplingzeit. µC-ADCs haben i.d.R. einen internen Sample&Hold-Kondensator, der vor der Wandlung ausreichend Zeit benötigt, um sich an die externe zu messende Spannung anzugleichen. Erlaubte Eingangswiderstände liegen bei den mir bekannten Controllern im Bereich von maximal 10kOhm. Ich kenne deine LM35-Spannungsteilerschaltung nicht, vielleicht ist sie viel hochohmiger als 10kOhm. Man kann aber in gewissen Grenzen Impedanz gegen Samplingzeit eintauschen: Du könntest z.B. versuchen, eine Dummy-Messung zu machen, die alleine der Anwahl des ADC-Kanals dient, dieser Messwert wird verworfen. Anschließend eine ordentlich lange Samplingzeit durch Delay oder Timer ermöglichen, dann nochmal messen und erst diesen Wert (oder den Mittelwert mehrerer Messungen) nehmen und weiterverwerten.

    Dass der PT1000 im Wechsel mit LM35 stabile Werte liefert, der LM35 dagegen nicht, spricht für die Sache mit der Impedanz/Samplingzeit.
    Dass der LM35 alleine (ich nehme mal an, ohne andere Messkanäle) auch stabile Messwerte liefert, spricht ebenfalls für ein Impedanzproblem und gegen Störeinstreuung.
    Dass der LM35 im Wechsel mit anderen offenen und auch gewandelten ADC-Eingängen auch Müll liefert, widerspricht dem zumindest nicht.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    06.09.2009
    Beiträge
    23
    Viele dank für die kompetente Antwort!
    Eine Spannungsteilerschaltung hab ich nicht, der Ausgang des LM35 hängt direkt am Analogen Eingang. Der LM35 wird mit VCC und GND an die Versorgungsspannung angeschlossen und liefert dann am Ausgang exakt 10mV pro °C.
    Den Tipp mit der Dummy-Messung werd ich gleich mal testen, hast du einen Vorschlag wie lang der Delay sein sollte? Ich hab da leider 0 Vorstellung...!

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    06.09.2009
    Beiträge
    23
    oh man...
    nachdem ich mir gestern noch den ganzen abend mit einem pt1000 um die ohren gehauen hab um einen rechenweg zu finden mit dem ich vernünftige temperaturen rauskrieg (ich hab keinen gefunden), hab ichs heut nochmal mit dem lm35 versucht.
    3 stück angeschlossen, 3 stück abgefragt, super stabile werte bekommen. mit und ohne delay.
    jetzt hab ich aus freude alle 5 Sensoren fertig verkabelt, angeschlossen, und krieg wieder nur müll raus. erstmal mit abfragen von nur 3 sensoren, dann mit einer programmänderung dass alle 5 abgefragt werden, und auch mit delay zwischen 50 und 500ms.
    ich verstehs nicht, und so langsam hab ich keinen bock mehr
    was bitte mach ich falsch? die verkabelung war bei allen versuchen gleich, und auch die programmierung!

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von BMS
    Registriert seit
    21.06.2006
    Ort
    TT,KA
    Alter
    33
    Beiträge
    1.192
    Hallo,
    ich vermute eher, dass die Spannungsversorgung nicht ganz "sauber" ist. Kannst du mal die 3,3V mit einem Oszilloskop anschauen? Eventuell ist da noch ripple drauf.
    Die AREF könnte man noch filtern, meist ist hier ein LC-Tiefpass üblich (RC geht auch). Also in die Leitung von den 3,3V zu AREF z.B. ein Widerstand (10...100Ohm?) und dann von AREF zu GND ein Kondensator (100nF, 1µF ?).
    Beim LM35 kannst du auch einen Kondensator zwischen Analogpin und GND einbauen.
    Da der Fehler scheinbar bei mehreren Sensoren auftritt, kannst du auch mal alle Analogpins nacheinander testen - also einen Sensor nehmen, und dann nacheinander immer nur einen Analogpin testen (auch in Software immer nur einen Pin messen), um hier Fehlerquellen auszuschließen. Evtl. kannst du den Analogpin auch mal direkt mit GND oder 3,3V verbinden, der Wert in der Software muss dann auch wirklich das Minimum oder Maximum erreichen können. Sonst ist etwas faul
    Und dann würde mich noch interessieren, wie die Methode analogRead programmiert ist (Stichworte Acquisition Time; ADC Clock).
    Grüße, Bernhard

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    06.09.2009
    Beiträge
    23
    Also ein 100nF Kondensator und 50Ohm haben nichts bewirkt, 100nF direkt am LM35 leider auch nicht.
    Ich habe 5 LM35 an 5 Analogen eingängen (1-5). Gestern hatte ich 3 LM35 an 3 Eingängen (1,3,5), und es hat funktioniert... Im Quelltext hab ich nur die vier Zeilen hinzugefügt, die zusätzlich die Eingänge 2 und 4 auslesen.
    Egal ob ich das Board über USB mit Stom versorge oder über das Netzteil meiner ausgangierten Fritz!Box (das zufälligerweise perfekt passt!), die ergebnisse bleiben komplett gleich!

    Hier mal ein Screenshot meiner Ergebnisse wie ich sie im Browser ausgebe:
    Bild hier  

    Wenns vorher ging und jetzt, nachdem ich sämtliche Sensoren fertig konfektioniert habe, kanns ja eigentlich fast nur noch an der Verkabelung liegen. Wenn ich die Abfrage für 2 und 4 wieder auskommentiere hab ich immernoch die gleichen verrückten Werte.
    Allerdings hatte ich das Problem ja vorher auch schon, wie im ersten Post beschrieben, praktisch mit der gleichen Verkabelung, mit ders dann später plötzlich mal funktioniert hat...

    Ich bin ratlos...

    Ich hab zwar einen alten Oszillographen am Dachboden (der wohl älter ist als ich...), aber bis ich den wieder runterschlepp und enstaub... Ich weiß nichtmal ob das Ding für sowas geeignet ist, ganz zu schweigen davon dass ich nie richtig kapiert hab wie man das Monster bedient ^^



    Edit: Endlich Erfolg! Ich war vorhin wohl doch zu voreilig... Die Kondensatoren direkt am LM35 zwischen Signal und GND haben das Ruder rumgerissen!
    Die Werte sind zwar noch nicht 100% sauber, haben sich aber trotzdem deutlich stabilisiert, und wären jetzt prinzipiell für meinen Zweck zu gebrauchen. Wobei es natürlich schön wäre wenn die Kurve noch ein bisschen glatter wäre... Gehe ich richtig in der Annahmen, dass ein höherer Wert am Kondensator ein stabileres Signal liefert?
    Bild hier  
    Geändert von Zeitsklave (14.12.2012 um 18:29 Uhr)

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 10.12.2012, 19:50
  2. RS232 Problem - Nur wirre Zeichen
    Von YaNnIk im Forum AVR Hardwarethemen
    Antworten: 13
    Letzter Beitrag: 21.08.2009, 14:51
  3. Analogeingänge abfragen..aber wie ???
    Von Goliath im Forum C - Programmierung (GCC u.a.)
    Antworten: 5
    Letzter Beitrag: 16.06.2008, 11:41
  4. Terminal - bekomme nur wirre Zeichen
    Von forty im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 26.11.2007, 22:38
  5. Wirre Daten über ISP?
    Von SeveQ im Forum AVR Hardwarethemen
    Antworten: 1
    Letzter Beitrag: 05.05.2006, 05:43

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress