I hve read the Datasheet.
I have not tested it but until now
54 Kanal WS2803 Dimmer Layout Prüfung
-
-
What the maximum current allowed to pass through the port of vs2803?
30mA or greater? -
I am nor sure but the WS2803 has 30mA for any port.
But these are indeed fundamentally the mosfets on it because they have 3 amps and the performance is sufficient for most applications. -
Hi,
hab mal eben 56 Software PWM Kanäle mit 200Hz - 8Bit mit einem Atxmega128A1 realisiert.
wäre für sowas eigentlich schon ne Alternative
Gruß Flo
-
Das ist auf jeden Fall interessant
, aber eine Diskussion hierüber in diesem Thread dann doch o.t.magst Du das mal bei "LED Schaltungen, µC und Treiber" vorstellen...? - würde mich schon interessieren, wie das aussieht, welche Prozessorlast, etc. - auf nem AVR mit 20 MHz wären das 7 Takte pro Kanal, schon machbar, aber der ist dann zum großen Teil damit beschäftigt - k.A. wie's mit Xmega aussieht, bietet der da Vorteile (höhere Taktfrequenz o.ä.)...?
aber das dann eben besser in nem eigenen Thread...
noch mehr o.t.: hat meine PN eigentlich irgendwie was geholfen? - auf welche Ergebnisse kommst Du...?
-
Naja wäre Schon ne Alternative aber wenn der MC sich um die 54 Kanäle kümmern soll hat er sicherlich keine zeit mehr sich um Sachen wie Bluetooth oder DMX/MDMX zu Kümmern so das Alles Fehlerfrei läuft oder sehe ich das Falsch.
-
Das Gespräch hatten wir hier doch schon....

hängt wie gesagt von ein paar Parametern ab: Hier mal angenommen 20 Mhz Takt, 200 Hz PWM-Frequenz, Auflösung 8 Bit
dann musst Du alle 20.000.000 / 200 / 255 = 392 Takte die SW-PWM-ISR aufrufen.
dort zumindest das Statusregister sichern, und den PWM-Zähler weiter zählen, nen Pointer auf's RAM setzen, plus Aufruf und Return macht grob 20 Takte.
pro Kanal musst Du dann nen Wert aus dem RAM holen, mit dem PWM-Zähler vergleichen, und je ob größer oder kleiner die LED an- oder ausschalten..
geht am schnellsten so (das wäre für 8 Kanäle, also einen ganzen Port):
Code
Alles anzeigenld temp0, Z+ ; Wert holen cp temp0, pwm_count ; mit PWM-Zähler vergleichen rol temp1 ; Bit setzen ld temp0, Z+ ; Wert holen cp temp0, pwm_count ; mit PWM-Zähler vergleichen rol temp1 ; Bit setzen ld temp0, Z+ ; Wert holen cp temp0, pwm_count ; mit PWM-Zähler vergleichen rol temp1 ; Bit setzen ld temp0, Z+ ; Wert holen cp temp0, pwm_count ; mit PWM-Zähler vergleichen rol temp1 ; Bit setzen ld temp0, Z+ ; Wert holen cp temp0, pwm_count ; mit PWM-Zähler vergleichen rol temp1 ; Bit setzen ld temp0, Z+ ; Wert holen cp temp0, pwm_count ; mit PWM-Zähler vergleichen rol temp1 ; Bit setzen ld temp0, Z+ ; Wert holen cp temp0, pwm_count ; mit PWM-Zähler vergleichen rol temp1 ; Bit setzen ld temp0, Z+ ; Wert holen cp temp0, pwm_count ; mit PWM-Zähler vergleichen rol temp1 ; Bit setzen out PWM_Port_1, temp1
Prinzip: Du vergleichst den Wert mit dem Counter, ist er kleiner, wird also das Carry gesetzt, mit rol temp1 überträgst Du das in das auszugebende Byte, also LED ansind dann also pro Kanal 4 Takte (2 für ld, 1 für cp, 1 für rol) + alle 8 Kanäle noch mal 1 Takt (Byte ausgeben)
macht dann für 56 Kanäle insgesamt 7x33 (7 8er-Gruppen) + 20 Takte = 251 Takte
es bleiben also nach jedem Timer-Aufruf noch 141 Takte über, um was anderes zu machen (DMX oder Mini-DMX empfangen z.B.)
das haut schon hin, die Empfangsroutine selbst braucht auch nur ca. 30-40 Takte (oder sogar weniger), und es kommt ja nicht nach jedem Timer-Aufruf ein Byte rein...
letztlich ist der µC dann zu 251/392 = 64% mit PWM-Erzeugung ausgelastet, das ist gar nicht mal so viel für 56 Kanäle

Nur, wenn das Teil dann mal das selbe wie dieser dmx4all-Dimmer können soll, also noch Programme von SD-Karte abspielen, per IR-FB einstellbar etc., dann könnte es trotzdem schon etwas knapp werden...
aus diesem Grund hatte ich ja auch vorgeschlagen, LED-Treiber zu nehmen, ich hätte ja nach wie vor den TLC5947 genommen wegen den 12 Bit, und viel mehr (vielleicht nen Euro, wenn überhaupt) hätte es unter'm Strich auch nicht gekostet...

-
Hi,
ich habe jetzt nicht im Detail ein den Plan geschaut, und bin auch kein Experte für Atmegas, aber ich denke, dass der Reset-Taster gegen Masse schalten sollte, ansonsten macht der Pullup keinen Sinn. Die Gate-Pullups an den FETs scheinen mir etwas zu klein gewählt, damit verbrauchst Du knapp 400mA ohne irgendwelche anderen Verbraucher. Wenn ich das richtig verstanden habe, dann willlst Du den FT232 über JP1 an den Atmega anschließen. Müssten dann nicht TXD und RXD jeweils gekreuzt sein?
Gruß,
Matze
-
Hallo,
zum Thema PWM in Software ist das Tutorial bei mikrocontroller.net stark zu empfehlen:
Die von Pesi dargestellte direkte Methode ist für eine größere Anzahl von PWMs eher suboptimal, da sind Optimierungen mit dem Faktor 30-40 'drin. Dann klappt es auch mit dem ganzen Rest.
Ich würde allerdings (inzwischen) auch dedizierte Treiber-ICs verwenden, da diese eine höhere Auflösung, eine Gamma-Korrektur und eine Konstantstromquelle bieten.
Schöne Grüße,
Martin -
ich habe jetzt nicht im Detail ein den Plan geschaut, und bin auch kein Experte für Atmegas, aber ich denke, dass der Reset-Taster gegen Masse schalten sollte, ansonsten macht der Pullup keinen Sinn. Die Gate-Pullups an den FETs scheinen mir etwas zu klein gewählt, damit verbrauchst Du knapp 400mA ohne irgendwelche anderen Verbraucher. Wenn ich das richtig verstanden habe, dann willlst Du den FT232 über JP1 an den Atmega anschließen. Müssten dann nicht TXD und RXD jeweils gekreuzt sein?
Super danke werde die fehler mal beheben. es ist also doch immer gut von anderen mal drüber schaun zu lassen ob fehler drin sind.
welche Größe wäre denn für die Gate Pullups der beste Wert ?
-
Zitat
welche Größe wäre denn für die Gate Pullups der beste Wert ?
Ich verwende in einer ähnlichen Schaltung 2.2K, das hängt von Deiner PWM-Frequenz und der Gatekapazität ab.Ist es beim 2802 erlaubt, Iref ohne Widerstand an GND anzuschließen?
Noch was: Durch Deine Schaltung mit dem FET änderst u die Logik der Ausgänge, d.h. wenn Du dem 2803 volle Helligkeit kommandierst, werden die LEDs aus sein. Ist prinzipiell nicht schlimm, kann aber interessant sein weil beispielsweise der TLC59116 nur bis 99.8% irgendwas hochdimmen kann, was in Deiner Logik dann 0.2% Helligkeit bedeuten würde -> die LED wäre dann nie ganz aus. Keine Ahnung ob man das noch als Leuchten wahnehmen kann und ob der 2803 das gleiche Verhalten zeigt, aber das würde ich nochmal checken.
-
naja ich hatte mir gedacht das ich einfach in der Software die werte intervertiere aber natürlich werde ich bevor ich ein dimmer zusammen löte das ganze auch mal testen in einer kleinen version denn ich will mir die platinen für den Dimmer Fertigen lassen und eh ich dafür geld ausgeben will erstmal mit nen kleinen Prototyp sehen ob es sich Lohnt und ob alles Funktioniert wies soll.
Wgen dem Iref Widerstand mache ich mir keine sorgen denn ich brauch ja kein geregelten Strom vom WS2803 das geht ja alles über die Fets aber wie gesagt werde es mal testen.
-
zum Thema PWM in Software ist das Tutorial bei mikrocontroller.net stark zu empfehlen:
Soft-PWM
Die von Pesi dargestellte direkte Methode ist für eine größere Anzahl von PWMs eher suboptimal, da sind Optimierungen mit dem Faktor 30-40 'drin. Dann klappt es auch mit dem ganzen Rest.
Jaja, der "intelligente Ansatz", ist hier bekannt und wurde schon öfter besprochen (kann mich erinner, dass ich vor Jahren schon mit Nei (synvox) darüber diskutiert hatte...
dsa ist im Prinzip schon richtig, nur der "Faktor 30-40" gilt eben nur für das beispiel bei Mikrocontroller.net mit den 8 Kanälen
Dort hast Du eben - bei unterschiedlichen Werten - dann max. 9 Aufrufe statt 255, bei 56 unterschiedlichen Werten sind's eben 56 Aufrufe statt 255 -> Vorteil kleiner
und 56 Werte in die richtige Reihenfolge zu sortieren, dauert auch wesentlich länger, als 8 Werte zu sortieren -> Vorteil kleiner...
es ist eben *andersrum*: das Ganze rentiert sich bei einer kleineren Anzahl Kanäle, je mehr Kanäle, umso geringer der Vorteil
Gedankenexperiment: bei 255 Kanälen wären es also schlimmstenfalls (255 unterschiedliche Werte) dann 255 ISR-Aufrufe, also wie bei der normalen PWM, aber *zusätzlich* noch die Sortier-Routine...
Neni hatte das mal überschlagen, ab welcher Kanalzahl die "billig-Methode" auch nicht mehr Prozessorlast erzeugt, das waren gar nicht mal so viele...
es ist ja eigentlich eh' erstaunlich, nur 64% Auslastung für 56 Kanäle mit der simpelsten Programmierung - die kommen dort im Beispiel bei nur 8 Kanälen schon auf 49%, aber gut, ist ja auch C statt Assembler...
und wie gesagt, die verbleibenden 36% reichen locker für DMX-Empfang und ein paar Sachen mehr (Masterdimmer o.ä.) - trotzdem würde ich bei so ner Kanalzahl eben extra LED-Treiber benutzen...
wenn man *wirklich* rein mit SW CPU-Last sparen wollte, dann würde ich BCM statt PWM nehmen, da hast Du (bei 8 Bit) *immer* nur max. 8 ISR-Aufrufe pro Zyklus, *egal wie viele Kanäle* - das hier ebenso nötige "Umrechnen" der Daten ist reine Bitschieberei, geht also auch schneller als sortieren...
-
Hallo,
mein Beitrag sollte nicht überheblich wirken, beim jetzigen Lesen stelle ich fest, dass er etwas so klingen könnte, sorry.
Ich geb' Dir recht, bei 8 Bit und 56 Kanälen ist's wahrscheinlich nicht mehr so prickelnd, auch wenn man natürlich neben der reinen Anzahl der Aufrufe auch noch beachten muss, dass bei 56 Kanälen die direkte Methode in jedem der 255 Interrupts auch 56 Abfragen (und bei gleichen Werten auch 56 Ausgaben) durchführen muss, während die "intelligente" Methode bei 56 Interrupts jeweils nur 7 Ausgaben und 1 Timer-Setzen durchführen muss. Das Sortieren kostet allerdings wirklich Rechenzeit.
Ich hab' auf diese Weise eine 10 Bit 22-Kanal-PWM implementiert, da war der Vorteil für die "intelligente" Methode doch erheblich, trotz sortieren. Die 10 Bit waren notwendig, um wenigstens etwas Gama-Korrektur machen zu können. Da passte dann auch noch ein CAN-Stack sowie eine Lichtprogramm-Ablaufsteuerung hinein (bei 16 MHz).
Allerdings ist die BCM tatsächlich die (noch) "intelligentere" Methode, ich muss 'mal sehen, ob ich die für diesen Zweck implementiert bekomme (6 RGB + 1 RGBW-LED an einem AT90PWM3b, der auch noch einen CAN-Controller bedient, da muss man auch etwas seine Bits sortieren, da die auf 4 Ports verteilt sind). Ein weiterer Vorteil der BCM-Methode ist, dass erheblich weniger RAM verbraucht wird - in meinem Fall für die PWM-Timer 23*2 (aktuelle + vorsortierte Timerwerte) * 2 Byte = 92 Byte und die Masken 23*2*3 Byte =138 Byte, also in Summe 230 Byte gegen 4*10 = 40 Byte BCM-Speicher. Und bei dem ganzen anderen Kram werden die 512 Byte, die der PWM3b hat, sehr schnell knapp.
Schöne Grüße,
Martin -
mein Beitrag sollte nicht überheblich wirken, beim jetzigen Lesen stelle ich fest, dass er etwas so klingen könnte, sorry.
Nee, habe ich nicht so aufgefasst, sorry, falls das so rüber gekommen ist (das ich es als überheblich aufgefasst hätte, meine ich) - geht nur um technische Dinge, also Gedanken dazu

auch wenn man natürlich neben der reinen Anzahl der Aufrufe auch noch beachten muss, dass bei 56 Kanälen die direkte Methode in jedem der 255 Interrupts auch 56 Abfragen (und bei gleichen Werten auch 56 Ausgaben)
das mit den 56 Vergleichen stimmt - Ausgaben sind es aber nur 7, es wird ja immer ein Byte (direkt beim Vergleich über das Carry) zusammen geshiftet, und dann das komplette Byte ausgegeben (1 Takt)
Ich hab' auf diese Weise eine 10 Bit 22-Kanal-PWM implementiert, da war der Vorteil für die "intelligente" Methode doch erheblich, trotz sortieren.
klar - wie gesagt, dieser "Faktor 30-40" ist ja keine fest stehende Zahl, sondern hängt von Auflösung und Kanalzahl ab. Bei 10 Bit PWM hättest Du mit der normalen Methode ja 1.023 Timer-Aufrufe pro Durchlauf, während Du nur 23 hast - da ist das Verhältnis zu Gunsten der intelligenten PWM natürlich noch besser als 255:23 bei 8 Bit...

Bulldog: Sorry für o.t.!
weitere Gespräche über PWM/BCM etc., dann bitte in nem eigenen Thread, der Bulldog hat sich ja für die WS2803 entschieden

-
der Bulldog hat sich ja für die WS2803 entschieden

Naja Entschieden ist zuviel gesagt soll ja erstmal ein Prototyp werden und da habe ich aus einen einfachen grund auf die WS2803er Gesetzt die haben Massentauglichkeit genau wie die WS2801 und die TLC konten sich noch nicht so durchsetzten wie die WS28XX.
Ich habe ja gesagt ist ein Prototyp ich bin auch am überlegen 4 Prototypen zu bauen.Erste Variante mit USB MiniDMX/ DMX, Bluetooth und IR und 3 WS2803 mit 54 Kanälen
Zweite Variante mit USB MiniDMX/ DMX, Bluetooth und IR und 2 TLC5947mit 48 Kanälen
Dritte Variante mit Lan und Wlan (ArtNet ) und IR und 3 WS2803 mit 54 Kanälen
Vierte Version mit Lan und Wlan (ArtNet ) und IR und 2 TLC5947 und 48 Kanälenso kann wenns dann fertig ist jeder die version nutzen die Er möchte, Mir persönlich gefällt version 1.
Ich lasse sowieso die Platinen Professionel fertigen von daher ist ja egal ob die 4 mal das selbe Layout oder 4 vervschiedene nutzen, der Preis wird dadurch ja nicht wirklich steigen.Da ich ja nun nocht nicht so ein Programmier Genie wie andere hier im forum bin und ich bis vor 2 Jahren nicht mal wusste wie eine Led Funktioniert geschweige denn das ich eine ahnung von Elektronik hatte oder gar Programmierung habe ich bei der Entwicklung des jetzigen Prototpyps darauf geachtet das ich für den anfang auch die Sedu Software nutzen kann und diese erweitern möchte, Das ganze soll in ASM geschrieben werden da ASM sehr effizient ist im gegensatz zu Bascom und ich habe kein Plan von C.
Ich erlerne gerade die Anfänge von ASM von daher kann ich wenn das Layout fertig ist und die Dimmer hier bei mir eintreffen diese ja mal mit der Sedu Software testen. -
Ich weiß jetzt nicht genau, was Du mit "Massentauglichkeit" und "durchgesetzt" meinst....?
die WS2803 sind jetzt auch nicht einfacher oder schwerer zu bekommen als die TLC5947 - gut, die WS2803 sind leichter zu löten...
ZitatIch lasse sowieso die Platinen Professionel fertigen von daher ist ja egal ob die 4 mal das selbe Layout oder 4 vervschiedene nutzen, der Preis wird dadurch ja nicht wirklich steigen.
das gilt dann aber auch nur, wenn Du alle Versionen los wirst....
- Wenn z.B. die meisten Version 2 wollen, und der Rest liegt rum, dann ist's unter'm Strich doch teuerer, als nur eine Version machen zu lassen...also falls Du das vorhast, dass Du die Platinen auch anbietest und daher in großer Stückzahl fertigen lässt, würde ich halt vorher mal ne Umfrage machen, was denn ggfs. gewünscht wird...
wegen der SW: Ne fertige Ausgaberoutine für TLC5947 in asm gibt's ja auch schon im Forum - also von daher auch kein großer Unterschied... und wenn Du da mal Wlan, Artnet und irgendwie ne FB per IR dran haben willst, da ist die Datenausgabe das absolut kleinste "Problem" von allen, also an irgendnem momentanen Programmierkenntnisse-Stand würde ich das dann auch nicht unbedingt ausrichten...
-
Naja mit massentauglichkeit meinte ich ich eher das wenn man in verschiedenen Foren den Unterhaltungen lauscht werden dort mehr und mehr Projekte an den WS28XX ausgerichtet.
naja die vier Versionen werde ich nur als Prototypen bauen lassen um diese hier im Betrieb einzustellen, welche Version dann am Besten rüberkommt werde ich dann in einer Umfrage feststellen lassen und erst dann kann man über eine Sammelbestellung reden.
Ich will ganze Projekt ja quasi Open source machen und soll als Verbesserte Alternative zu den Teuren 48 Kanal Dimmer von DMX4All sein.Ich mache jetzt auch nicht das Layout an meinen Programmier Kenntnissen fest denn wenn der Dimmer Funktioniert werden hoffentlich auch andere dafür Software Basteln eben wie beim Sedu wo es auch verschieden Varianten gibt.
-
Ja, wünschenswert wäre sowas schon - aber drauf verlassen würde ich mich nicht...

SEDU war ja eben so geplant, dass es ne einfache Plattform ist, mit paar Sachen zum Anfangen, und dann eben viele Leute SW dafür machen, man sich austauscht und gegenseitig hilft - aber de facto stammt 95% der fertigen SW für SEDU von mir, 1, 2 Leute haben dann noch was etwas umgeschrieben...

also, nur als Tipp, ich würde mich nicht drauf verlassen, dass Dir dann jemand anders SW für das Teil macht - turi und ich haben festgestellt, dass die meisten Leute einfach was fertiges haben wollen, es wurden auch bis jetzt ca. 90% aller SEDUs in der fertigen "Plug&Play-Ambilight"-Variante verkauft...

-
aber drauf verlassen würde ich mich nicht
Naja drauf verlassen tue ich mich nun nicht.
Ich fände es nur toll wenn jemand auch selber dann mal ne software machen würde.Ich habe schon gemerkt das die meisten was fertiges Haben wollen, aber ich denke mal das liegt daran das die meisten einfach nur ein Projekt haben und das eben mit sowenig wie möglich aufwand verbinden wollen.
-