-         

Ergebnis 1 bis 6 von 6

Thema: RP6-Wetterstation komisches Verhalten

  1. #1
    Erfahrener Benutzer Roboter Experte Avatar von Virus
    Registriert seit
    15.09.2009
    Ort
    Duisburg
    Alter
    22
    Beiträge
    527

    RP6-Wetterstation komisches Verhalten

    Anzeige

    Hallo RN,

    als erstes bitte ich zu entschuldigen, dass ich nicht weiß in welche Kategorie mein Threat gehöhrt, mein Problem könnte im Programm liegen oder in der Elektronik oder bei den Sensoren oder.....
    Naja, die Moderatoren können den Threat villeicht passend verschieben.

    Zu dem Problem:

    ich benutze für die Messung der Helligkeit ein
    Licht-Spannungswandler TSL 250R,
    zur Temperaturmessung benutze ich einen NTC,
    der zugehörige spannungsteiler bildet sich aus einem 13kOhm Metallschichtwiderstand,
    und für die relative Luftfeuchtigkeit habe ich das Feuchtemodul CON-HYTE-ANA-1735 angeschafft.
    Ja, der oben erwähnte NTC ist der integrierte.

    Wenn ich nun mit dem nachfolgenden Programm die ADC-Werte prüfen will, klappt das soweit, dass wenn ich das Feuchtemodul nicht eingesteckt habe, die gemessene Helligkeit schwankt, wenn ich den LSW abdunkele oder mit einer Lampe anstrahle.
    Stecke ich nun das Modul ein, fällt der Helligkeits ADC-Wert konstant auf 0, und die gemessene Feuchtigkeit und temperatur stimmt, das heist bei anhauchen der Sensoren verändert sich der feuchtewert stakr und der temperaturwert leicht, bei berühren des NTC verändert sich die gemessene Temperatur.

    Hier mein Programm:

    Code:
    #include "RP6ControlLib.h"
    
    int main(void)
    {
    	initRP6Control();
    
    	DDRA &= ~ADC3;
    	DDRA &= ~ADC4;
    	DDRA &= ~ADC5;
    	
    	while(true) 
    	{
    		writeString_P("\nTemperatur: ");
    		uint16_t adc4 = readADC(ADC_4); // ADC 4 einlesen
    		writeInteger(adc4, DEC);
    		writeString(" | Feuchte: ");
    		uint16_t adc5 = readADC(ADC_5); // ADC 5 einlesen
    		writeInteger(adc5, DEC);
    		writeString(" | Licht: ");
    		uint16_t adc3 = readADC(ADC_3); // ADC 3 einlesen
    		writeInteger(adc3, DEC);
    		writeChar('\n');
    		mSleep(500);
    	}
    	return 0;
    }
    Mit hochohmigen Grüßen
    Virus

    Es lebe der Digitalkäse !

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von Virus
    Registriert seit
    15.09.2009
    Ort
    Duisburg
    Alter
    22
    Beiträge
    527
    so, hier sind noch mal ein paar gemessene Daten:
    zuerst mit eingestecktem Modul, dann sieht man wie ich es anfasse,
    die Temperatur steigt (der wert sinkt),
    dann ist das Modul entfernt und die Lichtwerte verändern sich:

    Temperatur: 430 | Feuchte: 449 | Licht: 0

    Temperatur: 426 | Feuchte: 448 | Licht: 0

    Temperatur: 424 | Feuchte: 438 | Licht: 0

    Temperatur: 422 | Feuchte: 438 | Licht: 0

    Temperatur: 420 | Feuchte: 449 | Licht: 0

    Temperatur: 423 | Feuchte: 440 | Licht: 0

    Temperatur: 179 | Feuchte: 292 | Licht: 0

    Temperatur: 182 | Feuchte: 235 | Licht: 200

    Temperatur: 305 | Feuchte: 326 | Licht: 252

    Temperatur: 339 | Feuchte: 368 | Licht: 324

    Temperatur: 365 | Feuchte: 384 | Licht: 316

    Temperatur: 366 | Feuchte: 397 | Licht: 343

    ich hab auch noch ein paar widerstände gemessen:
    Innenwiderstand LSW 4,4kOhm
    Widerstand zwischen Signalausgang LSW und NTC 1,1-1,4 MOhm
    Widerstand zwischen Signalausgang rel Feucht und LSW 1,5MOhm
    Widerstand zwischen Signalausgang rel Feucht und NTC 9MOhm
    Innenwiderstand Modul 4,13MOhm
    Mit hochohmigen Grüßen
    Virus

    Es lebe der Digitalkäse !

  3. #3
    Erfahrener Benutzer Roboter Experte Avatar von Virus
    Registriert seit
    15.09.2009
    Ort
    Duisburg
    Alter
    22
    Beiträge
    527
    so und jetzt kommen noch ein paar Fotos, ich denke man kann nachfollziehen, wie die kabel laufen,
    auf der Rückseite sieht man gut die Lötzinn-Leiterbahnen für den SpannungsreglerIC 7805, der übrigend den LSW und das Modul versorgt.
    Dieser ist auch ausreichend gepufffert.

    Achso, die krümel bei den Leiterbahnen auf der Rückseite sind getrocknete Flussmittelreste, kein Zinn,
    der Widerstand zwischen den beiden liegt im MOhm bereich wegen des Spannungsreglers.



    Mit hochohmigen Grüßen
    Virus

    Es lebe der Digitalkäse !

  4. #4
    Erfahrener Benutzer Roboter Experte Avatar von Virus
    Registriert seit
    15.09.2009
    Ort
    Duisburg
    Alter
    22
    Beiträge
    527
    ja, mein beitrag ist ein bischen lang geworden,
    aber warum hilft mir niemand?

    zu kompliziert?

    braucht ihr noch informationen?


    hier noch die conrad Bestell-NRn:

    LSW: 163970 - 62

    Modul:180835 - 62
    Mit hochohmigen Grüßen
    Virus

    Es lebe der Digitalkäse !

  5. #5
    Erfahrener Benutzer Roboter Experte Avatar von Virus
    Registriert seit
    15.09.2009
    Ort
    Duisburg
    Alter
    22
    Beiträge
    527
    so jetzt wieder ein nachtrag der euch helfen könnte, mit folgendem code bekomme ich von allen Sensoren richtige werte, auser von dem NTC, dieser liefert mit bei raumtemperatur den wert 0 und bei erwährmen mit finger maximal 8.

    | Licht: 804 | Temperatur: 0 | Feuchte: 492
    | Licht: 804 | Temperatur: 0 | Feuchte: 526
    | Licht: 804 | Temperatur: 5 | Feuchte: 558
    | Licht: 804 | Temperatur: 3 | Feuchte: 582
    | Licht: 804 | Temperatur: 5 | Feuchte: 593
    | Licht: 804 | Temperatur: 1 | Feuchte: 601
    | Licht: 804 | Temperatur: 6 | Feuchte: 609
    | Licht: 804 | Temperatur: 6 | Feuchte: 618
    | Licht: 804 | Temperatur: 4 | Feuchte: 625
    | Licht: 804 | Temperatur: 0 | Feuchte: 632
    | Licht: 804 | Temperatur: 2 | Feuchte: 636
    | Licht: 804 | Temperatur: 4 | Feuchte: 641




    #include "RP6ControlLib.h"

    int main(void)
    {
    initRP6Control();
    showScreenLCD("Wetterstation","Auf dem RP6");

    DDRA &= ~ADC3;
    DDRA &= ~ADC4;
    DDRA &= ~ADC5;

    while(true)
    {
    writeString(" | Licht: ");
    uint16_t adc3 = readADC(ADC_3); // ADC 3 einlesen
    writeInteger(adc3, DEC);
    mSleep(1);

    writeString(" | Temperatur: ");
    uint16_t adc4 = readADC(ADC_4); // ADC 4 einlesen
    writeInteger(adc4, DEC);
    mSleep(1);

    writeString(" | Feuchte: ");
    uint16_t adc5 = readADC(ADC_5); // ADC 5 einlesen
    writeInteger(adc5, DEC);
    writeChar('\n');
    mSleep(500);
    }
    return 0;
    }
    Mit hochohmigen Grüßen
    Virus

    Es lebe der Digitalkäse !

  6. #6
    Erfahrener Benutzer Roboter Experte Avatar von Virus
    Registriert seit
    15.09.2009
    Ort
    Duisburg
    Alter
    22
    Beiträge
    527
    so, ich hab den Fehler gefunden, dem Temperaturspannungsteiler fehlte die verbindung zu VCC.

    deswegen bewegte sich der entsprechende wert knapp um 0.

    was zuerst beim LSW falsch war weis ich noch nicht, ich hab alle signalleitungen nocheinmal nachgelötet und dann war der Fehler beseitigt.
    Mit hochohmigen Grüßen
    Virus

    Es lebe der Digitalkäse !

Berechtigungen

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