Forum: Mikrocontroller und Digitale Elektronik Reedkontakt (Türschalter) - An See-/ISO Container - Fehlalarme


von Heinz M. (utgmk)


Lesenswert?

Hallo alle zusammen,

ich habe ein bzw. eventuell mehrere kleine Probleme.

Ich habe einen Arduino Pro Mini im Einsatz und habe einen Reedkontakt 
(Abus 
https://www.abus.com/Sicherheit-Zuhause/Alarmanlagen/Terxon-Draht-und-Hybridalarmanlage/Melder/Oeffnungsmelder/Draht-NC-Oeffnungsmelder-weiss) 
angeschlossen.

Den Schalter frage ich folgendermaßen ab:
1
void Setup_Pins()
2
{
3
  pinMode(PIN_DOOR_SWITCH, INPUT_PULLUP); // Doorswitch Pin (Interrupt)
4
}
5
6
7
per Interrupt:
8
...
9
10
door_state = digitalRead(PIN_DOOR_SWITCH);
11
12
...

Nun zu meinem ersten Problem:
In unregelmäßigen Abständen, meistens jedoch Vormittags, bringt der 
Reedkontakt eine Fehlmeldung. Das heißt, der Status in der SW ändert 
sich, obwohl die Tür verschlossen ist.

Jetzt rätseln wir warum es zu den Fehlalarmen kommt.

Der Sensor bzw. der Magnet sind mittels doppelseitigen Klebeband an der 
Innenwand der Seecontainers (Stahl) befestigt.

- Kann es sein, dass die Stahltür schuld ist?
- Das Kabel des Sensors bis zum Arduino ist 2m lang?
- Kann der interne Pullup Widerstand schuld sein?

Erschütterungen können ausgeschlossen werden.


Das zweite Problem ist, dass das der Status mittels Lora zum TTN (The 
Things Network) gesandt wird. Nach ca. einer Woche stellt der Arduino 
aber seine Arbeit ein. Warum? keine Ahnung.
(Ich will den Beitrag aber auch nicht verwässern. Primäre geht es um den 
Reedkontakt)

Den Quell-Code findet man hier:
https://github.com/CK1-CK/Arduino-Pro-Mini-LoRa-Sensor-Node

: Bearbeitet durch User
von Heimwerker (Gast)


Lesenswert?

Heinz M. schrieb:
> habe einen Reedkontakt
> (Abus
> 
https://www.abus.com/Sicherheit-Zuhause/Alarmanlagen/Terxon-Draht-und-Hybridalarmanlage/Melder/Oeffnungsmelder/Draht-NC-Oeffnungsmelder-weiss)
> angeschlossen.

ABUS bietet spezielle Reedkontakte an, die explizit für die Montage an
Stahltüren (Metalltüren) vorgesehen sind. Möglicherweise führt dies
zur Problemlösung.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Du gibst einen 2m entfernten Kontakt ohne Entprellung direkt zur 
Auswertung. Was meinst du wie schnell die Tür geöffnet und geschlossen 
wird? Wenn das mindestens 2 sec dauert, warum wertet du das Signal dann 
1000000 mal schneller aus als nötig?

Mach da besser mal Polling und eine anständige Entstörung mit mindestens 
1 sec Entprellzeit.

Und mach den Pullup niederohmiger. Und mache einen 100n-Kondensator mit 
rein.

: Bearbeitet durch Moderator
von Terry (Gast)


Lesenswert?

Heinz M. schrieb:
> Nun zu meinem ersten Problem:
> In unregelmäßigen Abständen, meistens jedoch Vormittags, bringt der
> Reedkontakt eine Fehlmeldung. Das heißt, der Status in der SW ändert
> sich, obwohl die Tür verschlossen ist.

Steht der Container in Deutschland oder ist er irgendwo unterwegs?

>
> Jetzt rätseln wir warum es zu den Fehlalarmen kommt.
>
> Der Sensor bzw. der Magnet sind mittels doppelseitigen Klebeband an der
> Innenwand der Seecontainers (Stahl) befestigt.

Wie habt ihr Magnet und Reedkontakt zueinander positioniert, und in 
welchem Abstand (Zeichnung). Hält das Klebeband noch gut wenn die 
Containerwand heiß wird?

> - Kann es sein, dass die Stahltür schuld ist?
> - Das Kabel des Sensors bis zum Arduino ist 2m lang?
> - Kann der interne Pullup Widerstand schuld sein?
>
> Erschütterungen können ausgeschlossen werden.

Bei den aktuellen Temperaturen könnte ich mir auch eine thermische 
Ausdehnung vorstellen, die den Abstand vergrößern könnte.

Zum Program: Ich würde nach einem Interrupt den Kontakt mehrfach 
(zeitverzögert) einlesen bevor ein Alarm generiert wird.

von oszi40 (Gast)


Lesenswert?

Mein Tor dehnt sich bei Hitze bis 5mm. Das könnte auch Deine 
Containertür. Deswegen sollte man auf eine sinnvolle Montage achten. 
Eine Blattfeder, die auf einen Mikroschalter drückt, wäre evtl. auch 
eine Lösung, sofern der Container nicht feucht wird?

von Heinz M. (utgmk)


Lesenswert?

Den Reedkontakt für Metalltore werde ich mir mal anschauen.


Lothar M. schrieb:
> Du gibst einen 2m entfernten Kontakt ohne Entprellung direkt zur
> Auswertung. Was meinst du wie schnell die Tür geöffnet und geschlossen
> wird? Wenn das mindestens 2 sec dauert, warum wertet du das Signal dann
> 1000000 mal schneller aus als nötig?
>
> Mach da besser mal Polling und eine anständige Entstörung mit mindestens
> 1 sec Entprellzeit.
>
> Und mach den Pullup niederohmiger. Und mache einen 100n-Kondensator mit
> rein.

Ich habe eine Entprellzeit von 60Sek. Die Entprellung mache ich in der 
ISR. Pollen ist eher schwierig, weil das Lora LMIC ein eigenes OS 
mitbringt und der Versand von Lora-Paketen zeitkritisch ist.
1
void interruptDoorFunction() // Interrupt Function for DoorSwitch
2
{
3
  if (millis() - oldTime > debounceTime) // Debouncing/Entprellung Switch - The millis() function will overflow (go back to zero), after approximately 50 days. (Max value = 4.294.967.295)
4
  {
5
    door_state = 0;
6
    watchdog = 0; // Real Alarm  // Watchdog/Heartbeat, Differentiation between watchdog and real alarm.   1=WatchDogSignal 0=Real DoorAlarm
7
8
    detachInterrupt(digitalPinToInterrupt(PIN_DOOR_SWITCH)); // Disable Interrupt Function for DoorSwitch
9
10
    oldTime = millis(); // Remember last run time.
11
  }
12
}


> Steht der Container in Deutschland oder ist er irgendwo unterwegs?
Ja steht in D und hat einen festen Standort.

> Wie habt ihr Magnet und Reedkontakt zueinander positioniert, und in
> welchem Abstand (Zeichnung). Hält das Klebeband noch gut wenn die
> Containerwand heiß wird?
Abstand zwischen Sensor und Magnet ist max 2mm. Die beiden Komponenten 
sind längs zueinander montiert (so wie hier nur viel näher zusammen und 
horizontal: 
https://www.abus.com/var/ImagesPIM/d110001/derivates/17/001/149/Bild-FU7350_anwend1_abus_960.jpg).

> Bei den aktuellen Temperaturen könnte ich mir auch eine thermische
> Ausdehnung vorstellen, die den Abstand vergrößern könnte.
Kann man, denke ich, ausschließen. Der Sensor ist laut Datenblatt bis 
11mm Abstand zugelassen. Abstand ist max 2mm

> Zum Program: Ich würde nach einem Interrupt den Kontakt mehrfach
> (zeitverzögert) einlesen bevor ein Alarm generiert wird.
Das ist ein guter Punkt. Werde ich in Betracht ziehen. Auf der anderen 
Seite kann es eigentlich nicht sein, dass man sich nicht auf den 
Schalter verlassen kann. Der Schalter ist ja eigentlich für Alarmanlagen 
gedacht.


#######################


Ich war vorhin nochmal 1,5h am Container und bin auf Fehlersuche 
gegangen. Das Problem ist definitiv am Sensor bzw. Leitung.
Im Container ist eine Leuchtstoffröhre. Bei geöffneter Tür schaltet der 
Türschalter wenn das Licht eingeschaltet wird. Anscheinend ist das lange 
Kabel eine Antenne oder der Sensor nimmt das Stör-Signal direkt auf.

Ich werde am WE das Kabel kürzen und dann schauen ob es besser wird.

Wenn alle Stricke reißen wird der Reedkontakt gegen einen mechanischen 
Industrieschalter getauscht.

Viele Dank schonmal für die Tipps.

Ich halte euch auf dem laufenden.

: Bearbeitet durch User
von oszi40 (Gast)


Lesenswert?

Heinz M. schrieb:
> Bei geöffneter Tür schaltet der
> Türschalter wenn das Licht eingeschaltet wird. Anscheinend ist das lange
> Kabel eine Antenne oder der Sensor nimmt das Stör-Signal direkt auf.

Dann achte doch mal genauer auf die Zeiten wann das Licht an ist und 
ob nur dann dieser Fehler kommt. Leitung ungünstig verlegt? 
Masseproblem? Böse Abschaltspanng?

von Heinz M. (utgmk)


Lesenswert?

oszi40 schrieb:
> Heinz M. schrieb:
>> Bei geöffneter Tür schaltet der
>> Türschalter wenn das Licht eingeschaltet wird. Anscheinend ist das lange
>> Kabel eine Antenne oder der Sensor nimmt das Stör-Signal direkt auf.
>
> Dann achte doch mal genauer auf die Zeiten wann das Licht an ist und
> ob nur dann dieser Fehler kommt. Leitung ungünstig verlegt?
> Masseproblem? Böse Abschaltspanng?

Da ist ein Bewegungsmelder im Container. Der Container wird Max 1-3 Mal 
im Monat geöffnet. Somit ist das Licht eigentlich immer aus.

Eine kleine ABB Blindstromkompensation Anlage ist ca 10m entfernt (in 
einem Stromhäuschen). Vielleicht spielt das eine Rolle.

Der Arduino hängt im Moment an einem normalen USB Hub als 
Stromversorgung. Der Hub wird von einem raspberry benutzt (als USB Hub). 
Ich denke nicht dass das von dort kommt.

Es ist echt komisch.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Heinz M. schrieb:
> Pollen ist eher schwierig, weil das Lora LMIC ein eigenes OS mitbringt
> und der Versand von Lora-Paketen zeitkritisch ist.
Du hast aber kein Problem damit, da mit einem ISR mitten rein zu 
trampeln? Warum pollst du nicht, wenn es zeitunkritisch ist? Interrupts 
nimmt man für zeitkritische Sachen. Dein Schalter gehört eindeutig nicht 
in diese Kategorie.

Zeig mal einen Schaltplan der ganzen Schaltung. Oder wenigstens vom 
Eingang. Denn wie gesagt: es reicht sicher nicht, einfach nur einen 
internen 40-Pullup einzuschalten.

Hast du eigentlich schon mal mit dem Reedkontakt und dem Magneten 
ausprobiert, wie die beste Platzierung ist. Dass muss nicht unbedingt 
eine passgenaue Überdeckung sein...

Beitrag #7156807 wurde von einem Moderator gelöscht.
von mIstA (Gast)


Lesenswert?

Heinz M. schrieb:
> Anscheinend ist das lange Kabel eine Antenne

Heinz M. schrieb:
> Wenn alle Stricke reißen wird der Reedkontakt gegen einen
> mechanischen Industrieschalter getauscht.

Wenn das Kabel als Antenne wirkt, wird das austauschen des Schalters 
kaum helfen.

von Gerald B. (gerald_b)


Lesenswert?

mIstA schrieb:
> Wenn das Kabel als Antenne wirkt, wird das austauschen des Schalters
> kaum helfen.

Dachte ich auch gerade.
Wie ist der Eingang vom µC beschaltet? Nur die RC Kombination aus 
internem Pullup und 100n C mehr als dürftig. Zum einem ist der Pullup 
mit ca. 30 Kiloohm eine Zehnerpotenz zu hochohmig für rauhe Umgebungen 
und der C könnte auch um 1-2 zehnerpotzenzen größer sein.
Außerdem solltest du dem Eingang noch 2 Clampdioden spendieren. 2 kleine 
Wald und Wiesendioden vom Eingang, eine gegen Masse und eine gegen +Ub.
Ich hatte mal auf 2 Meter Kabel zu einem DS18B20 zu einem 100W COB, das 
per PWM gedimmt wurde, soviel Störungen, das es mir den Eingang gegrillt 
hat. Abhilfe schafften dann Clampdioden am µC und am Sensor und ein Elko 
plus KerKo am Sensor.
Stromsparen und zuverlässige Auswertungen in rauher Umgebung beißen sich 
halt (hochohmig, geringer Stom)

von Peter D. (peda)


Lesenswert?

Heinz M. schrieb:
> Pollen ist eher schwierig, weil das Lora LMIC ein eigenes OS
> mitbringt und der Versand von Lora-Paketen zeitkritisch ist.

Pollen kostet keinerlei Zeit. Das ist doch nur einen Input-Pin einlesen 
(< 1µs). Fürs Pollen hat daher jede CPU Zeit.
Wen Du allerdings nach dem Pin einlesen die CPU blockierst, dann ist das 
ganz allein Deine Schuld. Dann ist Deine Programmplanung Rotte.
Die Mainloop darf niemals blockiert werden oder Du verwendest ein 
Multitasking-OS.

Heinz M. schrieb:
> Ich habe eine Entprellzeit von 60Sek. Die Entprellung mache ich in der
> ISR.

Nö, das ist kein Entprellen.
Ich entprelle im Timerinterrupt per Mehrfachabfrage. Ein Zustand muß 
über >= 4 Interrupts stabil sein, damit er übernommen wird. Bei 10ms 
Interruptrate also >=40ms.

von Bremsklotz (Gast)


Lesenswert?

Wozu überhaupt den Pullup?
VCC=>Kontakt=>Eingang.

Und 60S in der int funktion...
Wird der Interupt angehalten wenn der Int aufgerufen wird?
Wenn nicht, da kann man schon mal mehrfach in die gleiche Funktion 
springen wärend diese von vorher und vorvorher eigentlich läuft.
Deswegen entprellen im Interrupt, nicht gut.

von ●DesIntegrator ●. (Firma: FULL PALATINSK) (desinfector) Benutzerseite


Lesenswert?

befindet sich der Container auf einem Schiff?

Dann könnte das eine Einstreuung von Radarsignalen sein.
Nicht wirklich vom eigenen Schiff,
aber wenn man z.B. dicht an anderen Schiffen
vorbei fährt (z.B. in Meerengen, Kanälen), können die Radarsignale
vom anderen Schiff doch recht stark rein ballern.

von Michael U. (amiga)


Lesenswert?

Hallo,

interner PullUp ist viel zu hochohmig. 3,3k PullUp, 100n Pin gegen GND 
sollten schon fast alles eliminieren, 330 Ohm in Reihe zur Leitung am 
ProMini jkann zusätzlich helfen. Ansonsten würde ich da auch immer 
pollen, Timer-IRQ alle 10ms, abfragen, Zähler mitführen, wenn 
geschlossen +1, wenn offen -1, bei 10 und bei 0 Status melden. Kann man 
gut anpassen, da stört es dann auch nicht, wenn LoRa da mal die 
Interrupts kurz sperrt.

Gruß aus Berlin
Michael

von Heinz M. (utgmk)


Lesenswert?

Gerald B. schrieb:
> mIstA schrieb:
>> Wenn das Kabel als Antenne wirkt, wird das austauschen des Schalters
>> kaum helfen.
>
> Dachte ich auch gerade.
> Wie ist der Eingang vom µC beschaltet? Nur die RC Kombination aus
> internem Pullup und 100n C mehr als dürftig. Zum einem ist der Pullup
> mit ca. 30 Kiloohm eine Zehnerpotenz zu hochohmig für rauhe Umgebungen
> und der C könnte auch um 1-2 zehnerpotzenzen größer sein.
> Außerdem solltest du dem Eingang noch 2 Clampdioden spendieren. 2 kleine
> Wald und Wiesendioden vom Eingang, eine gegen Masse und eine gegen +Ub.
> Ich hatte mal auf 2 Meter Kabel zu einem DS18B20 zu einem 100W COB, das
> per PWM gedimmt wurde, soviel Störungen, das es mir den Eingang gegrillt
> hat. Abhilfe schafften dann Clampdioden am µC und am Sensor und ein Elko
> plus KerKo am Sensor.
> Stromsparen und zuverlässige Auswertungen in rauher Umgebung beißen sich
> halt (hochohmig, geringer Stom)

Also im Moment ist gar kein RC Glied verbaut. Es ist einfach nur der 
Schalter am PIN und GND und der Pullup ist aktiviert. (So wie hier: 
https://circuitjournal.com/img/articles/1_arduino_buttons/button_connections.jpg?v=19)


> Nö, das ist kein Entprellen.
> Ich entprelle im Timerinterrupt per Mehrfachabfrage. Ein Zustand muß
> über >= 4 Interrupts stabil sein, damit er übernommen wird. Bei 10ms
> Interruptrate also >=40ms.
Was du machst, ist eine Variante um den Status sicher abzufragen. Per 
Definition ist das Entprellen.


> Wozu überhaupt den Pullup?
> VCC=>Kontakt=>Eingang.
Schon mal etwas von Kurzschluss gehört?

> Und 60S in der int funktion...
> Wird der Interupt angehalten wenn der Int aufgerufen wird?
> Wenn nicht, da kann man schon mal mehrfach in die gleiche Funktion
> springen wärend diese von vorher und vorvorher eigentlich läuft.
> Deswegen entprellen im Interrupt, nicht gut.
Äh, nein. Die Interrupt Funktion ist nur 60s außer Funktion. Ist sie 
aber eh, weil ich nach der ersten fallenden Flanke den Interrupt 
deaktiviere.
1
detachInterrupt(digitalPinToInterrupt(PIN_DOOR_SWITCH)); // Disable Interrupt Function

> befindet sich der Container auf einem Schiff?
Nein, feste Position in D. Keine Erschütterungen.

> Dann könnte das eine Einstreuung von Radarsignalen sein. Nicht wirklich vom 
eigenen Schiff, aber wenn man z.B. dicht an anderen Schiffen vorbei fährt (z.B. in 
Meerengen, Kanälen), können die Radarsignale vom anderen Schiff doch recht stark 
rein ballern.
Eher nicht.

#############################
Folgende Aktionen werde ich jetzt mal einleiten.

1. Leitung kürzen. Von 2m auf 50cm
2. Kondensatoren parallel zum Schalter hinzufügen (100nF und ggf. 10nF)
3. ggf. Nutzung externe Pullup mit kleinerem Widerstand
4. ggf. Einbau Clamp-Dioden
5. ggf. Umstellung von Interrupt auf Polling mit Abfrage, dass der 
Sensor z.B. 50ms geschaltet haben muss bevor ein Alarm ausgelöst wird.


Um ehrlich zu sein verstehe ich nicht bzw. finde es faszinierend, warum 
ein einfacher Schalter dermaßen gestört wird.

Ich bin mir aber sicher, mit den oben genannten Maßnahmen, das Problem 
in den Griff zu bekommen.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Heinz M. schrieb:
> Um ehrlich zu sein verstehe ich nicht bzw. finde es faszinierend, warum
> ein einfacher Schalter dermaßen gestört wird.

Der Schalter wird nicht gestört. Es ist der Interrupt, der 
sauempfindlich ist. Bei 16MHz Takt, reagiert der Interrupt auf Pulse 
>63ns sicher. Störungen von 16MHz entstehen verdammt leicht.
Daher nimmt niemand bei Verstand einen externen Interrupt für 
mechanische Kontakte. Bzw. nur zum Aufwachen, aber nicht zum Auswerten.

Die Totzeit von 60s bewirkt absolut nichts. Nach den 60s reicht wieder 
eine 0,00000006s kurze Störung, um Dich zu täuschen.

Heinz M. schrieb:
> Also im Moment ist gar kein RC Glied verbaut.

Ist auch nicht nötig, wenn ein sauber funktionierende Entprellung 
implementiert wurde.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Heinz M. schrieb:
> Also im Moment ist gar kein RC Glied verbaut. Es ist einfach nur der
> Schalter am PIN und GND und der Pullup ist aktiviert.
So geht das nur in der Theorie auf einem Blatt Papier. In der Praxis ist 
da garantiert irgendein Störer unterwegs und koppelt Müll ein.

Heinz M. schrieb:
> Folgende Aktionen werde ich jetzt mal einleiten.
Zuallererst als ersten Punkt 1a: eine vernünftige Hardware für diesen 
Schaltereingang. Die sieht etwa so aus:
1
 
2
                           Vcc
3
                            |
4
                           2k2
5
                            |
6
       .--------------------o---2k2---o----| µC Eingang
7
       |                              |
8
Reed  /                         100n ===
9
       |                              |                              
10
       '------------------------------o----| µC GND
11
                                      |
12
                                     GND
Dieser Kondensator ist übrigens der eigentliche Knackpunkt, denn er hält 
irgendwelche kurzen Störungen vom Eingang fern.

> Äh, nein. Die Interrupt Funktion ist nur 60s außer Funktion. Ist sie
> aber eh, weil ich nach der ersten fallenden Flanke den Interrupt
> deaktiviere.
Hantiere nicht so viel an den Interrupts herum. Ein Interrupt wird 
entweder gebraucht (dann ist er aber sicher nicht 60s inaktiv), oder er 
wird eben wie hier nicht gebraucht (und dann macht er nur Probleme, weil 
er so pfeilschnell reagiert). Lass den Interrupt einfach weg. Er ist 
absolut unnötig für so ein schnarchlangsames Signal.

BTW: wenn du einen ungünstigen Aufbau und eine schlechte Verdrahtung 
hast, kannst du die beste Schaltung schlecht machen.

von Holger (Gast)


Lesenswert?

Lothar M. schrieb:
> Zuallererst als ersten Punkt 1a: eine vernünftige Hardware für diesen
> Schaltereingang. Die sieht etwa so aus:
>
1
>                            Vcc
2
>                             |
3
>                            2k2
4
>                             |
5
>        .--------------------o---2k2---o----| µC Eingang
6
>        |                              |
7
> Reed  /                         100n ===
8
>        |                              |
9
>        '------------------------------o----| µC GND
10
>                                       |
11
>                                      GND
12
>

Ich denke auch, das RC Glied am Eingang ist essentiell um eventuell über 
das Kabel eingefangene Störungen zu reduzieren. Den extra 2,2k halte ich 
dagegen für überflüssig. Was scheinbar alle übersehen, der Eingang hängt 
nicht in der Luft, sondern liegt über den geschlossenen Reedkontakt 
dauerhaft auf GND. Nur im Alarmfall öffnet der Kontakt, und um den 
Eingang dann hochzuziehen reicht der interne Pullup.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Holger schrieb:
> Den extra 2,2k halte ich dagegen für überflüssig.
Den zusätzlichen 2k2 würde ich schon deshalb reinbauen, dass ich den 
Frittstrom sicher erreiche.

> Nur im Alarmfall öffnet der Kontakt, und um den Eingang dann
> hochzuziehen reicht der interne Pullup.
Ich mache den zusätzlichen Pullup einfach deshalb rein, dass der ganze 
Klimbim insgesamt niederohmiger wird. Nur mit den undefinierten internen 
40k würde ich mich nie raus in die freie Natur trauen. Die taugen 
bestenfalls zur Tasterabfrage auf der µC-Leiterplatte.

von Holger (Gast)


Lesenswert?

Lothar M. schrieb:
> Holger schrieb:
>> Den extra 2,2k halte ich dagegen für überflüssig.
> Den zusätzlichen 2k2 würde ich schon deshalb reinbauen, dass ich den
> Frittstrom sicher erreiche.

Sollte bei einem hermetisch gekapselten Reedkontakt keine Rolle spielen.

Aber wenn ich das folgende hier lese, dann würde ich mir die Versorgung 
genauer anschauen.

Heinz M. schrieb:
> Ich war vorhin nochmal 1,5h am Container und bin auf Fehlersuche
> gegangen. Das Problem ist definitiv am Sensor bzw. Leitung.
> Im Container ist eine Leuchtstoffröhre. Bei geöffneter Tür schaltet der
> Türschalter wenn das Licht eingeschaltet wird. Anscheinend ist das lange
> Kabel eine Antenne oder der Sensor nimmt das Stör-Signal direkt auf.

Heinz M. schrieb:
> Der Arduino hängt im Moment an einem normalen USB Hub als
> Stromversorgung. Der Hub wird von einem raspberry benutzt (als USB Hub).
> Ich denke nicht dass das von dort kommt.

Ich halte das inzwischen für sehr wahrscheinlich. An irgendwelche HF 
Einkopplungen innerhalb eines Stahlcontainers glaube ich eher nicht.

Heinz M. schrieb:
> In unregelmäßigen Abständen, meistens jedoch Vormittags, bringt der
> Reedkontakt eine Fehlmeldung. Das heißt, der Status in der SW ändert
> sich, obwohl die Tür verschlossen ist.

Vielleicht schaltet da jemand eine dicke Maschine ein, und die Störungen 
kommen über das Netz. Das Einschalten deiner Leuchtstoffröhre kann 
ebenfalls über das Netz einkoppeln.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Holger schrieb:
> Ich halte das inzwischen für sehr wahrscheinlich.
Ich hatte nicht ganz grundlos auf den Aufbau hingewiesen.

Heinz M. schrieb:
> Das zweite Problem ist, dass das der Status mittels Lora zum TTN (The
> Things Network) gesandt wird. Nach ca. einer Woche stellt der Arduino
> aber seine Arbeit ein. Warum? keine Ahnung
Auf dem Labortisch läuft das Ding aber monatelang ohne jegliche(!!) 
Probleme, das hast du sicher schon ausprobiert, oder? Und wenn das da 
tadellos läuft, welche Versorgung hast du da dran?

Heinz M. schrieb:
> Der Arduino hängt im Moment an einem normalen USB Hub als
> Stromversorgung.
Mit "normal" meinst du so ein nomales billiges China-Ding? Wenn die 
Stromversorung wacklig sein könnte, dann kommt erst mal ein richtig 
gutes Netzteil ran, was nicht nach

> Der Hub wird von einem raspberry benutzt (als USB Hub).
Ein Schaltplan oder ein Foto vom Aufbau wäre doch ganz hilfreich...

> Ich denke nicht dass das von dort kommt.
Da muss man nichts denken. Das kann man messen. Hast du das mal probiert 
und mit einem Oszi die Stabilität der Versorgung kontrolliert?

von Gerald K. (geku)


Lesenswert?

Ohne Filterung des Eingangssignals können Vibratioben und Schockwellen 
Interrupts auslösen. Es reichen schon bruchteile von Mikrosekunden aus. 
Stahl leitet Schockwellen sehr gut (man denke an eine Glocke). Was sagt 
das Datenblatt über die Vibrations- und Schockwellenfestigkeit des 
Reedkontaktes aus? Was passiert bei einem Hammerschlag gegen die 
Containertür?

Eine Abhilfe ist ein Tiefpass am Eingang zur Elektronik.

: Bearbeitet durch User
von oszi40 (Gast)


Lesenswert?

Wenn ich weiter oben lese, dass noch anderer Klimbim an der 
Stromversorgung hängt, würde ich später noch ein anderes Netzteil zum 
Test in Betracht ziehen?

von someone (Gast)


Lesenswert?

Du bist ja offensichtlich in einer rauhen industriellen Umgebung 
unterwegs. Für solche Umgebungen werden üblicherweise Stromschleifen 
eingesetzt, da sie extrem widerstandsfähig gegen Störungen sind. Das 
bedeutet zwar für dich höheren Verschaltungsaufwand, ist aber sicher die 
auf lange Sicht beste Lösung.
Außerdem hast du leider deine Anwendung nicht genug vorbereitet und 
vorher überlegt, welche Zeiten und Wertebereiche realistisch sind. Es 
ist ein Türkontakt, kein Tastaturschalter oder Motorencoder. Der 
schaltet langsam. Du kannst ihn bequem aus Energiespargründen alle 500ms 
abfragen und bei Statusänderung das Abfrageintervall auf 100ms setzen; 
bei Übereinstimmung von 5 aufeinanderfolgenden Werten wird dann der 
Status auf den neuen Wert gesetzt. Dadurch erkennst du im worst case 
Türöffnungen von 1s Länge nicht.
Und nun zum LoRaWAN: Überprüfe bitte auch, ob Du LMIC mit einem Arduino 
überhaupt noch einsetzen kannst. Soweit ich mich richtig erinnern kann, 
hatte man mit Arduino und LMIC Probleme mit manchen MAC-Kommandos; TTNv3 
erwartet aber mittlerweile wie jedes andere einigermaßen 
standardkonforme LoRaWAN, dass diese vom Knoten aber ordentlich 
verarbeitet werden. TTNv2 war da deutlich nachlässiger, aber es ist ja 
Quatsch, die Netzwerkperformance künstlich einzuschränken, damit man 
irgendwelche Bastelhardware betreiben kann, wenn es mittlerweile 
wirklich kostengünstige standardkonforme Lösungen gibt. Ich weiß nicht, 
ob LMIC mit Arduino mittlerweile funktioniert, es gibt aber sicher 
andere LoRaWAN-Hardware, die unproblematischer ist, da LMIC schon extrem 
viel Speicher des Arduino verbraucht.

von torsten1268 (Gast)


Lesenswert?

an einen Schaltkreis Eingang,GND  schliest mann nur lange Dräte an wenn 
mann ein radio oder ähnliches basteln will.Ansonsten kommt auf der 
platine Ein Relais oder ein Optokoppler.Damit Am Eingang der 
Schaltkreise Definierte Signale Sind.Und selbst an Relais, Optokoppler 
eingängen gehören noch Filter und Schutzkomponenten.

Gruß Torsten

von Martin (Gast)


Lesenswert?

Entprelle einfach vernünftig, dazu kannst du Peter D's Code aus der 
Artikelsammlung nehmen und verlängere die Zeit auf ca. 1s.
Oder nimm eine Arduino Lib, die richtig entprellt, dann ist Ruhe.
Hör auf die Profis, dann hast du am schnellsten Erfolg.

Und verinnerliche die Erklärungen zu Polling und Interrupt. Die Kollegen 
haben alle recht.

von Heinz M. (utgmk)


Lesenswert?

Moin alle zusammen,

Ui der Thread ist ja förmlich explodiert.

Ich bin noch eine Rückmeldung schuldig und ich muss mich erstmal bei 
euch bedanken.

> Someone
> Du bist ja offensichtlich in einer rauhen industriellen Umgebung unterwegs.
Ich weiß nicht ob das eine rauhe Industrieumgebung ist. Der Container 
steht auf einem Hof, nur dass das Stromhäuschen (Kein Trafo) in ca. 
10-20 Metern Entfernung steht.



> Zum Thema Eingangspannung:
Aufbau:
230V -----> USB HUB (Lindy) -----> Arduino Programmer FTDI FT232 USB zu 
TTL ---> Arduino Pro Mini 3,3V

Am HUB hängt noch ein Rasperry mit Tastatur, Maus und WLAN USB Stick.

Die Problematik mit der Eingangsspannung würde ich komplett 
ausschließen, da das Problem auch mit mein Laptop, das ich zum 
einspeisen benutzt habe, aufgetreten ist.

HP EliteBook -----> Arduino Programmer FTDI FT232 USB zu TTL ---> 
Arduino Pro Mini 3,3V

Das Ergebnis ist das selbe --> Fehlalarme.
Es liegt an dem empfindlichen Interrupt und der fehlenden Entprellung

> Zum Thema Entprellung:
Folgendes habe ich gestern geändert:

1. Leitung auf ca. 40cm gekürzt.
2. Programmcode auf Polling umgestellt. 
(https://github.com/CK1-CK/Arduino-Pro-Mini-LoRa-Sensor-Node/commit/fc8b6b95b4d82cb3d711ebc98c9e0d9f16ee0715)
3. Einfache Entprellung implementiert.

Ergebnis: Keine Fehlalarme mehr. Vielen Dank dafür!!

An die Hardware habe ich mich gestern nicht herangetraut weil alles 
schon fest verbaut ist und ich keinen Lötkolben dabei hatte.



> Brain Fog:
Ich habe mittlerweile einen totalen Knoten im Kopf. Was mich im Moment 
total verwirrt und ich nicht weiß wo es herkommt:

Der Schalter ist vom EingangsPin Richtung Ground angeschlossen.
Der Schalter ist, wenn der Magnet in Reichweite ist, geschlossen.

Wenn ich, bei geschlossenem Schalter, per SW den Zustand abfrage kommt 
allerdings ein High/1 zurück. Eigentlich müsste der geschlossene 
Schalter den Eingang ja auf null/Gnd ziehen.

IST Zustand:
Tür zu (Schalter geschlossen): Wert=1
Tür offen (Schalter geöffnet): Wert=0

von Heinz M. (utgmk)


Lesenswert?

Someone schrieb:
> Und nun zum LoRaWAN: Überprüfe bitte auch, ob Du LMIC mit einem Arduino 
überhaupt noch einsetzen kannst. Soweit ich mich richtig erinnern kann,  hatte man 
mit Arduino und LMIC Probleme mit manchen MAC-Kommandos; TTNv3  erwartet aber 
mittlerweile wie jedes andere einigermaßen  standardkonforme LoRaWAN, dass diese 
vom Knoten aber ordentlich  verarbeitet werden. TTNv2 war da deutlich 
nachlässiger, aber es ist ja  Quatsch, die Netzwerkperformance künstlich 
einzuschränken, damit man  irgendwelche Bastelhardware betreiben kann, wenn es 
mittlerweile  wirklich kostengünstige standardkonforme Lösungen gibt. Ich weiß 
nicht,  ob LMIC mit Arduino mittlerweile funktioniert, es gibt aber sicher  andere 
LoRaWAN-Hardware, die unproblematischer ist, da LMIC schon extrem  viel Speicher 
des Arduino verbraucht.

Es gibt eine weiterentwickelte Lib für Lora und TTN für Arduino
https://github.com/mcci-catena/arduino-lmic

Es gibt aber auch ein paar Einschränkungen.

von Martin (Gast)


Lesenswert?

Heinz M. schrieb:
> Ergebnis: Keine Fehlalarme mehr. Vielen Dank dafür!!

Klasse!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Heinz M. schrieb:
> Eigentlich müsste der geschlossene Schalter den Eingang ja auf null/Gnd
> ziehen.
Tut er das auch tatsächlich? Hast du das am uC-Pin nachgemessen?

von EAF (Gast)


Lesenswert?

Heinz M. schrieb:
> Was mich im Moment
> total verwirrt und ich nicht weiß wo es herkommt:

Wo die Störung her kommt?
Das kann ich dir sagen:
Das gesamte Universum schreit elektromagnetisch auf deine Konstruktion 
ein!
Jeder Fetzen Metall, ist eine Antenne, auch die Kabel zum Reed und 
selbst der Container.

von Heinz M. (utgmk)


Lesenswert?

Lothar M. schrieb:
> Heinz M. schrieb:
>> Eigentlich müsste der geschlossene Schalter den Eingang ja auf null/Gnd
>> ziehen.
> Tut er das auch tatsächlich? Hast du das am uC-Pin nachgemessen?

Gemessen habe ich nicht. Aber
1
Serial.println(digitalRead(PIN_DOOR_SWITCH),DEC);

gibt mir ein 0 aus wenn der Magnet entfernt ist.


Ist ja eigentlich auch egal. Es läuft.

Vielen Dank nochmal.

von Eduard I. (eiten)


Lesenswert?

Heinz M. schrieb:
> Wenn ich, bei geschlossenem Schalter, per SW den Zustand abfrage kommt

Bei geschlossenem Schalter, oder bei geschlossener Tür? Der Abus ist ein 
Normaly Closed (NC) Typ. Das heisst, unbetätigt (ohne Magnet) 
geschlossen, wenn ich das richtig verstanden habe.

von Dietrich L. (dietrichl)


Lesenswert?

Eduard I. schrieb:
> Bei geschlossenem Schalter, oder bei geschlossener Tür? Der Abus ist ein
> Normaly Closed (NC) Typ. Das heisst, unbetätigt (ohne Magnet)
> geschlossen, wenn ich das richtig verstanden habe.

Ich verstehe das anders:
"Der Stromkreis dieses NC-Öffnungsmelders ist im Ruhezustand 
geschlossen. Vergrößert sich der Abstand zwischen Reed und Magnet, wird 
der Stromkreis unterbrochen und ein Alarm gemeldet."

Etwas verwirrend ist allerdings die Bezeichnung "NC". Das ist wohl der 
Ruhezustand des Gesamtsystems, wenn Tür/Fenster geschlossen ist und 
damit der Magnet den Reedkontakt schließt.
Der Reedkontakt alleine wäre dann "NO".

von Eduard I. (eiten)


Lesenswert?

Dietrich L. schrieb:
> Ich verstehe das anders:

Das habe ich nicht gelesen. Habe nur das NC gelesen und dann falsch 
interpretiert.

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.