Forum: Mikrocontroller und Digitale Elektronik "PWM-IC" oder wie PWM erzeugen? (10bit+, 200Hz, 8 Kanäle)


von Julian W. (julian-w) Benutzerseite


Lesenswert?

Hallo,
da ich momentan an einem RGB-LED-Projekt arbeite und mittels PWM dimme, 
bräuchte ich einen "PWM-IC". Bisher machte ich das ganze mit einem 
Atemga8, jedoch ist der bei einer 10bit PWM mit 200Hz recht stark 
ausgelastet, und wenn ich dann alle PWM-Kanäle (8) mit 40Hz update, geht 
gar nichts mehr.

Die 10bit sind eigentlich schon ein Kompromiss, lieber wären mir 12bit 
oder noch mehr. Die 200Hz sind eigentlich akzeptabel, obwohl man bei 
geringer Helligkeit, wenn man etwas schnell vorbei geht, unter Umständen 
ein flackern sieht. Aber momentan würden mir die 200Hz dicke reichen.

Von daher wollte ich mal wissen, wie ich am besten PWM-Signale erzeugen, 
oder ob ihr mir sowas wie einen "PWM-IC" empfehlen könnt, der für privat 
gut zu besorgen ist und nicht ein kleines Vermögen kostet. Als 
Ausstattung steht mir leider nur "Standard Atemga"-Material zur 
Verfügung, also nichts besonderes, zum programmieren nutze ich den 
ISP-Adapter von ulrichradig.de

Ein paar Eckdaten wären:
-min. 8 Kanäle
-~200Hz
-10bit und mehr
-Updaterate: ~40Hz
-digitale Ansteuerung (SPI, I2C, ...)

Hab natürlich etwas das Forum durchsucht, da wurde dann z.B. ein CPLD 
vorgeschlagen, nur leider habe ich davon absolut keine Ahnung, weder wie 
ich die Programmiere noch wie ich das Programm da "rein brenne" 
geschweige denn Ausstattung dazu.

Und die ICs, die ich bis jetzt gefunden haben, sind leider für mich 
nicht beschaffbar, wie MBI5030 oder die Bauteile von hier:
http://focus.ti.com/paramsearch/docs/parametricsearch.tsp?family=analog&familyId=480&uiTemplateId=NODE_STRY_PGE_T

Was ich sonst noch so gefunden habe, wäre z.B. einfach einen CortexM3 
oder ähnliches einzusetzen, der einfach mit einem entsprechende hohem 
Takt läuft, aber davon hab ich dann auch weder Erfahrung/Ahnung noch 
Ausstattung.

Hoffe, ihr könnt mir da ein wenig helfen.

Viele Grüße
Julian

von Falk B. (falk)


Lesenswert?

TLC5940 & C0 von Texas Instruments

von Julian W. (julian-w) Benutzerseite


Lesenswert?

Falk Brunner schrieb:
> TLC5940 & C0 von Texas Instruments

Danke, endlich ein IC, den ich über den HBE-Shop beziehen kann. Ist zwar 
nicht ganz günstig, hat aber alles, was ich brauche :) :) :)

Viele Dank, bist meine Rettung ;)

von Karl H. (kbuchegg)


Lesenswert?

Julian W. schrieb:
> Falk Brunner schrieb:
>> TLC5940 & C0 von Texas Instruments
>
> Danke, endlich ein IC, den ich über den HBE-Shop beziehen kann. Ist zwar
> nicht ganz günstig, hat aber alles, was ich brauche :) :) :)

Tip.
Bis zu 5 Muster kannst du auch bei TI sampeln.

Wenn du heute das Formular ausfüllst, hast du sie spätestens am Freitag 
am Schreibtisch. Kostenfrei.

von Julian W. (julian-w) Benutzerseite


Lesenswert?

Karl heinz Buchegger schrieb:
> Julian W. schrieb:
>> Falk Brunner schrieb:
>>> TLC5940 & C0 von Texas Instruments
>>
>> Danke, endlich ein IC, den ich über den HBE-Shop beziehen kann. Ist zwar
>> nicht ganz günstig, hat aber alles, was ich brauche :) :) :)
>
> Tip.
> Bis zu 5 Muster kannst du auch bei TI sampeln.
>
> Wenn du heute das Formular ausfüllst, hast du sie spätestens am Freitag
> am Schreibtisch. Kostenfrei.

Gut, mir würden 3 reichen, da die ja 16 Kanäle haben. Einer zum 
Einbauen, einer als Reserve und den anderen, mal seh'n ;)

Noch eine kurze Frage zu dem TLC5940:
Dieser wird ja über ein externes Takt-Signal getaktet, also für 200Hz 
PWM-Frequenz müssen etwa 820kHz anliegen. Danach wird ja Blank 
ausgelöst. Muss ich nach jedem Blank die PWM-Werte neu in den TLC5940 
schreiben?

Und noch was. Die RGB-Leds treibe ich über extra KSQ, die natürlich 
einen hochohmigen Enable Eingang haben, von daher würde mir doch der 
PWM-Modus reichen und die Dot Correction kann ich getrost ignorieren, da 
der TLC5940 ja nicht als Stromquelle dient. Aber das dürfte dem TLC5940 
ja nichts ausmachen, dass dann nahezu kein Strom fließt.

Auf jeden Fall schon mal Danke für eure Hilfe :)

von Karl H. (kbuchegg)


Lesenswert?

Julian W. schrieb:

> Gut, mir würden 3 reichen, da die ja 16 Kanäle haben. Einer zum
> Einbauen, einer als Reserve und den anderen, mal seh'n ;)

:-)

> Noch eine kurze Frage zu dem TLC5940:
> Dieser wird ja über ein externes Takt-Signal getaktet, also für 200Hz
> PWM-Frequenz müssen etwa 820kHz anliegen.

Nimm den TLC5947. Der hat auch noch den Takt intern und 24 Kanäle.

> Danach wird ja Blank
> ausgelöst. Muss ich nach jedem Blank die PWM-Werte neu in den TLC5940
> schreiben?

Nein.
Blank gibt nur die Ausgangstreiber frei. Die eigentliche PWM Generierung 
ist davon nicht betroffen.

> Und noch was. Die RGB-Leds treibe ich über extra KSQ, die natürlich
> einen hochohmigen Enable Eingang haben,

den 5940 kenn ich nicht.
aber der 5947 hat auch die KSQ eingebaut. Leider nur für alle Kanäle 
denselben Strom, aber immerhin

> von daher würde mir doch der
> PWM-Modus reichen und die Dot Correction kann ich getrost ignorieren, da
> der TLC5940 ja nicht als Stromquelle dient. Aber das dürfte dem TLC5940
> ja nichts ausmachen, dass dann nahezu kein Strom fließt.
>
> Auf jeden Fall schon mal Danke für eure Hilfe :)

von Julian W. (julian-w) Benutzerseite


Lesenswert?

Also der TLC5947 sieht auch sehr interessant aus. Mit welcher 
PWM-Freqzenz läuft der dann, hab den Wert im Datenblatt noch nicht 
gefunden.
Was mich nur wunder ist, warum der auch einen "Blank"-Leitung hat!?

Auf jeden Fall viele Dank für die Tipps :)

von Julian W. (julian-w) Benutzerseite


Lesenswert?

So, hab mich etwas über den TLC5947 eingelesen und hab nun noch eine 
Frage dazu, dafür hat sich die Frage mit der "Blank"-Leitung erledigt ;)

Sehe ich das so richtig:
Wenn ich neue PWM-Daten in den TLC5947 schiebe, dann muss ich, nachdem 
ich die Daten reingeschoben habe, die Blank-Leitung aktivieren, damit 
die PWM von vorne startet. Ansonsten würde das ganze wohl flackern, weil 
der TLC5947, sobald er neue PWM-Daten bekommt, einfach alle Ausgänge auf 
LOW schaltet, bis die PWM von alleine durchläuft.

Schafft dass den z.B. ein Atmega8 überhaupt, da Falk hier
Beitrag "Re: TLC5947 ansteuern, dass kein Flackern entsteht"
meinte, dass die AVRs da etwas überfordert sein könnten. Immerhin soll 
bei meinem Projekt der AVR nicht nur PWM-Daten ausgeben, sondern diese 
auch mittels CAN empfangen.

Und welches Schema muss man da einhalten??? Angenommen, ich aktualisiere 
die Daten mit 50Hz, dann dürfte es doch nichts machen, wenn ich 50mal in 
der Sekunde die PWM zurücksetzte, um die Daten zu updaten, oder hab ich 
da jetzt einen Denkfehler?
Ansonsten, wie kann ich das ganze denn dann synchron bekommen, so dass 
ich z.B. ab dem 4000 Takt anfange, die PWM-Daten zu aktualisieren?

von Falk B. (falk)


Lesenswert?

@  Julian W. (julian-w) Benutzerseite

>Schafft dass den z.B. ein Atmega8 überhaupt, da Falk hier
>Beitrag "Re: TLC5947 ansteuern, dass kein Flackern entsteht"
>meinte, dass die AVRs da etwas überfordert sein könnten.

Könnte, wenn man es rein in Software macht. Mit einem Timer und der 
Output-Compare Funktion geht es spielend.

>Und welches Schema muss man da einhalten??? Angenommen, ich aktualisiere
>die Daten mit 50Hz, dann dürfte es doch nichts machen, wenn ich 50mal in
>der Sekunde die PWM zurücksetzte, um die Daten zu updaten, oder hab ich
>da jetzt einen Denkfehler?

Naja, es sollte synchron zur PWM sein, sonst könnte es ggd. komisch 
flackern.

>Ansonsten, wie kann ich das ganze denn dann synchron bekommen, so dass
>ich z.B. ab dem 4000 Takt anfange, die PWM-Daten zu aktualisieren?

Mit dem einfachen TLC5940. Ein Timer gibt den Takt von 820 kHz aus, ein 
zweiter Timer macht dir dein 5ms Intervall, in dem du den TLC nachlädst. 
Ist nicht viel anders als normales LED-Multiplexen.

MFG
Falk

von Karl H. (kbuchegg)


Lesenswert?

Falk Brunner schrieb:
> @  Julian W. (julian-w) Benutzerseite
>
>>Schafft dass den z.B. ein Atmega8 überhaupt, da Falk hier
>>Beitrag "Re: TLC5947 ansteuern, dass kein Flackern entsteht"
>>meinte, dass die AVRs da etwas überfordert sein könnten.
>
> Könnte, wenn man es rein in Software macht. Mit einem Timer und der
> Output-Compare Funktion geht es spielend.

Da ich auch erst diese Woche meinen ersten 5947 verdrahtet habe aber 
noch nicht getestet habe, hab ich da noch keinen Anhaltspunkte.

Darf ich nachfragen:
Du meinst nach ddem raustakten, nach dem XLAT, mit dem Timer einen PWM 
Zyklus abwarten und erst dann den Blank hinten nachschieben.
Korrekt?



(Ich könnt mich in den A. beissen. der 5947 will nach GND sinken und ich 
hab RGB-LED mit gemeinsamer Kathode. Grrrr. Bin erst drauf gekommen 
nachdem ich 2 Stunden lang die 9 Fädeldrähte an die Pins gefummelt 
habe.)

von Julian W. (julian-w) Benutzerseite


Lesenswert?

Gut, dann werd ich wohl den TLC5940 nehmen, 16 Kanäle reiche mir auch 
locker aus^^

Noch eine Frage zu den Samples:
Auf
http://focus.ti.com/docs/prod/folders/print/tlc5940.html
gibt es mehre Variaten von dem TLC5940, einmal TLC5940NT und 
TLC5940NTG4.
Erst mal gehe ich doch hoffentlich recht der Annahme, dass diese in DIP 
sind, also für Lochraster geeignet sind.
Doch was ist der Unterschied. Ich kann eigentlich keinen finden!?

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.