Externes Gerät als Inputsignal

Hallo,
Ich möchte ein externes Gerät an einen Pin des Arduino Unos anschließen. Fließt Strom, so soll eine Methode ausgeführt werden. Welche Anforderungen stellt der Arduino an dieses externe Gerät, sodass er nicht beschädigt wird ? Zum Beispiel : in welchem Bereich muss die Spannung liegen? Welche Werte muss ich noch beachten?

Gruß ludwigm

ludwigm:
ausgeführt werden. Welche Anforderungen stellt der Arduino an dieses externe Gerät, sodass er nicht beschädigt wird ?

Die Spannungsanforderungen und Grenzwerte sind je nach Controllertyp verschieden.

Bei Atmega-Controllerboards, die wie ein UNO mit 5V Nennspannung betrieben werden, gelten die Richtwerte:

An keinem Pin des Atmega darf eine höhere positive Spannung als GND+5.5V angeschlossen werden.

An keinem Pin des Atmega darf eine tiefere negative Spannung als GND-0.5V angeschlossen werden.

Und falls das Arduino-Board und das externe Gerät aus unterschiedlichen Stromversorgungen gespeist werden, müssen die GND-Leitungen des externen Geräts und des Arduino-Boards zwecks Potentialausgleichs zusammengeschlossen werden, sonst können die 5V Pagel , die von einem externen Gerät mit eigener Stromversorgung zu einem Arduino-Board übertragen werden, am Arduino-Board ggf. nicht korrekt ausgewertet werden.

Wenn du nur eine rein digitale Information (HIGH oder LOW) auswerten möchtest, kannst du dein externes Signal auch über einen Optokoppler an den Arduino anschließen.

Ggf. Kann man bei zu hohen Spannungen einen Spannungsteiler verwenden.

Danke euch für die schnellen Antworten !
Es ist ein Original Arduino UNO.
Das externe Gerät hat eine Spannung von ca. 12 Volt, also zwei unterschiedliche Spannungsquellen.

Wenn ich es richtig verstanden habe, ist das zu hoch.
Was ist die einfachste Lösung? Spannungsteiler , Optokoppler?

ludwigm:
Danke euch für die schnellen Antworten !
Es ist ein Original Arduino UNO.
Das externe Gerät hat eine Spannung von ca. 12 Volt, also zwei unterschiedliche Spannungsquellen.

Wenn ich es richtig verstanden habe, ist das zu hoch.
Was ist die einfachste Lösung? Spannungsteiler , Optokoppler?

Spannungsteiler ist die einfachste, Optokoppler die sicherste Methode.

Würde ich auch sagen. Vergiss aber beim Optokoppler den Vorwiderstand nicht

Danke für die Antworten.
Mit einem Optokoppler kenne ich mich nicht so gut aus. Muss ich beim Kauf und Aufbau etwas Besonderes beachten? Gibt es verschiedene Typen? Oder muss ich nur an den Vorwiderstand denken?

Gruß ludwigm

Als Optokoppler geht der PC817.
Darüber findest du auch sehr viel Informationen im Web.

Ich habe mir einen PC817 besorgt, kann mir bitte jemand Hilfestellung bei der Auswahl der Vorwiderstände geben?

Gruß ludwigm

ludwigm:
Ich habe mir einen PC817 besorgt, kann mir bitte jemand Hilfestellung bei der Auswahl der Vorwiderstände geben?

Gruß ludwigm

Berechne ihn so, dass ca. 5 - 10 mA fließen.

Die Ansteuerseite ist eine IR-LED. Der Vorwiderstand ist wie ein IR-LED zu berechnen. Die Transistorseite brauchst Du nur eien Pullup- oder Pulldownwiderstand von 10kOhm.
Grüße Uwe

PC817
Vf = 1,2 V
If = 20 mA (0,02 A)

bei 5 Volt könnte die Rechnung für den Vorwiderstand etwa so aussehen:

(5 - 1,2) / 0,02 = 190

nächster gängiger Wert: 200 Ohm, oder 220 Ohm

Ich würde sagen: alles zwischen 200 und 500 Ohm ist OK

Danke für die Antworten!

Das externe Gerät hat eine Spannung von 12V. Somit würde ich auf einen Widerstand von (12V - 1,2V) / 0,02A = 540 Ohm an der LED des Optokopplers kommen.

Auf der anderen Seite des Optokopplers soll der Arduino mit U= 5V angeschlossen werden, um HIGH oder LOW zu registrieren. Was für einen Widerstand brauche ich dann da?

Vielen Dank im Voraus
Ludwig

ludwigm:
Auf der anderen Seite des Optokopplers soll der Arduino mit U= 5V angeschlossen werden, um HIGH oder LOW zu registrieren. Was für einen Widerstand brauche ich dann da?

Da nimmst du einen internen Pullup-Widerstand.

Oder so
Opto_Ardu.png

uxomm:
Oder so
Opto_Ardu.png

Richtig, aber beim internen gibt es keine Probleme mit den Farbringen. :wink:

Ach ja die Farbringe...
da lob ich mir mein Multimeter :wink:

Hallo,
ein internen Pullup verwende ich beim Arduino so?

digitalWrite(12,HIGH);

Ansonsten brauch ich auf der Emitter/Colector Seite keinen Widerstand?

Aber brauche ich nicht eher einen Pulldown? Ich möchte ja, wenn die LED des Optokopplers leuchtet, HIGH am Controller anliegen haben.

Danke im Voraus
ludwigm

Um den internen Pullupwiderstand zu aktivieren gibt es mehrere Möglichkeiten, hier sind 2 davon:

pinMode(12, INPUT);  //diese Zeile ist nicht unbedingt nötig, weil nach einem Reset die Pins generell INPUT sind
digitalWrite(12,HIGH);  //aktiviert den internen Pullupwiderstand

oder:

pinMode(12, INPUT_PULLUP);  //aktiviert den internen Pullup

Mit internem Pullup brauchst du keinen zusätzlichen Widerstand auf der "rechten" Seite des Optokopplers.

ludwigm:
Aber brauche ich nicht eher einen Pulldown? Ich möchte ja, wenn die LED des Optokopplers leuchtet, HIGH am Controller anliegen haben.

Die Schaltung von #15 invertiert das Signal (egal ob mit internem oder externem Pullupwiderstand). Das heißt, wenn es "links" HIGH gibt, dann ist "rechts" LOW und umgekehrt. Das ist aber kein Fehler/Nachteil. Wichtig ist, dass du ein eindeutiges "sicheres" Signal bekommst und das ist hier der Fall. Du fragst im Arduino-Sketch einfach auf LOW statt auf HIGH ab - that's it.

Wenn du aus "ästhetischen" Gründen lieber ein "nichtinvertiertes" Signal haben willst, kannst du auch einen Pulldownwiderstand verwenden (den gibt es aber nicht in der "internen" Variante). :slight_smile: