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?
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
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
>>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.
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
intmain(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_tadc_value;
12
adc_value=0;
13
inttest=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!
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...
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
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!
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
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?
>> 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.
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ß
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!!