Forum: Mikrocontroller und Digitale Elektronik Für GPIO Spannung auf 3,3V reduzieren


von Peter Reither (Gast)


Lesenswert?

Hi!

Also, ich möchte einen ATMega8 und einen Raspberry Pi über SPI oder I2C 
verbinden. Der Raspberry PI liefert die 5V, die über die (seine) USB 
Stromquelle bereitgestellt werden und 3,3V, wobei Letztere das Ziehen 
von 50mA erlaubt, während die einzige Limitierung bei den 5V nur das 
verwendete USB Netzteil ist.

Nun reichen mir die 50mA nicht aus, da ich u.A. ein Relais schalten 
möchte. Da ich ein ausreichend starkes Netzteil habe, funktioniert es 
über die 5V Problemlos.

Die GPIO Pins des Raspberry PIs funktionieren allerdings nur mit 3,3V. 
Da der uC allerdings auf 5V läuft, habe ich hier also ein Problem, dem 
ich nun mit einem Widerstand entgegenwirken wollte: Es müssen von den 5V 
1,7V abfallen (=U), aber was ist hier I? Je nachdem ob ich gerade das 
Relais schalte oder eine 7-Segment Anzeige, die nur bei neuen Messwerten 
aktiviert wird, läuft, zieht die Schaltung unterschiedlich viel Strom.
Gibt es hier einen "Trick", der ohne einen Spannungsregler für 3,3V 
auskommt? Grundsätzlich scheue ich mich nicht vor Ausgaben, aber 
einzelne Teile zu bestellen - da ist das Porto schon ziemlich hoch für. 
Und letztendlich würde ich für SPI sogar drei davon benötigen (oder?).

Vielen Dank im Voraus!

von troll (Gast)


Lesenswert?

Wenn ich das richtig verstehe brauchst du keinen Spannungsregler sondern 
einen *Pegelwandler*. Dazu gibt es hier einen Artikel, im 
einfachsten Falle reicht schon ein simpler Spannungsteiler.

von ♪Geist (Gast)


Lesenswert?

Kannst du Mal eine Skizze anfertigen, was du vor hast. Irgendwie 
schaltet mein Hirn beim Lesen des Textes automatisch ab (wohl so eine 
Art Selbstschutz).

von Stefan (Gast)


Lesenswert?

Einen 3,3V Ausgang kann man in den meisten Fällen direkt mit einem 5V 
Eingang verbinden. Da musst Du mal genau die Ausgangsspannung bei High 
Pegel mit den Anforderungen des AVR vergleichen.

Wenn die Spannung nicht reicht, brauchst Du einen Level-Shifter. Dafür 
gibt exs 74er IC's. Für bidirektionale Leitungen eigent sich ein MOSFET 
Transistor und 2 Widerstände.

So hat ELV das gemacht: 
http://www.elv.de/3-achsen-beschleunigungssensor-3d-bs-komplettbausatz.html

Einen 5V Ausgang kannst Du (bei geringen Frequenzen, schätzungsweise bis 
20khz) über einen 2,2k-Ohm Widerstand mit einem 3,3V Eingang verbinden. 
Dabei wird ausgenutzt, dass der Eingang Schutzdioden enthält, die zu 
hohe Spannung nach VCC ableitet. Der Widerstand begrenzt den Strom der 
dabei fließt. Alternatiov geht's auch mit einem Spannungsteiler oder 
einer Z-Diode.

von Peter Reither (Gast)


Lesenswert?

Danke für den Tipp, das sieht sehr gut aus!

Aber wie funktioniert das Ganze? Ich interessiere mich für die Lösung 
"1kOhm VOrwiderstand für 5V -> 3.3V". In diesem Fall fehlt doch trotzdem 
noch die Stromstärke als Unbekannte für das Ohmsche Gesetz, oder? Wie 
kann man ohne die Stromstärke zu kennen den Widerstand fest auf 1k 
setzen?

von spontan (Gast)


Lesenswert?

Ich hab grad was von 2,2 kOhm gelesen.

5 Volt am Ausgang, 3,3 Volt für den Eingang, mit den Schutzdieoden 
werdens dann ca. 4 Volt werden. Bleibt 1 Volt für den Spannungsabfall 
über den Widerstand.

von PiWi (Gast)


Lesenswert?

Kleine Info der Raspberry Pi hat keine "Schutzdioden" an den Eingängen! 
Mehr als 3,3V am Eingang bedeuten das Risiko der Zersörtung.
Z-Dioden Beschaltungen sind riskant da sie die Ausgänge des Pi zu stark 
belasten. Habe ich mir mal angeschaut aber wieder verworfen da das 
Schalten von zwei GPIO Pins mit Z-Diode den Pi sterben lassen können. 
Auch wenn es nicht geplant ist und nur versehentlich passiert!

Für I2C gibt es spezielle Levelshifter Bausteine oder eben direkt selber 
aus MOSFETS aufbauen. Auf jeden fall solltest du einen 3,3V 
Spannungswandler mit bestellen, die 50mA die du abzapfen darfst sind 
schnell verbraucht. Ich würde die finger von Widerständen und anderen 
Bauteilen lassen wenn du nicht genau weist was du vorhast. Da du ja 
anscheinend nicht mal drauf kommst welcher Strom fließt. Um den Strom zu 
bestimmen musst du wissen wie die folgende Schaltung Aufgebaut ist. Dann 
kannst du deinen Strom berechnen. Du musst also die Last kennen.

Kleiner Tipp: Schaltung aufbauen und alle Ausgänge als HIGH(3,3V) 
annehmen und die Gesamte Stromaufnahmne messen. Wenn sie größer als 50mA 
ist solltest du dir eine neu Schaltung ausdenken.

Mich würde die Endbeschaltung interessieren. Also bitte Posten wenn es 
was geworden ist.

viel Erfolg

von Thomas E. (thomase)


Lesenswert?

Peter Reither schrieb:
> Die GPIO Pins des Raspberry PIs funktionieren allerdings nur mit 3,3V.
> Da der uC allerdings auf 5V läuft
Lass beide mit 3,3V laufen und schalte das Relais mit 5V.
Stichwort "open collector".

mfg.

von Peter Reither (Gast)


Lesenswert?

Thomas Eckmann schrieb:
> Lass beide mit 3,3V laufen und schalte das Relais mit 5V.
> Stichwort "open collector".

Sehr gute Idee, danke!

PiWi schrieb:
> Mich würde die Endbeschaltung interessieren. Also bitte Posten wenn es
> was geworden ist.

Mach ich, dauert nur noch ein wenig, da ich noch einen Connector für das 
verwendete LCD warte..

von Thomas Hergenhahn (Gast)


Lesenswert?

Ich habe gerade einen ATMega (Slave) über SPI mit einem Raspberry Pi 
(Master) verbunden. ATMega muß auf 5V laufen, da ich 20MHz Takt und 
weitere 5V-Peripherie brauche.
Die 3,3V-Ausgänge des Pi schalte ich einfach auf die Eingänge des AVR, 
kein Problem. Um den Pegel von MISO auf 3,3V zu begrenzen, habe ich 
einfach eine rote Leuchtdiode dazwischengeschaltet. Auf der Seite des Pi 
zieht ein 1k-Widerstand die Leitung definiert auf GND, wenn die Diode 
sperrt. Funktioniert bei mir mit 950kHz.

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.