OLED über Transistor ausschalten

Gast #5598179
Lesenswert?

Ich würde gerne ein OLED-Display von Waveshare, das über 4-Wire SPI von 
einem ATMega328 angesteuert wird, von diesem über eine 
Transistor-Schaltung ein- und ausschalten.

Leider schaltet das Display nicht ab, obwohl die Transistor-Basis auf 
GND gelegt wird.

OLED-Display: SSD1306 
https://www.waveshare.com/w/upload/9/95/SSD1306.pdf
Transistor: BC547B https://www.farnell.com/datasheets/410427.pdf

Das ganze betreibe ich mit 3.3V (ATMega auf Steckbrett)

Mit einem einfachen Multimeter kam ich auf einen Stromverbrauch von etwa 
4mA für das Display.
Nach dem Artikel von hier ( 
https://www.mikrocontroller.net/articles/Basiswiderstand ) berechnet 
sich der Basis-Widerstand über

R_{basis} ≤ ( 3.3V * 0.9 - 0.78V ) / (4mA / 20) = 11kΩ

Ich habe hier 10 kOhm genommen.

Nun ist das Display aber immer an. Im angehangenen Schaltplan habe ich 
die Transistorbasis mal gleich über den Basiswiderstand auf GND gelegt, 
um das Problem zu verdeutlichen. Später soll das über einen 
ATMega-Ausgang geregelt werden.

Nach Datenblatt kann das OLED auch max 15mA ziehen, wodurch man auf ≤3kΩ 
käme... aber mit einem 2kΩ Widerstand gibt es auch keine Änderung.


Wird Das OLED intern irgendwo mit GND über die SPI-Schnittstelle 
versorgt? Oder habe ich die Transistor-Schaltung noch nicht ganz 
verstanden?
Oder gar verrechnet?
Gast #5598187
Lesenswert?

>Schalte VCC und die Welt ist wieder in
>Ordnung!

Nö, dann sorgt jeder Pin der auf High liegt für eine
ausreichende Stromversorgung. Man muss ALLE angeschlossenen
Datenleitungen entsprechend schalten damit das Display nicht mehr
parasitär versorgt wird.
Gast #5598191
Lesenswert?

Danke für die schnellen Antworten!

Hab jetzt mal ohne VCC und GND Anschlüsse getestet und das Display geht 
weiterhin.

Wenn ich die Ausgänge per software auf Low setze, kann ich keine anderen 
Chips über SPI ansprechen, ohne das Display einzuschalten.

Extra dafür 6 Transistoren zu nehmen scheint mir auch etwas unpraktisch.
Da werde ich noch etwas herumspielen müssen. ^^
#5598195
Lesenswert?

Gast #5598236
Lesenswert?

dediggefedde schrieb:
> Wenn ich die Ausgänge per software auf Low setze, kann ich keine anderen
> Chips über SPI ansprechen, ohne das Display einzuschalten.

Man könnte aber auch mal schauen, was man im Display selbst per Software 
abschalten kann. Register hat es ja genug. An ein Kommando, es 
einzuschalten kann ich mich erinnern. Ohne dieses funktioniert es nicht. 
Da wird es auch was zum Ausschalten geben.

Das kost dann gar keinen Transistor.

MfG Klaus
Gast #5598427
Lesenswert?

Du musst dafür sorgen, dass das Display keine Signal-Spannungen bekommt, 
wenn es ausgeschaltet ist.

Da du den GND Anschluss unterbrcihst, musst du vorher alle Signale auf 
HIGH schalten. Nur dann liegt an dem Display (aus seiner Sicht 
betrachtet) nirgendwo mehr Spannung an.

Weniger verwirrend ist es, die Spannungsversorgung abzuschalten, dazu 
kann ich nur dringend raten. Dabei musst du alle Signale auf LOW 
schalten.

In beiden Fällen kannst du den SPI Bus nicht mehr für andere Geräte 
benutzen, denn dann müsstest du ja andere Spannungen an den 
Signal-Leitungen zulassen. Das darf aber nicht sein.

Für beinahe alle CMOS IC's (auch das Display) gilt, dass die Spannungen 
an allen Pins zwischen VCC und GND liegen müssen. Da dein Display in 
abgeschaltetem Zustand zwischen VCC und GND genau Null Volt hat, darfst 
du auch keine Signale anlegen.
Gast #5600524
Lesenswert?

Ja, Strom sparen ist das Ziel des ganzen.

Eben mit dem Multimeter nachgemessen:
Bildschirm an: 2.5mA
Bildschirm aus (Software): 11µA

Software:
Bildschirm aus:
1
display.ssd1306WriteCmd(SSD1306_DISPLAYOFF);
Bildschirm an:
1
display.ssd1306WriteCmd(SSD1306_DISPLAYON);

Es wird empfohlen den OLED-Reset-pin nach dem Einschalten zu triggern. 
Ich hab direkt danach (und nach dem Auswachen des ATMega aus dem 
Ruhezustand) ein
1
display.begin(&Adafruit128x64, OLED_CS, OLED_DC, OLED_RST);
gesendet.

Danke für den Hinweis mit AVCC!
Das hatte ich in hier einfach in dem Plan vergessen.

Ich habe noch ein paar Sensoren (z.B. bmp280) und ein SD-Karten-Modul. 
Bei diesen kann ich aber einfach die SPI-Eingänge auf 0V legen.
Ist der Bildschirm an, kann ich auf den Ruhezustand verzichten. Und im 
Ruhezustand brauche ich den Bildschirm dann nicht...
Gast #5602337
Lesenswert?

Alex G. schrieb:
> Damit meinst du an, aber alle Pixel schwarz?

Nein, hier war eine Zeile an.
Das sollte nur zeigen, dass es funktioniert und 11µA ist für mich zum 
Strom sparen ausreichend.

Display aus: 11µA
Alle Pixel aus, Display an: 1.6mA
1 Reihe , Display an: 2.4mA
4 Reihen, Display an: 5.2mA

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren