Hallo, ich möchte mehrere Schieberegister kaskadieren, sie aber etwa 1 Meter auseinander setzen. Ist das möglich oder werden die Leitungen dann zu lang? Vielen Dank
Welche Schieberegister und welche Frequenzen benutzt du? Wenn du die Daten mit ein paar kHz reinschieben willst ists kein Problem. Wenn du die 25MHz (oder wieviel bei diesem möglich sind) voll ausnutzen willst, dann wirds interessant!
> oder werden die Leitungen dann zu lang?
Kommt darauf an. Jede Leitung ist auch eine Antenne... Sie kann jede
Menge STörungen einsammeln oder abstrahlen ...
Als Schieberegister benutz ich 74HC595, davon 4 Stück. Frequenz is schwierig. Wär natürlich schön, wenn ich wie bei PWM alle dimmen könnte, aber ich denk, dass is so nicht machbar. Zumal der µC nur mit 20MHz getaktet ist und ich so nur ~10MHz schaffen würde. Ansonsten eine geringe Frequenz würds schon tun. Ich denk mal 25 mal pro Sekunde updaten wär wünschenswert.
25 Updates pro sekunde X 4 Schieberegister X 8 Bit = 800 Hz Clock. Sollte locker machbar sein (PWM geht damit natürlich nicht) Damit langweilt sich der uc, evtl brauchst du bei den Ausgängen sogar eine RC-Kombination, welche die Slew-Rate dämpft, damit in den Leitungen keine Reflexionen durch zu schnelle Umschaltvorgänge auftreten. Ein Problem könnte aber die Spannungsversorgung sein. (Masseverschiebung) Gruß Roland
Hm. Meine Alternative wär die Leitungen zwischen Ausgang und LED länger zu machen, aber ich denk mal, dass ist ähnlich schlecht? Und wegen PWM: Wenn ich das richtig versteh, muss man für PWM Frequenzen von 1-9kHz schaffen. Das wär dann ja einen Clock-Rate von 32kHz bis 2,8MHz?
Anfänger schrieb: > Und wegen PWM: Was willst du mit der PWM bei Schieberegistern ... das erschliesst sich mir nicht wirklich. Wenn du die PWM zum Takten nehmen willst,Viel Spass beim Synchronisieren (Vor allem bei deinen MHZen), wenn du das nicht machst schiebst du munter Müll durch die Register. Du weisst hoffentlich schon das du das Bit bei jeder Taktveränderung um eine "Zelle" weiterschiebst ? Normalerweise würde man einen Output-Pin als "Clock" definieren,und diesen "Zielgerichtet" schalten und nicht sinnlos ... So alles in allem recht "ungewöhnlich" was du schreibst. Marcus
Wenn du HC595 verwendest, dann nimm doch einfach den OE (Output Enable) Pin fürs PWM. Der setzt dir alle Ausgänge auf Tristate. Evtl. brauchst du also noch Pulldowns. Die OE aller Schieberegister kannst du parallel schalten, das hab ich auch schon gemacht.
Marcus schrieb: > Anfänger schrieb: >> Und wegen PWM: > > > Was willst du mit der PWM bei Schieberegistern ... das erschliesst sich > mir nicht wirklich. > > Wenn du die PWM zum Takten nehmen willst,Viel Spass beim Synchronisieren > (Vor allem bei deinen MHZen), wenn du das nicht machst schiebst du > munter Müll durch die Register. > Du weisst hoffentlich schon das du das Bit bei jeder Taktveränderung um > eine "Zelle" weiterschiebst ? > > Normalerweise würde man einen Output-Pin als "Clock" definieren,und > diesen "Zielgerichtet" schalten und nicht sinnlos ... > > So alles in allem recht "ungewöhnlich" was du schreibst. > > Marcus ...ich würde mal aus seiner sehr dünnen beschreibung den sinn entnehmen,das er mit jeden ausgang des schieberegisters einen unabhängigen pwm ausgang realisieren möchte?! in dem fall müsste schon recht flott "geschoben" werden ;-) grüsse ddi
Die Geschwindigkeit wird selbst mit PWM kein Problem sein:
1 | 100Hz * 32bit * 256 = 800 Kbps |
Schwieriger wird die Software-PWM Generierung. Eine vorsortierte Tabelle der PWM-Werte wird zwingend nötig sein. Wahrscheinlich wird ziemlich schwer ohne Assembleroptimierungen. siehe Soft-PWM
der da ist schrieb: > ...ich würde mal aus seiner sehr dünnen beschreibung den sinn > entnehmen,das er mit jeden ausgang des schieberegisters einen > unabhängigen pwm ausgang realisieren möchte?! genau, indem ich einfach schnell genug hintereinander update. Samuel K. schrieb: > Die Geschwindigkeit wird selbst mit PWM kein Problem sein oh, doch nur 100Hz. Im Artikel zu Pulsweitenmodulation stand was von 1-9kHz, in dem zu Soft-PWM auch nur 100Hz. Samuel K. schrieb: > Wahrscheinlich wird ziemlich > schwer ohne Assembleroptimierungen. Assembler ist kein Problem. Allerdings sollte die Implementierung meinen µC wirklich so auslasten, muss ich mir Gedanken machen, den Teil mit den LEDs in einen seperaten auszulagern, da das nicht die einzige Aufgabe des µCs ist.
Anfänger schrieb: > muss ich mir Gedanken machen, den Teil mit den > LEDs in einen seperaten auszulagern, Oder besser in mehrere separate AVRs auslagern und dafür auf die PWM-feindlichen Schieberegister verzichten. Die Daten (PWM-Wert und Änderungstempo je LED-Kanal) schickst Du dann per UART oder SPI. ...
http://www.mino-elektronik.de/AVR_PWM_64/AVR_PWM_64.htm Vielleicht hilft das hier. Wichtig ist, die Signale über geschirmte Leitungen zu führen u.U. mit Abschlußwiderstand. Werden die Leitungen länger, müssen sie per Schmitt-Trigger aufbereitet werden. Bei noch längeren Leitungen sollten Treiber an den Ausgängen und schnelle Optokoppler an den Eingängen genommen werden. Nur so bleiben die Signale von den Versorgungsleitungen (GND, V+) entkoppelt. Oder man sieht die Sache ganz gelassen und vertraut darauf, dass einzelene Aussetzer bei der nächsten Übertragung wieder korrigiert sind, wenn nur Lämpchen angesteuert werden. Geschirmtes Kabel sollte dennoch verwendet werden.
Anfänger schrieb: > Assembler ist kein Problem. Allerdings sollte die Implementierung meinen > µC wirklich so auslasten, muss ich mir Gedanken machen, den Teil mit den > LEDs in einen seperaten auszulagern, da das nicht die einzige Aufgabe > des µCs ist. Assembler braucht man doch nicht, das geht mit der Soft-PWM Routine ohne Probleme. Denn die Refreshrate liegt nur bei 25,6KHz, d.h. es bleiben 800 Takte bis zum nächsten Refresh @20Mhz. 800Kbps ist nur der SPI Takt.
Also ich hab die Wordclock nachgebaut, und zu Übungszwecken mal die Software selbst geschrieben, und ich habe auch über Schieberegister eine PWM realisiert, sozusagen beim Wechsel von "Fünf nach zwölf" zu "zehn nach zwölf" fadet die "Fünf" langsam aus, und gleichzeitig fadet die "zehn" langsam ein, ist doch gar kein Problem. Du nimmst einen Timer, stellst den so ein, das er in der 256-fachem der PWM Frequenz einen Interrupt bringt, in der Routine schaltest du bei Zählerstand null alle Ausgänge auf logisch eins, indem du einfach ein 4 Register alles auf 0xff setzt, und dann mit dem Code aus dem Tutorial in die SChieberegister schieben, und dann den Output Enable Puls geben, ist alles im tutorial über SChieberegister beschrieben. Und dann vergleichst du bei jedem nächsten Interrupt den Zählerstand mit deinem PWM-Wert, und falls einer überein stimmt, setzt du in deinen 4 registern das entsprechende Bit auf logisch null. und zum ende der Routine schiebst du wieder die 4 Register in die Schieberegister, und dann den Enable-Puls dran, und gut ist. DAzu brauchst du keinen extra AVR, es sei denn, du willst es recht kompliziert gestalten, was deine PWM-Soll_Werte anbetrifft, aber die eigentliche PWM ist ganz easy, und die schafft der AVR auch mit 1Mhz. MfG dennis
Also die Taktfrequenz alleine ist nicht so sehr ausschlaggebend. Sondern eher die Taktflanken. Die HC-Serie ist zwar nicht superschnell, aber immerhin könnte die schon auf 10 oder 20ns Impulse reagieren. Also auch auf Reflexionen auf der Leitung in diesem Bereich. Bei 1m sind's wohl so um die 5ns Laufzeit, da würde die Reflexion also nach 15ns wieder eintreffen, und dein Schieberegister nochmal anschubsen, wenn stark genug. Könnte also schiefgehen. Ich würde hier also schon mit angepaßten und richtig abgeschlossenen Strippen anfangen. Also z.B. verdrillte Leitung (Signal/Masse), die vielleicht Z=150Ohm hat (einfach mal angenommen), sollte dann mit 150Ohm abgeschlossen sein (die Treiberseite ist nicht so wichtig bezüglich Anpassung). Oder aber vielleicht einfach einen R in Reihe, um die Flanken zu verschleifen (solange die Mindestflankensteilheit der HC-Serie eingehalten wird). Kannst doch mal einen Oszi nach einer 1m HC-gespeister Leitung anschließen ohne Parallel-R, um zu sehen, wie da die Flanken aussehen.
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.