LED per PWM Ansteuern

Gast #3392551
Lesenswert?

Hey leute,

ich hab an meinen AT90CAN128-Mikrocontroller eine LED mittels Transistor 
angeschlossen.
Um zu testen ob die LED funktioniert, hab ich über den Programmiercode 
zunächst die Ports auf High gesetzt:

while(1)
{
  DDRB= 0xFF;
  PORTB |= (1<<5);
}

Ich wollte nun einmal die LED in verschiedenen Helligkeitsstufen dimmen 
und hätte dies gerne mit dem PWM Signal gemacht. In einem älteren 
Testcode habe ich eine PWM für die Ansteuerung eines Servomotors 
realisert. Mein AT90CAN wird über einen externen Quartz mit 16 MHz 
betrieben, der Programmiercode sieht folgendermaßen aus


  void SERVOPWM (void)
  {
    DDRB  |= 0xFF;
    TCCR1A |= 1<<WGM11 | 1<<COM1A1 | 1<<COM0A0 ;
    TCCR1B |= 1<<WGM12 | 1<<WGM13 | 0<<CS10 | 1<<CS11;
    ICR1 = 39999;

    OCR1A = ICR1 - 35200;
  }

Ich habe nun versucht den Code für meine LED-Ansteuerung zu verwenden, 
leider ohne Erfolg. Was muss ich hier beachten bzw. noch einstellen um 
verschiedene Helligkeitsstufen zu erreichen ?
#3392612
Lesenswert?

G0_H4rd schrieb:
> Hey leute,
>
> ich hab an meinen AT90CAN128-Mikrocontroller eine LED mittels Transistor
> angeschlossen.

wie, genau, hast du das gemacht?

> Um zu testen ob die LED funktioniert, hab ich über den Programmiercode
> zunächst die Ports auf High gesetzt:

Mach mal den Gegentest, setz den Pin auf Low und sieh nach, ob die LED 
dann auch ausgeht. Eventuell könnte man auch mit einm langsamen Blinken 
testen, ob die Ansteuerung funktionert.

>   void SERVOPWM (void)
>   {
>     DDRB  |= 0xFF;
>     TCCR1A |= 1<<WGM11 | 1<<COM1A1 | 1<<COM0A0 ;
>     TCCR1B |= 1<<WGM12 | 1<<WGM13 | 0<<CS10 | 1<<CS11;
>     ICR1 = 39999;
>
>     OCR1A = ICR1 - 35200;
>   }
>
> Ich habe nun versucht den Code für meine LED-Ansteuerung zu verwenden,
> leider ohne Erfolg. Was muss ich hier beachten bzw. noch einstellen um
> verschiedene Helligkeitsstufen zu erreichen ?

Wenn du die Funktion auch noch aufrufst, dann müsste das funktionieren.
Dein OCR1A Wert ist allerdings in der Form, dass die LED sehr hell ist. 
Bei hellen LED kann man aber als Mensch die einzelnen Stufen kaum noch 
unterscheiden. Setz halt OCR1A mal auf 'halbe' Helligkeit. Das müsste 
deutlich zu sehen sein
1
    OCR1A = 20000;

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