Forum: Mikrocontroller und Digitale Elektronik Arduino Am2301 Sensoren


von Hendrik K. (hendrik2021)


Lesenswert?

Erstmal schönen Sonntag,

hab folgende Frage/Problemstellung. Ich benutzte für die 
Feuchtigkeitsregelung bzw. das ansteuern mehrerer Lüfter einen Mega2560, 
der bekommt per Am2301 One-Wire Sensoren die Feuchtigskeitswerte und 
schaltet dann Relais auf nem "Relaisshield".


Der Arduino bekommt 9v, die Sensoren 5V (Sollte so doch passen)?
Leider bekomme ich ca. jede dritte Messung keine Werte. Woran kann das 
liegen?

Die Sensoren sind teilweise etwas weiter weg. Keller->Obergeschoss... 
aber das dürfte kein Problem sein, oder?
Die One-Wire Sensoren übertragen ja ein Digitales Signal, die Kabel sind 
außerdem abgeschirmt... die Sensoren arbeiten laut Datenblatt von 
3.3-5.2v also kanns daran auch nicht liegen.

Am Code kanns nicht liegen, hab nen einfachen Beispielcode ausm Internet 
genommen, da ist jede dritte Messung auch "NaN".

Wenn ich den Sensor direkt an den Arduino klemme und die 5V vom Netzteil 
benutze funktioniert jede Messung. Ist da wirklich das Kabel zu lang?

Bedanke mich schon mal im Voraus, für hilfreiche Informationen.

von PittyJ (Gast)


Lesenswert?

Und wie sehen die Signale im Oszilloskop aus?

von Brain 2.0 (Gast)


Lesenswert?

Keine Ahnung ob die Kabel zu lang sind. Wir kennen ja die Länge nicht.
Vermutlich verursachen Störungen im Umfeld deine Messungen.

von Hendrik K. (hendrik2021)


Lesenswert?

das wird sich demnächst mal angeschafft :D.

Im Notfall mache ich was im Code das nur gültige Signale durchkommen...
Leider kann ich die Kabel nicht mehr Neuziehen oder umlegen. Die Kabel 
sind so um die 10m lang würde ich jetzt schätzen.

von MaNi (Gast)


Lesenswert?

Eine asynchrone Schnittstelle nicht differentiell über eine größere 
Distanz auszuführen ist immer eine schlechte Idee.
Jede kleine Störung auf der Leitung sorgt dafür dass es dir die Daten 
zerhagelt.

Am einfachsten liest du mehrmals bis die Daten stimmen (z.B. CRC) oder 
über eine Majoritätsentscheidung.

1Wire ist für "lange" Strecken wahrscheinlich so ziemlich das 
schlechteste was man machen kann.
Was sagt denn das Datenblatt?

von Hendrik K. (hendrik2021)


Lesenswert?

MaNi schrieb:
> Eine asynchrone Schnittstelle nicht differentiell über eine größere
> Distanz auszuführen ist immer eine schlechte Idee.
> Jede kleine Störung auf der Leitung sorgt dafür dass es dir die Daten
> zerhagelt.
>
> Am einfachsten liest du mehrmals bis die Daten stimmen (z.B. CRC) oder
> über eine Majoritätsentscheidung.
>
> 1Wire ist für "lange" Strecken wahrscheinlich so ziemlich das
> schlechteste was man machen kann.
> Was sagt denn das Datenblatt?

Okay, danke für die Antwort. Das Problem ist, dass nur drei Adern zur 
Verfügung stehen.
Zwei davon sind ja dann ohnehin schon belegt.
Oder gibts hier bessere alternativen für die Feuchtigkeits-Sensoren die 
nicht all zu teuer sind und nur eine Ader brauchen um die "Werte" zu 
übertragen.

Mit CRC oder Majoritätsentscheidung habe ich mich noch nie beschäftigt, 
zweites maximal mal gehört... aber mal sehen was man im Netz so findet.

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Hendrik K. schrieb:
> Die Sensoren sind teilweise etwas weiter weg. Keller->Obergeschoss...
> aber das dürfte kein Problem sein, oder?

Nun ja, das Datenblatt sprich mal von 30 und mal von 20m, wobei nicht 
klar ist, ob sich das auf die angeschlossene Gesamtlänge oder die 
Entfernung zum Sensor bezieht.

> Die One-Wire Sensoren übertragen ja ein Digitales Signal, die Kabel sind
> außerdem abgeschirmt... die Sensoren arbeiten laut Datenblatt von
> 3.3-5.2v also kanns daran auch nicht liegen.

- Welchen Wert hat der Pull-Up für SDA? Das Datenblatt empfiehlt 5.1kΩ.
- Hast du einen Abblockkondensator bei jedem Sensor?
- Tritt der Fehler auch auf, wenn du die anderen Sensoren abklemmst?

von Hendrik K. (hendrik2021)


Lesenswert?

Wolfgang schrieb:
> Hendrik K. schrieb:
>> Die Sensoren sind teilweise etwas weiter weg. Keller->Obergeschoss...
>> aber das dürfte kein Problem sein, oder?
>
> Nun ja, das Datenblatt sprich mal von 30 und mal von 20m, wobei nicht
> klar ist, ob sich das auf die angeschlossene Gesamtlänge oder die
> Entfernung zum Sensor bezieht.
>
>> Die One-Wire Sensoren übertragen ja ein Digitales Signal, die Kabel sind
>> außerdem abgeschirmt... die Sensoren arbeiten laut Datenblatt von
>> 3.3-5.2v also kanns daran auch nicht liegen.
>
> - Welchen Wert hat der Pull-Up für SDA? Das Datenblatt empfiehlt 5.1kΩ.
hier 10k, ich werde es mal mit 5.1k versuchen, warum ich damals 10k 
genommen habe weiß ich aber auch nicht mehr genau.

> - Hast du einen Abblockkondensator bei jedem Sensor?
Nein, habe ich nicht. Werde ich mich aber mal drüber informieren. Habe 
ich bis jetzt noch garnichts von gehört.

> - Tritt der Fehler auch auf, wenn du die anderen Sensoren abklemmst?
Ja, der Fehler tritt auch auf wenn ein Sensor allein angeschlossen 
ist(Wenn das Kabel lang ist).
Wenn man den Sensor direkt an den Mikrocontroller schließt passt das 
alles perfekt.

: Bearbeitet durch User
von Xaver M. (priapos)


Lesenswert?

Ich würde mal mit kürzeren Kabel ausprobieren ab wann das auftaucht, 
wenn es jetzt 10 m Kabel sind mit 5m und mit 7,5m.
Die Frage ist auch ob du jeden dritten Wert brauchst und in welchem 
Zeitabstand die übertragen werden. Wenn du damit Zimmertemperaturen 
ausliest, sollte wohl ein Wert die Min ausreichen?
Ich habe ein temperaturgesteuertes Fenster, das bekommt alle 30 sek 
einen neuen Temperaturwert, und auch das halte ich noch für zu viel.

von Hendrik K. (hendrik2021)


Lesenswert?

damit werden nur die Feuchtigkeitswerte gelesen, damit nachm z.B. 
duschen die Abluft angeht. Also nichts was in super kleinen Abständen 
gelesen wird... der Mikrocontroller ignoriert jetzt einfach alle 
"ungültigen/falschen" Signale, dass sollte so erstmal ausreichen.

Danke für die ganzen schnellen & hilfreichen Antworten.

Beitrag #6790928 wurde vom Autor gelöscht.
von EAF (Gast)


Lesenswert?

Hendrik K. schrieb:
> ich werde es mal mit 5.1k versuchen,

Hat das Erfolg gebracht....
Oder wurde die Erste und Beste Möglichkeit erfolgreich ignoriert.

MaNi schrieb:
> 1Wire ist für "lange" Strecken wahrscheinlich so ziemlich das
> schlechteste was man machen kann.
> Was sagt denn das Datenblatt?

1Wire wurde genau für solche Zwecke und Entfernungen konzipiert. Es 
besteht also durchaus Hoffnung das stabil zum laufen zu bekommen.

Ja, bei den Kabeln könnte man sich auch etwas Mühe geben. Aber das Buch 
ist zu, die Kabel sind schon verlegt.

von Gerhard O. (gerhard_)


Lesenswert?

EAF schrieb:
> 1Wire wurde genau für solche Zwecke und Entfernungen konzipiert. Es
> besteht also durchaus Hoffnung das stabil zum laufen zu bekommen.

Maxim hat eine App Note, die möglicherweise bei der Behebung dieses 
Problems behilflich sein könnte:

https://www.maximintegrated.com/en/design/technical-documents/tutorials/4/4255.html

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.