Hey ik wil een soort ambilight systeem maken voor mijn computerscherm met behulp van een arduino.

Ik heb een python script hiervoor en kan met pyduino met de arduino communiceren. Aangezien de arduino maar 6 pwms heeft en 5 digi outs (als ik met pyduino werk zijn port 1 en 2 voor com toch?) moet ik gaan multiplexen.

In plaats van de 7 kleuren die RGB met digitale signalen kan produceren wil ik alle kleuren kunnen gebruiken. Er moeten in totaal 10 groepen ledstrips worden aangestuurd (3 onder en boven, 2 links en rechts).

Ik weet niet of de PWM port van een arduino snel genoeg kan switchen, daarom heb ik in mijn diagram de optie gezet voor een condensator bij de PWM "ingang". Deze schakeling zou dan de weerstand in het diagram vervangen.

De LED strips die ik heb werken op 12 volt en met een mosfet en een pwm kan ik goed de intensiteit van een kanaal bepalen.

In het diagram zitten mosfets, npn transistoren, weerstanden en dus optioneel condensatoren. Aangezien mijn kennis van elektronica een beetje weggezakt is vroeg ik me af of iemand er even naar kan kijken en indien nodig, zeggen wat er beter kan (vast wel wat:)).

Mijn diagram staat hier:
http://www.avalondesigns.nl/ambilight_schema.pdf

Tnx!

pyduino

Het wordt steeds gekker...

Je schema snap ik niet, geef eens wat uitleg. Ook snap ik niet waarom je je PWM-signaal door een low-pass filter wilt hebben, je wilt toch JUIST een PWM-signaal op de LEDs hebben?

6 pwm kanalen gebruiken voor elke kleur en dan met de 5 losse outputs

Dan stuur je 2 strips tegelijk aan en dat heel snel 5 X achter elkaar aan. dus wat je getekent hebt.

Wat je nou met dat filter wil...

[Bericht gewijzigd door leime op (17%)]

Sorry dat mijn schema niet helemaal duidelijk was.

Ik wil dus 10 groepen met RGB leds aansturen, daarvoor moet ik 30 leds aansturen. Die 30 staan in een grid van 6 bij 5. Door 1 PWM en 1 digitaal aan te zetten wil ik 1 led per keer aansturen. De rest van de pins staan dan op 0.

Voorbeeld: Als de PWM1 aangaat en digitaal 1 gaat aan dan zou de led links boven aan moeten gaan, gaat digitaal 1 uit en digitaal 2 aan, dan is het de led er onder.

Doordat ik bang was dat PWM misschien niet binnen microseconden kon veranderen van PWM pattroon (of "PWM voltage") dacht ik dit op te lossen door de condensator er tussen te stoppen. Deze zou dan nog stroom geven aan de mosfet nadat de PWM port naar een andere led is gegaan. Hierdoor dacht ik dat ze minder snel hoefden multiplexen.

Hoop dat het zo iets duidelijker is.

Ik heb hier ooit een paar testjes mee uitgevoerd. Dat was toe prima te doen, ik zou zeggen, gewoon proberen.

Leime

tnx voor je reactie! Bedoel je met of zonder condensatoren?

Een condensator op die plaats vernietigt het PWM effect. Je krijgt dan een gemiddelde spanning. Dit zorgt ervoor dat je FET niet helemaal opengaat, en zelf dus gaat stoken. Hierdoor zal de spanning over je LEDs lager worden.

Het lijkt me geen ideale oplossing, hoewel je het met wat 'tweaken' best werkend zou kunnen krijgen.

Aan de andere kant: als je vijf keer om de beurt zes LEDs tegelijk aan hebt, dan heeft elke LED dus een maximale dutycycle van 20%. Da's ook niet zoveel.

Wil je perse gebruik maken van de standaard PWM outputs?

Indien er in het hoofdprogramma niet veel meer wordt gedaan kun je relatief eenvoudig zelf een PWM generator maken in het hoofdprogramma: laat elke zoveel uS een teller 1 ophogen en vergelijk deze per pin met de ingestelde waarde. Is deze hoger dan de teller dan uitgang laag. Bij 100 reset je je teller. Op deze manier kun je de alle 20 uitgangen van de arduino als PWM kanaal gebruiken (analog pin 0..5 = digital pin 14..19!).
Om 30 PWM uitgangen te maken kun je 2 groepen van 15 PWM signalen maken. Nu heb je al een maximale dutycycle van 50%!

Als je het helemaal netjes wilt hebben kun je ook gebruik maken van de timerinterrupt

Tip: Alternatief idee met eenvoudiger schema: gebruik 2 tellers en stuur achtereenvolgens de huidige PWM waarde naar de 15 IO poorten en sla deze waarde beurtelings op in een set latches (bv 74HC373) die uitgang 0-14 en 15-29 aansturen. Je hebt nu alleen nog maar een FET of transistor nodig om het signaal te versterken.

[Bericht gewijzigd door AFR op (12%)]

Waarom geen TLC5940?
Zijn kant en klare library's beschikbaar voor de arduino of wat-voor-remake dan ook.

Kan je direct stroom gestuurd regelen en met 2 chips naast elkaar heb je 32 12-bit PWM kanalen. Veel eenvoudiger lijkt mij.

1) Je hebt D2 4x in het schema staan. Ik neem aan dat je D2, D3, D4, D5 bedoelt.

2) het mengen van transistoren en FETS is niet handig. Het voordeel van het lagere spanningsverlies ben je dan weer kwijt.

3) Transistoren zo parallel schakelen werkt niet. Je zult ze ieder hun eigen basisweerstand moeten geven.

4) Jij wilt dus iedere PWM periode van D1 actief naar D2 actief enz. doorschakelen en dan de volgende PWM waarde in de PWM registers zetten? Gedoe. Heeft je hardware PWM dan nog zin?

5) Je zit je leds dan nu 1/5 te multiplexen. (max 6 leds tegelijk aan). Als de led strips op 12V gemaakt zijn gaan ze dan dus max 1/5e van de normale intensiteit hebben.

6) Als je tor (of evt. FET als je volgens punt 2 er een fet voor in de plaats zet) uitzet, krijg je een negatieve VGS. Kan je FET daar tegen?

Dank voor jullie reacties! Ik ga het proberen met de TLC5940 en Darlington Arrays denk ik. De TLC ziet er heel makkelijk uit en een beetje software aanpassen kan ik wel :).

Met de Darlingtons kan ik dan deze pwm signalen naar de ledjes overzetten.

Tnx!

Ik heb niet goed gekeken, ik heb die darlingtons natuurlijk niet nodig... die TLC5940 is al een current sink...