PWM für Kontrast und HG vom LCD

Gast #500540
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






Gast #503282
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.
#503299
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren