Forum: Mikrocontroller und Digitale Elektronik 5V an 3,3V AVR


von Mike K. (mike_kr)


Lesenswert?

Hallo Leute,  das leidige Problem mit 5V High an 3,3V-AVR. Ein High von 
5V soll ganz normal an einem 3,3V AVR detektiert werden
 Kein analog,sondern einfach digital. Die Frage ist nur wie? Leider 
quillt das Form an Beiträgen dazu über, aber dennoch ist das richtig 
nicht dabei. ...

Wie am besten vorgehen? Einfach die 5V über 1k auf den avr-port? Oder 
doch per Transistor wandeln? Da das signal im Hertz-Bereich liegt und 
der Platz knapp ist, eigentlich nichts groß zu beachten,  sind einfache 
Lösungen zu begrüßen.  Vielen Dank

von Patrick (Gast)


Lesenswert?

Mit dem 1kOhm sollte klappen - die Begrenzung macht dann die interne 
Schutzdiode für dich. Eleganter wärs natürlich mit nem npn-Transistor 
plus Basiswiderstand, den du gegen den internen Pullup arbeiten lässt.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Diode geht auch. Internen Pullup aktivieren und die Anode Richtung MC. 
An die Kathode kommt das 5V Signal. Wenn die 5V auf low gehen, wird der 
MC Eingang auch auf low (minus der Uf der Diode) gehen.

von Felix (Gast)


Lesenswert?

Da ein AVR-Eingang einen Spannungsteiler wenn überhaupt nur minimal 
belastet, könnte dieser auch entsprechend hochohmig ausfallen.
Bei wenigen Hz Takt an diesem Eingang spielt dann wohl auch die 
Kapazität des Eingangs keine Rolle.

von Karl B. (gustav)


Lesenswert?

Mike K. schrieb:
> Ein High von
> 5V soll ganz normal an einem 3,3V AVR detektiert werden

Hi,
und wie ist bei der 5V-Logikseite der Low-Pegel?
Ist das TTL oder CMOS?
Die Störabstände sind da auch noch anders.
Bei CMOS "wandern" die H/L Zuordnungen mit der Betriebsspannung. Ein 
H/L-Übergang typisch bei UB Halbe. Bei TTL sieht das anders aus.
Auf jeden Fall den AVR-Port-Eingang sicher auf Low ziehen lassen.
(Pull down Widerstand)



ciao
gustav

: Bearbeitet durch User
von Axel S. (a-za-z0-9)


Lesenswert?

Mike K. schrieb:
> Hallo Leute,  das leidige Problem mit 5V High an 3,3V-AVR. Ein High von
> 5V soll ganz normal an einem 3,3V AVR detektiert werden
>
> Wie am besten vorgehen? Einfach die 5V über 1k auf den avr-port?

Die einfachste Variante ist sicher ein Längswiderstand in Verbindung mit 
der internen Schutzdiode.

> das signal im Hertz-Bereich liegt

In dem Fall darfst du gern auch deutlich mehr als 1K nehmen. Denn wenn 
da ein knackiges H mit 5V anliegt, fließt ja Strom durch die Schutzdiode 
in die 3.3V Schiene. Dabei sind zwei Dinge zu beachten:

1. die Schutzdiode hält nur begrenzt Strom aus. Der Hersteller 
spezifiziert kein Limit, sondern empfiehlt, die Schutzdioden gar nicht 
zu belasten. Als Daumenregel sollte man 10mA nicht überschreiten. 
Vorsichtige Naturen bleiben unter 1mA.

2. der injizierte Strom hebt das Potential der 3.3V Schiene an, wenn er 
nicht abfließen kann. Wenn an den 3.3V also nur der AVR hängt und der 
vielleicht noch im Sleep ist, dann können die 3.3V bis über 4.3V 
steigen.

Die Größe des Vorwiderstands wird nach oben nur durch die Tiefpaßwirkung 
begrenzt, die er in Verbindung mit der Pin-Eingangskapazität bildet.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Mit meiner Diode fliesst bei high gar kein Strom und bei low nur der aus 
dem internen Pullup. Gleichzeitig schützt sie vor jeglicher 
Überspannung, so z.B. auch gegen 12V oder 50V.

von m.n. (Gast)


Lesenswert?

Matthias S. schrieb:
> Mit meiner Diode fliesst bei high gar kein Strom und bei low nur der aus
> dem internen Pullup.

Das kann aber auch von Nachteil sein, wenn man den µC aus diesen 5 V 
versorgen möchte ;-)

Mike K. schrieb:
> Leider
> quillt das Form an Beiträgen dazu über, aber dennoch ist das richtig
> nicht dabei. ...

Schreib besser, Du bist nicht in der Lage eine sinnvolle Lösung zu 
erkennen. Auch hier sind Dir schon durchweg 'richtige' Lösungen genannt 
worden, mit einer dummen Ausnahme.

Karl B. schrieb:
> Bei TTL sieht das anders aus.

Um TTL, ECL, VXL, ... geht es hier doch garnicht.

von Mike K. (mike_kr)


Lesenswert?

oh, Spannungsteiler habe ich noch vergessen.  also 3 
möglichkeiten...also 10k Ohm wäre dann besser?  Da ich smd habe und kein 
großes Geschick bei Hühnerfutter, freue ich mich über jedes gesparte 
Bauteil. ;)

von Karl B. (gustav)


Lesenswert?

Karl B. schrieb:
> Ist das TTL oder CMOS?
Besser formuliert: Was liefert der Ausgang.
Es gibt die Totem Pole Endstufen oder "nur" open drain/soure "Endstufen"
Da hatte ich schon erhebliche Pegelprobleme.


Es wäre durchaus hilfreich, wenn der TO sagte, "woher" der 5V-Pegel 
kommt.
"...Wenn z.B. ein 5V Bauteil ein Signal an ein 3V Bauteil schickt, 
können beide Bauteile beschädigt werden...."

https://www.mikrocontroller.net/articles/Pegelwandler


https://www.mikrocontroller.net/articles/Pegelwandler#5_V_.E2.87.92_3.2C3_V

ciao
gustav

: Bearbeitet durch User
von H.Joachim S. (crazyhorse)


Lesenswert?

Vorwiderstand + 3V-Z-Diode am Eingang geht auch noch. Vermeidet die 
Rückspeisung auf die 3,3V-Versorgung. Meist stört diese nicht, manchmal 
aber schon.

von Jim M. (turboj)


Lesenswert?

H.Joachim S. schrieb:
> Vermeidet die
> Rückspeisung auf die 3,3V-Versorgung. Meist stört diese nicht, manchmal
> aber schon.

Die stört vor allem dann wenn man die Low-Power Schlafmodi nutzt, in 
denen der µC (und Rest der 3,3V Schaltung) extrem wenig Strom 
"verbrauchen".

Dann würde der über die 5V eingespeisste Strom die 3,3V anheben - 
möglicherweise mit katastrophalen Konsequenzen, also Rauchentwicklung.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

m.n. schrieb:
> Das kann aber auch von Nachteil sein, wenn man den µC aus diesen 5 V
> versorgen möchte ;-)

Das ist wahr, die Diode sperrt ohne Erbarmen :-P Ich finde es schon 
lustig, das Lösungen mit 2 und mehr Bauteilen vorgeschlagen werden, 
obwohl es so einfach ist. Und z.B. Z-Dioden für 3,3V sind so ungenau, 
das man sich da eher Probleme eintritt.

von Axel S. (a-za-z0-9)


Lesenswert?

Matthias S. schrieb:
> m.n. schrieb:
>> Das kann aber auch von Nachteil sein, wenn man den µC aus diesen 5 V
>> versorgen möchte ;-)
>
> Das ist wahr, die Diode sperrt ohne Erbarmen :-P Ich finde es schon
> lustig, das Lösungen mit 2 und mehr Bauteilen vorgeschlagen werden,
> obwohl es so einfach ist. Und z.B. Z-Dioden für 3,3V sind so ungenau,
> das man sich da eher Probleme eintritt.

Die Längsdiode, die nur den L-Pegel durchreicht, ist aber auch nicht 
ohne Probleme. Zum einen verschiebt sie den L-Pegel um eine 
Diodenflußspannung. Ein normaler CMOS-Eingang hat bei 3.3V Versorgung 
den Umschaltpunkt bei 1.65V, ein TTL-kompatibler gar bei 1.4V. Die Diode 
verschiebt den L-Pegel näher an den Umschaltpunkt - der Störabstand wird 
geringer.

Der andere Effekt ist, daß H->L und L->H Flanken unterschiedlich lange 
verzögert werden. Die Eingangskapazität des Pins wird zwar schnell 
entladen (durch die Diode) aber nur langsam aufgeladen (durch den 
Pullup). Das ist hier eher kein Problem, anderwärts kann es das aber 
werden.

von HildeK (Gast)


Lesenswert?

Mike K. schrieb:
> Wie am besten vorgehen? Einfach die 5V über 1k auf den avr-port? Oder
> doch per Transistor wandeln?

Mike K. schrieb:
> oh, Spannungsteiler habe ich noch vergessen.

Die einfache Lösung mit 1k Serienwiderstand wird gehen, wenn die schon 
beschriebenen Randbedinungen (minimaler Stromverbrauch des AVR) und die 
fehlende Spezifikation bez. der Schutzdioden kein Problem darstellen.

Ich würde den Spannungsteiler bevorzugen. 1,2k und 2,2k oder Vielfache 
davon. Also auch 12k und 22k bei deiner sehr langsamen Geschwindigkeit.
Das hat gleichzeitig den Vorteil, dass der Quelleninnenwiderstand sinkt 
- in dem Fall wäre er 770R, also besser als mit dem 1k Serienwiderstand 
(BB-Einschränkung wegen parasitärer Kapazitäten wäre geringer, spielt 
aber hier keine Rolle).
Allerdings hast du dann an dem Quellen-Port eine Belastung mit 1,5mA.
Für jede andere sonst vorgeschlagene Lösung musst du auch zwei Bauteile 
löten.

Axel S. schrieb:
> Als Daumenregel sollte man 10mA nicht überschreiten.

Das halte ich schon für sehr viel, dafür dass beim AVR keine Spec dazu 
vorliegt.

Matthias S. schrieb:
> Mit meiner Diode fliesst bei high gar kein Strom und bei low nur der aus
> dem internen Pullup. Gleichzeitig schützt sie vor jeglicher
> Überspannung, so z.B. auch gegen 12V oder 50V.

Das ist noch eine Variante, aber nur, wenn der interne Pullup auch 
ausreicht. Der ist mir in fast allen Fällen zu hochohmig, nur nicht, um 
einen offenen, unbenutzten Eingang zu beschalten.
Nachteil: bei einer Si-Diode ist dann der LOW-Pegel deutlich angehoben.
Übrigens: von 12V oder 50V war nie die Rede :-).

von Karl B. (gustav)


Lesenswert?

m.n. schrieb:
> Auch hier sind Dir schon durchweg 'richtige' Lösungen genannt
> worden, mit einer dummen Ausnahme.
>
> Karl B. schrieb:
>> Bei TTL sieht das anders aus.

Karl B. schrieb:
> Bei CMOS "wandern" die H/L Zuordnungen mit der Betriebsspannung. Ein
> H/L-Übergang typisch bei UB Halbe.Bei TTL sieht das anders aus.


Andere User bestätigen meine Pegel-Aussage auch.

Axel S. schrieb:
> Ein normaler CMOS-Eingang hat bei 3.3V Versorgung
> den Umschaltpunkt bei 1.65V, ein TTL-kompatibler gar bei 1.4V.

Arbeite mit CD4010, basta. (Oder 4050)
(Pin 1 an 3,3V, Pin 16 an 5V)

ciao
gustav

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

HildeK schrieb:
> bei einer Si-Diode ist dann der LOW-Pegel deutlich angehoben.
> Übrigens: von 12V oder 50V war nie die Rede :-).

Muss ja keine Si-Diode sein,kann ja auch Schottky sein. Aber selbst die 
Si-Diode funktioniert sicher und ist tausendfach bewährt, vor allem in 
Umgebungen, wo es doch mal Überspannungen gibt. Wenn der Pullup zu 
hochohmig ist, macht man eben einen niedrigeren parallel. Dann sinds 
immer noch 2 Bauteile und die Schaltung zieht bei high immer noch keinen 
Strom aus der 5V Quelle.

von HildeK (Gast)


Lesenswert?

Matthias S. schrieb:
> Wenn der Pullup zu
> hochohmig ist, macht man eben einen niedrigeren parallel. Dann sinds
> immer noch 2 Bauteile und die Schaltung zieht bei high immer noch keinen
> Strom aus der 5V Quelle.

Ich hatte ja deine Variante nicht 'zerissen' :-).
Die Forderung, dass kein Strom aus der Quelle fließen darf, gab es 
nicht, von Überspannung war auch nicht die Rede und zwei Widerstände 
sind auch nur zwei Bauelemente. Ein 0603-R ist jedenfalls kleiner als 
die meisten SMD-Dioden.

Auf jeden Fall hat der TO mehrere sinnvolle Vorschläge, wobei einen 
extra IC spendieren halte ich bei den Randbedingungen für deutlich 
übertrieben.

von gauna (Gast)


Lesenswert?

In der AppNote AVR182 wird sogar nur ein Längswiderstand zur Detektion 
des Netznulldurchgangs verwendet an 230V. Alles kein Problem, solange 
der Widerstand groß genug.

Infineon spezifiziert 5mA pro Pin (XMC-Reihe), Texas 2mA.

von HildeK (Gast)


Lesenswert?

gauna schrieb:
> Infineon spezifiziert 5mA pro Pin (XMC-Reihe), Texas 2mA.

Xilinx-Support hat mir mal 10mA genannt.

In der erwähnten Appnote ist 1Meg Serienwiderstand drin, das wären dann 
Peak nur ca. 300μA.

von Manfred (Gast)


Lesenswert?

gauna schrieb:
> Infineon spezifiziert 5mA pro Pin (XMC-Reihe), Texas 2mA.

Schön, dass der Signalpin den Strom ableiten kann. Was ist, wenn die 
Stromaufnahme der Schaltung geringer als die Summe dieser Ströme ist ... 
ja, es hebt Dir die Betriebsspannung an und der Kram geht Dir um die 
Ohren.

von gauna (Gast)


Lesenswert?

Falls du den uP abschalten möchtest musst du die Versorgung schützen. 
Kein Problem. In meinen Anwendungsfällen wäre dies jedenfalls nie der 
Fall. Jede Statusled braucht bereits mehr.

von HildeK (Gast)


Lesenswert?

Manfred schrieb:
> Schön, dass der Signalpin den Strom ableiten kann. Was ist, wenn die
> Stromaufnahme der Schaltung geringer als die Summe dieser Ströme ist ...
> ja, es hebt Dir die Betriebsspannung an und der Kram geht Dir um die
> Ohren.

Das wurde ja weiter oben schon mehrfach genannt.
Aber es trifft trotzdem nicht immer zu, letztlich nur bei Linearreglern 
und einfacheren Schaltreglern.
Wird die Schaltung z.B. mit einer Batterie direkt versorgt oder mit 
einem synchronen Schaltregler, dann passiert nichts.

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.