Hi zusammen! Anbei ein Stück Code, welches ich gerade entwickelt habe. Ziel soll es sein, ings. 320 LED (bzw. kleine Lämpchen) einzeln zu dimmen. Die Schaltung ist recht simple, am SPI befinden sich einfach 74HC595. An deren Ausgang jeweils ein FET BS 170 zur Ansteuerung der Last (LED/Lampe). Anscheinend stoße ich mit der Schaltung an die Grenzen des Machbaren. Laut meinem Oszi werden die Ausgänge mit nur noch 330 Hz moduliert. Da der µC aber auch noch so Sachen wie UART, LCD, Ethernet, IR, Strom-/Spannungsmessung machen soll, wird dieser Wert nochmal deutlich in den Keller gehen. Seht ihr noch irgendwo Möglichkeiten den Code zu optimieren? Ein anderes Problem könnten die Signalleitungen werden. Die 320 LED sind auf 10 Europakarten verteilt, die mit Abstandsbolzen aufeinandergestapelt sind. Von Karte zu Karte verläuft ein ca. 5cm Flachbandkabel mit Pfostensteckern. Da das SPI derzeit mit rund 3,5 MHz betrieben wird, befürchte ich, dass auf der 10ten Karte kein sauberer Takt mehr ankommt. Ist das kritisch? Sind die Störeinflüsse tatsächlich so gravierend? Könnte ich auf jeder Karte mit einem TTL Gatter das Signal wieder auf TTL-Pegel heben und die Flanken begradigen, bevor ich es an die nächste Karte weitergebe? Würde das helfen? Wie gesagt funktioniert die PWM unter Laborbedingungen (nur obiger Code, Schaltung auf Steckbrett) ganz gut, aber ich will ungern damit Platinen ätzen um danach festzustellen, dass im Realeinsatz dann doch nix mehr klappt. Danke und Gruß Joachim
Mal sehen: SPI mit 3.5MHz an 40 Schieberegister. Ausgehend von einer 100Hz PWM mit 8-Bit Auflösung komme ich auf: 100Hz x 256 Stufen = 25.6kHz 25.6kHz x 8 Bit schubsen x 40 Schieberegister = 8.192Mhz alleine für die SPI-Ansteuerung - ohne Overhead. Sieht jemand einen Fehler in der Rechnung? Wenn du die PWM-Frequenz und -Auflösung reduzierst, kommst du natürlich auf weniger, aber viel mehr wirst du nicht machen können, vor allem wenn solche Sachen wie Ethernet etc. dabei sind... Entweder du verteilst die Aufgaben auf mehrere Controller oder du nimmst beispielsweise seriell ansteuerbare LED-Dimmer, das sollte ebenfalls entlasten. Ralf
Hi Ralf! Danke für die Antwort! Hab die letzten 2 Stunden damit verbracht Alternativen für mein Vorhaben zu finden und hab etliches durchdacht, komme aber zu keinem eindeutigen Ergebnis. Vielleicht kann einer von euch mit Erfahrung (ich bin Neuling auf dem Gebiet) das mal betrachten: ## Variante 0 - Wie oben ## Fällt flach, wegen zu schwacher Hardware ## Variante 1 - PCA9635 ## Vorteile: - Chip kümmert sich selbst um PWM. Muss nur mit ein paar Bytes angesteuert werden. Haupt-µC wird entlastet - Alle Chips können dank Adressbits an den selben I2C-Bus angeschlossen werden - Der Bus wird mit niedrigeren Frequenzen und wenig Datendurchsatz betrieben und ist deswegen störunanfälliger Nachteile: - Nur als SMD verfügbar, Lötaufwand - Schwer zu bekommen - teuer Preis für 32 Schaltausgänge: 4,88 Euro (DigiKey, Abnahme 25 Stück) ## Variante 2 - Ein µC für PWM, Schieberegister ## Vorteile: - Nur gut verfügbare DIP-Bauteile. (Schieberegister, µC) - Sehr günstig Nachteile: - Bus als Kaskadierung der Schieberegister, erhöhter Verdrahtungsaufwand - Bus muss mit sehr hoher Frequenz und Datendurchsatz betrieben werden, um die PWM zu machen - PWM und Ansteuerung des µC muss programmiert werden Preis für 32 Schaltausgänge: Rund 1 Euro (60 Cent Schieberegister und Anteilsmäßig der µC) ## Variante 3 - Mehrere µC für PWM, Schieberegister ## Vorteile: - Nur gut verfügbare DIP-Bauteile. (Schieberegister, µC) - Pro Schaltkarte eigene PWM mit mehr Leistung - Zwischen Haupt-µC und Schaltkarten echter I2C-Bus - Relativ günstig Nachteile: - PWM und Ansteuerung des µC muss programmiert werden Preis für 32 Schaltausgänge: Rund 3 Euro (60 Cent Schieberegister und ein kleiner µC) Variante 0 und 2 fallen somit eigentlich aus. Bleibt die Wahl zwischen 1 und 3. 1 wäre irgendwie am professionellsten, weil die Chips dafür gedacht sind. 3 wäre ein guter Kompromiss, bedeutet aber mehr Entwicklungsarbeit. Hat jemand noch andere Ideen? Gruß Joachim
Diesen Chip finde ich für den Zweck auch ganz nett: <http://www.austriamicrosystems.com/eng/Products/Lighting-Management/LED-Driver-ICs/AS1119> Aber wahrscheinlich auch nur schwer erhältlich. HTH, Jörg
Wieso schwer erhältlich? Kannst Du direkt beim Hersteller leider mit $30 Versand bekommen, direkt mit Shop, oer mal nett bei der deutschen Niederlassung anfragen. Gruß Tom
Ich hab mir bei TI 5 Stück 5947 gesampelt. Jeder IC kann 24 LED mit einer 12 Bit PWM eigenständig ansteuern. Vorteil: Als Sample günstig zu bekommen IC erledigt alles IC wird im Prinzip wie ein Schieberegister angesprochen und ist auch als solcher kaskadierbar Nachteil: sauschlecht zu löten :-( Ansonsten kann ich dir noch eine Praxiserfahrung anbieten. Mega8 mit 11.0zerquetsche (wegen UART) schafft auf einer 595 Kette es noch so lala, 64 LED mit einer 6 Bit PWM anzusteuern, so dass noch etwas Rechenzeit fürs drumherum übrig bleibt.
Hi! Danke für die Antworten! Ich werd jetzt doch komplett auf SMD umsteigen und wohl den PCA9635 nehmen, sowie als Treiber jede Menge IRF7103. Dann kann ich den Platz der Platinen optimal ausnutzen und hoffe (Layout mach ich morgen), dass ich 64 Kanäle auf eine Eurokarte bekomme. Jede Eurokarte bekommt dann nen DIP-Switch zum Einstellen der Adresse und nen gemeinsamen Anschluss für den I2C-Bus. Dann brauch ich für die notwendigen 320 Kanäle nur 5 Karten, könnte aber dank der Adressierung der Chips per DIP-Schalter bis zu 32 Karten am selben Bus adressieren, ohne großartig Hardware/Software anpassen zu müssen. Gruß Joachim
Hallo Karl Heinz, da es sich tatsächlich gar nicht um LED handelt, sondern eigentlich um 12V-Lämpchen einer Modellanlage, geht das leider nicht. Auch sollen über die Ausgänge nicht nur die Lampen, sondern (ohne Dimmung natürlich) auch Relais und andere 12V Verbraucher geschaltet werden können. Ein Multiplexen fällt damit aus. Auch, weil die Lampen die 12V für ihre volle Helligkeit brauchen. Im Multiplexbetrieb wären sie dann zu dunkel. Gruß Joachim
> Auch sollen über die Ausgänge nicht nur die Lampen, sondern auch _Relais_ > und andere 12V Verbraucher geschaltet werden können. Dann schau dir beim Schalten der Relais aber die Versorgung der Schaltung mit dem Oszi an. Ich hab bei einer Schaltung mit einem 5V-Relais eine 230V-Last geschalten (UV-Belichter) und mir ist jedesmal der Controller in den Reset gegangen. Hab's ums Verrecken nicht entstört gebracht, nur das Absetzen des Relais hat geholfen. Ich vermute du wirst keinen Leuchtstoff-Röhren-Trafo damit schalten, aber trotzdem als Hinweis. Ralf
@ Joachim Schmidt (mithotyn) >## Variante 1 - PCA9635 ## Gute Idee. >- Nur als SMD verfügbar, Lötaufwand Kein wirkliches Problem, solange es kein BGA ist ;-) Siehe SMD Löten >## Variante 3 - Mehrere µC für PWM, Schieberegister ## >- PWM und Ansteuerung des µC muss programmiert werden Auch kein Problem, siehe Soft-PWM. Da macht dein uC nebenbei noch La Paloma ;-) Und mit ein paar Latches ala 74HC373 oder so kann man wahrscheinlich 100 Ausgänge mit einem uC erschlagen, ggf mehr. MfG Falk
@ Ralf (Gast) >5V-Relais eine 230V-Last geschalten (UV-Belichter) und mir ist jedesmal >der Controller in den Reset gegangen. Hab's ums Verrecken nicht entstört >gebracht, nur das Absetzen des Relais hat geholfen. Snubber benutzt? Ordentliche Abblockkondensatoren an VCC/GND und Reset? Layout? MFG Falk
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.