Hallo zusammen, ich bin momentan auf der Suche nach einer Schaltung, mit der es möglich ist LED-Strips mit dem WS2811 Chip drauf per SPI anzusteuern. Ich habe mir auch schon eine nette Schaltung ausgedacht (Anhang) nur leider basiert sie auf 2 RC-Gliedern und ich musste nun feststellen, dass sie SEHR abhängig von der Versorgungsspannung ist. (Hätte ich auch früher merken können). Die Pulsdauer der beiden Monoflops steigt bei sinkender Versorgungsspannung... Jetzt suche ich halt wieder und im Moment bin ich so verfahren in obiger Sackgasse, dass ich keine neuen sinnvollen Ideen habe. Vielleicht kann mir gerade ja jemand helfen. Genaue Anforderung des WS2811 Protokolls sind: 800kBaud, eine Datenleitung, kein Takt eine "1" wird durch ein 0.6µs langen 5 Volt gefolgt von 0.65µs 0 Volt dargestellt, eine "0" wird durch einen 0.25µs 5 Volt-Puls gefolgt von 1µs 0 Volt dargestellt... Im Datenblatt Seite 3 und 4 http://www.adafruit.com/datasheets/WS2811.pdf Ich bin gerade Dankbar für alles was mir neue Kreativität ins Hirn bringt Vielen Dank Gruß Leo
Sieht doch aus wie 2 MonoFlops, die sind zeitstabil auch bei schwankender Versorgungsspannung, aber du schreibst ja nicht welcher IC es ist, 74HC123.
SPI schnell genug takten. Je ein Byte-Pattern für 0 und für 1 so wählen, dass die Zeiten passen. Gibt 1 übertragenes Bit pro SPI-Byte. Mit etwas Toleranz auch 2.
Sorry MaWin, im Eifer des Gefechts ist mir diese Information irgendwie verloren gegangen. Das Gatter am Ausgang ist ein 74HC1G00. Aber nach meiner LT-Spice-Simulation ändert sich die Pulsdauer mit der Versorgungsspannung. Einen echten Baustein habe ich leider nicht vorrätig. Ist bei der Simulation etwa der Fehler? @A. K. (prx) Danke für den Tip. Aber genau das möchte ich nicht tun. Ich möchte schon die Bytes 1:1 übertragen können.
Wer stellt denn die notwendigen Daten in der Geschwindigkeit bereit? Ansonsten kann man das mit einem Schieberegister erzeugen, welches mit 8 MHz getaktet wird: ein 1-Bit wird mit 5/5 Takten high/low codiert, ein 0-Bit mit 2/8 Takten high/low. Kann man ja fast noch als PWM mit einem AVR ausgeben lassen. ;-)
Leo B. schrieb: > Sorry MaWin, im Eifer des Gefechts ist mir diese Information irgendwie > verloren gegangen. Das Gatter am Ausgang ist ein 74HC1G00. Ich glaub er meinte das andere IC. ;-)
Jörg Wunsch schrieb: > Wer stellt denn die notwendigen Daten in der Geschwindigkeit bereit? Ein Mikrocontroller, wahrscheinlich ein Mega88, aber damit der die Daten auch schnell genug generieren kann muss er noch relativ viel Rechenzeit frei haben, daher auch die Auslagerung auf Hardware...
Wenn du bei einem Byte-Takt von 100kHz nebenbei noch reichlich andere Dinge erledigen willst, dann wär DMA schon ganz nützlich. Braucht das ein festes Zeitraster von ebd. 800kHz, oder stört es nicht, wenn zwischen den Bytes variable Pausen <<50µs liegen? Das SPI der AVRs ist nicht grad sonderlich gut gepuffert.
kleine pausen stören nicht. nunja, recht viel weiter bin ich jetzt leider nicht. Dennoch Danke
Wie wär es mit einem zweiten kleinen AVR, der diese Aufgaben erledigt? Kostet dann natürlich ein bisschen Zeit, die Software dafür zu schreiben...
Markus Weber schrieb: > Wie wär es mit einem zweiten kleinen AVR, der diese Aufgaben erledigt? > > Kostet dann natürlich ein bisschen Zeit, die Software dafür zu > schreiben... Ja ich glaube fast, dass das die eine sinnvolle Lösung ist. Denn bis ich bei den 74HC123 die richtign RC-Glieder ermittelt habe (Simulation und Datenblatt decken sich hier zu 0%) und bis das alles sinnvoll läuft, da ist die Software für den 2. AVR dann schon 100mal schneller geschrieben und bei Fehlern kann man auch leicht ein Update machen...
Leo B. schrieb: > ... nach meiner LT-Spice-Simulation ändert sich die Pulsdauer mit der > Versorgungsspannung. Und? Erwartest du nennenswerte Änderungen der Versorgungsspannung? > Einen echten Baustein habe ich leider nicht vorrätig. Ist bei der > Simulation etwa der Fehler? Simulation ist immer fragwürdig. Und natürlich hängt das Verhalten auch stark vom IC bzw. der Logikfamilie ab. So hat bspw. 74HC Schaltschwellen, die ca. proportional zur Versorgungsspannung sind, was eine relativ geringe Abhängigkeit der Impulslänge von der Versorgungsspannung ergibt. Standard 74er oder 74HCT sind da problematischer. Ganz konkret aus dem Datenblatt des 74HC123 von ST; mit R=10K, C=100pF bekommt man 1.4µs @ 2V, 1.2µs @ 4.5V und 1.1µs @ 6V (alles typische Werte). Das ist m.M.n. ganz ordentlich. Viel gravierender dürfte sein, daß deine 250ns schon recht nahe an den minimalen Werten für die Pulslänge liegen (für 74xx123). Bzw. du eine große Abhängigkeit von parasitären Kapazitäten bekommst. Insofern liegt eine volldigitale Erzeugung der Pattern nahe. SPI ist natürlich am einfachsten. XL
Für den Fall das die Zeiten zu sehr von der Versorgungsspannung abhängen gibt es Spannungsregler, und entsprechende ICs, die auch mit 2 oder 3 V laufen. Die Lösung per µC hat einfach das Problem, dass die Abtastrate eher zu klein ist, und man dadurch Fehler in der Größenordnung 50-200 ns bekommt. Das geht analoge deutlich präziser bei so kurzen Zeiten. Wenn man es auf die Spitze Treiben will, könnte man 2 analoge Monoflops haben, eines stellt die Funktion dar, und das andere wird angeglichen.
Irgendwie verstehe ich die Problemstellung nicht. Das Protokoll ist ziemlich schnell - gerade einmal 30µs pro LED. Damit kann man 50 LEDs 100x in der Sekunde updaten und hat trotzdem noch 85% der Rechenzeit frei. In diesen 85% kann die Berechnung erfolgen. Mit SPI wird kaum mehr rechenzeit übrig bleiben.
A. K. schrieb: > Das SPI der AVRs > ist nicht grad sonderlich gut gepuffert. Der Mega88 beherrscht das Master-SPI im UART-Modus. Damit kann man mittels UDR-Empty-Interrupt immer das nächste Byte aus einem Puffer holen. Vollautomatisch sozusagen. Der Mega88 kann sicher mit 25Mhz getaktet werden. Damit ist er dann auch fix genug, um noch andere Dinge zu erledigen. Zeitkritische Sachen in Assembler machen und globale Variablen nutzen. Das geht am schnellsten.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.