Aller au contenu


Photo
- - - - -

tuner ma VM10i : arduino nano inside


5 réponses à ce sujet

#1 Forthman

Forthman

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 883 messages
  • Gender:Not Telling
  • Location:Montauban (82)

Posté 20 septembre 2018 - 09:38

Bonsoir à tous,

 

Voilà quelques mois j'ai acheté une CNC VM10i

VM10i.jpg

 

je n'ai pas encore commencé à m'en servir, mais j'ai déjà commencé à la bidouiller un peu (en restant raisonnable pour ne pas faire péter la garantie)

 

coté interface, on est sur du Windows Embedded (même famille que XP)

Oui, carrément, c'est le truc qui m'a le plus rebuté sur cette machine :bad: mais bon...

VM10i écran.jpg

 

Pour les déplacements manuels il y a une petite télécommande :

(la mienne n'a pas d'écran LCD, j'ai pris le modèle du pauvre)

VM10i remote.png

 

Actuellement, pour déplacer l'un des axes X,Y ou Z, il faut sélectionner ce dernier avec le bouton rotatif chromé de gauche,

puis jouer de la grosse molette pour faire le déplacement.

Mon problème, c'est que ce sélecteur n'a pas 3 positions, mais 12 !!! (donc 9 qui ne servent à rien sur mon modèle)

Lors de la sélection de l'axe, je suis obligé de "bien regarder ma télécommande" pour vérifier que j'ai choisi le bon axe, et si je ripe un peu plus

(genre avant la selection X ou après Z) ça annule la consigne de vitesse.

Quand j'ai les yeux contre ma pièce pour venir tangenter, c'est super pas pratique.

 

J'ai donc imaginé remplacer ce bouton rotatif par 3 boutons poussoirs (X,Y, et Z)

Mais j'ai des contraintes :

- ne pas modifier de manière irréversible la télécommande

- pouvoir loger ces 3 poussoirs dans l'encombrement du bouton d'origine.

 

la télécommande a un bossage sous le bouton rotatif :

Capture d’écran_2018-09-20_22-06-27.png

 

l'idée c'est de faire ça :

Capture d’écran_2018-09-20_22-08-02.png

 

sou chaque bouton XYZ un bouton poussoir avec LED de couleur (X:rouge Y:vert et Z:bleu)

Capture d’écran_2018-09-20_22-10-04.png

 

L'idée est de souder les fils directement aux pattes des poussoirs, en les passant dans la structure creuse du bouton,

et en utilisant une vis M6 pour maintenir ce bouton à la place du bouton d'origine, vis qui sera percée à diamètre 4

pour passer les fils dans la télécommande.

Capture d’écran_2018-09-20_22-11-27.png

 

J'ai donc 3 LEDs et 3 poussoirs

soit : 4 fils pour les LEDs et 4 fils pour les poussoirs

comme je ne veux pas interférer avec les tensions présentes sur la télécommande (il y a plein d'électronique dedans, y compris un microcontrôleur),

je vais utiliser des mini-relais comme ceux là :

https://fr.rs-online...731383137373426

 

et les boutons poussoirs sont ceux-ci :

https://fr.rs-online...ctiles/1246909/

 

l'arrivée électrique est en 12Vcc (il y a des régulateurs dans la télécommande pour fournir du 24Vcc, du 3.2Vcc et même du 5Vcc, mais je ne vais pas y toucher)

 

J'arrive au point qui m'a fait créer ce (beaucoup trop) long post :

Si vous pouviez me dire ce que vous pensez de mes choix

 

je compte utiliser un arduino nano

il me faudra donc 3 entrées (une par poussoir) et 6 sorties (3 pour les LEDs et 3 pour les relais)

les relais ont des bobines de 140mW, et j'ai vu que le nano pouvait fournir 40mA par sortie max, ça devrait collet non ? (un seul activé à la fois)

peut-être coller des diodes sur les sorties relais pour éviter un retour de jus ?

 

merci d'avoir lu jusqu'ici :thank_you:



#2 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 7 822 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 20 septembre 2018 - 10:08

Oui ça devrait aller sans problème =). 
Par contre pas besoin de diode sur les sortie des relais, car le relais sert déjà à isoler du système... 

Et si jamais tu veux encore plus petit tu peux utiliser une arduino pro mini.

Tout me paraît nickel, comme on dit :  " ya pu k ! "

 

 

 

Bon après de manière plus pragmatique, j'aurais remplacé le sélecteur rotatif qui ne te convient pas par un sélecteur rotatif 3 positions avec des crans qui sont tellement gros que tu ne pourrais plus te tromper ... par contre c'est sur c'est moins fun ... Pas d'arduino pas de modif etc ... Car je suis sur que tu peux trouver un selecteur rotatif qui se montrait directement en lieu et place ...


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !

 

Les réalisations de Mike118  

 

 

 


#3 Forthman

Forthman

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 883 messages
  • Gender:Not Telling
  • Location:Montauban (82)

Posté 20 septembre 2018 - 10:45

en fait je manque de place, le sélecteur est vraiment tout petit, sinon, oui, un bouton 3 positions c'est ce que je voulais faire au début :P

pour les diodes, je pensais à des roues libres  sur le bobines des relais pour protéger l'arduino



#4 Forthman

Forthman

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 883 messages
  • Gender:Not Telling
  • Location:Montauban (82)

Posté 23 octobre 2018 - 11:37

bon... Mon petit projet avance doucement...

J'ai réalisé un petit circuit imprimé à l'anglaise (oui, parce que les produits chimiques j'ai plus envie)

DSCF0458.JPG

 

Dessus j'y ai logé le strict minimum syndical soit : 3 résistance pour les LEDs, et 3 relais pour simuler les 3 positions du bouton.

DSCF0465.JPG

 

Par contre j'ai eu des problème là où il ne devrait pas y en avoir à savoir :

 

- une LED inversée sur un bouton

La LED des boutons rouge est câblée à l'envers par rapport au repère de couleur sur le coté du bouton.

histoire d'être sûr de se planter, la patte longue de la LED est le "-"  :Alvarin_07:

 

- un relais ne fonctionnait pas

devinez quoi ? J'avais prévu le coup en achetant 4 relais, et lors de mes essais j'ai cassé une patte. Pas grave, j'en ai un de rechange !

c'est justement celui-là qui ne fonctionne pas ... :Alvarin_07:

 

PUTAIN LES CHINOIS VOUS ME FAITES CHIER LÀ !!! :kez_12:

 

Pour la programmation de tout ça, j'ai utilisé la technique du tank pour tuer un moustique,

voici le petit code qui est d'une complexité exemplaire :crazy: :crazy: :crazy:

//  VM10i
//  -----
//  Modification de la télécommande
// 3 résistances de 4.7K entre GND et entrée bouton
// 3 résistances de 100R entre sorties et LEDs
// après 5 minutes les sorties sont désactivées
  

// attribution des broches
const int relais_X = 2;    // relais X
const int relais_Y = 3;    // relais Y
const int relais_Z = 4;    // relais Z
const int led_X    = 5;    // LED X (rouge)
const int led_Y    = 6;    // LED Y (verte)
const int led_Z    = 7;    // LED Z (bleue)
const int bouton_X = 8;    // bouton X
const int bouton_Y = 9;    // bouton Y
const int bouton_Z = 10;   // bouton Z

// temporisation pour extinction des LEDs et relais
int temporisation=0;

void setup() {
  // initialize IO
  pinMode(relais_X, OUTPUT);
  pinMode(relais_Y, OUTPUT);
  pinMode(relais_Z, OUTPUT);
  pinMode(led_X, OUTPUT);
  pinMode(led_Y, OUTPUT);
  pinMode(led_Z, OUTPUT);
  pinMode(bouton_X, INPUT_PULLUP);
  pinMode(bouton_Y, INPUT_PULLUP);
  pinMode(bouton_Z, INPUT_PULLUP);
  
}

void loop() {

  // Si bouton X 
  if (digitalRead(bouton_X) == LOW) {
    digitalWrite(led_X, HIGH);
    digitalWrite(led_Y, LOW);
    digitalWrite(led_Z, LOW);
    digitalWrite(relais_X, HIGH);
    digitalWrite(relais_Y, LOW);
    digitalWrite(relais_Z, LOW);
    delay(100);
    temporisation=3000;
    }
    
  // Si bouton Y
if (digitalRead(bouton_Y) == LOW) {
    digitalWrite(led_X, LOW);
    digitalWrite(led_Y, HIGH);
    digitalWrite(led_Z, LOW);
    digitalWrite(relais_X, LOW);
    digitalWrite(relais_Y, HIGH);
    digitalWrite(relais_Z, LOW);
    delay(100);
    temporisation=3000;
    }

// Si bouton Z
if (digitalRead(bouton_Z) == LOW) {
    digitalWrite(led_X, LOW);
    digitalWrite(led_Y, LOW);
    digitalWrite(led_Z, HIGH);
    digitalWrite(relais_X, LOW);
    digitalWrite(relais_Y, LOW);
    digitalWrite(relais_Z, HIGH);
    delay(100);
    temporisation=3000;
    }

if (temporisation==0){
    digitalWrite(led_X, LOW);
    digitalWrite(led_Y, LOW);
    digitalWrite(led_Z, LOW);
    digitalWrite(relais_X, LOW);
    digitalWrite(relais_Y, LOW);
    digitalWrite(relais_Z, LOW);
} else {
  temporisation--;
}

delay(100);

}

Les petits "delay(100)"  c'est pour que lorsque j'appuie sur plusieurs boutons ça clignote parce que c'est bientôt Noel

 

chaque boucle du programme ce dernier attend 0.1s

une variable "temporisation" est mise à 3000 lors qu'un bouton est pressé

cette variable est décrémentée à chaque tour,

donc si je touche à rien pendant 0.1x3000 secondes (soit 5 minutes), toutes les sorties passent à 0  (LEDs et relais) pour les économiser.

 

Et oui, j'avais même pensé à économiser mes petits relais... alors que ces cons sont capables d'être HS avant même d'avoir fait le moindre contact !!! :diablo:

J'arrête, je m'énerve encore là :help:



#5 Forthman

Forthman

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 883 messages
  • Gender:Not Telling
  • Location:Montauban (82)

Posté 30 octobre 2018 - 12:42

Hello !

Les news !

Bon déjà mea culpa, le relais fonctionnait... :pardon:

En fait ces petites bêtes sont polarisées, je n'avais pas fait attention, c'est pas super bien indiqué dans la datasheet

(ou alors c'est tellement évident pour ce genre de petits relais que le fabricant n'a pas jugé utile de le préciser de manière évidente)

 

Ensuite, j'ai modifié mon bouton.

Mécaniquement c'était pas super évident de faire des ajustements coulissants sur 0.2mm (les boutons ont très peu de débattement)

j'avais mis des ressorts à l'intérieur, et c'était un peu chiant à monter, mais surtout, ça donnait un bouton plutôt énorme.

 

Comme j'avais testé d'imprimer mes boutons avec du filament transparent mais aussi en blanc, je me suis rendu compte que le blanc était suffisamment translucide.

J'ai donc refait mon dessin de la partie supérieure du bouton comme ça :

 

Capture d’écran_2018-10-30_12-28-59.png

 

Mon bouton a perdu 4mm en hauteur, et en plus ça ne prend que 20 minutes pour en imprimer un, pratique pour le changer quand il sera tout sale ou cassé :yahoo:

 

Comme ma machine est sous Win$ et qu'elle met 3 ans à démarrer ( j'exagère, elle met un peu moins de 3 minutes) je me suis amusé à faire clignotter

le bouton pendant 2 minutes (ça fait encore plus noel du coup  :crazy: )

 

Et voici le résultat :

 

DSCF0473.JPG

DSCF0474.JPG

DSCF0475.JPG

 

Je ne trouve pas le résultat super classe, mais ça me change la vie, du coin de l'oeil je sais quel axe va bouger avec la molette, et ça c'est cool :yahoo:

 

J'ai remarqué que si la télécommande ne recevait aucune info de position du bouton (mes sorties de relais) l'axe X était activé,

alors plutôt que de désactiver les sorties relais+led au bout de 5 minutes, j'ai désactivé les sorties relais mais activé la led rouge (de l'axe X)

voilà voilà,

à plus ! :thank_you:

 



#6 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 7 822 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 30 octobre 2018 - 02:38

Du coup il faudrait quoi pour que le résultat soit super classe ? Qu'est ce qui ne te plait pas dedans ? En tout cas belle réalisation =) 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !

 

Les réalisations de Mike118  

 

 

 




Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users