Hoofdcategorieën
Topicacties

[HOWTO] DMX-512 met een Picmicro

Pagina: 1 2 3 4 5 last

Reageer Nieuw Topic
Berichten: 2.002
Reg. datum: 22 februari 2002

Inleiding
Aangezien DMX een veel gebruikt aansturingsprotocol is in de lichtwereld, en het erg bruikbaar is met bv LED verlichting besloot ik een HOWTO te schrijven waar alles een beetje helder wordt uitgelegd. Het gaat hier alleen om het ONTVANGEN van DMX. Het verzenden zal ik later nog toevoegen, dat is iets complexer. Het doel van deze Howto is een beetje vertellen hoe DMX in zijn werk gaat en wat de toepassingen zijn.
Ik heb een standaard schema met werkende code toegevoegd. Voor de diepgaandere uitleg en beschrijving van de ASM code tot in detail heb ik een PDF'je gemaakt. Die bestaat uit 16 pagina's en het was onmogelijk om dat allemaal in dit topic te krijgen. Daarom hier alleen een generale beschrijving!
Het PDF'je is hier te downloaden:

klik

Wat is DMX-512?

DMX-512 (afgekort DMX) Staat voor Digital MultipleXed. DMX wordt vooral gebruikt in de lichtwereld en houdt in dat alle signalen voor ieder kanaal door 1 kabel worden gestuurd. DMX-512 Heeft de mogelijkheid om informatie te versturen voor 512 verschillende apparaten (kanalen geheten). Deze worden achter elkaar verstuurd, ook als er geen veranderingen zijn in de gegevens. Om te zorgen dat elk apparaaat de juiste informatie ontvangt heeft ieder apparaat een eigen adres, en uitsluitend naar dat adres wordt geluisterd. Dit instellen van adressen gebeurd doormiddel van dipswitches of knopjes.

Nu is het zo dat apparaten meer dan één kanaal kunnen gebruiken. Denk bijvoorbeeld aan een dimmer die 12 lampen onafhankelijk kan dimmen. Om ze onafhankelijk aan te sturen zijn dus 12 verschillende DMX kanalen nodig. Het is gebruikelijk dat in dat geval alleen het eerste adres wordt ingesteld en dat het apparaat vanaf dat punt 12 kanalen pakt. Er zijn ook meer apparaten dan dimmers. Denk aan scanners, movingheads, rookmachines. Allemaal bestuurbaar via DMX. Deze ondernemen een actie afhankelijk van de gegevens die doorgestuurd worden.

Hoe werkt het?

Een DMX cyclus is als volgt opgebouwd:

BREAK

Startcode Kanaal1 Kanaal2 Kanaal3 .......Kanaal 512
BREAK

Startcode .....

Etc. Er wordt naast 512 kanalen dus nog één kanaal verstuurd, de zogeheten startcode. Deze startcode geeft aan voor wat voor apparaat de code bedoeld is. Startcode0 was bedoeld voor dimmers en 1 voor iets anders bijvoorbeeld. Echter zijn de startcodes nooit van de grond gekomen en is de enige gebruikelijke startcode 0. Andere codes worden niet gebruikt! Toch is het handig om er bewust van te zijn tijdens het programmeren!

Per kanaal wordt 1 byte verstuurd, 8 bits. Dat betekend dat ieder kanaal 2^8 = 256 waarden aan kan nemen, 0 ... 255. Iedere byte wordt ingesloten door 1 bit laag en 2 bits hoog. Dit is zeer belangerijk voor het functioneren van de ontvangsthardware.

De BREAK bestaat uit 88 us laag. Zonder startbits en stopbits. een BREAK is dus op geen enkele manier te intepreteren als databyte en is dus eenvoudig te herkennen. Dit is ook essentieel voor het functioneren, immers als er geen break wordt gedetecteerd, kan er geen teller gestart worden die de kanalen telt. Dit kan betekenen dat het apparaat helemaal niets ontvangt, of de verkeerde kanalen. Een BREAK is essentieel!

Hier een grafische weergave van het DMX protocol:
http://members.chello.nl/g.assies/dmx.JPG

Allemaal leuk enzo.. maar die PIC!!
Een DMXbus kan nooit zomaar op een PIC aangesloten worden, aangezien er hele andere spanningen gebruikt worden. Het kan wel dmv an een converterchip. Vaak gebruikt is de SN75176. Die converteerd de spanningsniveau's van de PIC naar de RS485-Bus (officiele benaming voor de electrische standaard van DMX). Voor het ontvangen van DMX wordt bij de pic gebruik gemaakt van de seriele connectie. de USART (Univerisal Synchronus Asynchronus Reciever Transmitter). Deze handeld de ontvangt verder af.

Dit is het standaard schema voor dmx:
http://members.chello.nl/g.assies/dmxstandaard.JPG Het IC rechts is een SN75176. Het grote IC is een PIC16F628A. De 4 ledjes zijn de outputs die via PWM gedimd worden. Dit schema gaat uit van adres1, aangezien een 16F628A te weinig pinnen heeft voor 9 dipswitches zijn die niet toegevoegd. Het is mogelijk dit met 7segment displays te doen etc. Maar dat zal ik later toevoegen.

Deze code draait erop:
klik
En dimt de 4 ledjes aan de hand van de ontvangen DMX waarden.

Ik hoop dat het hiermee een beetje duidelijk wordt wat je met DMX kan en hoe je het kan integreren in een microcontroller. Commentaar is zeer welkom, Wat zijn de onduidelijkheden, wat moet verbeterd worden, spelfouten etc. :)

"wij spreken C alsof het in een natuurlijke taal is, we zoeken gewoon de formulering die past bij de betekenis die we in ons hoofd hebben"

Berichten: 5.235
Reg. datum: 01 februari 2002

Erg mooi uitgelegd, petje af.
Voor het uitlezen van de eventuele dip-switches kan je best een schuifregister gebruiken. Dan ben je met 2 pinnen klaar (een klok, en de serial out van je schuifregister(s)), en kan je zoveel swiches inlezen als je maar wil.

naftebakje wijzigde dit bericht 07-04-2006 17:34 (80%)

Als de boer zijn koeien kust, zijn ze jarig wees gerust. Varkens op een landingsbaan, leiden nooit een lang bestaan. Als de boer zich met stront wast, zijn zijn hersens aangetast. Als het hooi is in de schuur, zit het wijf bij den gebuur.

veerboot met underscores

Gaaf! _o_
Hier ga ik denk ikzeker weten nog wel eens mee spelen! Leuk om op deze manier je kamerverlichting aan te kunnen sturen, en met wat chases kun je natuurlijk de mooiste effecten maken! :9

Voorzien van luchtgekoelde auto en watergekoelde PC....

Berichten: 2.002
Reg. datum: 22 februari 2002

quote:
naftebakje schreef op vrijdag 07 april 2006 @ 17:32:
Erg mooi uitgelegd, petje af.
Voor het uitlezen van de eventuele dip-switches kan je best een schuifregister gebruiken. Dan ben je met 2 pinnen klaar (een klok, en de serial out van je schuifregister(s)), en kan je zoveel swiches inlezen als je maar wil.

Ja inderdaad :) Helemaal niet aan gedacht :P

Ik heb inmiddels weer een DMX project klaar: een sturing voor de magnum 2000 rookmachine. En nu ben ik bezig met een 4 kanaal dimmerpack om te bouwen naar dmx. HEt ontwerp en alles is al klaar ik wacht alleen nog op mijn nieuwe fotoprinten die ik besteld heb.. Ik hou jullie op de hoogte..

Moet er verder nog wat toegevoegd worden aan deze howto? Wat is onduidelijk etc? Verzenden komt nog! dat is bijna af.


quote:
_ferry_ schreef op donderdag 13 april 2006 @ 21:24:
Gaaf! _o_
Hier ga ik denk ikzeker weten nog wel eens mee spelen! Leuk om op deze manier je kamerverlichting aan te kunnen sturen, en met wat chases kun je natuurlijk de mooiste effecten maken! :9
Ja leuk is het zeker. Het heeft me veel moeite gekost om het aan de praat te krijgen dus ik wilde het andere hobbisten niet onthouden :P

Thijsch wijzigde dit bericht 13-04-2006 23:54 (22%)

"wij spreken C alsof het in een natuurlijke taal is, we zoeken gewoon de formulering die past bij de betekenis die we in ons hoofd hebben"

Berichten: 669
Reg. datum: 29 augustus 2004

whoei nu heb ik een project waarmee ik kan beginnen met microcontrollers, en het is ook nog DMX ,helemaal gaaf.
* Yoram denkt aan moving heads van zijn stage besturen :P
Berichten: 2.002
Reg. datum: 22 februari 2002

quote:
YoramScheer schreef op vrijdag 14 april 2006 @ 00:30:
whoei nu heb ik een project waarmee ik kan beginnen met microcontrollers, en het is ook nog DMX ,helemaal gaaf.
* Yoram denkt aan moving heads van zijn stage besturen :P
Merk wel op dat het tot nu toe over ontvangen gaat. Mijn verzendcode is af maar nog niet getest.. misschien vind ik met de pasen een mogelijkheid :P

Thijsch wijzigde dit bericht 14-04-2006 01:12 (3%)

"wij spreken C alsof het in een natuurlijke taal is, we zoeken gewoon de formulering die past bij de betekenis die we in ons hoofd hebben"

Berichten: 5.235
Reg. datum: 01 februari 2002

Enige is misschien nog de timing toevoegen aan je figuurtje, dat is altijd handig, figuur zegt meer dan 1000 woorden.
En een leuk zendertje in een PIC, dat via een mooie applicatie op PC via RS232 de DMX laat verzenden zou nog super zijn (das waar je naartoe werkt, begin gerust wat simpeler :+ )

Als de boer zijn koeien kust, zijn ze jarig wees gerust. Varkens op een landingsbaan, leiden nooit een lang bestaan. Als de boer zich met stront wast, zijn zijn hersens aangetast. Als het hooi is in de schuur, zit het wijf bij den gebuur.

Berichten: 2.002
Reg. datum: 22 februari 2002

quote:
naftebakje schreef op vrijdag 14 april 2006 @ 09:47:
Enige is misschien nog de timing toevoegen aan je figuurtje, dat is altijd handig, figuur zegt meer dan 1000 woorden.
En een leuk zendertje in een PIC, dat via een mooie applicatie op PC via RS232 de DMX laat verzenden zou nog super zijn (das waar je naartoe werkt, begin gerust wat simpeler :+ )
Ieder hokje is 4 microseconden.

"wij spreken C alsof het in een natuurlijke taal is, we zoeken gewoon de formulering die past bij de betekenis die we in ons hoofd hebben"

Berichten: 669
Reg. datum: 29 augustus 2004

quote:
ParaDot schreef op vrijdag 14 april 2006 @ 01:12:
[...]

Merk wel op dat het tot nu toe over ontvangen gaat. Mijn verzendcode is af maar nog niet getest.. misschien vind ik met de pasen een mogelijkheid :P
* Yoram leest nog een keer GOED,
ohjah :D ook leuk ontvangen :P
veerboot met underscores

Verzenden gaat makkelijk via een DMX paneeltje (150¤) of USB dongle (¤70) + software. Zonde om daar een PIC voor te gebruiken IMHO, DMX gebruik je immers om veel aan te sturen en op een makkelijke manier met programma's en stappen. Dat gaat je met een PIC denk ik niet snel lukken :P

Voorzien van luchtgekoelde auto en watergekoelde PC....

Berichten: 2.002
Reg. datum: 22 februari 2002

Ik snap wat je bedoeld en je hebt gelijk als je het hebt over complexe intelligente verlichting. Ik heb het vooral over LED verlichting en dergelijke. Een PIC is goed te gebruiken voor simpele aansturing daarvan.! Zeker als je het kostenplaatje daar in meeneemt..

En daarbij.. het is toch juist leuk ;)

"wij spreken C alsof het in een natuurlijke taal is, we zoeken gewoon de formulering die past bij de betekenis die we in ons hoofd hebben"

veerboot met underscores

Dat is waar, ik zat zelf meer bij de gedachte om overal in mijn kamer de led's aan te sturen via DMX, maar als je natuurlijk enkele leds hebt, dan is aansturing via PIC ook te doen.

Het idee wat ik heb is om meerdere RGB led's via 1 pic aan te sturen, maar geen idee hoe goed dat te doen is, voor elke RGB led 1 PIC tikt namelijk nogal aan qua prijs :P Bijvoorbeeld een moodlight te maken aan de muur verdeeld in een aantal vlakken welke je dan kunt aansturen. Ideeen genoeg :P

Voorzien van luchtgekoelde auto en watergekoelde PC....

Berichten: 2.002
Reg. datum: 22 februari 2002

quote:
_ferry_ schreef op woensdag 19 april 2006 @ 12:40:
Dat is waar, ik zat zelf meer bij de gedachte om overal in mijn kamer de led's aan te sturen via DMX, maar als je natuurlijk enkele leds hebt, dan is aansturing via PIC ook te doen.

Het idee wat ik heb is om meerdere RGB led's via 1 pic aan te sturen, maar geen idee hoe goed dat te doen is, voor elke RGB led 1 PIC tikt namelijk nogal aan qua prijs :P Bijvoorbeeld een moodlight te maken aan de muur verdeeld in een aantal vlakken welke je dan kunt aansturen. Ideeen genoeg :P
Dat heb ik dus gebouwd, RGB moodlight aanstuurbaar via dmx.. ik zal even fotos maken!

"wij spreken C alsof het in een natuurlijke taal is, we zoeken gewoon de formulering die past bij de betekenis die we in ons hoofd hebben"

Wanneer kunnen we de zender howto verwachten >:)
Berichten: 783
Reg. datum: 15 november 2000

Dat voorbeeld van die verschillende panelen is dus ook wat ik wil gaan maken. Het komt er op neer dat ik 9 groepen van RGB-leds aan wil sturen. Hoe kan ik dit het beste doen met een microcontroller? Ik heb namelijk maar 13 outputs die ik softwarematig kan gebruiken om pwm in te programmeren of 4 hardwarematige PWM kanalen en dat terwijl ik er eigenlijk 9x3=27 nodig heb.
 
Berichten: 5.235
Reg. datum: 01 februari 2002

quote:
Hyphylus schreef op woensdag 19 april 2006 @ 19:53:
Dat voorbeeld van die verschillende panelen is dus ook wat ik wil gaan maken. Het komt er op neer dat ik 9 groepen van RGB-leds aan wil sturen. Hoe kan ik dit het beste doen met een microcontroller? Ik heb namelijk maar 13 outputs die ik softwarematig kan gebruiken om pwm in te programmeren of 4 hardwarematige PWM kanalen en dat terwijl ik er eigenlijk 9x3=27 nodig heb.
Er bestaan specifieke LED-driver IC's, die dit voor je kunnen, je stuurt ze gewoon aan met I2C of SPI of dergerlijke vanuit je PIC. Maxim heeft daarvoor leuke dingen.

Als de boer zijn koeien kust, zijn ze jarig wees gerust. Varkens op een landingsbaan, leiden nooit een lang bestaan. Als de boer zich met stront wast, zijn zijn hersens aangetast. Als het hooi is in de schuur, zit het wijf bij den gebuur.

Berichten: 2.002
Reg. datum: 22 februari 2002

quote:
Hyphylus schreef op woensdag 19 april 2006 @ 19:53:
Dat voorbeeld van die verschillende panelen is dus ook wat ik wil gaan maken. Het komt er op neer dat ik 9 groepen van RGB-leds aan wil sturen. Hoe kan ik dit het beste doen met een microcontroller? Ik heb namelijk maar 13 outputs die ik softwarematig kan gebruiken om pwm in te programmeren of 4 hardwarematige PWM kanalen en dat terwijl ik er eigenlijk 9x3=27 nodig heb.

Je zit dan aan een grotere PIC of idd PWM IC's..

Verzenden zit eraan te komen :P Zie het moodlight topic voor fotos van mijn rgb dmx bouwlamp!

"wij spreken C alsof het in een natuurlijke taal is, we zoeken gewoon de formulering die past bij de betekenis die we in ons hoofd hebben"

Berichten: 22
Reg. datum: 25 juni 2003

Komt de update over verzenden toevallig nog?? O-)
 
Berichten: 2.002
Reg. datum: 22 februari 2002

quote:
Fixation schreef op woensdag 30 augustus 2006 @ 08:34:
Komt de update over verzenden toevallig nog?? O-)
Goed dat je het zegt.. het is er een beetje bij ingeschoten :P Ik zal een dezer dagen eens kijken..

"wij spreken C alsof het in een natuurlijke taal is, we zoeken gewoon de formulering die past bij de betekenis die we in ons hoofd hebben"

Berichten: 22
Reg. datum: 25 juni 2003

sorrry voor het kickje maar ik ben toch wel heel erg benieuwd naar het zendgedeelte van je? aah pls kleine how-to??
 
Berichten: 15
Reg. datum: 12 december 2006

Ok, Thijsch

Ik heb jouw schema even overgenomen, maar je zal direct aan "mijn" schema zie, dat ik absoluut niet veel van electronica ken.
Ik ben al even bezig met op het net her en der dingen te zoeken over RGB ledverlichting en er valt wel wat over te vinden. Zowel dmx als gewoon via dimmers.

Nu ga ik zelf software proberen schrijven (visual basic) om mijn licht in mijn woonkamer aan te sturen.
De bedoeling is dat ik rgb licht achter mijn zetel maak, zodanig dat het meest ondenkbare mogelijk wordt.

Nu heb ik wel nergens gevonden hoe je een shiftregister aansluit op een pic (16f628).
Ik heb dus een poging gedaan om er dat toch maar een shiftregister aan te hangen.

Hoe ver ben ik de mist in gegaan en weet er iemand of er eventueel andere mogelijkheden zijn om zowel een dipswitch als 9 uitgangen op 1 pic te hangen die alleen maar dmx in 9 verschillende kanalen moet omzetten. (gebruik ik bijvoorbeeld de juiste ic's of aansluitingen...)

http://users.telenet.be/visser/extra/dmx-schema.gif
 
profesionele monitor sloper
Berichten: 1.159
Reg. datum: 18 januari 2002

ik zou in ieder geval niet de clock van het schuifregister aan het kristal hangen. Die pic kan dat nooit zo snel inlezen. beter is om de clock van het schuifregister aan een normaal i/o pootje te hangen. dan kan je namelijk zelf bepalen wanneer die leest van het schuif register. nu stuurt het register iedere keer bitjes en weet je niet eens bij welk van de acht schakelaars hij is

elektrotechniek is leuk (nog wel). ik ga dus weer verder met leuke dingen ontwerpen. amd 2200+ 256mb 333mhz,gf4 440mx, 120gb,16X dvd. jarr-url

Sigur Ros FTW
Berichten: 15.549
Reg. datum: 13 oktober 2000

Ik zie dat de standaard connector een 5Polige XLR is deze zijn echter een factor 3 duurder dan de 3Polige. Is mischien niet helemaal netjes maar ik denk dat ik deze ook wel mag gebruiken toch?

CCSP/CCIP/CCIE #21235
Vroeger was alles beter en kon je uit de sloot drinken...
vroeger ging je dood op je 40e

quote:
TrailBlazer schreef op dinsdag 12 december 2006 @ 08:29:
Ik zie dat de standaard connector een 5Polige XLR is deze zijn echter een factor 3 duurder dan de 3Polige. Is mischien niet helemaal netjes maar ik denk dat ik deze ook wel mag gebruiken toch?
Dat maakt niets uit nee, in de profesionele wereld wordt bijna alleen maar gebruik gemaakt van 3-polig

Nikon D80 | Nikkor AF-S DX 18-200mm 3.5-5.6G VR IF ED | Nikkor AI 50mm 1.8 | Nikon SB-900 | Nikon SB-26

One life, live it!

^^ idd, niets zo irritant om te merken dat je DMX kabel te kort is en dat er 5 polige pluggen aanzitten :X

@Thijsch:
Kun je ook op meerdere universes lezen/zenden dmv deze PIC?

Nu met Land Rover Series 3 en Defender 90

Pagina: 1 2 3 4 5 last



VNU Media logo Hosted by True

© 1998 - 2009 Tweakers.net - Alle rechten voorbehouden - Uw Privacy - Algemene Voorwaarden

Uitgever van: