Hallo, ich habe ein kleines Projekt vor, bei dem ich ein großes 4x20 LCD per Atmega 16 (oder auch 32, je nach Programmgröße) ansteuern will. Mit Displays allgemein hab ich schon einiges an Erfahrung, das Display das ich hier habe läuft auch gut, aktuell mit einem MAX 232, um die negative Spannung zu erzeugen und mit einem Poti die Kontrastspannung zu regeln. Nun meine Frage: wie kann ich die negative Spannung mit dem Mega 16 "dimmen" ? am besten natürlich so das nichts flackert und der Schaltungsaufwand möglichst gering bleibt. Für Displays die mit einer positiven Spannung auskommen hab ich bereits genügend Schaltungen im Netz gefunden. Mfg
Wie hoch muss die negative Spannung sein?
@ Ghost Rider (ghostrider1911) >das ich hier habe läuft auch gut, aktuell mit einem MAX 232, um die >negative Spannung zu erzeugen und mit einem Poti die Kontrastspannung zu >Nun meine Frage: wie kann ich die negative Spannung mit dem Mega 16 >"dimmen" ? Indem du eine möglichst hochfrequenze PWM auf einen der Senderkanäle des MAX232 gibst und dann an den Ausgang dort einen passenden RC-Filter klemmst. Mit dem Tastverhältnis kann man die mittlere Ausgangssspannung einstellen. Da das Kontrastpin relativ wenig Strom braucht, kann man das eher hochohmig machen. Ich würde mal mit 10kOhm + 10uF ins Rennen gehen und die PWM auf ca. 100-1000 Hz einstellen. https://www.mikrocontroller.net/articles/Pulsweitenmodulation#DA-Wandlung_mit_PWM
Wenn's nur eine kleine negative Spannung (2V oder so...) braucht, könnte man vielleicht auch was mit einer Ladungspumpe (ein Kondensator, zwei Dioden) machen.
PWM geht schon, habe ich auch schon gemacht. Man kommt aber nicht drumrum, einen kleinen Lastwiderstand einigermaßen passend auszusuchen, um die gewünschte Spannung zu erreichen. Die PWM macht dann das Finetuning. Hier mal ein Stück Code auf einem Xmega:
1 | /* PF3 is output for VLCD charge pump (PWM on OC0D) */
|
2 | PORTF.DIRSET = _BV(3); |
3 | TCF0.CTRLA = TC_CLKSEL_DIV1_gc; /* TCF0 @ 16 MHz */ |
4 | TCF0.CTRLB = TC0_CCDEN_bm | TC_WGMODE_SS_gc; |
5 | TCF0.PER = 256; /* 62.5 kHz PWM frequency */ |
6 | TCF0.CCD = 4; /* -> VLCD abt. -1.3 V */ |
sowie der zugehörige Schaltplanausschnitt im Anhang. Ich glaube mich zu erinnern, dass der tatsächliche Wert von R8 dann in der Erprobung nochmal geändert worden ist. Das Gerät ist aber ein Unikat, den Schaltplan habe ich daher nicht nachgezogen.
:
Bearbeitet durch Moderator
Wieso was ändern, Falk hat es doch schon erklährt. Habe ich auch schon so gemacht, funktioniert bestens.
Naja, einen MAX232 extra für die Kontrastspannung, wenn man ihn sonst nicht braucht? Halte ich für reichlich übertrieben.
Ich finde es wesentlich "natürlicher", wenn man den Kontrast an einem Poti einstellen kann. Erzeugen kannst du die Schaltung gemäß der angehängten Schaltung. Du kannst die Spannung per Software beeinflussen, indem du die Frequenz oder die Pulsweise des Rechtecksignals änderst (geht beides). Dann würde ich allerdings den 1µF Kondensator auf 10µF erhöhen. Je niedriger die Frequenz, umso niedriger ist die Ausgangsspannung. Oder: Je unsymmetrischer das Tastverhältnis der PWM, desto niedriger ist die Ausgangsspannung. Also bei 50% High/50% Low erhälst du die maximale Spannung von ca. -2V. Nachtrag: Ich sehe gerade dass mein Schaltungsvorschlag praktisch mit dem von Jörg identisch ist.
Stefan U. schrieb: > praktisch mit dem von Jörg identisch ist. Bis auf das Poti. ;-) OK, das hätte mir das Aussuchen des Widerstands gespart. Vorteil der Einstellung über die Pulsbreite ist, dass man das halt rein in Software machen kann. Hab' ich am Ende aber doch nicht getan (wie man sieht, ist ja hart codiert).
> Vorteil der Einstellung über die Pulsbreite ist, dass man das > halt rein in Software machen kann. Ja, aber die Software weiss nicht, welche Kontrastspannung optimal ist. Dazu bräuchtest du noch eine Kamera, die auf das Display schaut. Oder etwas, wo der Benutzer die Helligkeit einstellen kann. Dann doch lieber gleich ein Trimmpoti, oder nicht? Keep it simple. Ich hatte was vergessen zu schreiben: Die Frequenz des Rechtecksignals muss 10kHz oder mehr sein, um die maximale Ausgangsspannung (ca. -2V) zu erreichen. Bei weniger als 10kHz wird die Spannung geringer.
Stefan U. schrieb: > Oder etwas, wo der Benutzer die Helligkeit einstellen kann. Yep, wenn ich aber sonst schon eine Bedienerführung am Gerät habe, ist das für den Benutzer am Ende einfacher, als die Kiste zu öffnen und am Poti zu fummeln. Aber wie ich schon schrieb: am Ende habe ich's doch über den Widerstand eingestellt, und eine feste Spannung genügt, zur Laufzeit muss man das nicht mehr ändern. Ja, das Trimmpoti wäre einfacher gewesen als das Umlöten des Rs :), hab' ich vorher nicht dran gedacht. SMD-Trimmer habe ich aber auch kaum vorrätig, Widerstände dagegen genügend (und großartig Platz war nicht in der Schachtel für ein THT-Trimmpoti).
:
Bearbeitet durch Moderator
mit dem 100nF und der doppeldiode am Timer2 ist "gang und gebe", speziell wenn die Displays an 3.3V betreiben werden sollen.
Wow! Da sind ja einige super Vorschläge dabei. Falls ich den MAX232 woanders auch noch brauche, werde ich die erste vorgeschlagene Lösung wählen / zuerst probieren, und dann mal schauen wie das klappt. Ich danke euch für die zahlreichen Antworten und berichte wenn ich dazu gekommen bin das auszutesten! Mfg
Thomas E. schrieb: > Wenn's nur eine kleine negative Spannung (2V oder so...) braucht, könnte > man vielleicht auch was mit einer Ladungspumpe (ein Kondensator, zwei > Dioden) machen. genauso habe ich den Kontrast am HD44xxx oder KS0066 LCD gestellt: geht auch mit AVR und einem PWM Ausgang, der Kontrast lässt sich schön einstellen, man kann ja die Spannung per R und C voreinstellen und den PWM Bereich begrenzen. http://www.holger-klabunde.de/dcdc/picdcdc.htm Jörg W. schrieb: > Stefan U. schrieb: >> Oder etwas, wo der Benutzer die Helligkeit einstellen kann. das macht der 2te PWM Kanal für die HG LED
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.