Eingänge mit 24V schalten

Hallo,

ich möchte insgesamt 44 Digital-Eingänge eines Arduinos mit 24 Volt schalten.
Mein Plan ist, einen Spannungsteiler mit 4k7 und 1k vor jeden Eingang zu setzen. Das ergäben theoretisch 4,2V am Eingang. Ist es richtig, dass der Arduino diese Spannung sicher als High erkennt?

Ich habe bisher nur ein bischen was mit PICs gemacht und das ist schon sehr lange her.
Vielleicht geht es auch viel einfacher oder besser. Ich bin für jeden Tipp dankbar.

Intern kann man einen Pull-Up-Widerstand einschalten, habe ich gelesen. Diesen sollte ich dann für die beschalteten Eingänge deaktiviert lassen und nur bei den nicht benutzten Eingängen aktivieren, richtig?

Du brauchst nur den Spannungsteiler. Zur Sicherheit kannst Du paralell zum 1kOhm Widerstand noch eine 4,7V Zenerdiode schalten.
Grüße Uwe

Bleiente:
ich möchte insgesamt 44 Digital-Eingänge eines Arduinos mit 24 Volt schalten.
Mein Plan ist, einen Spannungsteiler mit 4k7 und 1k vor jeden Eingang zu setzen. Das ergäben theoretisch 4,2V am Eingang. Ist es richtig, dass der Arduino diese Spannung sicher als High erkennt?

Ja. Moderne Atmega-Controller erkennen 0,6VCC als High, das wären bei VCC= 4,8V z.B. 4,80,6= 2,88 V.

Bleiente:
Ich habe bisher nur ein bischen was mit PICs gemacht und das ist schon sehr lange her.
Vielleicht geht es auch viel einfacher oder besser. Ich bin für jeden Tipp dankbar.

Einfacher nicht.
Diese Spannungsteilerschaltung ist nicht nur die einfachste aller möglichen Schaltungen, sondern auch die risikoreichste, mit der eingebauten Höchstgefahr, den Mikrocontroller zu himmeln, wenn auf der 24V-Leitung etwas unvorhergesehenes passiert.

Der typische Fall von etwas unvorhergesehenem ist dabei z.B. ein Gewitter mit einem Einschlag in der Nähe, und einem daraus resultierenden Überspannungsimpuls auf allen "langen Leitungen", z.B. auf Deiner 24V-Leitung. Und dann besteht das Risiko, einen angeschlossenen Mikrocontroller zu himmeln, wenn er nicht galvanisch getrennt ist.

Meteorologischer Hinweis: Gewitter gibt es mehrmals pro Jahr in Deutschland.
Und bei Anschluß an 44 verschiedene Eingänge, multipliziert sich das Risiko eines EMV-Schlags mit 44, denn jeder einzelne nicht galvanisch getrennte Anschluss an Deinem Mikrocontroller hat das Zeug dazu, Deinen Mikrocontroller bei einem nicht vorhergesehenen EMV-Ereignis zu himmeln.

Ich weiß ja nicht, ob das vielleicht nur eine Schönwetterschaltung sein soll, und wenn der Blitz einen Kilometer entfernt einschlägt darf ruhig auch alles kaputtgehen. So ist jedenfalls Dein Schaltungsvorschlag: Einfach, billig, risikoreich.

Dein Schaltungsvorschlag: Einfach, billig, risikoreich

Einspruch:
Ein Arduino ist "unsicher" by design, da passt der Spannungsteiler ( evtl. mit Zenerdiode ) prima dazu.
Die Blitz-Problematik ist übrigens unabhängig von 5V / 24V Signalen, bzw. da bist du mit Spannungsteiler-Vorwiderständen wg. 24V sogar etwas besser dran.

Das eigentliche Thema sind die üblichen/zu erwartenden Störungen. Um sich dagegen abzuheben, werden 24V oder 4-20mA Analog-Signale eingesetzt, und in "verseuchter" Umgebung kriegst du trotzdem Probleme. Eine 100V Spitze erzeugt über diesen 4k7 Spannungsteiler einen Strompuls von ca. 20mA in der Eingangs-Schutzdiode des atmega...

Wenn du Angst vor Gewitter hast,
nimm statt 4k7 / 1k einfach 47k / 10k : Das kostet das gleiche und du hältst evtl. Blitze in 300 m Entfernung statt 1 km aus :wink:

Die Sache mit der Multiplikation bei 44 Eingängen gilt übrigens noch nicht mal, wenn alle Leitungen in unterschiedliche Richtungen gehen. Was sich eher multipliziert ist der Aufwand, den du für Optokoppler, Spannungsfeste Eingangs-Kondensatoren
und Überspannungs-Schutzdioden treiben könntest.

Und wenns mal richtig kracht und ihr gar noch den Strom mit Blitzeinschlag übers Dach kriegt: eine 63A Panzersicherung incl. Elektriker-Arbeitsstunde und ein neuer Fernseher sind teurer als ein Arduino.

OK, das Risiko, dass eine induzierte Spannung den AVR honkt, ist da. Wie groß es ist, kann ich schlecht einschätzen.

Was wäre dein Vorschlag, um das Risiko zu reduzieren? Z-Dioden oder gleich Optokoppler (welche?)
Preislich kann man mit ein bisschen Kleinvieh sicher ein Stück Sicherheit erkaufen, aber dabei wird die Sache dann auch schnell unhandlich groß, vor allem, weil ich gerne SMD-Teile vermeiden möchte.

Die Alternative wäre, das Risiko einer Beschädigung zu Gunsten der Einfachheit in Kauf zu nehmen. Wenn der Arduino wirklich kaputt gehen sollte, wären die Kosten für einen Ersatz überschaubar. Vermutlich werden die Teile auch immer preiswerter.

BTW: Mir ist gerade aufgefallen, dass ich "nur" 24 Eingänge brauche, und nicht 44, wie eingangs geschrieben. Die restlichen 20 Pins werden Ausgänge.

michael_x:
Das eigentliche Thema sind die üblichen/zu erwartenden Störungen. Um sich dagegen abzuheben, werden 24V oder 4-20mA Analog-Signale eingesetzt, und in "verseuchter" Umgebung kriegst du trotzdem Probleme. Eine 100V Spitze erzeugt über diesen 4k7 Spannungsteiler einen Strompuls von ca. 20mA in der Eingangs-Schutzdiode des atmega...

Ich wusste gar nicht, dass der Atmega eine Schutzdiode am Eingang hat. Welchen Strom kann die denn ab?

Wenn du Angst vor Gewitter hast,
nimm statt 4k7 / 1k einfach 47k / 10k : Das kostet das gleiche und du hältst evtl. Blitze in 300 m Entfernung statt 1 km aus :wink:

Ich hatte absichtlich einen niederohmigeren Spannungsteiler geplant, weil es dann nicht so empfindlich gegenüber Störungen ist. Zusätzlich wollte ich die Eingänge noch per Software "entprellen".

Würde mir hierfür eine kleine Platine anfertigen. Auf der dann deine 24 Optokoppler draufkommen. Strom muss entsprechend begrenzt werden.

Ich nutze meist die 4N35.
Ob es die nun auch als SMD gibt, müsstest du mal schaun. Ich hab immer die DIP Variante, da ich die meist nur auf dem Steckbrett nutze.

Ich wusste gar nicht, dass der Atmega eine Schutzdiode am Eingang hat. Welchen Strom kann die denn ab?

Haben alle solche ICs, genaugenommen sogar 2 : eine nach GND, und eine nach Vcc. Daher auch der erlaubte Spannungsbereich für Signale. 0 - 0.5V ... Vcc + 0.5V. Alles ausserhalb wird nach GND bzw. Vcc abgeleitet.
Ist aber eigentlich nicht für Ströme gedacht, sondern eher gegen statische Ladungen. Sonst würden die IC schon beim Rumliegen und Anfassen kaputt gehen.
Soviel ich weiss hat der zulässige Strom nichts mit dem Strom eines Digital-Ausgangs zu tun (abs. max -+ 40 mA).
Auch 20 mA DauerStrom an der Stelle wird kein Datenblatt garantieren. Wer weiss mehr ?

Wenn man will, kann man eigene Dioden genauso davorschalten:

Vcc ----+
        |
        _
        ^
        |
In --R--+---
        |
        _
        ^
        |
GND ----+

Schottky-Dioden, die früher leiten als die internen und auch schnell reagieren, und richtige Ströme abkönnen.

Für die Ein- und Ausgänge wollte ich eine Eurokarte herstellen, auf der ich auch Printklemmen anbringen kann.
Wenn ich Optokoppler nehme, dann würde ich eher zu 4x-Kopplern greifen. Oder spricht etwas dagegen. Beim 4N35 ist auch die Basis rausgeführt. Die braucht man vermutlich nicht.
Ich habe den LTV847 gefunden. http://www.reichelt.de/index.html?&ACTION=7&LA=3&OPEN=0&INDEX=0&FILENAME=A200%252FLTV827-LTV847_LIT.pdf
Ich habe bisher noch nichts mit Optokopllern gemacht. Reicht da ein Serienwiderstand, oder wird das dann zu hochohmig und damit zu störanfällig?

SMD wollte ich gerade nicht benutzen, wenn's geht :slight_smile:

Ups, das hab ich dann falsch verstanden. Dachte es sollte SMD sein :stuck_out_tongue_closed_eyes:
Ein Serienwiderstand ist normal hier ausreichend. Würde irgendwas zwischen 1,2k und 1,7k Ohm nehmen.

Genaueres müsstest du dann aus den DB der Optos entnehmen.

1,7 kOhm? Kommt mir recht wenig vor.
Ich habe noch nie was mit Optokopplern gemacht. Vielleicht liege ich vollkommen falsch, aber ich versuche mal meine Überlegungen wiederzugeben.

Der LTV847 hat ein CTR von 100-400%. Der Einfachheit halber nehme ich hier mal 100% an.
Der Pullup im AVR beträgt afaik 20kOhm. Bei 250uA fallen dort 5V ab und der Eingang läge auf Low.
Wegen des CTR von 100% müssten auch am Eingang des Optokopplers 250uA ausreichen, um den Eingang des AVR auf Low zu ziehen.
Bei 24V müsste auch ein 91kOhm Widerstand reichen, um den Eingang des AVRs auf Low zu ziehen. Mit CTR=400% gingen noch höhere Widerstände.
Vielleicht sollte ich den vorher geplanten Spannungsteiler 4k7 / 1k auch vor den Optokoppler setzen.

http://pdf1.alldatasheet.com/datasheet-pdf/view/86746/LITEON/LTV847.html
Uf ist im Datenblatt mit 1,2V (typ) und 1,4V (max) angegeben. If ist mit 20mA angegeben.

Demnach Rv = 1120 Ohm (Rv = 22,8V/ 20mA )

1,2V und 20mA sind die typischen Werte, wenn ich das richtig verstehe. Ein Optokoppler scheint ein ähnliches Übertragungsverhalten wie ein Transistor zu haben. Bei einem kleinen Kollektorstrom reicht auch ein kleiner Basisstrom, bzw. LED-Strom.

Ich habe mal einen PC817 = LTV817 in LTSpice simuliert.


Auch bei 60k Vorwiderstand schaltet der Ausgang bei 24V Schaltspannung voll durch.

Bei 1,7k Vorwiderstand würden schon 2V reichen, um den Ausgang voll durchzuschalten.

Ja, wenn der Ausgang des Optokopplers an einen INPUT_PULLUP angeschlossen ist und fast keinen Strom liefern muss, ist der Eingangsstrom sehr unkritisch. Die 20 mA im Datenblatt sind die Obergrenze, 2 .. 10 mA reicht auch dicke.
-> alles zwischen 1k2 und 10k wird passen. ( z.B. deine beliebten 4k7 )
Der Eingangsstrom muss ja nicht auf 250µA begrenzt werden. Das wäre der absolute MinimalStrom, bei dem es evtl. noch funktioniert.
Und welchen opto du nimmst, ist dann genauso egal. Ein CTR < 100% wäre kein Problem, da du auf der sicheren Seite liegst.

bevor du aufwändige Schutzschaltungen aufbaust, kläre doch mal, in welcher Güte deine Signale kommen.

Sind es denn wirklich Signale die über lange (Freiland-)Leitungen kommen? Dann brauchts Aufwand.
Oder sind es Signale aus eine anderen elektronischen Steuerung, die daneben steht. Dann reicht ein Spannungteiler mit Entstörkondensator völlig aus.

Die Güte der Signalquelle kann ich schlecht einschätzen.
Die Signale kommen über Klingelleitungen (YR) in einer Hausinstallation mit bis zu 30m Länge. Es sollen nur Taster ausgewertet werden und keine Signalquellen mit hohen Baudraten. Einzelne Störimpulse wollte ich per Software heraus filtern. Durch einen möglichst niederohmigen Spannungsteiler am Eingang wollte ich induzierten Störungen entgegen wirken.

ok, Hausinstallation ist meist nicht sooo sauber.
den Spannungteiler kannst du so niederohmig lassen, dann empfehle ich aber dringend noch eine ZDiode (oder ein Schottky-Dioden Pärchen wie oben beschrieben) gegen die Spitzen und einen Kondensator >1µ als Störschutz und Entprellung.

Besser wäre aber:
Zuerst ein niederohmiger Widerstand nach Masse als Abschluss.
Dann ein Spannungteiler z.B. 100k / 22k + kerko (> 470nF)
Damit hast du eine hochohmige Ankopplung an den Arduino mit einem Tau von 8ms eine ausreichende Entprellung.

Mit den 3 Widerständen wird das natürlich noch besser. Der Kerko schützt vor Schmutzeffekten, die doch durchkommen sollten.
Würdest du dann trotzdem noch einen Optokoppler nehmen? Gegen Überspannungen durch Blitzeinschläge in der Umgebung wäre der AVR sonst nicht geschützt.

Ich habe das gerade mal überschlagen. Pro Eingang: Z-Diode 5 ct, Optkoppler 13ct, 3xR 6ct, Kerko 20ct -> 44ct
Bei 24 Eingängen: knapp 11 Euro. Das ist dann schon nicht mehr nur noch Kleinvieh.
Noch weniger schön ist, dass die Sachen Platz wegnehmen. Da ich das Ganze nicht mit SMD-Teilen aufbauen möchte, haut das rein.
So etwas müsste es komplett fertig vergossen als Array zu kaufen geben :slight_smile:
An den Ausgängen sollen noch ein paar Treiber und es soll nach Möglichkeit alles auf eine Eurokarte passen.

Ich sag' mal: wenn ein Blitz in deine Hausinstallation einschlägt, ist ein kaputter Arduino dein kleinstes Problem!

Wenn Störspannungen induziert werden, durch Blitzschlag in der Nähe (selten) durch nicht entstörte Klingeln oder Türöffner(wahrscheinlicher) oder andere Einflüsse, dann sollte die Schaltung, die ich oben skizziert habe, ausreichen. Optokoppler halte ich für übertrieben, Z-Diode brauchts denke ich auch nicht. Es sein denn, die 24V sind extrem unsauber. (z.B. Industrieumgebung)