Hallo ich weis das es schon hier behandelt worden ist aber mit dem PWM steige ich nicht durch . Habe viele Beispiele probiert aber am Display regt sich nichts. der Kontrast ist mit einem Spannungsteiler und einen Vorwierderstand am Port OC1A mit dem Kontrastpin am Display angeschlossen. 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. wie gehe ich vor? ich habe gedacht das es so funktioniert 1. usgänge setzten PORTB |= (1<<PB5); // kontrast PORTB |= (1<<PB6); // HG 2. TCCR1A=(1<<WGM10) | (1<<COM1A1) | (1<<COM1A0) invertiertes PWM 8Bit 3. TCCR1B = (1<<CS12) | (1<<CS10); // Frequenz CPU /1024 4. OCR1A = 100; //Ausgang mit wert z.b 100 für Kontrast oder bin ich auf dem Holzweg??? Danke
Hallo mit HG meine ich Hintergrundbeleuchtung eines LCD Displays. Die Helligkeit will ich mit dem Microcontroller reglen. Zustände aus 0V dimmen bis max =5V. Dazu benutze ich PWM. Den Artikel PWM habe ich gelesen aber richtig werde ich nicht schlau.
Schau mal hier vorbei: http://www.harbaum.org/till/lcd2usb/index.shtml LCD an USB angeschlossen (ATMega8) mit Einstellbarer HG-Beleuchtung und Kontrast. /Ernst
Herrnann wrote: > Hallo > > mit HG meine ich Hintergrundbeleuchtung eines LCD Displays. > > > Die Helligkeit will ich mit dem Microcontroller reglen. > Zustände aus 0V dimmen bis max =5V. > > > Dazu benutze ich PWM. > > Den Artikel PWM habe ich gelesen aber richtig werde ich nicht schlau. Wieso nicht? Ist doch ganz simpel. Wenn du den Portpin auf 1 legst (und damit den Transi für die HG durchsteuerst) leuchtet die HG auf. Legst du den Pin auf 0, ist die HG aus. Wenn du den Pin abwechselnd auf 0 bzw. 1 legst, wobei die 0 und die 1 jeweils die Hälfte der Zeit anliegen, ist die HG zwar an, aber nicht mit voller Helligkeit(*). Je mehr du das Zeitverhältnis von 0/1 in Richtung 0 verschiebst (zb. 90% der Zeit ist am Portpin eine 0, die restlichen 10% ist der Pin auf 1), desto dunkler wird die HG. Und das wars dann auch schon. Wenn du keine Hardware-PWM dafür nehmen willst, was ich verstehen kann, dann ist das ganz einfach ein Timer, der zb. einen Overflow Interrupt auslöst. In der ISR machst du volatile uint8_t HG_Helligkeit uint8_t HG_Counter; ISR( .... ) { HG_Counter++; if( HG_Counter > HG_Helligkeit ) Port_Pin_an_dem_die_HG_hängt = 1; else Port_Pin_an_dem_die_HG_hängt = 0; } fertig. Durch setzen von HG_Helligkeit auf verschiedende Werte stellst du verschiedene Helligkeiten ein. Der Timer sollte natürlich nicht zu langsam laufen. Ein Vorteiler von 1 ist da auf jeden Fall angebracht. Funtioniert deine Hardware mitlerweile? (*) die HG leuchtet natürlich nicht mit verminderter Helligkeit. In Wirklichkeit blinkt sie. Nur blinkt sie so schnell, dass du das eigentliche Blinken nicht mehr siehst.
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.