1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.

VGA DRO

Discussion dans 'Electronique spécifique CNC' créé par hobby16, 15 Juin 2015.

  1. hobby16

    hobby16 Nouveau

    Messages:
    12
    Inscrit:
    23 Avril 2010
    Localité:
    Bordeaux
    VGA DRO
    Bonsoir,
    J'ai fait un DRO (Digital Read Out) 3 voies interfaçable avec des pieds à coulisses numériques chinois au format BIN6.
    La particularité de ce DRO est qu'il se branche sur un moniteur VGA pour avoir un gros affichage couleur. Ces moniteurs sont maintenant partout sur le marché de l'occasion car les gens s'en débarassent pour des écrans plus large, on en trouve facilement à moins de 20€ sur LeBoncoin ou eBay, ce DRO permet de les sortir du grenier.
    Une fonction compte-tour et compteur de vitesse a été également ajoutée, la mesure est faite par capteur à effet Hall et aimant.
    J'ai testé longuement le montage, il marche impeccable mais j'ai juste un petit CNC numérique (le grand classique CNC3020) donc qui n'a pas vraiment besoin de DRO et qui ne consomme pas assez pour causer des perturbations électriques pour pouvoir tester le DRO en conditions réelles.
    Donc j'aimerais bien trouver un volontaire pour l'installer et le tester, je lui offre bien sûr le prototype.

    L'objectif, c'est de faire un DRO pas cher et prêt à câbler pour tout ceux qui veulent s'équiper de DRO mais qui n'ont toujours pas franchi le pas faute d'avoir un produit qui convient. L'ensemble d'un DRO 3 axes avec 3 pieds à coulisse + capteurs hall pour compte-tour + alim + connectique doit revenir à moins de 50€, frais de port compris, il faut juste ajouter un moniteur VGA de la taille que vous voulez.
    J'ai fait une vidéo commentée du DRO aussi, il faut que je trouve comment l'uploader.

    P.S. Je suis sur Bordeaux, si vous êtes dans la région, ce sera plus pratique.


    Quelques images du DRO (cliquer sur l'image pour agrandir)

    Montage avec 2 pieds à coulisse
    [​IMG]


    La carte du DRO prêt à installer, avec un bloc secteur 5V et prise VGA SubD15.
    Les connaisseurs remarqueront qu'il s'agit d'une carte d'Arduino nano avec quelques modifs mineurs, c'est surtout le firmware qui a été développé
    [​IMG]



    Schéma de branchement
    [​IMG]



    Brochage du pied à coulisse. La nappe de fil avec connecteurs Dupont est soudée directement sur le PCB du pied à coulisse. On remonte la trappe après l'avoir rognée pour que ça se referme bien, éventuellement avec une goutte de colle.
    [​IMG]



    Exemple de montage du pied à coulisse sur un tour allemand
    [​IMG]
     
    Dernière édition: 15 Juin 2015
  2. jicer

    jicer Compagnon

    Messages:
    2 278
    Inscrit:
    6 Janvier 2014
    Localité:
    paris
    VGA DRO
    salut j'ai pas de quoi tester mais bravo !! super cool !!! super trouvaille !
    j'adore ce travail !

    un don inteligent ,

    voila ca me plais , pardon si vous me trouvez un peu ridicule


    saludos hobby16
    jc
     
  3. jjdu33

    jjdu33 Compagnon

    Messages:
    1 073
    Inscrit:
    2 Janvier 2013
    Localité:
    F-33
  4. hobby16

    hobby16 Nouveau

    Messages:
    12
    Inscrit:
    23 Avril 2010
    Localité:
    Bordeaux
    VGA DRO
    La règle peut être alimentée par sa pile bouton ou par une pile 1.5V externe (cf le brochage sur la photo ci-dessus) ou même par une source 1.5V à 2V de la carte qu'il suffit de piquer sur l'anode d'une led. Ca consomme si peu qu'une pile AA doit pouvoir alimenter les 3 règles pendant des années.
     
    Dernière édition: 16 Juin 2015
  5. jjdu33

    jjdu33 Compagnon

    Messages:
    1 073
    Inscrit:
    2 Janvier 2013
    Localité:
    F-33
    VGA DRO
    possibilité de tester sur un tour ( équipé de deux règles chinoise ) ou sur une fraiseuse ( équipée de 3 règles chinoise ), c 'est du conventionnel....
     
  6. jblb72

    jblb72 Apprenti

    Messages:
    120
    Inscrit:
    12 Février 2010
    Localité:
    Le Mans, ou presque
  7. hobby16

    hobby16 Nouveau

    Messages:
    12
    Inscrit:
    23 Avril 2010
    Localité:
    Bordeaux
    VGA DRO
    @jblb72
    Qu'est ce qui vous empêche d'utiliser tel quel le montage de Yuri ? Car mon code est totalement différent de celui de l'android-dro.
    Je précise qu'il a été fait avec AVRStudio parce que vu les optimisations à faire pour gérer à la fois le VGA, le décodage 3 voies et la mesure de période pour le compte-tour/tachymètre, avec l'Arduino, c'est (quasi) pas possible.

    Par contre, pour Arduino, j'ai fait un décodage très fiable qui peut traiter jusqu'à 3 voire 4 règles simultanées, si ça vous intéresse.
    L'originalité par rapport aux codes qui existent, c'est que ça utilise le comparateur interne de l'ATmega pour lire les signaux 1.5V des règles (donc c'est un branchement direct sur les règles pas besoin d'une usine à gaz externe) et que ça fait une détection d'erreur plus sophistiquée (cf mes commentaires dans le code). Bon, il n'est pas très propre mais il marche, testé et approuvé.


    Code:
    /*************************************************************************************
    par HMC 29/05/2015
    utilise comparateur sur port analogique pour lire signaux 1.5V des calipers.
    testé, marche très bien, sans aucun glitch
    
    *************************************************************************************/
    
    
    //L'entrée digital 13 (Port B5) (Mini / Mini Pro) ne peut pas etre utilisée comme entrée de signaux
    
    byte FlagErr, FlagInch;
    
    
    #define DEBUG_MODE 1
    
    #define CompOut()  (!( ACSR & (1<<ACO))) //lire sortie comparateur
    
    void setup() {
      pinMode (10,OUTPUT);
      pinMode (11,OUTPUT);
    
      Serial.begin(38400);            //initialize serial communication with computer
      Serial.println("envoyer 'r' pour demarrer test");
    
    
      ACSR = (0<<ACD) | (1<<ACBG); //bandgap réf =1.1V relié à In+ du comparateur
      ADCSRA &= ~(1<<ADEN); //disable ADC
      ADCSRB|=  1<<ACME; //in - comparateur = sortie multiplexeur ADC
      ADMUX=0;
    
      /* ADMUX  fct     Pin
       0     Clk X  PA0 (ADC0)
       1    Data X  PA1 (ADC1)
       2     Clk Y  PA2 (ADC2)
       3    Data Y  PA3 (ADC3)
       4     Clk Z  PA4 (ADC4)
       5    Data Z  PA5 (ADC5)
       */
    
    
    }
    
    volatile byte cnt;
    unsigned long  Temps;
    long ValCaliper, OldVal;
    
    void loop() {
      byte b;
    
      /*  tester comparateur
       digitalWrite (10, CompOut()?1:0);
       ADMUX++;
       delayMicroseconds(5);
       digitalWrite (11, CompOut()?1:0);
       ADMUX--;
       return;
       */
    
      b = ReadCaliper(0);
      if (OldVal == ValCaliper)  //envoi valeur de Caliper sur port série seulement si elle change
        return;
      OldVal= ValCaliper;
      if (b)
      {
        Serial.print("Erreur n°");
        Serial.println(b);
      }
      else
      {
        if (FlagInch)
        {
          Serial.print((float)ValCaliper/2000,4);
          Serial.println(" in");
        
        }
        else
        {
          Serial.print((float)ValCaliper/100,2);
          Serial.println(" mm");
        }
      }
      return;
    
    
    
    }
    
    
    /* ------------------------------------------------------------------------- */
    // décodage caliper
    // clk-caliper =
    /*
    */
    #define ERR_LOW 1 //ligne à zéro (milieu d'un mot ou pas de connexion)
    #define ERR_DATA 2 //milieu d'un mot
    #define ERR_SLEEP 3 //ligne à 1 en permanence => le caliper est en veille
    #define ERR_CLK 4 //clk entre deux bits reste à 1 pendant trop longtemps (le palier à 1 ne doit pas durer plus de 100us)
    
    byte ReadCaliper(byte voie) {
      long t;
      char sign=1;
      byte cnt;
      long val=0;
    
      ADMUX=voie<<1;
    
      /* avant tout traitement, checker
       1) si clk à 0 pendant plus de 1ms, pas de connexion
       2) clk doit être à 1 pendant plus de 1ms, sinon, ça signifierait qu'on est au milieu d'un mot => attendre mot suivant !
       3) clk ne doit pas être à 1 pendant plus de 200ms, sinon, ça signifie que le caliper est éteint
      */
    
      t=millis();
      if (!CompOut()) return ERR_LOW;
    
      while ((millis()-t) < 2)
      { if(!CompOut()) return ERR_DATA;
      }
    
      while (CompOut())
      {
        if ( (millis()-t) > 200 )
          return ERR_SLEEP; // règle en veille
      }
    //-- clk vient de passer 1->0 => début du mot
      #if defined(DEBUG_MODE)
        PORTB |= 0b100;   //pour oscillo
      #endif
      for (byte i=0;i<24;i++)
      {
        do
        {
          if ( (millis()-t) > 500)
            return ERR_LOW; // erreur signal
        }
        while (!CompOut());  //attendre clock 0->1
        ADMUX++; //entrée = data
        delayMicroseconds(5);
        FlagInch=0;
        cnt=0;
        if (CompOut()) cnt++;
        if (CompOut()) cnt++;
        if (CompOut()) cnt++;
        if (cnt >=2)
        {
          if (i<20)
            val|= 1<<i;
          else if (i==20)
            val = -val;
          else if (i==23)
            FlagInch=1;
        }
        ADMUX--; //entrée = clk, attention, ne pas changer ordre !!!
        if (i==23) //ne pas attendre clk 1->0 pour le dernier bit
          break;
    
        do
        {
          if ( (millis()-t) > 500)
            return ERR_CLK;
        }
        while (CompOut()); //attendre clk 1->0
      }
      #if defined(DEBUG_MODE)
        PORTB &= ~0b100;
      #endif
      ValCaliper=val;
      return 0;
    }
    
    
    
     
    Dernière édition: 17 Juin 2015
  8. jblb72

    jblb72 Apprenti

    Messages:
    120
    Inscrit:
    12 Février 2010
    Localité:
    Le Mans, ou presque
    VGA DRO
    @hobby16 effectivement rien ne m’empêche d'utiliser le montage tel quel et c'est d’ailleurs ce que je fait mais il se trouve que j'ai quelques écrans VGA 13" LCD qui seraient certainement bien plus agréable a lire que mon device android 5"
    Concernant la programmation du module je me doutai bien que ce n'était plus de l'Arduino de base, mais je fait moi me cet abus de langage : j’appelle Arduino tous les microcontroleurs AVR que je programme avec avrgcc et avr libc....


    j'ai regarder ton code en vitesse mais ton idée d'utiliser le comparateur interne de l'ATmega pour lire les signaux 1.5V est déjà une bonne idée en soi. Des que j'ai un moment je teste ça de façon plus poussée.
     
  9. pailpoe

    pailpoe Compagnon

    Messages:
    589
    Inscrit:
    29 Janvier 2011
    Localité:
    Haute-Saône
    VGA DRO
    Salut,

    Très bon projet. Je regarde aussi pour me faire une dro (je pars sur des règles magnétique perso pour plus robustesse) et j'avais aussi regardé l'utilisation d'un écran PC. Le pilotage n'est pas trop compliqué ?

    Merci pour ta réponse.
     
  10. hobby16

    hobby16 Nouveau

    Messages:
    12
    Inscrit:
    23 Avril 2010
    Localité:
    Bordeaux
    VGA DRO
    Pilotage de l'écran VGA tu veux dire ? Oui, certainement. Il faut rafraîchir en temps réel les données toutes les 30 us (micro-secondes !) et ce sans jitter, sinon les chiffres "dansent" sur l'écran. Il reste peu de cycles CPU et quasiment plus de ram (je ne peux même pas utiliser du calcul flottant sans débordement du stack) pour s'occuper des signaux des pieds à coulisses et du tachymètre, qu'il faut rafraîchir plusieurs fois par secondes pour avoir un affichage qui ait du répondant. Et ce sans avoir droit aux interruptions. J'ai dû coller de l'assembleur à gauche à droite et même au milieu, bref, c'était un super chantier, de la belle programmation embarquée comme je l'aime.
    Ca consiste en quoi tes "règles magnétiques perso" ?
     
  11. hobby16

    hobby16 Nouveau

    Messages:
    12
    Inscrit:
    23 Avril 2010
    Localité:
    Bordeaux
    VGA DRO
    Tu as déjà commandé les règles numériques ? Quel modèle ?
     
  12. patduf33

    patduf33 Administrateur

    Messages:
    11 577
    Inscrit:
    27 Décembre 2009
    Localité:
    FR33 Bordeaux
    VGA DRO
    Intéressant comme sujet et montage :-D c'est bien pour équiper de petites machines avec des PAC
    Mais je suppose qu'il est possible de prendre des règles plus longues et de faire la même chose ou il faut le mesureur du PAC ?

    Pat
     
  13. hobby16

    hobby16 Nouveau

    Messages:
    12
    Inscrit:
    23 Avril 2010
    Localité:
    Bordeaux
    VGA DRO
    Les règles chinoises plus longues de ce type ont un autre protocole (2x24 bits) que le protocole BIN6 des pieds à coulisse.
    [​IMG]

    C'est un signal beaucoup plus rapide, donc je n'ai pas encore réussi à caser son décodage dans mon DRO (c'est que la mule est sacrément chargée). Mais je pense que je vais y arriver, il me faut un peu de temps encore. Au pire, je collerai un deuxième arduino nano qui s'occupe du décodage de 3 règles et j'envoie les données sur celui qui gère la VGA. Mais bon, on s'écarterait alors de la philosophie initiale et l'objectif prix du produit
     
  14. pailpoe

    pailpoe Compagnon

    Messages:
    589
    Inscrit:
    29 Janvier 2011
    Localité:
    Haute-Saône
    VGA DRO
    Salut,

    Les capteurs magnétique viennent de chez AMS (AS5311) et la bande magnétique aussi de chez Eux. La liaison avec le composant se fait en SPI ou quadrature. La précision est dans le 1/100 avec une résolution proche du micron. C'est super robuste.
    J'ai déja fait le pcb pour les capteurs, il faut que je finisse la partie affichage / réglage. J'hesitais à partir sur android dro met ton montage me plait bien.
     
  15. wika58

    wika58 Modérateur

    Messages:
    10 544
    Inscrit:
    17 Décembre 2006
    Localité:
    F-54560 / Lorraine
    VGA DRO
    Bonjour à tous,

    Sujet fort intéressant :supz:.

    Mon tour est équipé d'un règle en longitudinal, d'un PAC sur le transversal et dcun capteur optique sur la broche avec signaux ramenés dans un coffret électrique...on peut voir les modif ici : http://www.usinages.com/threads/tour-hbm450-problemes-ameliorations-customisation.22447/page-4

    Un forumeur me promet une DRO depuis près de 3 ans...

    En plus mon tour est un tour d'etabli modifié avec moteur tri et variateur de vitesse... Donc idéal pour tester en conditions réelles un peu sévères (harmoniques)...:roll:

    J'ai bien sûr des moniteurs VGA dans le grenier...:-D

    Et en plus je me suis mis à l'Arduino...:wink:

    Mais ... je n'habite pas Bordeaux...:sad:
    Mais j'y vais 1 * / an....8-)
     
    Dernière édition: 17 Juin 2015

Partager cette page