PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] 3x Hardware PWM und Multiplexen mit dem Timer ATTiny2313



jcrypter
20.01.2011, 16:32
Hallo liebes Forum,

ich habe noch nciht viel Erfahrung.. also bitte steinigt mich nicht.

Ich möchte mit einem Tiny2313 RGB-LEDs ansteuern.
Das sollte dank vier Hardware-PWMs ja kein Problem sein, ich brauche dafür ja nur drei.

Meine Frage ist jetzt, kann man den Timer noch parallel anderweitig nutzen?
Fürs Multiplexen benutzt man doch den Timer oder?
Ich stecke noch nicht so tief in der Materie deswegen dachte ich, ich frage euch bevor ich in die falsche Richtung laufe.


Edit:

ich glaube es wäre sinnvoll zu erklären was ich vorhabe.

Nehmen wir an ich habe zwei RGB LEDs.

Diese hängen jedoch nicht direkt an den PWM-Ports des Controllers sondern dazwischen hängen noch Transistoren deren Basis an einen weiteren Pin des Controllers geht, so dass das PWM Signal nur zur LED gelangt wenn der Pin auf high gesetzt wird.

Man bräuchte also sechs Pins an denen jeweils ein Transistor hängt um die beiden LEDs getrennt von einander an und aus zu schalten.

Meine Idee war jetzt beim ersten durchlauf der Routine die Pins für die erste LED einzuschalten und eine Farbe mit den drei PWM-Kanälen zu erzeugen. Beim nächsten Durchlauf werden die anderen Pins auf high gesetzt und die der ersten LED auf low. Mit den PWMs stellt man nun eine andere Farbe ein. Dann beginnt das ganze von vorne.

Wenn man jetzt zu Grunde legt, dass das sehr oft in der Sekunde passiert müsste es doch möglich sein, mit den gleichen PWM Kanälen "gleichzeitig" unterschiedliche Farben anzeigen zu lassen, oder?

Danke für eure Mühe!
Crypi

Besserwessi
20.01.2011, 17:15
Wenn man einen Timer fürs PWM Signal nutzt, kann man damit auch noch was anderes machen. Man hat aber für das PWM Signal je ein Vergleichsregister blockiert, und der Timer sollte immer frei laufen, also nicht im CTC Modus.

Man kann die 2 LEDs im Wechsel bedienen. Das umschalten wirklich synchron mit dem PWM Signal zu bekommen, damit es keine übersprechen von einer LED zu andern Bekommt geht, ist aber schon etwas komplizierter.

stefan_Z
20.01.2011, 17:32
Ich glaube das wird so nicht wirklich was, mach die Dimmung lieber in Software.
Ein guter Ansatz für viele LEDs ist hier BAM - BitAngleManipulation.
Code hatte ich mal geschrieben:
http://www.ledstyles.de/ftopic9256.html

jcrypter
21.01.2011, 09:33
Guten Morgen,

hm eine weitere Problematik wird die Helligkeit sein, oder?
Man bräuchte eine höhere Spannung um die gleiche Helligkeit zu erreichen.

@stefan deine Lösung verstehe ich nicht... ich fürchte da fehlt mir noch der Durchblick.


Welche Lösungen gäbe es noch, um mein Vorhaben zu realisieren?
Es sollte nach Möglichkeit auf 6 RGB-LEDs erweiterbar sein.

hm schade, ich dachte ich hätte eine Lösung gefunden... :(

Crypi

stefan_Z
21.01.2011, 10:17
Die Spannung erhöhen hilft nicht, das würde die LEDs schädigen.
Und ja: wenn du die LED nur 1/2 der Zeit ansteuern kannst, wird sie gefühlt 1/2 so hell sein.
Wenn du 6 RGBs treiben willst, brauchst du ja schon 16 PWM-Signale - das wird schwer am 2313.
Alternativ kann man entsprechende Treiber nutzen (die haben dann I2C oder SPI z.B.) oder Schieberegister - was allerdings flackern dürfte.

jcrypter
21.01.2011, 10:55
Ok, ich bin ja aber nicht der erste der so etwas umsetzen möchte..

Dann erstmal abseits der Möglichkeiten des Tiny2313..
Wie geht man das generell an.
Klar, wenn man genut pwm-Signale hat ist es kein Problem.
Wenn man aber nun einen normalen Controller nimmt, der hat dann ja vielleicht 3 oder 4 Kanäle...

Crypi

stefan_Z
21.01.2011, 11:25
J dann trickst man es eben mit der BAM oder nimmt direkt nen IC der das für einen macht. TI hat z.b. die 59xx Reihe mit einigen Modellen - die machen dir dann schon 15x12Bit PWM mit digitaler mA Einstellung und allem - aber ganz so einfach ist das auch nicht.

Besserwessi
21.01.2011, 11:39
Die einfachste Lösung um die volle Helligkeit zu behalten wäre wirklich ein unabhängiges PWM Signal für jede LED. Für 6 mal RGB also 18 Kanäle. Man kann es auch mit Multiplexing machen und dann den Strom etwas erhöhen - das ist aber ein gewisses Risiko (wenn das Programm Fehler hat) und die Frequenz zum Multiplexen muss dann eher höher sein (z.B. 1 kHz).

Für einige wenige LEDs könnte man PWM noch in Software machen. In BASCOM kann es da mit der Geschwindigkeit knapp werden - könnte aber gerade noch gehen, wenn man sich anstrengt und nicht zu viel Auflösung verlangt. Bei 18 Kanälen wäre da eher ein etwas größerer Kontroller (z.B. Mega48) angebracht statt Schieberegistern. Die Schieberegister gäben aber auch keine extra Verzögerung, wenn man Hardware SPI nutzt. Man könnte z.B. 2 Kanäle per Hardware PWM und 16 per Software PWM machen.

Sonst halt die fertigen PWM ICs - die sind nur nicht überall zu bekommen.

jcrypter
21.01.2011, 11:58
schwierig, schwierig..

Ich danke euch für eure Hilfe!
Ich glaube das ist noch eine Nummer zu groß für mich, ich denke ich werde mit etwas kleinerem anfangen und mich langsam dahin tasten.

Habt ein schönes Wochenende!
Crypi