Hallo
Ist es möglich den Kontrast und die Hintergrundbeleuchtung über den AVR
zu steuern???
wie würde die Schaltung aussehen derzeitig habe ich jeweils ein Poti
10k.
und wo wird es am AVR (ich habe einen 128) angeschlossen ???
PWM????
Gruß
Herrmann
moin
also PWM hört sich schon ganz gut an damit würde i aber die helligkeit
steuern oder die helligkeit über ein VCO (RC4151 8polig) regeln und den
kontrast über PWM regeln oder beides über den RC4151
christian
Für was braucht man hier bitte einen VCO ?
Die Helligkeit und den Kontrast kann man ganz einfach über PWM steuern.
Beim Kontrast braucht man noch einen Glättungskondensator.
Es kann nur Probleme geben, wenn das LCD Spannungen in der Nähe von 0V
braucht, dann muss man bei der PWM -> Spannungswandlung etwas tricksen.
@Benedikt K.: Das mit dem Kontrast regeln mit PWM hab ich auch mal
probiert, aber leider mit wenig Erfolg. Was rauskam, war ein Display,
was immer Kontrast rein - Kontrast raus gemacht hat. Nur mit Kondensator
glätten reicht nicht, denn wenn der nicht belastet wird, dann lädt der
sich auf bis VCC. Hängt man dann noch einen Widerstand parallel dazu,
dann sinkt zwar die Effektivspannung, jedoch sieht man genau am Display
wann der Kondensator in der PWM high Phase aufgeladen wird und wann er
sich über den Widerstand entlädt. Hast Du keine Probleme gehabt ? Wenn
nein wie war Dein Aufbau?
Wenn du einen Kondensator über einen Widerstand mit PWM ansteuerst, dann
läd sich dieser nicht auf Vcc auf, sondern auf eine Spannung, die
proportional dem Tastverhältnis ist.
Wenn du die PWM auf dem LCD siehst ist die Frequenz zu niedrig oder der
Kondensator zu klein.
moin
i bins noch ma ha!!! na ganz einfach den VCO brauchst du dafür in dem
man über ein ldr die spannung an den VCO gibt und der dann die
helligkeit steuert weil i denke bei 1kHz (je nach geschmack) is dat auge
ein wenig trääääge und den kontrast kann man denn über pwm als i würde
ne diode in pfad tun nen wiederstand und den C denn wenn das
rechtecksignal auf masse geht verhindert die diode das der C in richtung
AVR entladen wird und die ganz energie geht ins LCD oder is das zu
komplitiert????
christian
Also:
Zur Steuerung der Hintergrundbeleuchtung genüg ein einfaches 8-Bit-PWM
mit einer Frequenz über 200 Hz (augenfreundlich, auch beim Vorbeigehen).
Dieses PWM schaltet man direkt über Vorwiderstand auf die Basis eines
npn-Transistors und dessen Kollektor dann an die Beleuchtung, welche
über Vorwiderstand an Vcc hängt. Dieses PWM arbeitet nichtinvertierend,
also große OCR-Variable für helles Licht, kleine für dunkles Licht oder
aus.
Zur Steuerung des Kontrastes nimmt man einen Spannungsteiler, der das
Display auf gerade maximalen Kontrast einstellt. Größenordnung so 470
Ohm nach Masse und 20kOhm nach Vcc, kann je nach Display variieren. Der
Spannungsteiler liegt mit der Mittelverbindung direkt am Kontrastpin.
Daran kommt außerdem nach Masse ein 100nF Keramik-Kondensator. Mit einem
Serienwiderstand von 2k2 bis 4k7 (ausprobieren) geht man direkt an einen
weiteren PWM Pin. Auch hier reichen dann 8 Bit, die Frequenz sollte aber
über 1kHz sein, damit der Kontrast nicht pumpt durch zu hohe Welligkeit.
Dieses PWM arbeitet dann invertierend, also bei großer OCR-Variable
wenig oder kein Kontrast und bei kleiner hoher Kontrast.
Tja, und das war´s auch schon. Diese Schaltungen habe ich schon mehrfach
mit "Electronic Assembly", "Pollin" und "no-name" Displays getestet und
erfolgreich am Laufen.
Als Kontrast habe ich nen anderen Vorschlag.
Bei Text-Displays spar ich mir den Poti zwischen Vcc und GND.
Ich verbinde den Kontrastanschluss über eine Diode mit GND, somit ist
der Kontrast hoch, aber nicht auf Maximum (da sieht man auch die
nichtangesteuerten Pixel). Und der Schaltungsaufwand ist gleich Null.
Hallo
Bin erst jetzt dazu gekommen um die Schlatung Auszuprobieren.
und zwar die von travel rec.
Habe mal den SP vom Hintergrund LED angehängt ist das so OK oder sollte
zwischen Basis und GND noch ein WIederstand.
Kann mir vieleicht einer verraten wie hoch die Wiederstände sein
müssen???
Für R2 und R1.
Danke
Nee, ist leider falsch. Anode von der Display HG über einen Widerstand
nach Vcc (5V). Kathode von der Display HG zum Kollektor des npn. Emitter
des npn an Masse. Basis des npn über Vorwiderstand an den AVR-PWM Pin.
Vorwiderstand für die Basis ist 4,7k, Widerstand für die Display HG ist
10 bis 100 Ohm, je nach Effektivität der HG.
Ja jetzt sieht es besser aus die HG leuchtet.
Nur jetzt habe ich das Problem mit dem 2 PWM's.
Habe auch schon im GCC Forum nachgefragt aber noch keine antwort.
Wenn Du das Ja so nutz könnstest du mir mal einen Code zusenden?
Danke
Habe mal folgenden Code dabei tut sich was am Kontrast aber an der HG
nicht.
void init_pwm()
{
DDRB|=(1<<PB5);
DDRB|=(1<<PB6);
TCCR1A = (1<<WGM10)|(1<<COM1B1) | (1<<COM1A0) | (1<<COM1A1);
TCCR1B = (1<<CS11);
OCR1B=0; //HG Display 0 oder 255 es verändert sich nichts.
OCR1A=120; // Kontrast Display 120 Kontrast OK
}
Ich habe zwishcen Anode und 5V 82 Ohm Wiederstand drin.
und zwishcen PWM und Basis einen 3,7K
Als Transistor habe ich einen BC847A drin SMD.
Danke
> Die HG ist über Vorwiederstand an dei Basis eines NPN Transi und> mit dem collector über vorwiederstand an die HG Anode. Emitter> auf masse und Kathode auf Masse PWM port OC1B.
Ich werd aus dieser Beschreibung nicht wirklich schlau.
Die HG hat mit dem Kontrast schaltungstechnisch überhaupt nichts
zu tun.
Für die HG baust du das so auf
-----+------ Vcc
|
|
---
| | 10 - 100 Ohm
| |
---
|
---
\ / HG Led im Display
---
|
/
------- |/
Pin -----| |---------| npn-Transi
------- |\
~4.7 k \
|
|
--+-- GND
Der Transistor wird als reiner Schalter betrieben, der die Katode
der HG-Led nach Masse durchschaltet, wenn an seiner Basis der
µC Pin eine 1 anlegt.
Darf ich vorschlagen, dass du dich zunächst mal nur um die
HG-Led kümmerst und nicht einen 2 Fronten krieg führst.
Das hier ist ein Setup für einen ATMega16 (kein 128)
8 Bit Fast PWM, beide OC1x Ausgänge aktiviert.
Beim Mega16 liegen die OC1x Augänge am Port D, hier
musst du also anpassen:
1
DDRD=0x30;// OC1A und OC1B auf Ausgang
2
3
TCCR1A=(1<<WGM10)|
4
(1<<COM1B1)|(1<<COM1B0)|
5
(1<<COM1A1)|(1<<COM1A0);
6
7
TCCR1B=(1<<CS11);
8
9
OCR1A=5;
10
OCR1B=5;
Da der Timer1 aber ein sehr mächtiger Timer ist, würde ich
mir das noch gut überlegen, ob ich den für eine LCD Steuerung
hernehmen würde. Ich würde die beiden PWMs wahrscheinlich
eher per Software-PWM mit einem 8 Bit Timer machen um den
16-Bit Timer freizuhalten.
Hallo
Die Schaltung ist so jetzt aufgebaut.
Es wird besser sein das Per Software zu machen und die Ports auf einen
I/O Pin zu hängen ist das so OK???
Wie macht man denn ein Soft PWM????
Mein AVR ist ein 128Iger.
DANKE
Herrmann wrote:
> Hallo>> Die Schaltung ist so jetzt aufgebaut.
Und, funktionierts?
>> Es wird besser sein das Per Software zu machen und die Ports auf einen> I/O Pin zu hängen ist das so OK???
Ob das besser ist, musst du entscheiden.
Wenn das eine Spezialplatine für einen bestimmten Einsatz
wird, dann kannst du natürlich den Timer1 für die PWM nehmen,
wenn er nicht anderweitig gebraucht wird.
Wenn das aber eine Universalplatine zum experimentieren ist,
würde ich mir wegen dem LCD nicht den Timer1 blockieren.
>> Wie macht man denn ein Soft PWM????
Sie muss genau dasselbe wie die Hardware-PWM machen.
Ein Zähler läuft durch. Ist der Zählerstand unter einem Grenzwert,
wird die LED eingeschaltet, ist er drüber wird die LED ausgeschaltet.
Durch Variation des Grenzwertes wird das Ein/Aus Verhältnis
geregelt. Als Zähler nimmt man einen uint8_t (eine
8 Bit Variable reicht völlig für den geplanten Zweck) und
mit einem Timer samt ISR wird diese regelmässig erhöht. In
der ISR noch abfragen ob der Software-Zähler über oder
unter dem jeweiligen Grenzwert liegt und jenachdem den
Output-Port-Pin auf 1 oder 0 setzen.
Aber: Du kannst jeden beliebigen Timer nehmen, du kannst die
LED (bzw. Kontrast) an jeden beliebigen µC Pin anschliessen
und die paar % Rechenleistung (wenn überhaupt) die dafür
draufgehen, merkst du im restlichen Programm nicht.
Ob du das so machen willst hängt letztenendes nur vom
geplanten Einsatzzweck ab: Spezialplatine oder Universal-
Experimentierboard.