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
Lern erstmal deutsch, dann versteht man vielleicht auch was du sagen willst...
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.
Hallo Travelrec Dies scheint die bessere variante zu sein kannst Du mir einen Schaltplan zukommen lassen von Deiner Schaltung???? Danke
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.
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.