Forum: Mikrocontroller und Digitale Elektronik PWM mit RGB-LED: Blau geht nie ganz aus.


von jaynis (Gast)


Lesenswert?

Hallo zusammen.

Ich steuer mittels eines Atmega8 und 3 Transistoren einen 2M 
RGB-LED-Stripe an und generiere mittels 8-Bit-Hardware-PWM Dimm- und 
Fade-Effekte. Das funktioniert soweit auch schon ganz gut, jedoch habe 
ich noch ein kleines Problem: Die blauen LEDs gehen nie ganz aus und 
glimmen immer ein wenig, selbst wenn wenn ich den 
OCR1A-/OCR1B-/OCR2-Wert auf 0 setze. Rot und Grün sind dann auch 
komplett aus, nur Blau glimmt halt noch ein wenig.
Bei der PWM benutze ich die Fast-PWM mit "Clear on Compare Match, set 
OCR1A/OCR1B/OCR2 at BOTTOM, (non-inverting mode)" und die LEDs sind 
jeweils vor dem Kollektor des Transistors angschlossen. Nehme ich den µC 
komplett aus seinem Sockel, sind alle LEDs aus (auch die Blaue).

Wisst ihr woran das liegen könnte?

Grüße!

von Spess53 (Gast)


Lesenswert?

Hi

>Bei der PWM benutze ich die Fast-PWM mit "Clear on Compare Match, set
>OCR1A/OCR1B/OCR2 at BOTTOM, (non-inverting mode)" und die LEDs sind
>jeweils vor dem Kollektor des Transistors angschlossen.

Die minimal ON-Zeit (OCR=0) ist ein Timer-Takt. D.h. die Ausgangspannung 
wird nicht Null. Im einfachsten Fall hilft invertierte PWM.

MfG Spess

von Falk B. (falk)


Lesenswert?

Oder Phase/Frequency Correct PWM, dann geht auch 0 richtig aus.

von Spess53 (Gast)


Lesenswert?

Hi

>Oder Phase/Frequency Correct PWM, dann geht auch 0 richtig aus.

Aber nur mit der halben Frequenz.

MfG Spess

von jaynis (Gast)


Lesenswert?

Spess53 schrieb:
> Hi
>
>>Bei der PWM benutze ich die Fast-PWM mit "Clear on Compare Match, set
>>OCR1A/OCR1B/OCR2 at BOTTOM, (non-inverting mode)" und die LEDs sind
>>jeweils vor dem Kollektor des Transistors angschlossen.
>
> Die minimal ON-Zeit (OCR=0) ist ein Timer-Takt. D.h. die Ausgangspannung
> wird nicht Null. Im einfachsten Fall hilft invertierte PWM.
>
> MfG Spess

Danke für den Hinweis, von dieser "Problematik" habe ich sogar schon mal 
gehört. Aber warum gehen Rot und Grün bei mir komplett aus wenn ich 
OCR=0 setze, Blau jedoch nicht? Ich verwende nämlich bei allen LEDs die 
nicht-invertierte PWM.

Die Register habe ich wie folgt gesetzt:

TCCR2  = (1<<WGM20) | (1<<WGM21);
TCCR2 |= (1<<COM21);
TCCR2 |= (1<<CS21);

TCCR1A  = (1<<WGM12)  | (1<<WGM10);
TCCR1A |= (1<<COM1A1) | (1<<COM1B1);
TCCR1B  = (1<<CS11);

Grüße

von jaynis (Gast)


Lesenswert?

Könnte da evtl. noch jemand was zu sagen? Also warum Rot und Grün 
komplett aus gehen und Blau nicht, obwohl ich überall die gleiche PWM 
verwende?

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

jaynis schrieb:
> TCCR1A  = (1<<WGM12)  | (1<<WGM10);

WGM12 liegt in TCCR1B.

Zeig mal deinen Code.

von jaynis (Gast)


Lesenswert?

Magnus M. schrieb:
> jaynis schrieb:
>> TCCR1A  = (1<<WGM12)  | (1<<WGM10);
>
> WGM12 liegt in TCCR1B.
>
> Zeig mal deinen Code.

Eigentlich ist das Obige schon das Relevante aus meinem Code. Danach 
ändere ich nur noch die OCR-Werte (bzw. setze sie im konkreten Fall auf 
0).

Aber Danke für deinen Hinweis, ich glaube daran könnte es liegen! Ich 
habe mich da im Datenblatt (http://www.atmel.com/images/doc2486.pdf) 
wohl verlesen. Ich bin davon ausgegangen, dass WGM12 zu TCCR1A gehört, 
da die "Waveform Generation Mode"-Tabelle auf Seite 97 in der 
Beschreibung des TCCR1A Registers liegt. Deshalb habe ich 
fälschlicherweise gedacht, dass alle Werte dieser Tabelle zu TCCR1A 
gehören und nicht gemerkt, dass sie ja Registerübergreifend ist.
Long story short: Da ich in TCCR1B das WGM12-Bit nun gar nicht gesetzt 
habe, habe ich auch nicht die 8-Bit-Fast-PWM gewählt, sondern die 
8-Bit-Phase-Correct-PWM. Ich könnte mir vorstellen, dass dort das 
Problem liegt.

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.