Forum: Compiler & IDEs PWM für Kontrast und HG vom LCD


von Herrmann (Gast)


Lesenswert?

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







von Mister mit Kanister (Gast)


Lesenswert?

Was meinst Du mit HG und was willst Du machen?

von Oliver (Gast)


Lesenswert?

Links oben-ganz unten: Artikelsammlung - PWM-Tutorial.

Oliver

von Herrnann (Gast)


Lesenswert?

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.

von Εrnst B. (ernst)


Lesenswert?

Schau mal hier vorbei:

http://www.harbaum.org/till/lcd2usb/index.shtml

LCD an USB angeschlossen (ATMega8) mit Einstellbarer HG-Beleuchtung und 
Kontrast.

/Ernst

von Karl H. (kbuchegg)


Lesenswert?

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
Noch kein Account? Hier anmelden.