Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

8 ledjes dmv PWM dimmen: hoe?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,
ik denk dat het redelijk simpel is maar kom er niet aan uit (heb er ook niet zoveel verstand van):
Ik gebruik hiervoor Arduino bordje wat aan men pc hangt (heeft verschillende uitgangen).

Alles wordt bedient via de pc en hierop heb ik een reeks leds welke ik apart aan/uit kan zetten (ik schakel dan de plus op 0).
Nu wil ik deze leds ook nog allemaal (tegelijk) kunnen dimmen.

Nu heeft die arduino dus ook enkele PWM uitgangen waarmee je een LED ofzo kunt dimmen. Maar hoe maak ik een schakeling die dan AL mijn plus draadjes dimt?

slechte tekening:
L L L L L L L L
| | | | | | | |
| | | | | | | |
Arduino bordje uitgangen

( L=Led )
( | = + draad )
Ik dacht misschien op iedere draad en AND poort te zetten maar weet niet of dat dan nog goed dimt?

[ Voor 4% gewijzigd door Verwijderd op 20-05-2008 12:06 ]


  • Sprite_tm
  • Registratie: September 2002
  • Laatst online: 29-10 06:07

Sprite_tm

Semi-Chinees

Je zou es kunnen proberen om door middel van bijvoorbeeld een timer een softwarematige 8-kanaals PWM-unit te maken, dan kan je elk ledje individueel dimmen. Als je toch liever een hardwarematige oplossing wil hebben kan je tussen de - van de ledjes en de ground van je schakeling een tor (BC550 ofzo) zetten die dmv een basisweerstand (pak 'm beet, 1K oid) aan de PWM-uitgang van je Arduino hangt.

Ik heb de titel van je topic trouwens even aangepast, 'simpel elektronicavraagje' is nou niet echt een titel die meteen het probleem omschrijft.

[ Voor 15% gewijzigd door Sprite_tm op 20-05-2008 12:09 ]

Relaxen und watchen das blinkenlichten. | Laatste project: Ikea Frekvens oog


Verwijderd

Topicstarter
Sprite_tm schreef op dinsdag 20 mei 2008 @ 12:08:
Je zou es kunnen proberen om door middel van bijvoorbeeld een timer een softwarematige 8-kanaals PWM-unit te maken, dan kan je elk ledje individueel dimmen. Als je toch liever een hardwarematige oplossing wil hebben kan je tussen de - van de ledjes en de ground van je schakeling een tor (BC550 ofzo) zetten die dmv een basisweerstand (pak 'm beet, 1K oid) aan de PWM-uitgang van je Arduino hangt.

Ik heb de titel van je topic trouwens even aangepast, 'simpel elektronicavraagje' is nou niet echt een titel die meteen het probleem omschrijft.
kun je dat software matige iets verder uitleggen?
zou niet weten hoe ik dat software matig zou kunnen oplossen?

  • Sprite_tm
  • Registratie: September 2002
  • Laatst online: 29-10 06:07

Sprite_tm

Semi-Chinees

Probeer Google es?

Relaxen und watchen das blinkenlichten. | Laatste project: Ikea Frekvens oog


  • JER00N
  • Registratie: Maart 2002
  • Niet online
Wil je elk LEDje apart dimmen of allemaal hetzelfde? In het eerste geval kun je zoiets doen:

code:
1
2
3
4
5
6
7
8
9
10
11
While 1 = 1

  PORTB.0 = 1
  PORTB.1 = 1
  PORTB.2 = 1
  For i = 0 To 255
    If i = dcR Then Low PORTB.0
    If i = dcG Then Low PORTB.1
    If i = dcB Then Low PORTB.2
  Next i   
Wend


dcR, dcG en dcB zijn duty cycles van 0 tot 255. Hier is het dus voor 3 LEDs maar je kan dit makkelijk uitbreiden naar 8 LEDs. Je steeds eerst alle LEDs aan en vervolgens ga je tellen van 0 tot 255. In elke 'ronde' in de for-loop kijk je of i gelijk is aan een van de duty cycles. Als dat zo is zet je de bijbehorende LED uit.

De frequency van deze manier van PWM'en is wel wat lager maar nog hoog genoeg om het niet te zien knipperen.

Verwijderd

Topicstarter
JER00N schreef op dinsdag 20 mei 2008 @ 13:44:
Wil je elk LEDje apart dimmen of allemaal hetzelfde? In het eerste geval kun je zoiets doen:

code:
1
2
3
4
5
6
7
8
9
10
11
While 1 = 1

  PORTB.0 = 1
  PORTB.1 = 1
  PORTB.2 = 1
  For i = 0 To 255
    If i = dcR Then Low PORTB.0
    If i = dcG Then Low PORTB.1
    If i = dcB Then Low PORTB.2
  Next i   
Wend


dcR, dcG en dcB zijn duty cycles van 0 tot 255. Hier is het dus voor 3 LEDs maar je kan dit makkelijk uitbreiden naar 8 LEDs. Je steeds eerst alle LEDs aan en vervolgens ga je tellen van 0 tot 255. In elke 'ronde' in de for-loop kijk je of i gelijk is aan een van de duty cycles. Als dat zo is zet je de bijbehorende LED uit.

De frequency van deze manier van PWM'en is wel wat lager maar nog hoog genoeg om het niet te zien knipperen.
Helaas is dit niet mogelijk via die arduino volgens mij...
Ik zie iniedergeval toch niet hoe.
En als ik switch tussen aan/uit om de 5ms begint die al te knipperen...

  • _ferry_
  • Registratie: Januari 2002
  • Niet online

_ferry_

Moderator Tweaking

Nipple Tweaker

Dat kan wel, maar met iets andere commando's

http://www.arduino.cc/playground/Main/PWMallPins
Op het forum van arduino zijn er nog meer te vinden.

Logish dat hij knippert als je 5ms gebruikt
F=1/t
1/0,005=200hz, als hij dan kortstondig aangestuurd wordt, dus 50% dutycycle, kun je dat IDD zien als je je ogen snel heen en weer beweegt, de hardwarematige PWM van de arduino zit tegen de 500hz....

  • JER00N
  • Registratie: Maart 2002
  • Niet online
Hoezo zou dat niet kunnen, het is toch gewoon een standaard PIC die er op dat bordje zit? OK, de taal is misschien anders maar dat zou niet uit moeten maken.

  • Phalox
  • Registratie: Oktober 2006
  • Laatst online: 12-11 23:54

Phalox

Solar Powerrrd

Atmel ;) en software matig kan je zoveel pwm's maken totdat je klok niet meer meekan :-)

Maar zeg ons eerst je vereisten eens. want die zijn nog niet helemaal duidelijk
Pagina: 1