présentation d'un nouveau projet

développements maison de toute sortes

Moderatoren: dj_richu, Moderator (French Zone)

Benutzeravatar
Dark-Hole
Beiträge: 385
Registriert: Do 04 Nov, 2010 7:48 pm
Do you already have Laser-Equipment?: aucun

Re: présentation d'un nouveau projet

Beitrag von Dark-Hole » Mo 10 Jun, 2013 10:01 pm

Salut salut! :D bon pas trop retouché au laser depuis l'oral mais la présentation s'est super bien passée (j'ai décroché un petit 17 et je valide mon année avec un petit 11.5 de moyenne 8) )
J'ai reçu des petits drivers de moteur pas à pas permettant de faire du micro-stepping (1/32eme de pas), mais je ne sais pas si les moteurs descendront jusque là, et en plus j'attends de pouvoir les souder vu que c'est pas du SOIC mais du TSSOP et qu'il y a 24 petites pattes ^^. j'attends aussi l'an prochain pour avoir accès (enfin j'espère) à du matos pour usiner un support de diode bleue et pourquoi pas mes galvos maison.

En attendant tout ça j'avance gentiment sur un nouveau projet qui touche aussi à l'éclairage vu que c'est une façade multi-effets pour table de DJ. commandé 500 LEDs RGB en PLCC-6 mais je joue qu'avec une seule pour le moment. Je la pilote avec un simple PIC avec 3 PWM et trois transo NPN ça envoie du lourd, et le stroboscope en blanc rend vraiment pas mal :lol: y a juste le orange qui est difficile à faire et je me tâte à acheter 500 LEDs orange...

Benutzeravatar
julienlev
Beiträge: 3884
Registriert: Mi 07 Nov, 2007 10:38 pm
Do you already have Laser-Equipment?: 1 x tri-head: 1W RGY Analog + 2 x 300mw 650nm
1 x 1.2 W RGB analog
2 x 1 W RGY Analog
Wohnort: France, Calvados, Caen
Kontaktdaten:

Re: présentation d'un nouveau projet

Beitrag von julienlev » Di 11 Jun, 2013 9:14 pm

félicitation pour ton oral!
et bonne chance pour ton nouveau projet!
Bild Bild

Benutzeravatar
Dark-Hole
Beiträge: 385
Registriert: Do 04 Nov, 2010 7:48 pm
Do you already have Laser-Equipment?: aucun

Re: présentation d'un nouveau projet

Beitrag von Dark-Hole » Mi 31 Jul, 2013 7:27 pm

Reprise du sujet DMX par ici :)

Je reprends les messages de ProgramFiles et DJ Bastien :
ProgramFiles : Pour le dmx vous pouvez faire un récepteur ou émetteur à moins de 15€ (j'ai fais un émetteur compatible freestyler et un récepteur pour piloter des aautomates pour ma future discomobile (ex: enlever ou non le ventilateur devant la machine à fumer)) , il faut une arduino (n'importe la quel, une copie pour que ce soit moins chère, sauf pour la rendre compatible freestyler il en faut une avec un contrôleur usb spécifiques à certaines arduino (mp si + info)) une résistance et un composant CI (pas chère).
L'avantage par rapport à un pic c'est que la programmation se fait directement du pc à l'arduino et le code est déjà fais, ya juste à coder les actions pour les récepteurs.
Bref peut être que je ferrais un plugin dmx pour hyperion (pour les cartes pt-itrust).
Si vous voulez plus d'info sur la conception et des photos de mes réalisations, mp moi je ferais un poste dédié à la conception de l'émetteur et du récepteur
DJ Bastien : c'est justement pour ça que je n'aime pas les arduino! Autant acheter un emetteur tout fait...
Faire un emetteur dmx est vraiment simple (l'interfacer avec Freestyler est une autre histoire).
ProgramFiles : Non t'as juste à souder les 2 composants et voilà pour freestyler.
Après moi le choix de l'arduino est de pouvoir faire récepteur dmx et faire autre chose à la fois (comme un interface midi pour freestyle) tout cça sera présenté prochainement dans mes projets divers.
Bref je vais pas pourrir le poste, si une discussion est nécessaire je ferais un poste dédié.
Alors justement comme DJ Bastien, l'Arduino c'est pas non plus mon truc. Je n'ai rien contre les AVR ni les PIC, mais ce que je cherche à faire c'est d'une part comprendre pourquoi ce que j'ai fait ne fonctionne pas, et d'autre part je ne veux pas un truc "clé en main". Je veux être capable de développer une interface (émetteur ou récepteur) qui s'adaptera à mes besoins / envies. ça peut aller de faire clignoter une LED au pilotage de plusieurs moteurs pas-à-pas (choix du micro en fonction de l'application), ou émettre une trame DMX depuis un écran LCD couleur tactile.

Pour le moment d'après ce que j'ai pu voir c'est que mon PIC a du mal à détecter le Framing Error (détection du "break" de 88µs - 1s à l'état '0'). Mon problème étant que je n'ai ni de vrai récepteur, ni de vrai émetteur, et que l'oscillo analogique c'est pas pratique pour décoder des trames (même pas la possibilité de se déplacer sur l'axe des temps...). J'ai bien freestyler mais je ne fais pas trop confiance à mon PC au niveau des timing

xiantia
Beiträge: 508
Registriert: Mi 12 Sep, 2012 8:28 pm
Do you already have Laser-Equipment?: 1 mw rouge tube
Wohnort: Toulon

Re: présentation d'un nouveau projet

Beitrag von xiantia » Mi 31 Jul, 2013 8:36 pm

Dark-Hole hat geschrieben:Reprise du sujet DMX par ici :)
Pour le moment d'après ce que j'ai pu voir c'est que mon PIC a du mal à détecter le Framing Error (détection du "break" de 88µs - 1s à l'état '0'). Mon problème étant que je n'ai ni de vrai récepteur, ni de vrai émetteur, ...

Comment fait tu pour détecter le FE (qui est le break de synchro) si tu as pas d’émetteur ?

d’ailleurs l'EF est souvent utiliser avec usart d'un PIC (2*FE), c'est ce que tu fait ?


bye Yannick

Benutzeravatar
djbastien
Beiträge: 1655
Registriert: So 04 Feb, 2007 8:29 pm
Wohnort: 40
Kontaktdaten:

Re: présentation d'un nouveau projet

Beitrag von djbastien » Do 01 Aug, 2013 10:36 am

Dark-Hole hat geschrieben: mon PIC a du mal à détecter le Framing Error (détection du "break" de 88µs - 1s à l'état '0
moi aussi j'ai eu des problèmes avec ça, 88µs c'est court!
Du coup je suis passé sur un pic 18F25K22 avec un Fosc à 64MHz comme ça je n'avais plus de problèmes de timing.

Benutzeravatar
Dark-Hole
Beiträge: 385
Registriert: Do 04 Nov, 2010 7:48 pm
Do you already have Laser-Equipment?: aucun

Re: présentation d'un nouveau projet

Beitrag von Dark-Hole » Do 01 Aug, 2013 8:00 pm

Comment fait tu pour détecter le FE (qui est le break de synchro) si tu as pas d’émetteur ?
Je vais formuler différemment, je n'ai pas de projo ni de consoles certifiés DMX, j'ai écrit un code pour emettre du DMX, et un autre pour recevoir, mais c'est pas le bon plan puisque je ne suis pas sur qu'un des deux soient conforme à la norme :lol:

avec ce code j'ai eu des résultats en utilisant le MEME chip et en reliant l'UART1 à l'UART2 et il avait l'air de se passer des trucs (le framing error était synchro avec le break) mais en utilisant le même code en ne gardant que le Transmit pour l'un et le Receive pour l'autre plus rien... quelque chose me dit que l'oscillateur interne y est pour quelque chose, je sais, c'est MAL :twisted: mais je viens de choper 2 quartz 16 MHz donc je vais pouvoir être plus précis :wink:

Code: Alles auswählen

#include <main.h>

#define BREAK_TIME         88                                                                   // BREAK = 88us
#define MAB_TIME           8                                                                    // MARK AFTER BREAK = 8us
#define DMX_START_CODE     0x00                                                                 // START CODE = 0 typical. other statement are reserved.
#define DMX_BREAK          setup_uart (FALSE,DMX); output_low (PIN_C6); delay_us (BREAK_TIME);  // Generate a LOW LEVEL on Tx PIN
#define DMX_MAB            output_high (PIN_C6); delay_us (MAB_TIME);                           // Generate an HIGH LEVEL on Tx PIN
#define DMX_START_CODE     setup_uart (TRUE,DMX); putc (START_CODE,DMX);                        // Send the code 0x00 on the UART
#define FRAMING_ERROR      (RS232_ERRORS & 0x04)==0x04                                          // Detecting framing error for 88µs DMX break detection

char dmx_trame [513];                                                                           // 0 to 512, 0 => Start code, 1 - 512 => DMX data bytes
int16 dmx_channel;                                                                              // byte/channel number : 0 to 512
int16 ptr_buffer;                                                                               // poiter to "dmx_trame [x]"
int16 dmx_address=0;                                                                            // Set the DMX receiver address
int start_code;                                                                                 // Start code, expect 0x00 when tested
int channel_1;                                                                                  // DMX receiver channel 1, idependent of DMX address number
int channel_2;                                                                                  // DMX receiver channel 2, idependent of DMX address number
int channel_3;                                                                                  // DMX receiver channel 3, idependent of DMX address number
int u1;                                                                                         // User data value for channel 1
int u2;                                                                                         // User data value for channel 2
int u3;                                                                                         // User data value for channel 3

#int_RDA2                                                                                       // DMX RECEIVER interrupt
void RDA2_isr(void)
   {
   dmx_trame [ptr_buffer] = getc (UART);                                                        // Receiving data
   ptr_buffer++;                                                                                // go to next byte
   if (FRAMING_ERROR)                                                                           // Detection of DMX Break (88µs à '0')
      {
      ptr_buffer=0;                                                                             // Re-init DMX trame
      output_high (PIN_B5);                                                                     // LED for test/debug
      delay_us (25);                                                                            // LED for test/debug
      output_low (PIN_B5);                                                                      // LED for test/debug
      }
   }
   
void main()
   {
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
   setup_timer_3(T3_INTERNAL | T3_DIV_BY_1);
   setup_timer_4(T4_DIV_BY_1,0,1);
   setup_ccp1(CCP_PWM|CCP_SHUTDOWN_AC_L|CCP_SHUTDOWN_BD_L|CCP_USE_TIMER3_AND_TIMER4);
   setup_ccp2(CCP_PWM|CCP_SHUTDOWN_AC_L|CCP_SHUTDOWN_BD_L|CCP_USE_TIMER3_AND_TIMER4);
   setup_ccp3(CCP_PWM|CCP_SHUTDOWN_AC_L|CCP_SHUTDOWN_BD_L|CCP_USE_TIMER3_AND_TIMER4);
   enable_interrupts (INT_RDA2);
   enable_interrupts (GLOBAL);
   
   while(TRUE)
      {
      dmx_address=0;                                                                            // Set the DMX address from 0 to 508 (1 to 509)
      u1=0x00;                                                                                  // Adjust manually the value or link it to a 8 bits ADC
      u2=0xff;                                                                                  // Adjust manually the value or link it to a 8 bits ADC
      u3=0xff;                                                                                  // Adjust manually the value or link it to a 8 bits ADC
     
/******************************************************************************/     
/************************* DMX TRANSMITTER ************************************/
/******************************************************************************/

      if (dmx_channel==0 || dmx_channel==512)                                                   // Beginning of a new DMX trame
         {
         dmx_channel=0;                                                                         // Re-init DMX byte/channel number     
         DMX_BREAK;                                                                             // Send a break : send a LOW level during 88µs
         DMX_MAB;                                                                               // Send an HIGH level during 8µs
         DMX_START_CODE;                                                                        // Send 0x00
         dmx_channel++;                                                                         // increment dmx_channel => dmx_channel=1
         }
      putc ((u1),DMX);                                                                          // transmit the first data byte
      putc ((u2),DMX);                                                                          // transmit the second data byte
      putc ((u3),DMX);                                                                          // transmit the third data byte
     
      // you can add as channel as you want on [1-512] range
     
/******************************************************************************/     
/************************* DMX RECEIVER ***************************************/
/******************************************************************************/

      dmx_channel++;                                                                            // go to next data byte
      start_code = dmx_trame [0];                                                               // receive Start code
      channel_1 = dmx_trame [1 + dmx_address];                                                  // receive 1st data byte
      channel_2 = dmx_trame [2 + dmx_address];                                                  // receive 2nd data byte
      channel_3 = dmx_trame [3 + dmx_address];                                                  // receive 3rd data byte
      set_pwm1_duty((int)channel_1);                                                            // Blue LED output
      set_pwm2_duty((int)channel_2);                                                            // Red LED output
      set_pwm3_duty((int)channel_3);                                                            // Green LED output
      }
   }

Code: Alles auswählen

#include <18F46K22.h>
#device ICD=TRUE
#device adc=16

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
#FUSES INTRC_IO                 //Internal RC Osc, no CLKOUT
#FUSES NOBROWNOUT               //No brownout reset
#FUSES WDT_NOSLEEP              //Watch Dog Timer, disabled during SLEEP
#FUSES NOPBADEN                 //PORTB pins are configured as digital I/O on RESET
#FUSES NOMCLR                   //Master Clear pin used for I/O
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOXINST                  //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
#FUSES DEBUG                    //Debug mode for use with ICD
#FUSES CCP3E0                   //CCP3 input/output multiplexed with RE0

#use delay(int=64000000)

#use rs232(baud=250000,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stream=DMX,stop=2,brgh1ok)
#use rs232(baud=250000,parity=N,xmit=PIN_D6,rcv=PIN_D7,bits=8,stream=UART,stop=2,brgh1ok,errors)

// Don't forget to link PIN_C6 with PIN_D7

Benutzeravatar
Dark-Hole
Beiträge: 385
Registriert: Do 04 Nov, 2010 7:48 pm
Do you already have Laser-Equipment?: aucun

Re: présentation d'un nouveau projet

Beitrag von Dark-Hole » Do 01 Aug, 2013 8:07 pm

Bon sans changer l'oscillateur, j'ai foutu le même programme dans 2 chips et connecter leur UART (Tx -> Rx), desfois la led du FE clignotte et j'ai des états sur ma LED RGB mais pas tout le temps...
j'ai essayer de foutre un oscillateur TTL sur un des PIC et de le boucler sur lui même, rien non plus...
plus qu'à essayer avec mes quartz 16 MHz...

xiantia
Beiträge: 508
Registriert: Mi 12 Sep, 2012 8:28 pm
Do you already have Laser-Equipment?: 1 mw rouge tube
Wohnort: Toulon

Re: présentation d'un nouveau projet

Beitrag von xiantia » Do 01 Aug, 2013 8:50 pm

re :

A je vois que tu utilise l'USART comme récepteur DMX, comme tu travail a 250kb , pour être conforme tu doit attendre DEUX FE avant de lire le MAB puis les données reels DMX.

Tu as deux USARt le pic ?

Le pb que je vois, c'est que dés que tu fait un BREAK, l'usart le detect comme un start bit (comme pour le RS232) et donc ton interruption est call.
Celle-ci vérifie si tu as un FE, (je comprend pas trop pourquoi) tu as pas une interruption FE de l'USART ?
de plus comme l’interruption est call (je suis pas sur de se que tu fait après) mais si tu tente de lire les 3 donnée, ça ne marchera pas car pas envoyé.

Donc break de 88 µs,pour cela je ne suis pas sur que tu puisses le faire sur un USART, mais direct sur une pin x en low, l'USART reçoit ce "start bit", comme pas de stop bit tu as un FE, la ligne est toujours à 0 donc l'USART re-detecte un "start bit', idem pas de stop donc deuxième FE, la tu passes la ligne 1 (MAB) et tu envois le start code 0x00, cette fois l'USART détecte le start bit puis les 8 bits du start code et un stop, suivent les 512 octets des canaux comme pour une liaison RS ordinaire.

Voila en gros de mémoire.

bye Yannick

Benutzeravatar
djbastien
Beiträge: 1655
Registriert: So 04 Feb, 2007 8:29 pm
Wohnort: 40
Kontaktdaten:

Re: présentation d'un nouveau projet

Beitrag von djbastien » Fr 02 Aug, 2013 8:33 am

pour ma part j'utilise le canal en I/O normale durant le break et je passe en uart après sinon effectivement les 88µs à 0 sont trop longues et ça met le bazar.

Benutzeravatar
Dark-Hole
Beiträge: 385
Registriert: Do 04 Nov, 2010 7:48 pm
Do you already have Laser-Equipment?: aucun

Re: présentation d'un nouveau projet

Beitrag von Dark-Hole » Sa 03 Aug, 2013 9:10 pm

Bon alors le récepteur DMX du site dmx512-online fonctionne, j'émets avec freestyler et un simple module FT232. donc j'ai à priori un émetteur et un récepteur qui sont fonctionnels. Je vais pouvoir commencer les tests pour le transmetteur DMX ;)

Benutzeravatar
Dark-Hole
Beiträge: 385
Registriert: Do 04 Nov, 2010 7:48 pm
Do you already have Laser-Equipment?: aucun

Re: présentation d'un nouveau projet

Beitrag von Dark-Hole » So 04 Aug, 2013 4:45 pm

Alors pour le moment j'arrive à générer un signal DMX, rien de compliqué, le code que j'avais écrit au départ semble fonctionner, je suis juste reparti sur un PIC avec un seul UART pour simplifier le truc et éviter des problèmes lors du passage au récepteur. J'ai aussi choisi un oscillateur TTL 24MHz donc sans la PLL x4. J'ai ajouté une lecture de 4 faders... et là j'obtiens n'imp... après une heure de recherche, je regarde la facture de mes potards : POT.LOG. 47Kohm !!! p*tain de "pseudo-logarithmique" dégueu, avec des "trous" par endroit... du coup lundi direction le vendeur, d'une c'est pas du linéaire, et à 7,50€ les 10 si c'est pour avoir des trucs de récup c'est bien! :evil:

Aller maintenant passage au récepteur, ça va être certainement moins drôle...

Benutzeravatar
Dark-Hole
Beiträge: 385
Registriert: Do 04 Nov, 2010 7:48 pm
Do you already have Laser-Equipment?: aucun

Re: présentation d'un nouveau projet

Beitrag von Dark-Hole » Mi 07 Aug, 2013 6:32 pm

Et voila, après quelques galères on dirait bien que ça DMX aussi bien en Rx qu'en Tx. Il me reste encore à optimiser au mieux le code du côté Rx et voir si ça fonctionne même pour les adresses >255 et jusqu'à 512 ;) J'ai déjà une led RGB, plus qu'à coder deux moteurs p-à-p pour faire un petit scan d'une portée de 15 à 20 cm :D

Benutzeravatar
Dark-Hole
Beiträge: 385
Registriert: Do 04 Nov, 2010 7:48 pm
Do you already have Laser-Equipment?: aucun

Re: présentation d'un nouveau projet

Beitrag von Dark-Hole » Mi 07 Aug, 2013 7:30 pm

mon premier stroboscope, 10.000 mcd ça picote... vivement que je reçoive mes LEDs 100W que ça envoie un peu plus :D

Benutzeravatar
Dark-Hole
Beiträge: 385
Registriert: Do 04 Nov, 2010 7:48 pm
Do you already have Laser-Equipment?: aucun

Re: présentation d'un nouveau projet

Beitrag von Dark-Hole » Di 17 Sep, 2013 10:23 pm

Pas grand chose de nouveau, juste trouver un moteur pas-à-pas qui m'a l'air sympa pour remplacer les MOT-1 et MOT-2 introuvables, c'est sur ça ne remplacera pas des scans, mais en attendant d'avoir le budget... ;)
http://www.ebay.fr/itm/NEW-vitech-mini- ... 4168223cf7
angle d'un pas, 36°, y a plus qu'à espérer qu'il accepte une modulation de courant pour l'utiliser en analogique, pas envie de me casser la tête avec un driver 1/128 en microstepping...

Antworten

Zurück zu „Développements maison en général“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 11 Gäste