DRO DRO avec Arduino et PAC chinois

  • Auteur de la discussion scrachi
  • Date de début
S
scrachi
Apprenti
20 Nov 2014
203
06
  • Auteur de la discussion
  • #1
Bonjour à tous,

On ma demande dans un autre poste de faire une petite présentation de mon projet de DRO sur base de PAC chinois et d'Arduino.

Le projet étant toujours en cours et non abouti j'étofferais ce poste au fur et a mesure avec explication ,schémas de câblages, fichier d'impression 3D pour le/les boîtiers...

Tout d'abord une contrainte que je me suis fixer est un coût le plus bas possible (je suis un radin assumé :mrgreen:), et la seconde contrainte (ça c'est une déformation professionnel...) avoir un projet qui peut à tout moment évoluer (ajouter des axes un système de mesure de vitesse ...)

Enfin si vous avez des questions ou besoin d'une précision n’hésitez surtout pas!

Pour ce qui est de la présentation j’éditerais ce premier poste a chaque mise à jour pour ne pas avoir la présentation qui se perd.

1. Liste du matériel


  • Tout d’abord un Arduino, je pars sur un Nano qui est tout petit donc un super gain de place pour mes petite machines et qui me permettra de gérer jusque à 4 axes avec ces 12 I/O (il me faut 6 entrées pour l'écran LCD et 2 par axe). Si vous avez besoin de plus d'axe, d'un second LCD... vous pouvez prendre d'autre Arduino ça fonctionnera exactement de la même manière (avec un MEGA + un écran LCD, vous pourrez gérer 23 axes...)
  • Un PAC digital par axe, qui dispose d'un port DATA
  • (Optionnel) un cable avec connecteur DATA par PAC, on pourra également venir souder nos fils directement.
  • 2 résistance de 10K par axe
  • 2 transistor type NPN par axe
  • 2 résistance de 10K pour gérer l’alimentation des PACS
  • Un écran LCD (j'ai prix un LCD-BLUE-I2C qui a une taille de 4x20 caractère mais ça peut également fonctionné avec un 2x19
  • Un potentiomètre de 10K (pour régler le contraste du LCD)
  • Une résistance de 220 ohms pour le rétroéclairage de l'écran LCD
  • Une alimentation de 5V pour alimenter tout ça
  • Un tas de fil et de quoi souder
Tout cela se trouve pour pas grand chose sur Ebay ou chez un fournisseur d’électronique (Conrad, selectronic, go tronic...


2. Câblage


Voila le schéma de câblage, je l'ai fait en deux version, schématique et en version "graphique" pour que ça parle au plus grand nombre. Le LCD est un 2x19 sur les schémas, mais le câblage est exactement le même pour un 4x20.

En plus des schémas, je met également à votre disposition le fichier Fritzing.

Pour le câblage sur les PAC, l'ordre est le suivant :
[div=none][div=none][div=none][div=none][div=none][div=none][div=none][div=none][div=none][div=none]
[/div][/div][/div][/div][/div][/div][/div][/div][/div][/div]

Avec la correspondance suivante:
GND = GND
DATA = SDA
CLOCK = CLK
+1.5V = VCC

Le schéma graphique :

[div=none][div=none][div=none][div=none][div=none][div=none][div=none][div=none][div=none][div=none]
[/div][/div][/div][/div][/div][/div][/div][/div][/div][/div]

Et le schéma traditionnel :

[div=none][div=none][div=none][div=none][div=none][div=none][div=none][div=none][div=none][div=none]
[/div][/div][/div][/div][/div][/div][/div][/div][/div][/div]

Et enfin voila le schéma pour le câblage sur une platine de 24x18 :

[div=none][div=none][div=none][div=none][div=none][div=none]
[/div][/div][/div][/div][/div][/div]

Et enfin vous pouvez télécharger le fichier Fritzing des shémas ici : =>ICI<=
Et le fichier Fritzing du schéma platine ici : =>ICI<=

Les PAC sont alimenter directement par le circuit via le 3.3V qui est abaissé à 1.5V par un pont diviseur de tension constitué de 2 résistance de 10K, il est donc nécessaire de retirer leur pile

Les circuit de résistances et transistor sont utilisé car la encore les PACs utilisant un signal de 1.5V, ce n'est pas suffisant pour être lu par l'Arduino, il faut donc le "convertir" à minimum 3V.
Si vous désirez rajouter des axes, il suffit de répéter le petit circuit constituer de deux transistor NPN et 4 résistance de 10K par axe.


Une fois le tout câblé, on devrai avoir quelque chose qui ressemble à ça :
[div=none][div=none][div=none][div=none][div=none]
[/div][/div][/div][/div][/div]
[div=none][div=none][div=none][div=none][div=none]
[/div][/div][/div][/div][/div]
[div=none][div=none][div=none][div=none][div=none]
[/div][/div][/div][/div][/div]

Les PAC vont venir se connecter sur les pins de gauche (X à gauche, Y au milieu et Z à droite),
et pour plus de flexibilité , j'ai également mis une rangé de pins pour pouvoir connecter l'écran, et non pas souder directement.

L'écran et chacune des entrées data ont été teste indépendamment avec un petit programme.

On peut maintenant passer au code.


3. Programme


Voila un premier code fonctionnel, il est susceptible d'évoluer :

4. Boîtier


J'ai réaliser un boîtier à imprimer pour enfermer tout ça. Le boîtier comporte à droite le potentiomètre pour régler le contraste du lcd et un bouton à bascule pour allumer ou éteindre la DRO. Sur le haut l'entré de l'alimentation, a gauche les PACs et enfin les trois bouton en facade sont pour la remise à zéro des PACs.

J'ai également fixer à l'arrière un élément de flexible d’arrosage pour avoir une DRO que l'on peut placer comme on veut.

Vous trouverez dans l'archive suivante les fichiers SolidWorks et STL du boîtier et de son couvercle :
BoitierDRO.zip

Voila en image ce que cela donne :





Mickaël
 
Dernière édition:
Fran
Fran
Compagnon
19 Oct 2012
1 874
FR-39Arbois
salut
a suivre donc .. :smt023
 
V
vibram
Compagnon
15 Mar 2014
4 029
FR-74
génial !
j'allais justement y songer pour ma F3 ... :)
je vais suivre avec grand interet
 
pinou29
pinou29
Compagnon
18 Mar 2009
2 877
Toulon ( Var )
Bonjour.
Comme beaucoup, je vais suivre ce post avec beaucoup d’intérêt.
Merci.
Bernard.
 
M
metalux
Compagnon
11 Jan 2009
5 351
nord
bonjour
bonne initiative :smt023
il y a quelques réalisations ici dont certaines classées sans suites ou mortes dans l'œuf comme on dit..

a suivre donc!
 
S
scrachi
Apprenti
20 Nov 2014
203
06
  • Auteur de la discussion
  • #6
Merci à tous pour votre soutien :wink:!

Je viens de poster une première version des schémas.

Encore une fois si vous avez la moindre question, n’hésitez pas!

Mickaël
 
V
vibram
Compagnon
15 Mar 2014
4 029
FR-74
Pourrais-tu mettre un lien sur les Pac que tu as choisi stp ?
Tu peux aussi abaisser de 3.3v à 1.5v, mais bon ça ne doit pas faire de grosse différence par rapport à 5v vers 1.5v
Cela semble prometteur en tout cas
 
Dernière édition:
gégé62
gégé62
Compagnon
26 Fev 2013
2 918
Harnes (Pas de Calais)
bonjour
j'avais déjà posé la question je crois, mais ça ne veut pas rentrer...:smt021

c'est quoi DRO ?
 
S
scrachi
Apprenti
20 Nov 2014
203
06
  • Auteur de la discussion
  • #9
Pourrais-tu mettre un lien sur les Pac que tu as choisi stp ?
Tu peux aussi abaisser de 3.3v à 1.5v, mais bon ça ne doit pas faire de grosse différence par rapport à 5v vers 1.5v
Cela semble prometteur en tout cas
Oui effectivement je peut également récupérer le 3.3V de l'Arduino, mais le principe reste le même. :wink:

bonjour
j'avais déjà posé la question je crois, mais ça ne veut pas rentrer...:smt021

c'est quoi DRO ?
DRO : Digital ReadOut, c'est une visu digital en français.

Mickaël
 
gégé62
gégé62
Compagnon
26 Fev 2013
2 918
Harnes (Pas de Calais)
@scrachi merci de toutes ces infos très détaillées....par contre, je ne comprends pas grand-chose parce que n'étant pas familier des machines 3D nje ne comprends pas de quoi il est question au départ. Ça me gêne d'être largué dès le départ sur un projet arduino, car j'aime bien ça....

- quel est le rôle d'arduino dans le projet (mesurer la position en x, y et z, avec les PAC, et transmettre sur l'écran come une visu ?)
- quel est le rôle des transistors ?

merci !
 
wika58
wika58
Compagnon
17 Déc 2006
13 110
FR-54560 Lorraine
...
- quel est le rôle d'arduino dans le projet (mesurer la position en x, y et z, avec les PAC, et transmettre sur l'écran come une
visu ?)
- OUI
- quel est le rôle des transistors ?
- Adapter les niveaux de tensions entre les signaux PAC (1.5 V) et les E/S Arduino (5V)
 
M
metalux
Compagnon
11 Jan 2009
5 351
nord
HUMM..:smt017 sans vouloir casser la baraque c'est le schéma classique maintes fois rencontré :wink:
 
S
scrachi
Apprenti
20 Nov 2014
203
06
  • Auteur de la discussion
  • #13
@scrachi merci de toutes ces infos très détaillées....par contre, je ne comprends pas grand-chose parce que n'étant pas familier des machines 3D nje ne comprends pas de quoi il est question au départ. Ça me gêne d'être largué dès le départ sur un projet arduino, car j'aime bien ça....

- quel est le rôle d'arduino dans le projet (mesurer la position en x, y et z, avec les PAC, et transmettre sur l'écran come une visu ?)
- quel est le rôle des transistors ?

merci !
Alors si je peut me permettre je vais faire une petite précision par rapport à la réponse de Wika. Le rôle de l'Arduino n'est pas vraiment de mesurer la position car c'est les PAC qui s'en occupe. Le rôle est d'interprété le signal des pacs, et de le convertir pour un affichage "lisible" par un oeuil humain, dans notre cas, un affichage sur LCD.

Pour les transistor, Wika à parfaitement répondu.


Mickaël
 
S
scrachi
Apprenti
20 Nov 2014
203
06
  • Auteur de la discussion
  • #14
HUMM..:smt017 sans vouloir casser la baraque c'est le schéma classique maintes fois rencontré :wink:
Effectivement, c'est un schéma basic, la fonction de conversion est également basic, donc on peut retrouver ce schéma pour plein de montage différent. :wink:

Mickaël
 
P
Precis84
Compagnon
7 Déc 2008
2 169
Bonsoir
Merci pour le schéma graphique :-D pour le coup c'est parlant pour les nuls ....tel que moi .
(tu as marqué 2 fois PACZ ). Je vais essayer de suivre.
claude
 
wika58
wika58
Compagnon
17 Déc 2006
13 110
FR-54560 Lorraine
Alors si je peut me permettre... petite précision... réponse de Wika.
Le rôle de l'Arduino n'est pas vraiment de mesurer la position car c'est les PAC qui s'en occupe....
Permets-toi,:-D
c'est plus juste ainsi.:smileJap:
 
pinou29
pinou29
Compagnon
18 Mar 2009
2 877
Toulon ( Var )
Pour le moment les PAC ne sont pas alimenté par le circuit mais par leur propre pille, c'est pour ça que les pins VCC ne sont pas reliés. Pour améliorer ça il faut que je fasse un circuit qui abaisserait le 5V de l'Arduino vers du 1.5V.
Bonjour.
J'avais donné un lien il y de ça pas mal de temps (2011) pour la réalisation d'une visu par Peter Smolder ici:
https://www.usinages.com/threads/visu-3-axes-compte-tours.32446/
à la rubrique "powersupply schematic" il y a le principe d'une alimentation à base de LM317 pour le 1,5 volts des règles de mesure.
Bonnes bricoles.
Bernard.
 
S
scrachi
Apprenti
20 Nov 2014
203
06
  • Auteur de la discussion
  • #18
Bonsoir
Merci pour le schéma graphique :-D pour le coup c'est parlant pour les nuls ....tel que moi .
(tu as marqué 2 fois PACZ ). Je vais essayer de suivre.
claude
Pas de soucis. Pour le double PACZ, je vais corriger ça.

Bonjour.
J'avais donné un lien il y de ça pas mal de temps (2011) pour la réalisation d'une visu par Peter Smolder ici:
https://www.usinages.com/threads/visu-3-axes-compte-tours.32446/
à la rubrique "powersupply schematic" il y a le principe d'une alimentation à base de LM317 pour le 1,5 volts des règles de mesure.
Bonnes bricoles.
Bernard.
Merci pour le lien, je vais aller voir ça.

Mickaël
 
gégé62
gégé62
Compagnon
26 Fev 2013
2 918
Harnes (Pas de Calais)
merci pour les réponses !
bonne soirée
 
pinou29
pinou29
Compagnon
18 Mar 2009
2 877
Toulon ( Var )
Bonjour.
  • Un écran LCD (j'ai prix un LCD-BLUE-I2C qui a une taille de 4x20 caractère mais ça peut également fonctionné avec un 2x19
Sur le dessin je compte un écran de 2X16 caractères, je peux utiliser ce type d'afficheur ?

2 transistor type NPN par axe
Quelle référence ou n'importe quel NPN ?

Tout d’abord un Arduino, je pars sur un Nano
J'ai une carte Méga 2560, ça peut fonctionner aussi ?
Pardon pour toutes ces questions mais vous avez compris que je suis un vrai débutant.
Merci pour votre indulgence.
Bernard.
 
S
scrachi
Apprenti
20 Nov 2014
203
06
  • Auteur de la discussion
  • #21
Bonjour.


Sur le dessin je compte un écran de 2X16 caractères, je peux utiliser ce type d'afficheur ?



Quelle référence ou n'importe quel NPN ?



J'ai une carte Méga 2560, ça peut fonctionner aussi ?
Pardon pour toutes ces questions mais vous avez compris que je suis un vrai débutant.
Merci pour votre indulgence.
Bernard.
Alors pour l'écran un 2*16 ira parfaitement, il faudra juste adapter le code pour que les axes s'inscrive au bon endroit.

Pour le NPN, j'utilise des C547B, mais tout transistor NPN capable de faire passer la puissance ira.

Pour la MEGA 2560 oui il n'y a pas de soucis, mais c'est dommage d'utiliser une carte avec autant d'entré/sortie pour ce petit projet.

Mickaël
 
pinou29
pinou29
Compagnon
18 Mar 2009
2 877
Toulon ( Var )
Re,
Alors pour l'écran un 2*16 ira parfaitement, il faudra juste adapter le code pour que les axes s'inscrive au bon endroit.
Oui, facile pour celui qui sait, pour moi.................

Pour la MEGA 2560 oui il n'y a pas de soucis, mais c'est dommage d'utiliser une carte avec autant d'entré/sortie pour ce petit projet.
J'ai acheté cette carte l'année dernière pour justement commencer à essayer de comprendre l'Arduino.
Merci.
Bernard.
 
jpbbricole
jpbbricole
Compagnon
26 Mai 2016
2 249
Corsier-sur-Vevey (Vaud)
Bonjour scrachi
je suis un radin assumé
Alors je vais te faire faire des économies !
Le montage d’adaptation est un tout petit peu compliqué, ceci suffit
upload_2016-6-6_22-12-54.png

en effet, si tu configure ton port d’entrée comme ceci :
pinMode(dicaBusDataPin,INPUT_PULLUP);
Tu bénlficie de la résistance PULL_UP du port au collecteur du transistor
Comme cette méthode inverse le signal du PAC, tu lis le port comme ceci :
pinDataLevel = !digitalRead(dicaBusDataPin); Le ! est la fonction NOT donc « réinverse le signal »

Autre remarque importante, le choix de l’Arduino :
me permettra de gérer jusque à 4 axes
Pour lire les données du PAC,tu devras lire les ports du PAC en mode interrupt or le Nano n’a que 2 ports gérant ce mode. Regarde ici.

Le choix de Mega n’est peut-être pas si faux.
Pour l’affichage, choisi plutôt le version I2c qui simplifie nettement le câblage.


Bonne soirée
jpbbricole
 
S
scrachi
Apprenti
20 Nov 2014
203
06
  • Auteur de la discussion
  • #26
Bonjour scrachi

Alors je vais te faire faire des économies !
Le montage d’adaptation est un tout petit peu compliqué, ceci suffit
Voir la pièce jointe 285359
en effet, si tu configure ton port d’entrée comme ceci :
pinMode(dicaBusDataPin,INPUT_PULLUP);
Tu bénlficie de la résistance PULL_UP du port au collecteur du transistor
Comme cette méthode inverse le signal du PAC, tu lis le port comme ceci :
pinDataLevel = !digitalRead(dicaBusDataPin); Le ! est la fonction NOT donc « réinverse le signal »

Autre remarque importante, le choix de l’Arduino :

Pour lire les données du PAC,tu devras lire les ports du PAC en mode interrupt or le Nano n’a que 2 ports gérant ce mode. Regarde ici.

Le choix de Mega n’est peut-être pas si faux.
Pour l’affichage, choisi plutôt le version I2c qui simplifie nettement le câblage.


Bonne soirée
jpbbricole
Merci bien pour ton schéma, il est plutôt très intéressant je vais essayer. Par contre je ne comprend pas pourquoi je devrai passer les I/O en interupt. Le schéma que j'ai donné précédemment à été testé et fonctionne parfaitement et cela sans utiliser d'interupt.

Autre question qui doit surrement être bête, le fait d'utiliser les résistances interne de l'arduino à l'aide de INPUT_PULLUP, ne le fait pas chauffer?


Bonne soirée également

Mickaël
 
lion10
lion10
Compagnon
7 Mai 2010
4 725
Bonsoir

S'il n'y a que 2 ports gérant l'interruption il faut s'arranger pour en créer une seule à partir de 2 signaux "et logique" si le niveau est actif à 0.
Puis déterminer par une lecture d'un signal lequel a créé l'interruption.

L'interruption est peut être justifiée puisque l'Arduino aura plusieurs pieds à coulisse à gérer en même temps et des affichages qui devront tous évoluer simultanément en CNC ou si 2 manivelles ou 2 avances se succèdent rapidement.
cdlt lion10
 
Dernière édition:
wika58
wika58
Compagnon
17 Déc 2006
13 110
FR-54560 Lorraine
Petite réflexion.
Au prix que coûte un Nano ou même un micro, ne serait-il pas plus simple de prendre un Nano par axe qu fait juste le décodage du PAC et à ce moment là pas besoin d'utiliser les interruption ou pas de problème de nombre d'interruptions...
Et d'avoir un autre Nano qui s'occupe de l'affichage, de petites fonctions simples de DRO (mesure au rayon ou au diam., offset, ...).
L'échange de la mesure de chaque axe entre les Nano se faisant sous I2C.

L'offset est une fonction très pratique des DRO pro que l'on ne voit jamais sur des petites DRO homemade.
Ce serait l'occasion.

Pour préciser ce que j'entends pas offset, voici un exemple sur un tour.
Je dois usiner un axe de 22.5 mm à partir d'un brut de 25.
Je prends une première passe et mesure 24.15 mm.
Je tappe 24.15 au clavier et valide sur l'axe correspondant.
L'affichage donne alors 24.15 (alors que la mesure du PAC est toute autre).
Je continue mes passes en ayant une lecture directe (sans avoir à faire de calculs à chaque fois).
Juste avant ma passe finale, je prends une dernière mesure et ajuste l'affichage si nécessaire.
Je prends ma dernière passe avec 22.15 sur la DRO et je sors un pièce correcte.

C'est vraiment très pratique !

Et il faut juste rajouter un petit clavier lu par le Nano Central qui gère l'afficheur...

Le Nano Central pourrait lui s'ocouper en plus d'une fonction Tachymètre par exemple...
 
S
scrachi
Apprenti
20 Nov 2014
203
06
  • Auteur de la discussion
  • #29
L'idée est très bonne de prendre plusieurs Arduino, mais je n'ai jamais essayer d'en faire communiquer plusieurs entre eux, si quelqu'un a une expérience là dessus je veux bien une petite explication.

Pour rajouter des fonction (offset, rayon...) effectivement ça serait un vrai plus, surtout pour l'offset, a voir pour peut-être une futur évolution.

Pour ce qui est des interruption, je maintien que l'on peut s'en passer en rafraîchissant la mesure de tous les axes l'un après l'autre (avec 3 axes c'est acceptable, après on est d'accord que si on se retrouve avec plus d'axes ça va devenir plus ératique)Le rafraîchissement à tour de rôle est possible car le PAC, n'as pas besoin d'être suivi en temps réelle pour avoir sa position (a contrario d'un moteur PAP par exemple). Le PAC va avoir un signal différent selon sa position donc des que l'Arduino reprendra la main sur lui, il sera exactement dans quelle position il est. Je sait pas si m'es explication sont très claire :oops:

Mickaël
 
wika58
wika58
Compagnon
17 Déc 2006
13 110
FR-54560 Lorraine
Pour avoir une mesure stable à l’affichage, ne faudrait-il pas avoir une moyenne glissante sur qq mesures ?
 
Haut