mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Leistung der Atmel-µC, Lichtsteuerung (PWM) mit 24 Kanälen


Autor: Tacker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo alle miteinander!

Ich hab da mal 'ne Frage zur Leistungsfähigkeit eines Atmel-µC.

Ich möchte eine Art "Stimmungs-Beleuchtung" für eine Modellbau-Ähnliche 
Umgebung bauen. Die Beleuchtung wird aus 4 "Mini-Scheinerfern" bestehen. 
Jeder Schweinwerfer enthält sechs SMD-LED's verschiedener Farben. Also 
insgesammt 24 LED's, die möglichst unabhängig von einander angesteuert 
werden sollen. Auf 12 würde ich mich auch noch einlassen.
Um die gewünschte Stimmung zu erzeugen, sollen die LED's über PWM 
gedimmt werden können.

Soweit so gut. Jetzt hat ja so ein µC nur eine begrenzte Anzahl an 
Hardware-PWM-Ports. Wie schätzt ihr die Changen ein, z.B. an einem 
ATMega8 fünf Ports über Soft-PWM zu betreiben und 1x den Hard-PWM? Hinzu 
kommt eine Kommunikation unter den µC's selbst.


Machbar - schlecht - oder Katastrophe ???

Grüße
Tacker

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zunächt einmal: 4 Scheinwerferchen ansteuern, so dass beliebige Farbe 
und Helligkeit möglich ist geht auch mit 12 PWMs (4 SW mal 3 LED´s, RGB)

Benutze mal die Suchfunktion, da gab es schon Beiträge zu, das und mehr 
sollte ein ATmega8 ordentlich programmiert locker bewältigen können

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Absolut machbar - bei einer Auflösung von 8 Bit kein Problem, darüber 
wird es schon enger. Hauptsache, der Controller hat genug freie Pins.

Autor: G. Nicht (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du gehst ja schon den richtigen Weg, die Aufgabe auf mehrere µPs zu 
verteilen. Ob jetzt vier oder acht, das ist kostenmäßig ziemlich egal.

Du brauchst allerdings keine Kommunikation untereinander, sondern nur 
einen 'master', der Befehle an die übrigen µPs sendet. Hierfür reicht 
ein einfaches Protokoll, was so aussehen könnte und über die UART oder 
SPI gehandhabt wird: 1.Byte Adresse '1' - '8', 2.-5. Byte Kanalwerte 
1-4.
Anschließend eine Pause, sodaß sich die Empfänger neu synchronisieren 
können.
Man kann es auch eleganter machen, aber für diese Anwendung sehe ich 
keinen Bedarf.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, oder externe IC's:
MAX6964, 17PWM-Ausgänge, je 4bit Auflösung
PCA9634, 8PWM-Ausgänge, je 8bit Auflösung
mit I2C ansteuerbar...

Autor: Steene (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
warum mehrere µCs verwenden?

also ich schaff mit einem Tiny2313 bei 8MHz intern relativ locker 12 PWM 
Kanäle bei 8 Bit Auflösung.
Einfach nen Timer nehmen, ein Register hochzählen und bei jedem 
Inkrement schauen ob der Wert für einen der Kanäle überschritten wurde, 
wenn ja -> Einschalten. Bei 255 alle wieder ausschalten. Fertig.
So und ob ich nun 12 oder 24 oder was weiß ich wieviele Kanäle hab is 
der Routine ja relativ egal.
Mega32 nehmen, der hat ja schon 4*8... 32 Pins.

Einfach mal nachrechnen wie lang die Routine wird und dann schauen ob 
der µC das noch schafft. ich wette aber ja...

PS: Mit dem Carry kann man lustig vergleichen und dann shiften
--->


Int_Tov:
  push temp1
  in temp1,sreg
  push temp1

  clr temp1

  cp CH4,Dimmvalue
  ror temp1
  cp CH5,Dimmvalue
  ror temp1
  cp CH6,Dimmvalue
  ror temp1
  cp CH7,Dimmvalue
  ror temp1
  cp CH8,Dimmvalue
  ror temp1
  cp CH9,Dimmvalue
  ror temp1
  cp CH10,Dimmvalue
  ror temp1
  cp CH11,Dimmvalue
  ror temp1

  out PortB,temp1

  clr temp1

  cp CH12,Dimmvalue
  ror temp1
  cp CH2,Dimmvalue
  ror temp1
  cp CH1,Dimmvalue
  ror temp1
  cp CH3,Dimmvalue
  ror temp1

  out PortD,temp1


  inc Dimmvalue

  brne Nichtstun
  out PortD,null
  out PortB,null
Nichtstun:

  pop temp1
  out sreg,temp1
  pop temp1
  reti

Autor: Stefan Kleinwort (_sk_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, oder externe IC's (2):

TLC5922  (8-Bit Graustufen)
TLC5940  (12-Bit Graustufen + Dot-correction)

externe ICs haben den Vorteil, dass keine Zusatztreiber notwendig und 
sie id.R. EMV-technisch wesentlich besser sind.

Obige ICs können ürigens bis zu 89mA und bis zu 17V (falls Du mehrere 
LED in Serie schalten willst).

8 Bit Auflösung reichen Dir wahrscheinlich nicht - im unteren Bereich 
siehst Du dann schon deutliche "Treppenstufen".


Gruß, Stefan

Autor: Steene (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn man will kann man den timer ja gleich so laden dass er 
logarithmisch arbeitet...
sprich den timer im CLC Mode betreiben und den Compare Wert bei jedem 
Timerinterrupt aktualisieren.
Dann sollte das auch im unteren Bereich wenig auffallen.
Ich denke jedenfalls dass mehr als 8 Bit für Modellbau vllt n bissl 
overpowered is.

Autor: Tacker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erstmal vielen Dank für die Kommentare!

Die Ideen mit den zusätzlichen IC's und I2C finde ich sehr interessant! 
Ich denke in diese Richtung werde ich mal ein paar Versuche wagen...

Für weitere Ideen und vor allem Kommentare bin ich sehr dankbar!

Grüße
Tacker

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Tacker:
Ich habe gerade ein ähnliches Projekt in der Entwicklung (Platinen sind 
schon fast fertig).
Vielleicht interessiert dich das ja da irgendwie mit einzusteigen...?
Dann bescheid geben

Autor: Tacker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Matthias
Ja, zumindest würde ich mir die Sache gerne mal ansehen.

Kannst mich unter der (temporären) eMail-Adresse erreichen:

tacker_mcnet[at]online[dot]de

Autor: Stammel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mahlzeit !

Ich habe was ähnliches vor und bevorzuge die Lösung mit den I²C-IC's.
Leider sind die hier vorgeschlagenen IC's bei Reichelt nicht verfügbar. 
Kennt jemand ähnliche Typen???

Grüße
Stammel

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.