PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RP6-Wetterstation komisches Verhalten



Virus
02.01.2010, 10:04
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:


#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;
}

Virus
02.01.2010, 10:11
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

Virus
02.01.2010, 10:19
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.

https://www.roboternetz.de/phpBB2/download.php?id=18299
https://www.roboternetz.de/phpBB2/download.php?id=18298
https://www.roboternetz.de/phpBB2/download.php?id=18301

Virus
02.01.2010, 13:12
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

Virus
02.01.2010, 17:27
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;
}

Virus
03.01.2010, 11:35
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.