IT, Română

Orgă de lumini

Orga de lumini comandata de WinAMP

Va doriti o orga de lumini comandata de WinAMP ? Daca da, atunci cititi mai jos!

Orga de lumini se compune din 2 becuri \’spot\’ conectate inseriat si comandate de un triac ce la randul lui este condus de un microcontroller care primeste comenzi despre intensitatea luminii de la un plugin de WinAMP.

Ce este necesar realizarii

  • EXPERIENTA in domeniu. Se lucreaza cu tensiuni de 220V asa ca realizarea montajului presupune niste RISCURI pe care VOI vi le asumati. Se pot arde multe piese – inclusiv calculatorul – sau chiar mai grav. Plus, observatiile ajutatoare sunt generice, bazandu-ma pe faptul ca \’intuiti\’ despre ce e vorba.
  • WinAVRhttp://sourceforge.net/projects/winavr – colectie de unelte necesare pentru programarea microcontrollerului.
  • Lcc-Win32http://www.cs.virginia.edu/~lcc-win32/ – compilator C gratuit pentru Windows, necesar pentru compilarea pluginului de WinAMP.
  • GraphApphttp://www.enchantia.com/software/graphapp/ – GUI toolkit pentru interfata grafica a pluginului.

Descriere globala.

Principiul de functionare al orgii este foarte simplu. Pluginul primeste de la WinAMP la fiecare 25ms un nou esantion cu frecventele melodiei care este ascultata. In functie de energia sunetului, o comanda este trimisa pe conexiunea seriala microcontrollerului – rolul acestuia fiind de a ajusta intensitatea luminii in functie de comanda taman primita.

Schema electrica.

Fisier GIF cu schema electrica.

  • AT90s8535 – uC produs de firma Atmel. Dintre caracteristicile lui se disting – 8K Flash, UART (maxim 115200Kbps), ADC (8 canale, 10biti) precum si usurinta programarii lui. Pret in jur de 300.000 mii lei.
  • MAX 232 – convertor de nivel de tensiune, necesar realizarii conexiunii seriale intre uC si PC. uC-ul functioneaza cu nivel 0L = 5V, 1L=0V dar PC-ul cu OL=12V si 1L=-12V. Pentru ca aceste doua sa poata comunica, este nevoie de acest convertor. Pret in jur de 50.000 lei, dar cred ca e si mai ieftin decat atat.
  • BT 139 – Triac foarte usor de procurat din comert. Costa in jur de 20.000 lei.
  • MOC 3021 – Circuit optocuplor pentru comanda triacului. 50.000 lei.
  • CNY17-4 – Circuit optocuplor necesar pentru detectia de trecere prin zero a tensiunii de alimentare a becurilor. La fel de ieftin.

Asadar: uC asigura – in functie de comanda primita – o intarziere suficienta din momentul trecerii prin zero a retelei, incat becurile sa lumineze cu mai multa sau mai putina intensitate.

  1. Un mic transformator de 6V (eu l-am luat dintr-un incarcator de mobil) este cuplat la o punte redresoare. Tensiunea nestabilizata a acesteia este citita de catre uC prin intermediul CNY17-4 iar un mic algoritm (care inregistreaza mereu valoarea tensiunii) detecteaza minimele acesteia – minime echivalente in timp cu momentele in care reteaua de 220V trece prin zero. Este nevoie sa se cunoasca aceste momente pentru a putea intarzia declansarea triacului. Daca triacul este activat de fiecare data imediat ce se trece prin zero, becurile lumineaza la maxim. Daca activarea este intarziata cu ~40ms (presupunand ca frecventa retelei electrice este de 50Hz), becurile vor lumina la jumatate de intensitate.
  2. In momentul in care uC-ul detecteaza trecerea prin zero a retelei si bazat pe ultima comanda primita de la PC, porneste un timer. Cand acesta \’expira\’ (si se activeaza intreruperea corespunzatoare) este activat pinul PC0 al uC pentru o durata foarte mica (0.3ms) necesara insa pentru deschiderea triacului.
  3. Potentiometrul R3 este necesar pentru functionarea corecta a ADC-ului, astfel incat tensiunea de referinta AREF sa fie jumatate din Vcc. Am ales potentiomentru pe post de difizor de tensiune, pentru ca sa ma joc 🙂 cu diverse valori si sa vad ce se intampla.
  4. Reamintesc: functionarea MAX 232 implica si 5 condensatori de 1uF – ei nu apar in desen deoarece se conecteaza standard – si schema se gaseste in orice .pdf cu descrierea MAX 232.
  5. In functie de cum cuplati pinii (RXout, TXout) ai lui MAX-232 la mufa seriala veti avea nevoie de un cablu serial RX la RX, TX la TX, sau viceversa.

Cod sursa – daca vreti sa compilati voi.

  • cvr-0.1.zip. Codul sursa pentru microcontroller. Include o gramada de bunatatzuri (cod reutilizabil si pentru alte programe de uC), cum ar fi:

    o uart.c – comunicarea seriala a microcontrollerului. Este o versiune redusa a … autor ….

    o timer0.c, timer2.c – control pentru Timer0 si Timer2. Sunt facute de mine.

    o delays.h – macro-uri pentru intarizieri de ms si us. Facute tot de mine.

  • LightChaserPlugin-0.1.zip. Codul sursa pentru pluginul de WinAMP. Pentru compilare se va folosi lcc-win32. Include serialport.c/h adaptate, sursa fiind http://www.codeguru.com/network/CSerialPort.html.

    Sunt necesare urmatoarele:

    o libraria GraphApp ce trebuie compilata si ea cu lcc-win32. Sfaturi pentru compilare gasiti in librarie. Pana sa faceti ce scrie acolo, sunt necesare unele mici modificari in cateva fisiere, iar informatii gasiti aici.

    o cand compilati pluginul in lcc, activati optiunea sa NU puna underscore in fata numelor de functii exportate. Altfel WinAMP-ul nu va va recunoaste pluginul.

Cod gata compilat

  • ledc-0.1.zip – pluginul de WinAMP care il puneti in Program Files\\WinAMP\\Plugins. Functioneaza doar cu WinAMP 2.XX si are unele limitari, dar pe care eu nu le-am rezolvat caci nu ma afecteaza prea mult. Insa le voi repara pe viitor.

    Acestea sunt:

    o Daca schimbati viteza de conectare sau portul serial unde este cuplat microcontrollerul, trebuie sa reporniti WinAMP.

    o Pentru ca pluginul sa invete ritmul melodiei curente, trebuie ca sa reporniti WinAMP-ul cu melodia respectiva.

  • graphapp.zip – fisierele .h si .lib necesare partii grafice ale pluginului. Asta in caz ca vreti sa compilati doar pluginul si NU si GraphAPP.

Poze

Filme

Obs: Calitatea filmelor este slaba, din cauza ca ar fi prea mari de downloadat altfel plus ca am vrut sa ilustrez cum functioneaza orga, iar nu sa fac pe regizorul.

Codecul video este DivX 3 Fast-Motion iar datele audio sunt pur si simplu raw data (PCM).

  1. Anthena Cage – Hey (2.86 Mb) – Detectie SUPER.
  2. Scooter – The Pusher (1.99 Mb) – Detectie SLABA.
  3. Pink – Familly Portrait (2.49 Mb) – Detectie OK.
  4. Maxx – No More (1.70 Mb) – Detectie OK.

Informatii suplimentare

Daca aveti intrebari, sau aveti nevoie de specificatiile pieselor (cel mai simplu e sa cautati pe google “nume_piesa.pdf”) dati-mi un mail sau anuntati pe forum. In caz ca l-ati facut pe balaur sa mearga, deasemenea anuntati-ma si poate trimiteti si o poza sau doua sa vad cum arata. Stiu ca e greu, e scump, e plicticos, e de sapat, dar la final satisfactia e mare! Mai ales daca faceti si o pagina de web in care sa spuneti ce ati facut :D.

Copyrights

In afara de unele bucati de cod sursa care au licenta/autorii conform fisierelor README/LICENCE din arhive, restul este codat de mine. Puteti face ce vreti cu codul (eu nu-mi asum nici un risc pentru ceea ce vi se intampla rau), atata timp cat spuneti ca v-ati inspirat de pe aceasta pagina de web (www.hex.ro).

Autor Iulian Virtejanu – Aug/Sep 2003.

Leave a Reply