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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.