mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Software PWM Multiplexen


Autor: Joachim Schmidt (mithotyn)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Joachim Schmidt (mithotyn)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: JoergL (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Diesen Chip finde ich für den Zweck auch ganz nett:
<http://www.austriamicrosystems.com/eng/Products/Li...
Aber wahrscheinlich auch nur schwer erhältlich.

HTH,
Jörg

Autor: Thomas Burkhart (escamoteur)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Joachim Schmidt (mithotyn)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nur der Vollständigkeit halber:

Anordnung der LED in einer (logischen) Matrix ist keine Lösung?

Autor: Joachim Schmidt (mithotyn)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.