Har en idé om att bygga ( ännu en..) matris med RGB-lysdioder.
Behöver både pulsbreddsmodulera dom (PWM) och multiplexa.
Finns det ngt generellt tips om frekvenser när man gör detta?
Att man inte kan ha för låg frekvens begriper jag men var går
gränsen för den högsta frekvens och finns det några
vinster / förluster med den? Att "grejorna" skall hänga med är ju självklart.
PWM / Multiplex
Re: PWM / Multiplex
det skulle väl vara ev. kapacitans i kretsen som avgör en högre gräns. Sen drar ju högre frekvens alltid mera ström.
Jag skulle utgått från en acceptabel lägsta blinkfrekvens, t.ex. 100 Hz och sedan räkna ut frekvenserna efter det, beroende på hur många kanaler som ska multiplexas. Man kan väl kombinera multiplexingen med PWM genom att varje diod får sin signal en viss % av den tilldelade tiden, och på så vis behöver man inga höga frekvenser alls.
Allt under 20 kHz är väl "lågfrekvens" och du kan köra med vilka komponenter du vill utan att behöva fundera så mycket på hastighetskrav och kapacitanser. Under 10.000 Hz så är du väl helsäker.
Hur många dioder rör det sig om?
Jag skulle utgått från en acceptabel lägsta blinkfrekvens, t.ex. 100 Hz och sedan räkna ut frekvenserna efter det, beroende på hur många kanaler som ska multiplexas. Man kan väl kombinera multiplexingen med PWM genom att varje diod får sin signal en viss % av den tilldelade tiden, och på så vis behöver man inga höga frekvenser alls.
Allt under 20 kHz är väl "lågfrekvens" och du kan köra med vilka komponenter du vill utan att behöva fundera så mycket på hastighetskrav och kapacitanser. Under 10.000 Hz så är du väl helsäker.
Hur många dioder rör det sig om?
Re: PWM / Multiplex
Jag tänker styra en 4x4x4 matris (64 leds) och använder en AVRprocessor.
Varje bit på utgångarna styr max. 8 leds ( R el. G el. B).
Port A = R
Port B = G
Port C = B
Port D = Katodstyrning (RGB har gemensam katod)
Varje bit på Port D styr 8 leds, porten styr max. 64 leds.
Varje utgång från AVR:en är buffrad via en transistor som lätt
klarar 100KHz men ( och jag vet att man eg. skall strömstyra LED:s men
kan inte riktigt reda ut hur man gör) jag styr spänningen på dom...
Strömstyrning när belastningen varierar... hur göra?
Tror och hoppas att, om jag mäter spänningen vid max.ström och
lägger mig lite under, att det skall hålla ändå.
Hittade lite annorlunda fyrkantiga RGBleds på
www.dotlight.de
Varje bit på utgångarna styr max. 8 leds ( R el. G el. B).
Port A = R
Port B = G
Port C = B
Port D = Katodstyrning (RGB har gemensam katod)
Varje bit på Port D styr 8 leds, porten styr max. 64 leds.
Varje utgång från AVR:en är buffrad via en transistor som lätt
klarar 100KHz men ( och jag vet att man eg. skall strömstyra LED:s men
kan inte riktigt reda ut hur man gör) jag styr spänningen på dom...
Strömstyrning när belastningen varierar... hur göra?
Tror och hoppas att, om jag mäter spänningen vid max.ström och
lägger mig lite under, att det skall hålla ändå.
Hittade lite annorlunda fyrkantiga RGBleds på
www.dotlight.de
Re: PWM / Multiplex
>Strömstyrning när belastningen varierar... hur göra
varje LED måste strömbegränsas individuellt med ett motstånd. Sen lägger du på en känd spänning, t.ex. 5 volt och dimensionerar motståndet så att det kan gå max t.ex. 20 mA genom dioden. Sen spelar det ingen roll hur många didoer du styr samtidigt med transistorn, du ser bara till att den bottnar så får de rätt spänning = rätt ström. Nivån styr du ju sedan med PWM och då styr du ju varken med spänning eller ström, utan med tid.
(sen, om den maximala medelströmmen genom en LED är 20mA så kanske max pulsström ligger på 100mA / 1mS (t.ex) och då kan du ju öka strömmen betydligt. Eftersom du har åtta "linjer" att växla mellan så kommer ju en lysdiod att max lysa 1/8 av tiden i alla fall, och du kan därför dimensionera motståndet till 100mA ström - den kommer ändå bara få 1/8 av det i genomsnitt. (Men då får du se till att processorn inte stannar av misstag, då kan ju dioderna brännas).
Nu lyckades jag inte hänga med hur du kan styra 64x3 dioder med tre + åtta trådar... jag får det till 3x8 = 24 dioder ??? Ska var och en av de 64x3 dioderna kunna styras indivuiduellt? Som du beskriver det får jag det till att du kan styra åtta rader med RGB-dioder, med åtta dioder i varje rad.. men då får ju alla dioder i samma rad alltid samma värde/färg. Eller så är jag för trött just nu för att fatta?
EDIT: jag var för trött! jaja,, fyra portar = 32 trådar... ok ...
men fortfarande gäller ju principen att varje enskild diod ska ha eget motstånd, dvs 64x3 motstånd! Vill man slippa det kan det ju bli besvärligt. Att bara välja att kräma på en spänning och tro att det håller går ju inte. Särskilt inte om du väljer "lite lägre än spänningen vid maxström"... maxström har du ju om alla dioder lyser. om bara en diod ska lysa får den hela kalaset och brinner direkt. Och om du försöker med spänningsreglering på annat vis (eller om du försöker dela strömmen mellan dioderna utan att använda individuella motstånd) kommer de att lysa svagt om alla är på och starkt om de är få. Kanske det finns RGB-dioder med inbyggda motstånd avsedda för viss spänning? det hade löst problemet.
men till frågan:
Om du räknar från 0 till 7 på port D hela tiden så kan du PWM:a utsignalerna på port A,B och C.
Antag att du kör ett varv 100 ggr/sek. Då har du 1/800 sek då varje rad lyser. Det är 1250 µS per rad att jobba på.
delar du in 1250 µS i t.ex. 64 pwm-steg så ska du uppdatera utgångarna A,B och C var 19:e µS ungefär. Då kan du få ut 64*3 = 192 olika färgkombinationer på varje diod. Nu vet jag inte vad du ska få data ifrån till alla dessa kombinationer, men det får väl läsas ur ramminnet. Kör du pwm i 16 steg blir det enklare, du behöver bara 4 bitar (=en halv byte) för att lagra informationen och du har 78 µS på dig mellan varje uppdatering. Men då kan du bara få 48 färger per diod)
varje LED måste strömbegränsas individuellt med ett motstånd. Sen lägger du på en känd spänning, t.ex. 5 volt och dimensionerar motståndet så att det kan gå max t.ex. 20 mA genom dioden. Sen spelar det ingen roll hur många didoer du styr samtidigt med transistorn, du ser bara till att den bottnar så får de rätt spänning = rätt ström. Nivån styr du ju sedan med PWM och då styr du ju varken med spänning eller ström, utan med tid.
(sen, om den maximala medelströmmen genom en LED är 20mA så kanske max pulsström ligger på 100mA / 1mS (t.ex) och då kan du ju öka strömmen betydligt. Eftersom du har åtta "linjer" att växla mellan så kommer ju en lysdiod att max lysa 1/8 av tiden i alla fall, och du kan därför dimensionera motståndet till 100mA ström - den kommer ändå bara få 1/8 av det i genomsnitt. (Men då får du se till att processorn inte stannar av misstag, då kan ju dioderna brännas).
Nu lyckades jag inte hänga med hur du kan styra 64x3 dioder med tre + åtta trådar... jag får det till 3x8 = 24 dioder ??? Ska var och en av de 64x3 dioderna kunna styras indivuiduellt? Som du beskriver det får jag det till att du kan styra åtta rader med RGB-dioder, med åtta dioder i varje rad.. men då får ju alla dioder i samma rad alltid samma värde/färg. Eller så är jag för trött just nu för att fatta?
EDIT: jag var för trött! jaja,, fyra portar = 32 trådar... ok ...
men fortfarande gäller ju principen att varje enskild diod ska ha eget motstånd, dvs 64x3 motstånd! Vill man slippa det kan det ju bli besvärligt. Att bara välja att kräma på en spänning och tro att det håller går ju inte. Särskilt inte om du väljer "lite lägre än spänningen vid maxström"... maxström har du ju om alla dioder lyser. om bara en diod ska lysa får den hela kalaset och brinner direkt. Och om du försöker med spänningsreglering på annat vis (eller om du försöker dela strömmen mellan dioderna utan att använda individuella motstånd) kommer de att lysa svagt om alla är på och starkt om de är få. Kanske det finns RGB-dioder med inbyggda motstånd avsedda för viss spänning? det hade löst problemet.
men till frågan:
Om du räknar från 0 till 7 på port D hela tiden så kan du PWM:a utsignalerna på port A,B och C.
Antag att du kör ett varv 100 ggr/sek. Då har du 1/800 sek då varje rad lyser. Det är 1250 µS per rad att jobba på.
delar du in 1250 µS i t.ex. 64 pwm-steg så ska du uppdatera utgångarna A,B och C var 19:e µS ungefär. Då kan du få ut 64*3 = 192 olika färgkombinationer på varje diod. Nu vet jag inte vad du ska få data ifrån till alla dessa kombinationer, men det får väl läsas ur ramminnet. Kör du pwm i 16 steg blir det enklare, du behöver bara 4 bitar (=en halv byte) för att lagra informationen och du har 78 µS på dig mellan varje uppdatering. Men då kan du bara få 48 färger per diod)
-
Mindmapper
- Inlägg: 7230
- Blev medlem: 31 augusti 2006, 16:42:43
- Ort: Jamtland
Re: PWM / Multiplex
Det blir intresant att se hur resultatet blir.
Att multiplexa i sig självt är ju inga problem, men att få pwm att bli vettig så att ljusstyrningen blir linjär kan vara lite speciellt. Med ett mindre antal LED är det säkert inga problem, men med ökande antal LED blir det längre avbrott utan ström. Då är det lätt att få flimmer vid låg ljusstyrka.
Har du inte kopplat upp hela matrisen kan du prova med en LED och olika scenarier enligt timmingen jesse kom fram till.
Att multiplexa i sig självt är ju inga problem, men att få pwm att bli vettig så att ljusstyrningen blir linjär kan vara lite speciellt. Med ett mindre antal LED är det säkert inga problem, men med ökande antal LED blir det längre avbrott utan ström. Då är det lätt att få flimmer vid låg ljusstyrka.
Har du inte kopplat upp hela matrisen kan du prova med en LED och olika scenarier enligt timmingen jesse kom fram till.
