Forum: Mikrocontroller und Digitale Elektronik raspberry pi kuz rückwärts 3.3v speisen?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Andreas W. (andy_w)


Lesenswert?

Hallo,
nachdem ich recht lange vergeblich versucht habe, den SPI-Bus in Gang zu 
bringen, stellte ich fest, daß der GPIO16 Kurzschluß nach Masse hatte - 
auf dem Raspberry Pi selber. GPIO16-21 dienen als Adresswähler für viele 
mögliche SPI-Slaves, die 6 Bit werden vor einem SPI-Transfer auf eine 
von 64 möglichen Slaveadressen gesetzt und dann der SPI-Transfer mit CE0 
durchgeführt. CE0 und die 6 GPIOs sind mit zwei 74HC138 verknüpft, so 
daß je nach Verdrahtung nur ein Ausgang des 74HC138 auf LOW geht, wenn 
CE0 auf LOW ist und die 6 Bit Adresse stimmt.

Momentan gibt es nur einen MCP23S17 am SPI-Bus, der hat die Slaveadresse 
0x3F, mit dem kurzgeschlossenen GPIO16 reagierte er natürlich nicht... 
Nachdem ich den GPIPO16 durch den GPIO13 ersetzt habe, funktioniert der 
SPI-Bus auf Anhieb, was ich schon recht erstaunlich fand.

Das Problem ist, daß der Raspberry Pi mit 5V versorgt wird und er sich 
die 3.3V selbst mit einem Spannungsregler erzeugt. Für meine sonstige 
Elektronik gibt es aber eigene 3.3V-Regler, die jedoch mit denselben 5V 
versorgt werden wie der Raspi. Ich habe schon eine Diode zwischen 5V und 
den externen 3.3V gelegt, so daß die externen 3.3V nie mehr als ca. 0.7V 
höher als die 5V beim Ausschalten sein können. Das hat aber wohl nicht 
gereicht, wahrscheinlich sind beim Stromausfall vor einigen Tagen die 
externen 3.3V höher gewesen als die 3.3V vom Raspi und haben so den 
GPIO16 gekillt. Warum nur den und ob das wirklich der Grund war, kann 
ich natürlich nicht mehr nachvollziehen.

Jetzt habe ich noch eine Shottkydiode zwischen den externen 3.3V und den 
3.3V vom Raspi geschaltet, Durchlaßrichtung von den externen 3.3V zum 
Raspi. So kann die externe 3.3V-Versorgung kaum noch höher als die 3.3V 
vom Raspi werden. Beim Ein- und Ausschalten kann es aber sein, daß der 
3.3V Spannungsregler vom Raspi kurzzeitig rückwärts gespeist wird. 
Leider gibt es vom Raspi B+ noch keinen richtigen Schaltplan, so daß ich 
das nicht weiter erkunden kann. Bisher funktioniert das so ohne weitere 
Defekte.

Aber eigentlich ist das so nicht richtig, hat jemand sich auch schon mit 
dem Problem beschäftigt und eine andere Lösung? Ich denke schon über 
einen Komparator nach, der beiden 3.3V-Versorgungen vergleicht und wenn 
die externen 3.3V höher als die vom Raspi sind, werden die externen 3.3V 
abgeschaltet und kurzgeschlossen, das hält der dortige Spannungsregler 
aus. Das ist nur aufwendig, da ich mehrere Stellen habe, wo ich mir 
externe 3.3V erzeuge, ein zentraler Regler ist nicht praktikabel, da der 
Strom über 5A erreichen kann.

Gruß
Andy

von Michael U. (amiga)


Lesenswert?

Hallo,

so ganz habe ich Dein Problem noch nicht verstanden.
Es spielt keine Rolle, woher die anderen Komponenten ihre 3,3V bekommen.
Was so gut wie immer nicht zulässig ist: an den Eingängen der ICs darf 
keine Spannung liegen, die größer als Vcc + 0,3V...0,7V (Datenblatt des 
ICs befragen!). Das heißt, wenn der Zustand eintreten kann, daß der 
RasPi aus ist und an seinen GPIOs von außen eine Spannung anliegt, die 
höher ist als eben 0,3...0,7V (Vcc des RasPi ist ja jetzt 0!), dann 
stirbt meist was.

Mit Deiner Diode versorgst Du den RasPi von außen, wenn Du ihn 
"ausschaltest",
Ob der dort benutzte Spannungsregler das mag, sollte Dir das Datenblatt 
des Spannungsreglers verraten...

Gruß aus Berlin
Michael

von K. J. (Gast)


Lesenswert?

Er meint glaube ich die Stromrückspeisung von den Datenleitungen die von 
den externen Spannungsreglern kommen, da würde mich auch mal ne Lösung 
interessieren ;) hab das auch allerdings I2C wen ich das devBoard 
ausschalte läuft es einfach weiter weil es über die I2C Leitungen 
gespeist wird, meine Lösung ist bis jetzt alles komplett per 
Netzschalter auszumachen.

von Andreas W. (andy_w)


Lesenswert?

Hallo,
das Problem ist, daß beim Ein- und Ausschalten die externe 
3.3V-Versorgung höher sein kann als die 3.3V des Raspi. Dann können die 
GPIOs eine höhere Spannung sehen als deren Versorgung und das mögen die 
nicht...

Datenblatt vom Raspi-Spannungsregler wäre ja nett, wenn es denn eine 
Schaltung schon gäbe. Vom Raspberry Pi B+ gibt es aber nur eine Seite, 
auf der nur die Ports sind. Der Schaltregler für die 3.3V und 1.8V ist 
zwar auch drauf, aber ohne Typenbezeichnung.

Wahrscheinlich muß ich meine vorhin angedachte Lösung realisieren, dabei 
etwas abgewandelt: Wenn die 3.3V vom Raspi kleiner als 3.1V wird, wird 
die externe 3.3V-Versorgung abgeschaltet und kurzgeschlossen, für beides 
nehme ich MOSFETs, die >8A vertragen und bei ca. 2V Gatespannung schon 
voll durchschalten (je einmal NMOS und PMOS). So wird auch der 
Ladekondensator (sind nur 10u, das reicht für die Digitaltechnik auf dem 
Board) schnell genug entladen. Allerdings brauche ich dafür mindestens 
einen OPAMP, die MOSFETS und einen LM4040. Die anderen Boards hängen 
hinter einem Buffer nur noch am SPI-Bus, da fängt der Buffer das ab, der 
kommt mit auf das jetzige Board un d wird mit den sicheren 3.3V 
versorgt.

Ist zwar aufwendig, aber so sollte es sicher werden. Das ganze Projekt 
(8-Kanal digitaler Vorverstärker und Heimkinozentrale) ist ohnehin sehr 
aufwendig, da fällt das nicht mehr so ins Gewicht... Die Schaltung mit 
der externen Versorgung kann ich ja posten, wenn sie soweit ist und 
läuft.

Gruß
Andy

von eagle user (Gast)


Lesenswert?

74HC4050 sind Buffer, die Eingangsspannungen größer als VCC vertragen. 
Mit je einem pro Richtung kannst du die SPI-Signale entkoppeln. Jeder 
4050 wird jeweils von der Schaltung versorgt, die er treiben soll. Die 
beiden 3.3V bleiben völlig getrennt, Dioden usw. sind nicht nötig. Man 
darf nur nicht vergessen, die unbenutzten Eingänge auf GND zu legen.

Damit könnte die externe Schaltung auch mit 5V laufen. Dazu muss ein 
74HC durch einen 74HCT ersetzt werden, also der, der mit 5V betrieben 
wird.

Wenn die 74HC zu langsam sein sollten: sowas geht auch mit 74LVC...

von Andreas W. (andy_w)


Angehängte Dateien:

Lesenswert?

Hallo,
hier die Schaltung, mit der ich nun die externen 3.3V schalte. Sobald 
die 3.3V vom Raspi (der 40-pol. Stecker ist unten teilweise zu sehen, 
Pin 1 und 17 sind die 3.3V) größer als 3.1V sind, wird eingeschaltet. 
Darunter wird ausgeschaltet und kurzgeschlossen, so daß die externen 
3.3V kaum mehr als ca. 0.2-0.3V höher als die 3.3V vom Raspi sein 
können.

Die MOSFETs und der OPAMP sind nur Beispiele, es gibt sie bei Reichelt 
und es sind meine Standardbauteile für viele Zwecke (Lagerhaltung ist 
einfacher). Die MOSFETs haben eine kleine Gatespannung, um 
durchzuschalten (ca. 2V), der OPAMP ist ein Rail to Rail OPAMP. Der 
LM4040 ist die Variante mit der größten Genauigkeit, die billigeren mit 
größerer Abweichung gehen aber auch.

Die 5V sind dieselben, die auch den Raspi versorgen, auch wenn man das 
auf dem Raspi-Stecker nicht sieht. Die Verbindung findet woanders statt.

Gruß
Andy

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.