Hallo,
Ik wil graag een Matrix van 24x8 leds aansturen. Drie mogelijkheden:
1.Nog een Microcontroller
2.Led Matrix driver
3.I/0 expander
Ik zat zelf te denken aan een TLC5947 Matrix Driver, deze heeft 24 kanalen. Hij is alleen niet echt goedkoop en moeilijk te verkrijgen. Ook ontbreekt de Dot Correction.
[Bericht gewijzigd door necessaryevil op (67%)]
hij wil waarschijnlijk een rgb matrix aansturen.
Ik gebruik daarvoor 2x de TLC5940. die heeft wle dot correction en 10bits pwm
Stijnos,
Heb je nog details van je project? Ik ben wel geinteresseerd in het schema, foto's, pcb-layout, ect.
@Anton M: De leds kunnen niet zoveel piekstroom aan. Ik vrees dat als ik 24 lijnen ga scannen, er niet zoveel licht meer overblijft.
Ik zou ook eerder voor schift registers gaan (ga ik zelf ook doen voor een 12x8 matrix). Een 74HC594/5 kan bv. 25mA sourcen (70mA in totaal per device). De andere zijde stuur je dan zoals Anton Mulder zegt via een ULN2803 naar ground (eventueel met nog een 74HC594/5 als je niet genoeg I/O pinnen hebt).
[EDIT] Als je meer stroom wil hebben kan je na de shift registers ook een UDN2981 zetten. Voor mijn 12 rijen kan ik tot 11 mA gaan (2x6), wat met de (mono groene) LEDs die ik heb ruim voldoende is, zelfs met 1/8 multiplexing.
[Bericht gewijzigd door Gyrbo op (27%)]
Oke,
Maar de volgende logische stap zou dan zijn 1/24 multiplexing, dat leek me te weinig.
De leds in het matrix kunnen continue 20 mA aan, maar de piekstroom die de leds bij 1/10 kunnen hebben is slechts 30 mA.
sjors007
...
ik ben zelf ook bezig met lichtkrant 
ik maak nu nog gebruik van 8x32 maar wil strax over gaan naar 16x....
ik maak gebruik van Schuifregisters(74HC595) en de ULN2803 deze word aangestuurd door een 4017. zo kan ik met 5 draden een hele lichtkrant aansturen:D (3 voor de schuifregister en 2 voor de 4017 (reset en clock))
omdat ik strax naar 16x... ga maak ik gewoon gebruik van 2x8 omdat je anders maximaal 1000/16 = 63Hertz kan krijgen dat kan je zien dus ik maak gebruik van 2x8 kom je uit op 125 Hz
dus bovenste 8 worden apart aangestuurd en onderste 8;)
voor meer info of hulp moet je gewoon vragen!
MVG Sjors;)
He Sjors,
Krijg je nog genoeg licht uit je leds zo? Klopt het dat je leds 1/256 van de tijd aanstaan? Ik snap ook even niet hoe je aan die 63Hz komt. Is 1000 je maximale snelheid?
Heb je anders een schema? (Blokschema kan ook natuurlijk).
sjors007
...
1/8 heb ik he. in me schuifregister plaats ik 32 x 1bits en dan laat me ULN2803 de stroom door deze word aangestuurd door de 4017. dit is dus 1/8 tijd
Frequentie word in Hertz genoemd
ik heb altijd geleerd dat je Hertz in 1 seconden moet doen.
1 seconden = 1000ms
1000/8 (8 is me aantal row's) = 125Hz
dus elke "row" word 125 aangestuurd in 1 seconden.
betekend wel dat je een interrupt moet geven om de 1ms. dit is in praktijk te kort omdat dan je lichtintensiteit te laag word.
ik heb even in leugentje xD:P ik heb 7x32
ik maak zelf gebruik van 2ms dit betekend dus 500Hz (1000/2ms)
500 / 7 = 71Hz
elke row zal dus 71x worden aangestuurd. ik heb hier geen problemen mee.
nee helaas heb ik nog geen schema ik maak alles ter plekke maar zal binnen kort een schema maken deze wil ik dan wel naar je opsturen. ik weet niet hoe het zit met je code.
Ik was van plan om de aansturing als volgt te doen:
- Shift registers laden via SPI. Op die manier kan je in theorie tot clock/2 gaan (voor AVR toch). Deze zal voor mij dus op 500kHz (1Mhz clock) tot 4MHz (8MHz clock) liggen. Ik gebruik dus 3 shift registers (1 voor kolommen icm ULN2803 + 2 voor de rijen) en shift iedere 24 bits in
- Er loopt een timer die een interrupt afvuurt. De frequentie hiervan heb ik nog niet bepaald, maar ligt waarschijnlijk op een paar kHz. In de interrupt routine puls ik de latch clock zodat de nieuwe kolom getoond wordt.
- Als alle 8 kolomen gedaan zijn is er een "blanking time" (geen LEDs aan), deze kan langer/korter worden om zo de helderheid te regelen
Op die manier zijn de LEDs dus 1/8 aan en kan je de snelheid redelijk eenvoudig regelen. Het merendeel van het werk (de shift registers laden) is niet tijdskritisch (zo lang het tussen de timer interrupts lukt) en vergt geen CPU (wordt door hardware gedaan). Bovendien blijft de interrupt routine heel licht.
Ik heb wel een schema (nog niet getest wegens gebrek aan onderdelen), maar dit is vrij standaard.
Je gebruikt de registers als een soort serieel naar parallelomzetting?
Kan iemand uitleggen hoe dat werkt? Ik kan alleen een manier bedenken waarbij de leds veel korter aanstaan als 1/8...
[Bericht gewijzigd door necessaryevil op (59%)]
Dat klopt inderdaad. Ik heb momenteel het schema niet bij me, dus ik zal het proberen met wat ASCII-art uit te leggen:
+--------+ +--------+ +-------+
| MISO o--x | | | |
| MOSI o-----------,-o DS | 8 | |
| CLK o---, | | o--/--o o--/-,
| SS o--AND----,-(-o SH_CP | | | |
| PB1 o-------,-(-(-o ST_CP | |ULN2803| |
| | | | | | | +-------+ kolommen
|AVR | | | | | 74HC595|
+--------+ | | | +--------+
| | | X X X X X X X X
| | | +--------+ X X X X X X X X
| | +-o DS | X X X X X X X X
| +-(-o SH_CP | 8 X X X X X X X X
+-(-(-o ST_CP o--/--Rijen X X X X X X X X
| | | | | X X X X X X X X
| | | | 74HC595| X X X X X X X X
| | | +--------+ X X X X X X X X
| | |
| | | +--------+ X X X X X X X X
| | '-o DS | X X X X X X X X
| '---o SH_CP | 8 X X X X X X X X
'-----o ST_CP o--/--Rijen X X X X X X X X
| | X X X X X X X X
| 74HC595| X X X X X X X X
+--------+ X X X X X X X X
X X X X X X X X
Je maakt dus iedere keer een kolom actief (sink) via het bovesnte shift register. De andere twee bepalen welke rijen (source) oplichten.
Omdat ik nog andere devices vanuit SPI aanstuur gebruikt ik een AND poort op de seriële klok. PB1 is de latch clock en deze zorgt dat de inhoud van de shift registers effectief gebruikt wordt.
[Bericht gewijzigd door Gyrbo op (11%)]
plantrekker
True story bro!
Hou er rekening mee dat je bij het schema van Gyrbo maar een piekstroom van 8,75mA mag hebben per led. Meer kan de 74HC595 niet aan. Als je dus multiplext aan 1/8, dan is IAV 1,1mA per led.
Oke, dat is geen probleem. Kan ik op de manier van Gybro wel meerdere kolommen tegelijk aanzetten?
Stroom maakt niet uit, ik kan er extra torretjes tussen zetten, of een ander IC gebruiken.
[Bericht gewijzigd door necessaryevil op (56%)]
plantrekker
True story bro!
Dat is helemaal niet de bedoeling, als je 2 kolommen samen activeert, lichten bij allebei dezelfde leds op. De leds zullen het ook niet graag hebben.
Ik bedoelde natuurlijk de rijen.
Want het leek me dat als je zowel de rijen als de kolommen gaat scannen, dat er dan weinig on-time zou zijn. Kan dat?
plantrekker
True story bro!
Natuurlijk kan dat. Ik denk dat je het principe van multiplexen nog niet goed inziet. Zoek hier maar even op het forum.
Je maakt telkens maar 1 kolom actief, maar per kolom stuur je wel ineens de gepaste rijen. Je scant dus enkel de kolommen.
In de opstelling die ik gegeven heb zou je dus de volgende bitstreams sturen om alle LEDs aan te hebben:
KOLOMMEN RIJEN
10000000 11111111 11111111 (wacht op timer en puls latch)
01000000 11111111 11111111 (wacht op timer en puls latch)
00100000 11111111 11111111 (wacht op timer en puls latch)
00010000 11111111 11111111 (wacht op timer en puls latch)
00001000 11111111 11111111 (wacht op timer en puls latch)
00000100 11111111 11111111 (wacht op timer en puls latch)
00000010 11111111 11111111 (wacht op timer en puls latch)
00000001 11111111 11111111 (wacht op timer en puls latch)
00000000 00000000 00000000 (wacht op timer en puls latch, dit dient om de helderheid digitaal je regelen)Oke ik begrijp het helemaal! Dankjewel voor jullie uitleg! (Ben soms beetje traag van begrip
)
Ik heb nu dit ic'tje op het oog, moet de ULN vervangen (is dan gelijk een stroombron)
http://nl.farnell.com/allegro-microsystems/a6282ees-t/led-driver-16-ch…
Leek me wel mooi ding.
Inderdaad een mooi ding. Hou er wel rekening mee dat je de QFN package hebt geselecteerd. Volgens de datasheet bestaat er ook een SOIC, maar die vind ik niet onmiddelijk op farnell.
Had al gezien dat het een moeilijk soldeerbaar iets was, maar er staan nog meer van dit soort IC's in de sectie "led driver". Was maar voorbeeld.
Dit is ook een leuke:
http://nl.farnell.com/allegro-microsystems/a6276ea-t/led-driver-ic/dp/…
Nog een vraag,
Kan ik de leds ook nog dimmen met pwm (Als ik bijvoorbeeld kleuren wil mengen?
Of zijn standaard schuifregisters hier niet snel genoeg voor?
Roland van Leusden
It's the rule that you live by and die for It's the one thing you can't deny Even though you don't know what the price is. It is justified.
Of zijn standaard schuifregisters hier niet snel genoeg voor?
Schuifregisters zijn snel genoeg (74HC595 100MHz), maar je uC moet ze ook zo snel aan kunnen sturen.
Echte PWM zal waarschijnlijk niet lukken. Wat je wel kunt doen is (zoals ik al eerder voorgesteld heb) na het scannen van de kolommen een tijd niets aansturen. Op die manier zijn de LEDs dus relatief gezien korten aan heb je dus eigenlijk ook PWM. In feite zorgt het scannen op zich al voor een PWM. 8 kolommen geeft dan 12.5% PWM. Door een aantal "virtuele kolommen" toe te voegen kun je dit nog verder naar beneden halen.