- LiTime Speicher und Akkus         
Ergebnis 1 bis 9 von 9

Thema: 20 RGB-LEDs - Do/Loop oder Timer

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    25.12.2006
    Alter
    36
    Beiträge
    51

    20 RGB-LEDs - Do/Loop oder Timer

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hi Leute,

    zur Zeit baue ich mir eine Deckenbeleuchtung mit 5 Halogenstrahlern und wahrscheinlich 20 RGB-LEDs zur indirekten Beleuchtung. Jede dieser LEDs soll einzeln ansteuerbar sein um später noch ein paar nette Effekte einbauen zu können

    Ich habe schon ein Programm geschrieben, mit dem ich per Timer EINE LED super steuern kann.
    Bei den 20 LEDs werden Shiftregister nacheinander die LEDs an, bzw ausschalten, sodass immer nur eine LED zur gleichen Zeit leuchtet. (Die Shiftregister werden zurzeit noch per Software simuliert)

    Jetzt steht ich vor dem Problem, dass der Controller (Mega 8/16MHz) anscheinend gut ausgelastet ist und die LED flackert. Deshalb habe ich die SoftwarePWM aus dem Timer genommen und in eine Do-Loop-Schleife gesetzt.
    Meine Frage ist jetzt, wie ich das am besten löse, um auch noch Signale einer Fernbedienung (Funk RFM12) auswerten zu können?

    - Software-PWM in Do-Loop, Timer und Interupt für ändern der Farben und andere Funktionen
    - Software-PWM in Timer, Do-Loop + Interupt für andere Farben und Funktionen
    - Hardware-PWM und LEDs per Timer/Do-Loop durchschalten

    Diese drei Lösungsansätze scheinen machbar zu sein, wobei der zweite Punkt wahrscheinlich in ASM programmiert werden müsste und der Timer genaustens eingestellt werden, sodass die LEDs nicht flackern.

    Den ersten Punkt habe ich eben ausprobiert und schein ganz gut zu laufen: Der Controller schaltet alle LEDs durch, flackert nicht. Mit einem Timer kann ich kurze befehle ausführen ohne dass man es merkt. Bleibt nur noch auszuprobieren ob das Funkmodul schnell genug ausgelesen werden kann, ohne dass die LEDs ausfallen.

    Was würdet ihr vorschlagen? Wie wird das bei den RGB-Würfeln mit noch mehr LEDs gelöst?

    Schonmal vielen Dank für eure Hilfe
    Monday

    EDIT: Nachteil bei Hardware-PWM wäre ausßerdem, dass ich keinen Timer mehr frei hätte um Farben zu wechseln, das ginge dann nur noch per do-loop und wait

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.12.2008
    Beiträge
    1.427
    erstmal multiplexen und dann do-loop und wait wird das einfachste sein denk ich
    kommst mit 16 pins hin
    mfg thomas

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    25.12.2006
    Alter
    36
    Beiträge
    51
    Danke für die schnelle Antwort.
    Meinst du mit multiplexen die Seriellen Shiftregister oder einen Latch z.B. 74HC573 (wegen den 16 Pins)?

    Gruß
    Monday

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.12.2008
    Beiträge
    1.427
    Die led an den pin ran hängen wen sie mehr power vertragen empfielt sich nen verstärker bzw transistor dazwichen

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.05.2007
    Beiträge
    329
    Hallo Monday,

    damit du jede der 16 LEDs einzeln dimmen kannst, brauchst du 16 PWMs. Selbst wenn der ATMega nichts anderes zu tun hat, habe ich nicht mehr als 8 per Software-PWM hinbekommen. Letzten Endes habe ich die PWMs einen PCA9635 machen lassen.

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    25.12.2006
    Alter
    36
    Beiträge
    51
    Hi,
    ich glaube wir missverstehen uns gerade ein bisschen.
    Die 20 LEDs sind ja RGBs, d.h. ich brauche füe eine LED schon 3 PWMs. Um mehrere LEDs unterschiedlich leuchten zu lassen, dachte ich, dass ich per Shiftregister immer eine LED nach der anderen an 5V schalte und die Masse (die drei Farben) an die PWMs.
    Das ganze muss natürlich so schnell gehen, dass dem Auge nicht auffällt, dass die LEDs hintereinender aufleuchten.
    Wie gesagt, bisher habe ich zu Testzwecken nur eine LED angeschlossen. Ich hoffe, dass ich es am Wochenende schaffe ein Shiftregister und noch ein paar LEDs anzuschließen.

    Zusammengefasst:
    - 3 PWMs für alle Farben
    - LEDs durchschalten (wie ein schnelles Lauflicht) um jede LED einzeln ansteuern zu können.

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.12.2008
    Beiträge
    1.427
    du brauchst kein shiftregister dazu . 10*2 ist 20 leds *3 farben 2*3 ist 6 + 10 = 16 also 16 pins

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    25.12.2006
    Alter
    36
    Beiträge
    51
    Hi Thomas,
    ich habe einige Minuten gebraucht um deine Rechnung zu verstehen , aber sie klingt absolut logisch.
    Es werden je zwei LEDs an einen der 10 Ports angeschlossen. Dazu habe ich zwei mal 3 PWMs für die Farben. So kann ich mit 6 Software PWMs alle LEDs nach belieben ansteuern
    Dankeschön, ich werde das ganze ausprobieren und berichten ob der Controller schnell genug ist. Ansonsten muss ich es mit einem probieren der 20MHz unterstützt.
    MFG Monday

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    Sonst schau dir mal die TLC59xx von TI.com an.
    Die haben je 16 KSQ-Ausgänge und sind recht easy zu proggen.
    Der eine hat auch I2C, das kommt ganz gut vonwegen Pins einsparen - und 12-Bit-PWM haben die fast alle...
    16 Pins wären dann 3 RGB-LEDs plus 1 Pin Rest - das ganze 4-fach multiplexen und fertig ist die Laube!

    Samplecode zu ein paar Typen (5943 und 59116 glaubich) findest du bei ledstyles.de

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiTime Speicher und Akkus