Forum: Mikrocontroller und Digitale Elektronik PWM, FET, LED-Lichterkette


von Daniel (Gast)


Lesenswert?

Zu Anfang erstmal sorry für den 100sten Thread in Sachen PWM und LED's 
aber meiner ist (hoffe ich) ein wenig anders.

Schaltung:



                                        VCC(12V)
                                        |
                                        |
                                        |
                                       .-.
                                       | |
                                       | | Last
                                       '-'
                                        |
                                        |
                                      |-+
                         _          |    IRFZ44N
                    µC -|___|-------->|-+
                         50R    |       |
                               .-.      |
                               | |      |
                               | |      |
                               '-'      |
                                |       |
                                |-------|
                                        |
                                        |
                                       GND

VCC = 12V

Den IRFZ44N hatte ich rumfliegen (gehörte mal in einen Fahrtenregler 
ausm Modellbau, wo er auch gePWMt wurde, ich fand das passt ganz gut). 
Lt. Datenblatt können bei 5V Ugs auch knapp unter 10A fließen, was für 
meine LED-Kette ausreichend sein sollte.

Software auf meinem µC läuft, denn wenn ich eine einzelne LED mit 
entsprechendem Vorwiderstand als Last einbaue funktioniert es tadellos. 
PWM Frequenz: 60Hz, Duty Cycle zwischen 0 und 100% einstellbar.

Zum Problem: Hänge ich als Last eine 2m lange LED-Lichterkette 
(heutzutage auch LED-Stripe genannt), die direkt für 12V ausgelegt ist 
(also immer mehrere LED's in Reihe mit Vorwiderstand, dann die nächsten 
dazu parallel) funktioniert es nicht mehr. Es gibt nur noch AN oder AUS, 
je länger ich die Schaltung betreibe desto schlimmer wirds, sprich 
irgendwann ist auch bei 0% Duty Cycle die LED-Kette bei voller 
Helligkeit an.

Klingt für mich nach einer Kapazität, die sich aufläd (vielleicht die 
GateKapazität?)

Abhilfe?

von Daniel (Gast)


Lesenswert?

... der Pulldown-Widerstand hat 10k...

von Alex S. (thor368)


Lesenswert?

Tach Daniel,

> aber meiner ist (hoffe ich) ein wenig anders.
nein ist er nicht aber das scheint auch kein spezifisches Problem mit 
der PWM zu sein.

> Klingt für mich nach einer Kapazität, die sich aufläd (vielleicht die
> GateKapazität?)
Schon gecheckt ob das Gate auch tatsächlich mit dem Widerstand und der 
mit dem Portbit verbunden ist?

Als zweites kann ich mir noch vorstellen, dass der strip schon 
Elektronik mit drin hat. Vielleicht sogar einen Konstantstromregler. Der 
würde deine Bemühungen per Spannung die Helligkeit zu dimmen weitgehend 
neutralisieren.

Ein weiterer Effekt ist, dass das Auge Helligkeiten logaritmisch 
skaliert. Ein Sprung von 5% auf 10% PWM und von 95% auf 100% sind zwar 
beide eine Erhöhung um den selben Prozentwert wirken auf das Auge aber 
völlig verschieden. Im unteren Bereicht ist das Auge einfach viel 
empfindlicher als weiter oben.

Thor

von Valentin B. (nitnelav) Benutzerseite


Lesenswert?

Könntest du bitte auch den Quellcode anhängen?
Die Schaltung sieht (aus meiner Perspektive) schon mal ganz ok aus.

Hast du schon mal nur eine LED statt eine Lichterkette an das Gerät 
angeschlossen?

Mit freundlichen Grüßen,
Valentin Buck

von S. T. (cmdrkeen)


Lesenswert?

>>irgendwann ist auch bei 0% Duty Cycle die LED-Kette bei voller Helligkeit an.

Das glaube ich nicht, denn 0% Duty Cycle bedeutet aus.

Was du versuchen kannst ist dir eine Last zu basteln, die ungefähr der 
LED-kette entspricht und die Schaltung damit probieren.

Wenn höhere Ströme fließen kann einem ne schlechte Masseführung (lange 
Kabel) schon mal ins Handwerk pfuschen.

von Daniel (Gast)


Lesenswert?

Alex S. schrieb:
> Schon gecheckt ob das Gate auch tatsächlich mit dem Widerstand und der
> mit dem Portbit verbunden ist?

Jap, ist es!

> Als zweites kann ich mir noch vorstellen, dass der strip schon
> Elektronik mit drin hat. Vielleicht sogar einen Konstantstromregler. Der
> würde deine Bemühungen per Spannung die Helligkeit zu dimmen weitgehend
> neutralisieren.

Nein, es handelt sich um einen solchen Strip, der alle paar cm kürzbar 
ist. Man sieht recht gut immer 3(?) LED's und einen SMD-Widerstand. Mehr 
ist da definitiv nicht!

> Ein weiterer Effekt ist, dass das Auge Helligkeiten logaritmisch
> skaliert. Ein Sprung von 5% auf 10% PWM und von 95% auf 100% sind zwar
> beide eine Erhöhung um den selben Prozentwert wirken auf das Auge aber
> völlig verschieden. Im unteren Bereicht ist das Auge einfach viel
> empfindlicher als weiter oben.

Ist mir klar, erklärt aber nicht die volle Helligkeit bei 0% und auch 
nicht dass ich GAR nicht dimmen kann.

Valentin Buck schrieb:
> Könntest du bitte auch den Quellcode anhängen?
> Die Schaltung sieht (aus meiner Perspektive) schon mal ganz ok aus.

jo...
handelt sich um einen Attiny26, die PWM wollt ich rein aus Interesse 
selbst bauen und nicht den fertigen PWM-Timer nehmen, der dann einen PIN 
direkt ansteuern kann...
Hab mit dem Timer-Prescaler rumgespielt. Aktuell müsste das ne 
PWM-Frequenz von 30Hz ergeben...
1
int main(void)
2
{
3
    ADC_Init();
4
  sei();
5
    TIMSK = (1<<TOIE1 | 1<<OCIE1A); 
6
  OCR1A = 0; 
7
  TCCR1B = (1<<CS13 | 1<<CS11 | 1<<CS10); 
8
    DDRA=0x02;
9
  TCNT1=0;
10
  
11
  uint16_t adc_value;
12
  adc_value=0;
13
  int test=12;
14
  while (1)
15
  {
16
    adc_value=ADC_Read(0);
17
    OCR1A=(uint8_t)(adc_value>>2);
18
  }
19
}
20
21
22
ISR(TIMER1_CMPA_vect)
23
{  
24
PORTA=0; //Ausschalten
25
}
26
27
ISR(TIMER1_OVF1_vect)
28
{  
29
PORTA=0x02; //Anschalten
30
}

> Hast du schon mal nur eine LED statt eine Lichterkette an das Gerät
> angeschlossen?
Jap, damit funktioniert es wie oben beschrieben einwandfrei und dimmt 
wie erwartet!

von Daniel (Gast)


Lesenswert?

S. T. schrieb:
>>>irgendwann ist auch bei 0% Duty Cycle die LED-Kette bei voller Helligkeit an.
>
> Das glaube ich nicht, denn 0% Duty Cycle bedeutet aus.

Richtig, das ist ja auch mein Problem. Die 0% hab ich eingestellt, nicht 
gemessen ;)


> Was du versuchen kannst ist dir eine Last zu basteln, die ungefähr der
> LED-kette entspricht und die Schaltung damit probieren.

okay..  werde ich morgen testen...

> Wenn höhere Ströme fließen kann einem ne schlechte Masseführung (lange
> Kabel) schon mal ins Handwerk pfuschen.

inwiefern? Was kann ich dagegen tun?
Mein Anschlusskabel ist ca. 1m von der Platine zu den LED's, dazu kommen 
eben noch die 2m LED-Kette...

von Alex S. (thor368)


Lesenswert?

Bei den Göttern! Umständlicher hast du dein PWM nicht zusammen gekriegt? 
Gibt es einen speziellen Grund für das interrupt Gewusel?

Eine Fehlerquelle ist auf jeden Fall das gleichzeitige Auftreten von 
Zwei interrupts. Das gibt einen crash und passiert wenn du versuchst 
100% PWM auszugeben.

Thor

von Daniel (Gast)


Lesenswert?

Alex S. schrieb:
> Eine Fehlerquelle ist auf jeden Fall das gleichzeitige Auftreten von
> Zwei interrupts. Das gibt einen crash und passiert wenn du versuchst
> 100% PWM auszugeben.

Gut, ich gebe zu, dass es nur eine ISR mit Zähler und Grenzwert wie im 
Tutorial auch getan hätte...
Erklärt aber das unterschiedliche Verhalten zwischen einzelner LED und 
Lichterkette nicht!

von Alex S. (thor368)


Lesenswert?

scop zur Hand? Schieß doch mal ein paar Fotos vom PWM. Wenn wirklich bei 
eingestellten 0% die LEDs leuchten liegt ein Programmfehler auf der 
Hand.

Nur um zu bestätigen, dass der strip keine Energie aus dem Subraum zieht 
häng doch mal zusätzlich eine einzelne LED mit Vorwiderstand an das 
Portbit. Die sollte sich ja doch hoffentlich gleich verhalten wie der 
strip der vom FET getrieben wird.

Außerdem kannst du dann mal nachsehen ob es einen Unterschied macht ob 
du den strip dran hast oder nicht. Quasi die einzelne LED im Auge 
behalten und den strip abwechselnd dran halten und wieder abnehmen. 
Eventuell macht dir auch die EMV das Leben schwer und der µC hängt sich 
auf, wenn du eine tatsächliche Last am FET hast.

Thor

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Wenn auch bei 0% Duty Cycle die LED-Streifen brennen, müsstest Du ja 
diesen Effekt auch dann sehen, wennn Du die Verbindung µC -> 50R 
trennst.

Wenn nein: Problem ist im Programm
Wenn ja:   MosFET verpolt?

von S. T. (cmdrkeen)


Lesenswert?

>> Wenn höhere Ströme fließen kann einem ne schlechte Masseführung (lange
>> Kabel) schon mal ins Handwerk pfuschen.
>
>inwiefern? Was kann ich dagegen tun?
>Mein Anschlusskabel ist ca. 1m von der Platine zu den LED's, dazu kommen
>eben noch die 2m LED-Kette...

interessant wäre ja noch wie die masse auf der platine verbunden ist... 
aber eigentlich sollte das nicht das problem sein.

evtl. bricht aber beim anschließen einer solch hohen Last deine 
versorgung zusammen und der µC ist die ganze Zeit am reseten.

von Joachim (Gast)


Lesenswert?

S. T. schrieb:
> evtl. bricht aber beim anschließen einer solch hohen Last deine
> versorgung zusammen und der µC ist die ganze Zeit am reseten.

Moin,
das wäre auch meine Idee gewesen. Ich hatte mal ähnliches Verhalten bei 
einem Haufen LEDs. Wenn ich aber nur die Hälfte angeschlossen hab, dann 
ging es. Der Fehler lag bei dem Billig-Schaltnetzteil, was die Schaltung 
versorgt hat. Das kam mit diesen "Lastsprüngen" nicht klar.
Geholfen hat ein dicker Elko zwischen SNT und der Schaltung.

Gruß

von Daniel (Gast)


Lesenswert?

Joachim schrieb:
> S. T. schrieb:
>> evtl. bricht aber beim anschließen einer solch hohen Last deine
>> versorgung zusammen und der µC ist die ganze Zeit am reseten.
>
> das wäre auch meine Idee gewesen. Ich hatte mal ähnliches Verhalten bei
> einem Haufen LEDs. Wenn ich aber nur die Hälfte angeschlossen hab, dann
> ging es. Der Fehler lag bei dem Billig-Schaltnetzteil, was die Schaltung
> versorgt hat. Das kam mit diesen "Lastsprüngen" nicht klar.
> Geholfen hat ein dicker Elko zwischen SNT und der Schaltung.

So, hab mir dann heute mal ein Oszi auf der Arbeit geliehen und damit 
war die Fehlersuche dann deutlich einfacher ;)

Es lag tatsächlich daran, dass der µC die ganze Zeit resettet hat, dies 
lag an einem defekten 5V Festspannungsregler auf meiner Schaltung. 
Dieser hatte im Leerlauf 6,2V, welche aber zusammenbrachen sobald ich 
den Pin angeschaltet hab, der ans Gate (bzw. an den Pulldown) geht.
Habe nun den Spannungsregler getauscht, der neue liefert konstante 5V 
auch bei Belastung.
Auch meine Software hab ich umgestrickt wie im AVR Tutorial hier auf der 
Seite und siehe da, ich kann meine LED-Kette wunderbar dimmen!

Vielen Dank für die vielen hilfreichen Tips!!

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.