Forum: Mikrocontroller und Digitale Elektronik 3 Rechtecksignale mit max. 10% Ontime und hoher Dynamik


von Sebastian (Gast)


Lesenswert?

Hallo Gemeinde,


wie würdet Ihr die drei Rechtecksignal im Mikrocontroller Attiny (mit 
zwei Timer 1x8Bit und 1x16Bit) erzeugen? Ich benötige eine hohe 
Einstelldynamik in den 10% Ontime und eine Frequenz um die 120 Hz, die 
möglichst stabil sein soll.

Das ganze soll zur Helligkeitsansteuerung einer RGB-LED verwendet 
werden. Die OnTime darf dabei nur maximal 10 Prozent sein und darf auf 
keinen Fall überschritten werden. Die Helligkeit (Ontime) kann ich via 
RS232 übergeben.

Irgendwie stehe gerade auf dem Schlauch. Wenn ich beim 16 Bit-Timer in 
Fast PWM Mode als OCR1A einen maximal Wert definiere (um sicher die max. 
10% Ontime einzuhalten), dann verliere ich viele Bits an Dynamik bei der 
Helligkeitsansteuerung.
Der CTC-Modus ist auch mit sehr viel Rechnerei verbunden. Speziell dann, 
wenn ich mit einem Timer 2 Rechtecksignale erzeugen will.

Welchen Timer Modus würdet Ihr wählen? Oder gibt es da einen Trick, wie 
man die Dynamik in den 10% erhöht? Würd' mich über Tipps sehr freuen,
Sebastian

von Andreas B. (bitverdreher)


Lesenswert?

Hi,
warum soll die ontime max 10% werden?
Ich befürchte, Du verrennst Dich da in irgend etwas.
Definiere mal das eigentliche Problem.

Gruß
Andreas

von AVR (Gast)


Lesenswert?

120hz und 3 Kanäle kan der auch mit SoftwarePWM -> Artikelübersicht

von Wolfgang (Gast)


Lesenswert?

Sebastian schrieb:
> Die OnTime ... darf auf keinen Fall überschritten werden.
Dann brauchst du eine hardwaremäßige Einschaltzeitbegrenzung in Form 
eines Monoflops, die per Und-Funktion mit deinem µC-Ausgang verknüpft 
ist.

von Sebastian (Gast)


Lesenswert?

Danke für die schnellen Antworten:

aus der RGB-LED kann man eine höhrere Lumenzahl herauslocken, wenn man 
Sie mit gepulstem Konstantstrom betreibt. Bei 100Hz wäre eine zulässig 
maximale Ontime 1ms.

Somit bräuchte ich einen ersten Timer der alle 10ms einen Overflow 
generiert, um die Grundfrequenz von 120 Hz einzustellen. So jetzt 
brauche ich eine Möglichkeit die Ontime sehr granular einzustellen. Wohl 
über einen zweiten Timer. Der vom ersten gestartet wird.

Jetzt habe ich meinen Denkfehler erkannt! Ich kann den Timer 2 ja 
dreimal starten! Jeweils neu für eine Farbe. Dann werden die Farben halt 
nacheinander eingeschalten! Das ist mit dem Auge nicht zu erkennen! Dann 
kann ich den Timer2 sehr granular einstellen. Und dreimal max. 1ms ist 
deutlich kleiner als 10ms. Sollte klappen. Hier wäre evtl. der CTC Mode 
mal gut?!

Was haltet Ihr von der Idee? Oder habt Ihr weitere Vorschläge?

VG,
Sebastian

von Andreas B. (bitverdreher)


Lesenswert?

Hi,
so etwa würde ich es angehen:
Ein Timerinterrupt, der 10x so langsam ist wie die PWM, die Du mit CTC 
erzeugen willst. Dann in diesem Interupt die CTC Register für jeden 
Zyklus neu laden.

Du solltest aber darauf achten, daß Du den Spitzenstrom Deiner LED nicht 
überschreitest (und nein, das ist in diesem Fall nicht 10 * Imax., 
sondern steht im Datenblatt).
Deshalb meine Bedenken...

Gruß
Andreas

von Sebastian (Gast)


Lesenswert?

Hallo,

hab' mir gerade noch den oben vorgeschlagenen Artikel durchgelesen.

http://www.mikrocontroller.net/articles/AVR-Tutorial:_PWM

Hier wird auch die Methode vom Andreas B. vorgeschlagen (siehe Software 
PWM). Ich wünsche mir aber eine Auflösung 1000 Schritten innerhalb von 1 
ms. Somit würde ich jede Mikrosekunde einen Interrupt erzeugen. Da würde 
ich meinen Mikrocontroller ganz schön zu nageln. Selbst bei 100 
Schritten würde ich noch alle 10us einen Interrupt erzeugen.

Bei meiner oben vorgeschlagenen Variante gehe ich recht verschwenderisch 
mit den Timern um... :-(    Aber es erscheint mir als absolut sicher.

@Andreas B.: Danke für Deinen Tip, laut LED-Datenblatt kann der gepulste 
Vorwärtsstrom 4mal so groß sein wie der Dauerstrom.

Wrüde mich über weitere Vorschläge und Diskussion freuen.

Sebastian

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Sebastian schrieb:
> @Andreas B.: Danke für Deinen Tip, laut LED-Datenblatt kann der gepulste
> Vorwärtsstrom 4mal so groß sein wie der Dauerstrom.
>
> Wrüde mich über weitere Vorschläge und Diskussion freuen.

Was versprichst du dir von deinem Vorhaben?

Du willst für ein Zehntel der Zeit den vierfachen Strom durch die LED 
schicken um sie heller leuchten zu lassen?

Unterm Strich wirds dunkler!

von Ulrich (Gast)


Lesenswert?

Bei den meisten LEDs ist der ggf. mögliche Helligkeitsgewinn durch einen 
gepulsten Betrieb gering, sofern man es überhaupt einen gibt. Einen 
Nennenswert besseren Wirkungsgrad bekommt man ggf. bei sehr kleinem 
mittleren Strom (z.B. 0,1 mA), aber nicht in der Nähe des Nennstromes.

Für mehr Helligkeit sollte man bessere LEDs nehmen oder ggf. die Kühlung 
verbessern, dann kann man ggf. auch mal 25 mA statt 20 mA nehmen.

von Sebastian (Gast)


Lesenswert?

Hallo Magnus,

größere Helligkeit bei gepulster LED?! Also ich selber habe ich es noch 
nicht ausprobiert. Und das Thema wird immer wieder heiß diskutiert z.B.

Beitrag "LED Kennlinie: gepulster Betrieb/mehr Strom = mehr Helligk.?"

Erfahrungswerte von Euch?! Ich werde meine Posten sobald verfügbar.

Sebastian

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Sebastian schrieb:
> größere Helligkeit bei gepulster LED?! Also ich selber habe ich es noch
> nicht ausprobiert.

Aber genau DAS willst du ja scheinbar erreichen, oder?

Sebastian schrieb:
> aus der RGB-LED kann man eine höhrere Lumenzahl herauslocken, wenn man
> Sie mit gepulstem Konstantstrom betreibt.

von T. roll (Gast)


Lesenswert?

Was soll das Auswinden der LED? Man kann immer Leistung gegen 
Lebensdauer tauschen.

von Sebastian (Gast)


Lesenswert?

Also es ist zum verrückt werden. Hab' jetzt mal gegoogelt zwecks 
Helligkeitsgewinn durch Pulsen, ohne ein echtes Ergebnis gefunden zu 
haben.

von Andreas B. (bitverdreher)


Lesenswert?

Vermutlich gibt es keins. ;-)

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Sebastian schrieb:
> Also es ist zum verrückt werden. Hab' jetzt mal gegoogelt zwecks
> Helligkeitsgewinn durch Pulsen, ohne ein echtes Ergebnis gefunden zu
> haben.

Selbst wenn du mit dem vierfachen Strom die vierfache Helligkeit 
erzielen würdest (was in der Realität nicht möglich ist), so erhieltest 
du durch eine PWM mit maximal 10% On-Time nur 40% der Helligkeit im 
Vergleich zur Ansteuerung mit Nennstrom und 100% On-Time.

von Sebastian (Gast)


Lesenswert?

Naja, in manchen Foren wird dann mit der Trägheit des Auges 
argumentiert, welches die "Lichtblitze zwischenspeichert"... Irgendwie 
nachvollziehbar, aber ich kann aktuell dazu nichts weiter sagen.

von Wolfgang (Gast)


Lesenswert?

Magnus M. schrieb:
> Selbst wenn du mit dem vierfachen Strom die vierfache Helligkeit
> erzielen würdest (was in der Realität nicht möglich ist), so erhieltest
> du durch eine PWM mit maximal 10% On-Time nur 40% der Helligkeit im
> Vergleich zur Ansteuerung mit Nennstrom und 100% On-Time.

Du meinst "mittlere Helligkeit". In Anwendungen, wo es auf die 
Maximalhelligkeit ankommt (z.B. bei Fernbedienungen), hat der gepulste 
Betrieb mit kleinem Tastverhältnis deutliche Vorteile.

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

@Wolfgang:

In seinem Fall gehts wohl um eine Beleuchtungsgeschichte:

Sebastian schrieb:
> Das ist mit dem Auge nicht zu erkennen!

von Sebastian (Gast)


Lesenswert?

Bei technischen Anwendungen wie Fernbedienung, Lichtschranken etc. ist 
es offensichtlich, dass eine gepulste LED sehr viel bringt. In meiner 
Anwendungen geht es tatsächlich um eine einfache Raumbeleuchtung...

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

@Sebastian:

Was hindert dich denn daran, deine LEDs mit Nennstrom und einer 0-100% 
PWM zu betreiben?

von Andreas B. (bitverdreher)


Lesenswert?

Er glaubt, eine höhere Lichtausbeute damit zu erreichen.

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Andreas B. schrieb:
> Er glaubt, eine höhere Lichtausbeute damit zu erreichen.

Dass er diesem Irrglauben verfallen ist, hat sich ja mittlerweile längst 
herausgestellt.

von Carsten R. (kaffeetante)


Lesenswert?

- Man nehme einen 10-bit-Timer mit  1 MHz
- Man nehme den Overflow- UND den Compare-Interrupt.
- Im Compare-Register steht Dein 10-Bit-Wert.
- Jeder Compare Match deaktiviert nach der Ausführung den Copamre
  Interrupt. Das Ding schaltet sich also selbst ab.
- Der Overflow hat nur die Aufgabe bis 10 zu Zählen und dann auf 0
  zurück zu gehen und gleichzeitig den Overflow wieder scharf zu
  schalten.

fertig

Schwächen:
10 Bit sind 1024 und nicht 1000. Wenn es stört muß man ein bissl 
anpassen.

Eventuell ist hier und da noch ein bisschen Feinschliff notwendig.
Aber dies soll ja auch nur ein Konzept und keine Fertiglösung sein.

von Andreas B. (bitverdreher)


Lesenswert?

> Dass er diesem Irrglauben verfallen ist, hat sich ja mittlerweile längst
herausgestellt.

Naja, prinzipiell ist das schon denkbar.
Aber eben nicht so in diesm Maße, wie der TO sich das vorstellt.
Wenn man die LEDs z.B. statt mit 1A 100% PWM mit 2A und mehr als 50% PWM 
(sagen wir mal 60%) betreibt, wäre es vorstellbar, dass die LED das bei 
vergleichbarer Lebensdauer mitmacht.
Das würde ich aber auch nur dann machen, wenn das Datenblatt das 
hergibt.

Gruß
Andreas

von Wolfgang (Gast)


Lesenswert?

Andreas B. schrieb:
> Wenn man die LEDs z.B. statt mit 1A 100% PWM mit 2A und mehr als 50% PWM
> (sagen wir mal 60%) betreibt, wäre es vorstellbar, dass die LED das bei
> vergleichbarer Lebensdauer mitmacht.

Dabei kämpft man immer noch gegen die Verringerung des Wirkungsgrads bei 
Erhöhung des Stromes.
Die Helligkeit einer typischen 11Cd-LED, bei 20mA normiert auf 1, 
liefert bei 50mA das Doppelte und bei 100mA das Dreifache, i.e. der 
Wirkungsgrad sinkt auf 60% des bei 20mA gemessenen Wertes.

von Andreas B. (bitverdreher)


Lesenswert?

Der Wirkungsgrads sinkt dabei natürlich. Das gilt aber immer, wenn man 
LEDs an der Grenze (und weit vorher) betreibt.
Aber so ist das eben, wenn man kein Geld für ordentlich dimensionierte 
LEDs ausgeben möchte. Das zahlt man dann halt später dem EV.

Gruß
Andreas

von Sebastian (Gast)


Lesenswert?

@Carsten R.
vielen Dank für den Tipp. Das Konzept super und spart einen Timer ein. 
Um die drei Farben anzusteuern (Pulsbetrieb) müsste ich dann nur drei 
Comparewerte nacheinander abarbeiten. In etwa so:

TimerOverflow 0: Lade Compare-Wert für Rot
TimerOverflow 1: Lade Compare-Wert für Grün
TimerOverflow 2: Lade Compare-Wert für Blau
TimerOverflow 3: Inkrement
TimerOverflow 4: Inkrement
TimerOverflow 5: Inkrement
TimerOverflow 6: Inkrement
TimerOverflow 7: Inkrement
TimerOverflow 8: Inkrement
TimerOverflow 9: Inkrement
TimerOverflow 10: Setze Zähler zurück und starte bei TimerOverflow 0

Das sollte so klappen.

Jetzt ist bloss noch die Frage offen, ob sich der Aufwand lohnt noch mal 
die SW umzuschreiben. Irgendwie habe ich das Gefühl, dass die meiste 
hier meinen es bringt nichts die LEDs zu pulsen um eine höhere 
Helligkeit zu erreichen. Zumindest in meiner Anwendung nicht.

Warum werden dann die LED-Rücklichter bei Autos gepulst betrieben?

VG,
Sebastian

von Carsten R. (kaffeetante)


Lesenswert?

Das ist ein Overflow zuviel. 0 bis 10 sind in der Summe 11.

Beachte wann der neue Compare-Wert geladen wird. Wenn der Overflow 
kommt und die ISR startet, ist der Timer je nach Teiler/Prescaler im 
nächste Zyklus. Dann wird der neue Compare Wert erst für den Folgezyklus 
übernommen, wenn er durch den Overflow geladen wird. Dadurch wird alles 
um einen Zyklus zeitversetzt. Das sollte Dir eigentlich egal sein. Aber 
man sollte es im Hhinterkopf behalten, sollten Merkwürdigkeiten 
auftreten wenn die Software noch andere Sachen macht. Daher wäre es in 
dem Falle dann besser, wenn der neue Compare-Wert schon durch die 
Compare-ISR geladen wird.

Sebastian schrieb:
> Irgendwie habe ich das Gefühl, dass die meiste
> hier meinen es bringt nichts die LEDs zu pulsen um eine höhere
> Helligkeit zu erreichen. Zumindest in meiner Anwendung nicht.
>
> Warum werden dann die LED-Rücklichter bei Autos gepulst betrieben?

Das macht man auch nicht um die Dinger heller zu bekommen, sondern um 
die Leistung zu drosseln und um sie dunkler zu bekommen, ohne die 
Spannung runterregeln zu müssen.

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.