Probleme beim lesen von HIGH Pegel am Arduino Mega

Hallo,

ich habe aktuell ein Problem, das ich überhaupt nicht verstehe.

Ich habe eine Stoppuhr gebaut. Die soll per Kabel und Funk funktionieren. Sie funktioniert über Funk ohne Probleme, aber per Kabel irgendwie nicht.

Die Software ich kein Problem. Irgendwie spinnt die Hardware.

Im Sender ist ein Arduino nano verbaut, welcher die ganze Zeit die Lichtschranke überwacht und wenn jeman die Lichtschranke überquert, dann schickt er ein Signal per Funk und schaltet Pin D9 kurz auf HIGH.

In der Stoppuhr ist ein Arduino Mega Pro verbaut. D9 von dem Arduino Nano geht per Kabel an D22 Pin von dem Mega.

Wenn ich jetzt den Sender über einen Akku betreibe und der nicht mit der Stoppuhr per Kabel verbunden ist, messe ich an dem Pin D9 ganz normal 5V sobald jemand die Lichtschranke überquert. Wenn ich den Sender per Kabel mit dem D22 Pin des Megas verbinde, und dann bei HIGH die Spannung am D9 messe, messe ich immer nur 1,2V. Somit kann Mega nie HIGH am D22 lesen und die Stoppuhr fängt nicht an zu zählen.

D9 am Nano ist als OUTPUT deklariert.
D22 am Mega ist INPUT deklariert und am Pin steckt ein 10kOhm Pulldown Widerstand.
Sobald Sender und die Stoppuhr per Kabel verbunden sind, haben beide Arduinos gleiche Masse.

Ich hoffe, ihr habt den Aufbau verstanden. An der Software kann es eigentlich nicht liegen, weil die sonst ohne Probleme läuft.

Was übersehe ich?!? Hat jemand eine Idee?

Vielen Dank.

Grüße
hds666

Wo geht denn der 10 kOhm Widerstand hin?

Gruß Tommy

Vielen Dank für die schnelle Rückmeldung…

Der geht an GND Pin von dem Mega.

Gruß

Hast Du den Widerstand mal gemessen? Wofür soll der eigentlich sein?

Gruß Tommy

Zuerst mal den pulldown entfernen und die Spannung nochmal messen.
Wenn die immer noch unerwartet niedrig ist, 1k in die Leitung zwischen Nano und Mega schalten und nochmal messen.

Pulldown/up Widerstände sind hier für den Normalbetrieb überflüssig. Das wäre höchstens für den Fall relevant dass der Empfänger aktiv ist, aber der Sender gerate bootet und die Ausgänge noch hochohmig sind

Du brauchst auch unbedingt eine Masse-Verbindung zwischen den zwei Controllern

Klar!
Da du keine GND Verbindung erwähnt hast, wirst du sie auch in der Schaltung vergessen haben!

Wäre dir bestimmt beim Schaltplan malen aufgefallen.

Aber ein Schutzwiderstand wäre evtl angesagt…
Nur für den Fall, dass einer der beiden abgeschaltet/stromlos ist.

Als Pulldown, damit am Pin22 immer LOW ist, solange kein HIGH über D9 kommt…
Ist das nicht nötig?

Die Massen sind verbunden.

Doch habe ich. Die Massen sind verbunden.

Kannst du mir das noch kurz erklären, was es bringt, bzw. passieren kann, wenn ich keinen verbaue und wie groß der sein soll?

Solange der Sender läuft hast du entweder Low oder High. Etwas anderes kann nur auftreten wenn der Sender-Arduino gerade bootet. Dann ist der Ausgang kurz hochohmig. Wenn dieser Fall Probleme macht kann man einen Widerstand einbauen. Ansonsten bringt er nichts.

Ein Taster ist was anderes. Da hängt der Eingang in der Luft wenn nichts gedrückt ist und ist daher undefiniert.

Angenommen:
Ein Arduino ist aktiv und dessen Ausgang High, der andere ist stromlos
Der Stromlose wird über das High des anderen versorgt.

Das kann den Pin des Versorgers töten, wegen Überlast
Oder die Clampdiode des Versorgten, auch wegen Überlast.
Das wollen wir doch nicht!

Kann sein, dass deswegen mein erster Sender kaputt gegangen ist? Bei dem ersten Aufbau war auf einmal D9 mit der Masse verbunden… Habe es mit dem Multimeter herausgefunden…

Wie kann ich mich davor schützen?

Wenn aber D22 von dem Mega als Input deklariert ist, geht der Pin doch nicht von alleine auf HIGH und könnte den Sender töten, oder?

Ok. Ich war mich nicht so sicher und habe deswegen den Widerstand verbaut.

Wie schaltest du einen Pin auf Input, wenn der Mega doch stromlos ist?

Einen Ausgang mit Gnd verbinden kann den Ausgang durchaus killen, zumindest den kurzgeschlossenen (oberen) Transistor - dann kann der Ausgang nicht mehr richtig auf HIGH gezogen werden. Das könnte bei Dir durchaus der Fall sein. Warum probierst Du nicht testhalber irgendeinen anderen Pin aus?

Es sind auch schon Fälle beobachtet worden, in denen sich ein Arduino ohne Stromversorgung an seinen Eingängen über die Schutzdioden mit Strom von den angeschlossenen Gerätschaften mit eingeschalteter Spannung versorgt hat. Dagegen helfen dann Widerstände in den Leitungen zu den Arduino Pins, wenn so ein Zustand während des normalen Betriebs auftreten kann.

So, ich habe jetzt den Widerstand entfernt. Jetzt kann ich am D22 5V messen. Jetzt habe ich aber ein anderes Problem…

Die Stoppuhr geht sofort an, als ob D22 HIGH wäre…es ist aber nicht der Fall… Es liegt nicht an der Software, weil ich testweise D22 an GND angeschlossen habe und solange D22 mit GND verbunden war (also D22 LOW gelesen hat), war alles ruhig, als ich das Kabel entfernt habe, hat die Stoppuhr angefangen zu zählen, als ob am D22 jetzt HIGH liegt.

Ok, nachdem ich die Verbindung mit GND entferne geht die wahrscheinlich los, weil das Kabel dann frei ist…also pin offen ist…

Trotzdem ist es komisch, dass sie mit 0V am D22 pin los geht, wenn ich aber GND anschließe, alles rühig bleibt, oder?

Würde mich über eure Vorschläge echt freuen. Das Entfernen des Pulldown Widerstands hat schon mal das erste Problem gelöst, wofür ich euch echt dankbar bin…

ja, das probiere ich morgen mal aus. Was anderes fällt mir leider nicht mehr ein…

Normalerweise benutzt man mit INPUT_PULLUP den eingebauten Pullup-Widerstand, und gibt ein aktives Signal als LOW aus.

Wie lang ist das Kabel? Entweder Dein Kabel spielt Antenne oder Dein Widerstand ist zu niederohmig. Wüsste nicht was sonst die Spannung so beeinflussen sollte. Der 2. Arduino hat aber den Ausgang auf HIGH?

Gruß, Jürgen