Kurzschluss Test

(deleted)

Zuerst setzt du alle auf OUTPUT, im ersten Durchgang setzt du alle bis auf deinen "i" Pin auf INPUT und fragst Zustand ab. Schon hier ohne Pullupwiderstand einen offenen Eingang abzufragen ist Blödsinn. Ein angeschlossenes Kabel dessen Ende offen ist ist aber noch mehr Blödsinn.

Vermutlich dürfte hier ein kleiner Kriechstrom anstehen, da reicht schon etwas Dreck auf dem Basteltisch oder eine Antistatikmatte auf der du deine Schaltung auflegst. Antistatikmatten oder Folien haben einen relativ kleinen Widerstand. Sie sollen ja statische Aufladungen ableiten, also müssten leicht leitend sein.

Und auch intern wird beim Umschalten etwas Störung erzeugt. Misst man also DIREKT nach dem Umschalten, dürfte das Ergebniss verfälscht sein. Und mehr als ein paar µS liegen nicht zwischen Umschalten und Messen bei dir.

Dein Testprogramm sollte im Setup alle auf Input mit Pullup schalten, dann im Loop einzeln auf Output, kleiner Delay, Ausgang setzen, wieder Delay und dann alle Eingänge abfragen. Danach den Output wieder auf Input mit Pullup setzen. Pullup heist für dich, Ausgang muss LOW-Aktiv sein, also immer LOW in den Ausgang schreiben. Sollte dann IMMER noch zu solchen Effekten kommen, dann melde dich nochmal, damit man sich weitere Infos besorgen kann

timomatrixer:
Ein wunderschönen guten Tag wünsche ich.

Dir auch :slight_smile:

timomatrixer:
Wo ist mein Denkfehler?

So grob betrachtet sehe ich zwei, aber einen wesentlichen.

pinMode(relay_pin[j], INPUT);
...
digitalRead(relay_pin[j])

Das könnte man Elektronenfänger oder Wahrsagerschaltung nennen. Anders gesagt, der Eingang liest einen undefinierten Spannungspegel, das Ergebnis ist zufällig. Mal einfach formuliert, eine Spannung nahe 5V ist HIGH, eine nahe 0V ist LOW, alle Spannungen dazwischen sind undefiniert.

Du könntest mit INPUT_PULLUP den im µC integrierten PullUp-Widerstand verwenden und die Ausgänge auf LOW schalten. Solltest Du beim Lesen ein LOW erwischen, wäre das ein Problemfall.

Zweiter Punkt: Einen Eingang solltest Du nach dem Test auch wieder zum Ausgang machen.

Für eine unbeschalteten Arduino kannst Du das so machen.

Einen Arduino innerhalb einer Schaltung so zu testen, halte ich grundsätzlich für gefährlich, da unabhängig von der Schaltlogik gesetzte Ausgänge zur Zerstörung des µC und der Schaltung führen können. Nur wenn die Schaltung für einen Selbsttest konzipiert ist, könnte es sinnvoll sein.

Da kann jemand schneller tippen :slight_smile:

(deleted)

Hallo, den Arduino als Leitungstester- ohne Schutzschaltung! Und was für einen Kurzschluss willst Du messen? Einen "echten" oder einen Logik-Kurzschluss? Wenn mich nicht alles täuscht, dann braucht der Arduino für einen High-Pegel eine bestimmte Spannung. Hast Du also einen 1,2v Kurzschluss dann wird dieser nicht bemerkt werden. Ich weiß nicht, ob es mit einem Arduino möglich ist Pin´s zu mappen. Soll heißen: Pin D1 intern auf A0 legen. So könntest Du die Spannungen (bis 5v) der Pin´s mit analogRead() auf A0 messen. Gruß und Spaß Andreas

(deleted)

(deleted)

Mal einfach formuliert, eine Spannung nahe 5V ist HIGH, eine nahe 0V ist LOW, alle Spannungen dazwischen sind undefiniert.

Das ist mir zu einfach formuliert. Der Bereich dazwischen ist nicht undefiniert, sondern es wird der vorherige Zustand ausgegeben bis der Spannungswert über bzw unter dem Grenzwert kommt und somit HIGH bzw LOW detektiert wird.

Grüße Uwe