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


von Tacker (Gast)


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

von Chris (Gast)


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

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


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.

von G. Nicht (Gast)


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.

von Matthias (Gast)


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...

von Steene (Gast)


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

von Stefan K. (_sk_)


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

von Steene (Gast)


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.

von Tacker (Gast)


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

von Matthias (Gast)


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

von Tacker (Gast)


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

von Stammel (Gast)


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

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
Noch kein Account? Hier anmelden.