Forum: Compiler & IDEs Problem mit PWM und HighPower LED's


von tf1973 (Gast)


Lesenswert?

Hi,

ich habe eine Schaltung aufgebaut, wo ich ein paar HighPower LED's über 
die Port Pins C0, C1 und C2 per PWM ansteuere. An den PortPins ist 
jeweils ein ICL7667 angeschlossen und daran werden über IRLZ34N die 
HighPower LED's betrieben. So weit so gut. Funktioniert auch alles 
wunderbar.

Nur hab ich etwas "Probleme" mit der PWM. Hier ist der Code der Timer 
ISR:

ISR(TIMER1_COMPA_vect) {
    static uint8_t pwm_zaehler=0;
    uint8_t temp=0;
    OCR1A += 600;

    if (pwm_wert[0] > pwm_zaehler) temp |= (1<<0);
    if (pwm_wert[1] > pwm_zaehler) temp |= (1<<1);
    if (pwm_wert[2] > pwm_zaehler) temp |= (1<<2);

PORTC = temp;

    if (pwm_zaehler==255)
    {
        pwm_zaehler=0;
    }
    else
    {
        pwm_zaehler++;
    }
}

Nun hab ich aber das Problem, wenn die LED's eigentlich aus sein sollen 
(kleinster Dimmerwert), "glimmen" diese trotzdem minimal nach. Ich hab 
mir jetzt so geholfen, indem ich in der ISR abfrage ob dieser Zustand 
erreicht wurde, und ändere einfach die Richtung der Portpins:

  if (pwm_wert[0] ==255)
    {
    DDRC &=~(1<<DDC0);
    }
    else DDRC |= (1<<DDC0);

  if (pwm_wert[1] ==255)
    {
    DDRC &=~(1<<DDC1);
    }
    else DDRC |= (1<<DDC1);

  if (pwm_wert[2] ==255)
    {
    DDRC &=~(1<<DDC2);
    }
    else DDRC |= (1<<DDC2);

Kann man das vielleicht noch etwas "eleganter" lösen?

Danke schonmal.

von Maik F. (sabuty) Benutzerseite


Lesenswert?

tf1973 schrieb:
> Kann man das vielleicht noch etwas "eleganter" lösen?

Hardware PWM eine Option?

Dann kannst du eine invertierende PWM einstellen, allerdings hast du das 
Problem dann bei 100%, dass die LEDs immer kurz ausgehen und nie ihre 
volle Helligkeit erreichen. Allerdings ist das in deinem Fall eher 
verschmerzbar. Man muss dann allerdings beachten, das 0 = 99.9999% ist 
und 255=0%.

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.