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: SSD1306https://www.waveshare.com/w/upload/9/95/SSD1306.pdf
Transistor: BC547Bhttps://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?
dediggefedde schrieb:> Wird Das OLED intern irgendwo mit GND über die SPI-Schnittstelle> versorgt?
Ja, das wird die bei fast allem passieren, dem du den GND klaust. Gesund
ist das auch nicht immer. Schalte VCC und die Welt ist wieder in
Ordnung!
>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.
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. ^^
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
Willst du stromsparen, oder was genau?
Wenn alle Pixel schwarz sind, sieht man einem OLED ja nicht an, dass er
an ist.
Interessant wäre durchaus der Stromverbrauch in dem Zustand.
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.
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
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...
dediggefedde schrieb:> Ja, Strom sparen ist das Ziel des ganzen.>> Eben mit dem Multimeter nachgemessen:> Bildschirm an: 2.5mA
Damit meinst du an, aber alle Pixel schwarz?
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
Eine eigene Frage?
Dieser Thread ist über 8 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.