Autor |
25 Rgb Leds per PWM regeln? Suche nach: rgb (2405) pwm (3620) |
|
|
|
|
BID = 620051
bastelheini Schriftsteller
Beiträge: 618 Wohnort: Sachsen
|
|
Hallo,
wie kann man am einfachsten ca 25 RGB LEDs per PWM regeln? Mit einem Prozessor a la ATmega128 wird das wohl eher nicht klappen oder?
Es werden ja 75 PWM Sigale benötigt?! Multiplexen würde zwar gehen, allerding kann ich die LEDs dann nicht mehr 100% leuchten lassen, da durch ein Multiplexen ja ein zweiter "PWM Effekt" entstehen würde.
Wie kann man das Problem am besten lösen? Ich möchte nicht wirklich ne Hand voll AVRs einbauen müssen?!
_________________
-----------------------------
---MfG Bastelheini---
----------------------------- |
|
BID = 620052
Kleinspannung Urgestein
Beiträge: 13367 Wohnort: Tal der Ahnungslosen
|
|
Willst du die 75 alle getrennt regeln können?
Oder nur von allen rgb getrennt?
_________________
Manche Männer bemühen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitätstheorie.
(Albert Einstein) |
|
BID = 620060
bastelheini Schriftsteller
Beiträge: 618 Wohnort: Sachsen
|
ursprünglich wollte ich jede RGB LED einzeln ansteuern können. Gibt also im schlimmsten Fall 75 Unterschiedliche PWM Verhältnisse.
Wenn das aber garnicht möglich ist hab ich mir überlegt könnte ich auch 30 nehmen und 3er Stränge machen. also 3 RGBs in Reihe. so bräuchte ich nur noch 30 PWM (10*3 Farben).
Dennoch erscheint mir auch die 30 recht hoch.
_________________
-----------------------------
---MfG Bastelheini---
-----------------------------
|
BID = 620062
Kleinspannung Urgestein
Beiträge: 13367 Wohnort: Tal der Ahnungslosen
|
Mach dich mal über DMX schlau...
_________________
Manche Männer bemühen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitätstheorie.
(Albert Einstein)
|
BID = 620064
bastelheini Schriftsteller
Beiträge: 618 Wohnort: Sachsen
|
hm das beschreibt doch nur das Protokoll zwischen mehreren Controllern oder?
Ich möchte aber Möglichst viel in einem Controller unterbringen, womit wenn möglich DMX erstmal wegfällt?!
_________________
-----------------------------
---MfG Bastelheini---
-----------------------------
|
BID = 620077
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Das ist für einen AVR in der Tat etwas viel.
Mit Multiplexing ginge es aber auch, man muss dann halt einen höheren Strom nehmen. Aber Vorsicht! Im DB nachschauen!
Und auch die Erzeugung der PWM dürfte interessant seien - ich würde sie per Software generieren (mit 20MHz Systemfrequenz) und ihn als Slave von einem anderen AVR ansteuern. Müsste man mal durchrechnen.
Achja, programmierbare Logik wäre für sowas auch garnicht mal verkehrt. (CPLD / FPGA) (Edit: für größere Matrizen sowieso!).
DMX hat damit nichts zu tun, verstehe auch den Hinweis nicht.
_________________
[ Diese Nachricht wurde geändert von: DonComi am 10 Jul 2009 23:34 ]
|
BID = 620182
bastelheini Schriftsteller
Beiträge: 618 Wohnort: Sachsen
|
hallo,
es soll zwar keine Matrix werden sondern eine Deckenbeleuchtung, macht aber von der Ansteuerung keinen Unterschied da man ja in dem Sinne eine Matrix ansteuert (x-y LEDs + z Farben)
Hm 20 MHz für einen AVR? Hab ja nur nen ATmega128 da sind nur 16MHz drinne (Es gibt auch 20 MHz Typen aber dazu habe ich ja kein Board)
Ja sicher würden sich CPLC und FPGAs besser eignen. Aber da müsste man sich ja wieder groß einarbeiten, drum meine Frage, ob man das nicht mit einem AVR noch hinbekommen könnte.
Gibts es ev. PWM ICs die man seriell oder ähnlich anspricht? Die dann zb. 4 PWM Kanäle haben? Oder eine andere Zahl?
Könnte man das Ganze durch den Einsatz von den speziellen Lightning AVRs vereinfachen?
http://www.atmel.com/dyn/products/p.....#1606
Diese verfügen über wesentlich mehr PWM Kanäle.
_________________
-----------------------------
---MfG Bastelheini---
-----------------------------
[ Diese Nachricht wurde geändert von: bastelheini am 11 Jul 2009 14:54 ]
|
BID = 620184
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Klar gibt es die.
Rechne doch mal aus, ob man es realistisch mit einem AVR hinbekommt. Alleine mit dessen Hardware-PWM-Generatoren jedenfalls nicht, da muss man schon eine eigene Software schreiben (in Assembler!).
Deine PWM muss ja nicht sehr hochauflösend sein.
So ließen sich schon viele PWM-Kanäle mit einem AVR mit vielen IO-Ports realisieren. Das Ganze dann als Slave ansteuern und gut ist.
Es als Matrix anzusteuern ergibt aber mehr Sinn. Bei ein paar LEDn mag das noch mit einzelner Ansteuerung klappen, bei großer Anzahl läuft es eigentlich immer auf eine Matrix hinaus.
Angenommen, du hast z.B. 10 Zeilen, die der Reihe nach durchgetastet werden. Eine LED hätte dann maximal einen Dutycycle von 10%. Wenn du diese LED aber nur 50% dieser Zeit einschaltest, und den Rest abschaltest, bekommst du einen noch niedrigeren Dutycycle, hier 5%. Und diese Abläufe lassen sich mit einem 'AVR noch hinbekommen, ist allerdings natürlich auch abhängig von der Zeilenfrequenz und der Auflösung der einzelnen AN-Zeiten. Ich bin z.B. grade dabei, mir einen eigenen Wecker zu bauen, weil ich mit den Standarddingern nicht klarkomme. Dort habe ich auch ein LED-Display, welches mit 1/6 Dutycycle maximal läuft und jede Segment-AN-Zeit nochmals in 32 Schritte (-> 5 Bit) zerlegt ist. Die Signalverläufe generiere ich mit Software, nebenbei kann man da noch genügend andere Dinge erledigen, obwohl es eine Software-PWM mit 6 Kanälen ist. Frequenz ist annähernd 9,6kHz.
_________________
|
BID = 620188
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| Angenommen, du hast z.B. 10 Zeilen, die der Reihe nach durchgetastet werden. Eine LED hätte dann maximal einen Dutycycle von 10%. |
Das vertragen die modernen LEDs aber nicht mehr bei voller Leistung. Die zulässigen Impulsströme liegen nur noch um ein geringes Vielfaches über dem Dauerstrom.
Ansonsten: 75x200Hz --> 15kHz. Das sollte ein einigermassen geübter Assemblerprogrammierer noch gut hinbekommen.
|
BID = 620193
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Hallo,
Sicher, man sollte vorher im Datenblatt nachschlagen, was man den LED maximal zumuten kann, ohne sie auf Dauer zu zerstören.
Achja, mein AVR dekodiert nebenbei noch DCF77, digitalisiert einen Fotowiderstandswert (als Referenz für das Tastverhältnis, linearisiert) und lässt sich per IR-FB oder Tasten stellen.
Ich asse es, tagsüber auf LED-Anzeigen kaum etwas lesen zu können, während man Nachts deswegen kaum einschlafen kann .
Systemtakt liegt bei 16MHz.
_________________
|
BID = 620239
bastelheini Schriftsteller
Beiträge: 618 Wohnort: Sachsen
|
|
BID = 620264
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Dieser CPLD hat viele IOs, das hat Vorteile. Ist aber ein CPLD, damit kann man vor allem effektiv kombinatore Logiksysteme synthetisieren. Du benötigst ja Zähler und Vergleichswerte und das ganze sehr oft. Kann sein, dass er dazu nicht genügend Ressourcen hat. Rein gefühlsmäßig sollte er es aber können.
FPGAs sind eher für sowas gedacht. Vorteil dieses CPLDs: er speichert die Kombinationen in einem eigenen Flash ab - das Laden der Konfiguration wie bei vielen FPGAs entfällt so.
---
Ein AVR würde aber reichen.
Du müsstest dich in ein komplett neues Gebiet einarbeiten. Nämlich die Beschreibung einer Schaltung, die dann auch synthetisiert werden muss. Das läuft, im Gegensatz zu sequentiellen Prozessoren alles parallel ab. Das ist etwas ganz anderes als z.B. ein AVR.
Ich würde da auf jeden Fall beim AVR bleiben. Fehlende Assemblermnemonics kannst du dir aus dem Datenblatt holen. Hier müsstest du eine komplett neue (Beschreibungs-)Sprache lernen (z.B. VHDL oder Verilog).
_________________
|
BID = 620405
bastelheini Schriftsteller
Beiträge: 618 Wohnort: Sachsen
|
noch eine andere Frage:
wie kann ich abschätzen, wieviele Software PWMs ich in einen AVR reinpacken kann?
Also der AVR soll Daten Empfangen (zb. RS232 etc) und diese dann Auswerten und in möglichst viele PWM Signale umwandeln. Wie bekomme ich nun raus wieviel Soft PWM Kanäle ich ohne Probleme programmieren kann?
Programmsprache soll BASCOM sein;)
_________________
-----------------------------
---MfG Bastelheini---
-----------------------------
|
BID = 620412
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| wieviel Soft PWM Kanäle ich ohne Probleme programmieren kann?
Programmsprache soll BASCOM sein;) |
Damit: Fast keine
- würde ich schätzen.
Bei optimaler Programmierung hängt es aber auch davon ab, wie gut die Hardware darauf vorbereitet ist.
Wenn man ein Dutzend Befehle braucht um ein Bit zur richtigen Zeit umzuschalten, wird auch bei Assemblerprogrammierung nicht viel von der möglichen Prozessorleistung übrigbleiben.
|
BID = 620432
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
perl deutete es an, ich schrieb es oben schon explizit: vergiss Basic, nimm direkt Assembler!
Zudem habe ich geschrieben, dass das genau davon abhängt, wie hoch die Auflösung der PWM sowie deren Frequenz ist. Das kann man sich schon relativ einfach herleiten. Dazu benötigt man logischerweise auch die Taktfrequenz.
Wenn du das errechnet hast, dann geht es ans Programm. Es muss so kodiert sein, dass einzelne Schritte so schnell erledigt werden, damit der nächste zur richtigen Zeit ausgeführt werden kann. Ergo sehr kompakt und man darf keine Klimmzüge machen. Also zum Setzen eines Bits z.B. nicht erst den Port einlesen, maskieren und neuschreiben sondern Operationen wie sbi oder ähnlich benutzen. Das spart einen Taktzyklus ein.
in 23, PORTD (1)
ori 23, 0x4 (1)
out PORTD, 23 (1)
im Gegensatz dazu:
sbi PORTD, 2 (2)
(Taktzyklen in Klammern).
Diese Instruktion z.B. funktioniert bis zu einer gewissen Adresse des IO-Ports. Bestimmte Timerregister z.B. kann man damit nicht mehr adressieren. Da muss man dann mit Speicherzugriffen ran.
_________________
|