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
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
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.
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
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
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.
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
@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
@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
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
Eine eigene Frage?
Dieser Thread ist über 19 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.