En cours numérisation d'avance pour tour ELS (Electronic Lead Screw)

  • Auteur de la discussion speedjf37
  • Date de début
S

speedjf37

Compagnon
Bonjour,

Pour mon projet:

J'ai l'intention de piloter cela avec un arduino.

Quelques exemples sur le net:


on en parle sur CNCzone

Peu de fichiers sources disponibles.

Les fichiers du développeur Russe sont dispo en ......Russe. (tout à fait lisible avec Chrome et sa traduction)



une version en .EN
https://github.com/jschoch/electonic_guitar

un autre fil :
https://groups.io/g/Lathe-List/topic/model_200_electronic_lead/19175030?p=,,,20,0,0,0::recentpostdate/sticky,,,20,2,0,19175030

Les montages présentés sont complexes avec des options de tournage automatique (filetage cônes sphères).

Je vais faire des essais avec une version simple pour commencer

1 seul moteur en X
 
Dernière édition:
F

fauxjetons

Compagnon
salut
je viens de voir ton sujet
ce montage doit t intéresser #7
tu me doit quoi
a plus
 
S

speedjf37

Compagnon
Bonsoir,

Les version simples sont peu exploitables en l'état.

Après quelques essais la solution Russe de Oleg parait exploitable.

La traduction EN n'était pas complète (modifiée pour affichage OLED SPI) .
J'ai adapté et terminé la traduction de Digital_Feed_7e2.ino

Il n'y a pas d'affichage des positions XZ ( moteurs et butées).
Il faut une DRO pour être précis. (affichage ajouté en 3e et 4e ligne).

Cependant l'encodeur doit être à haute résolution 1800pt/tr .
Toutes les actions automatiques sont pilotées par les impulsions de l'encodeur.

Je n'ai pas la place pour poser un encodeur de cette résolution , je cherche donc une solution.

Une version de GRBL modifiée avec encodeur et synchronisation par encodeur 4 pt/tr pourrait fournir une solution logicielle à adapter.


JF
 
S

speedjf37

Compagnon
Bonjour,

L'atelier étant enfin utilisable , je vais me remettre sur le sujet.

@pailpoe ayant fait un super boulot pour son tour :

Cela ouvre des perspectives intéressantes .

Aucunes des solutions existantes ne me convient intégralement.
Je vais essayer de construire ma propre solution.

Solutions retenues dont les sources sont disponibles:

CreateurversionUCParamsAffentree brochesaisiemenuDROaxe
Z
axe
X
axe Ysite
Oleg ADigital_Feed
_7e2
MEGA
2560
Calculs
Code
LCD 1602encodeur HD
1800 p /tr mini
joystickchoix par
commutateur
NONstepperstepper
jschochtraduction
ELS
Russian
EN
MEGA
2560
Calculs
Code
LCD 1602
encodeur HD
joystickstepperstepper
jschochespELSESP32Calculs
Code
O
2.4"
SSD1306 128 x 64 I2C
LEd

encodeur HD
pailpoe1.0.0 dev STM32
F103CB
SIMU
EPROM
FLASH
OLEd
2.4"
SSD1306 128 x 64 I2C
encoder
LD
6 boutonsDéroulantsC
X
Y
encoder
règle
stepper
encoder
règle
 
Dernière édition:
P

pailpoe

Compagnon
Je me place en spectateur :-D
Pour la version logiciel, tu peux mettre 1.0.0 dev , je suis pas loin de faire la release 1
 
S

speedjf37

Compagnon
Options Sélectionnées: (version du jour peut évoluer).

Concevoir un outil facile à gérer (Pas de Gcode , pas de PC) , sinon Linuxcnc.

Encodeur Axe C (broche) basse résolution (pas la place de monter un encodeur haute résolution)
La solution de pailpoe me séduit.
Pas de top de broche hard (top soft)

Affichage des axes C Z X (pour se passer de DRO).
Filetage impératif mm/Inch (axe Z X) pour automatiser.
Les options de Oleg cône et sphère me font réver (pour plus tard).

UC:
ESP32
+
Freq 80/240mhz
8 PCNT compteurs/encodeurs matériels
LIB counter jf OK
LIB encoder JF OK
2 x2 timers matériels
LIB neotimer

I2C SPI USB
Wifi Bluetooth
-
3.3V
E/S limitées 12
NO EEPROM emulation possible ou fichiers virtuel VS SPIFF

Affichage:
I2C LCD 1602 -> 2004

I2C Oled 2.4" SSD1306 128 x 64
LIB SSD1306Wire.h
GEM ?
U8G2 ?

7 Segments SPI Max7219 (testé avec 6 aff)
LIB Max7219 OK

Boutons:
A cause du nombre limité d E/S extension par bus (I2C ou SPI) hard ou soft
TM1638 V1 V2 V3
LIB TM1638lite OK
LIB TM1638plus OK

MCP23016/7
LIB Adafruit MCP23017

Moteurs:

Nema 23 driver externe
X stepper
Z stepper

Lib accelstepper ?

Encodeurs:
Axe C (broche) DIY 2 optos

Pas prévu de règles pour Z et Y

.....


JF
 
Dernière édition:
P

pailpoe

Compagnon
Tu es sur de pas vouloir développer sur un stm32, je trouve ça dommage de faire une branche parallèle ! Surtout que tu as l’air de bien maîtriser ton truc.
je peux te fournir une carte si tu veux.
 
S

speedjf37

Compagnon
Tu es sur de pas vouloir développer sur un stm32, je trouve ça dommage de faire une branche parallèle ! Surtout que tu as l’air de bien maîtriser ton truc.
je peux te fournir une carte si tu veux.

Je te remercie pour cette très sympathique proposition mais je décline !
Pas du tout envie de me mettre à un nouvel environnement.

Ce ne sera pas une branche parallèle (désolé) , il y aura surement trop de différences matérielles .

J'ai déjà tout le matériel en ESP32.
Les ressources hard sont au moins aussi puissantes.

exemple: ESP32 12 entrées opto aff 6x max7219 spi clavier/aff TM1638 V1
DRO pour 6 axes step/dir
+ tests clavier/aff TM1638 V2 et V3

ESP32_MAX7219_TM3816_r.png


Cordialement JF
 
Dernière édition:
P

pailpoe

Compagnon
Je comprends, pas de soucis. J'ai pas de doute sur la puissance des esp32.
Je suis pas parti sur ce micro pour des raisons de doc, je trouve que le datasheet est comment dire "light" !
 
S

speedjf37

Compagnon
Bonsoir,

Adaptation du code Mini_thread de @pailpoe en STM32 vers ESP32 :

Mini_thread étape 1
Compiler et afficher sur l'écran

etape1_ecran.png


Bien galéré mais en même temps on plonge à fond dans le code !
Le code est très peu modifié.
Création d'un fichier hardware.h pour les adaptations au matériel (E/S)
une version de la lib ESP32encoder adaptée à la config de QuadDecoder (à tester et compléter plus tard).
Les fonctions du timer 4 control moteur Shuntées pour l'instant
le clavier dérouté vers un TM1638 (boutons à récupérer dans le code pour les rendre fonctionnels (étape 2)

Mini_thread étape 2
++ Contourner les divisions par 0 qui plantent l'UC (reboot) à cause de la config non traitée
Gérer les boutons afficher les menus OK
menu_ok.jpg


Mini_thread étape 3
Gestion EEPROM (émulation en Flash) pour sauvegarder/restaurer la config OK

Mini_thread étape 4
Tester et valider les encodeurs OK
1er test les 3 encodeurs fonctionnent.
Il faut maintenant vérifier si tous les paramètres sont pris en compte.

Adaptation douloureuse de ma LIB ESP32Encoder OK
reste le top 0 à récupérer.

Affichage axes X Y C OK

encoder_ok.png



Mini_thread étape 5
Implanter le Timer 4 control moteur /******ECHEC*/
A cause du FreeRTOS il est impossible d'avoir 1Timer à la µs

recherche solution adaptée ESP32
Une superbe LIB FastAccelStepper (compatible AVR et ESP32) à tester.

Validation de 2 moteurs dans le projet avec les 2 touches G et D en mode MANUAL OK
Il faut maintenant intégrer tout cela dans la gestion du projet.

Mini_thread étape 7
Tester et valider la commande moteur
Intégration LIB FastAccelStepper OK

Mini_thread étape 8
Ajout d'un générateur pour simuler la rotation de la broche. injection sur Axe C pour test.
Affichage sur le clavier TM1638 .

Tests en simulation
Mode Manuel OK
Mode Auto OK
Mode TH EX N OK

Mini_thread étape 9
Adapter les paramètres au monde réel
moteur Nema23 sur tour MU200.
Encodeur opto maison sur broche

Mini_thread étape 10
03/01/2021
Amélioration entrainement vis mère sur MU200.
Alimentation driver DM542 28V permet en 1600 pas/tr de monter à 18000 steps/s
Dans minithread avec la vitesse mini de la MU200 150 tr/mn permet d'aller jusqu'au pas de 3.5mm

Limitations actuelles:
Pas d'asservissement/suivi de la broche.
Pas de gestion de l'offset.
Donc je ne peux faire que de la pénétration droite sans offset pour l'instant.

Premier filetage M8 réalisé sur de l'alu (voir #21)

J'impose le démarrage du filetage avec une vitesse de broche non nulle.

Mini_thread étape 11
05/01/2021
Prévoir l'Installation d'un moteur sur l'axe Y pour valider la pénétration oblique.
Pourrait permettre d'automatiser le filetage (retrait outil et retour , avance passe, etc)
Permettrait de réaliser des chanfreins en pilotant les 2 axes en simultané.
Modification du logiciel:
implantation moteur Y
Ajout commandes moteur Y (ajout boutons ?).MANU AUTO X Y

Mini_thread étape 12
06/01/2021
Ajout des options de paramétrage dans les menus
Du moteurY
Du moteur2
voir

cordialement JF
 
Dernière édition:
P

pailpoe

Compagnon
Nickel, pour info, j’ai fait du ménage sur le fichier ino cet après midi. La branche main du depot est à jour.
c’était grave le bordel, il y en avait partout
 
P

pailpoe

Compagnon
Avec l'écran qui s'allume, ça veut dire que u8g2 tourne donc le menu doit pas être loin de fonctionner
 
S

speedjf37

Compagnon
Bonjour,

L'adaptation du code de @pailpoe en STM32 vers ESP32 est en bonne voie.

Les avancées de la conversion ESP32 sont au #12

edit:

J'utilise un écran 1.3 Pouces OLED 12864 I2C (c'est pas gros).
Il n'y a pas de pin reset.


J'ai un décalage de l'écran sur la gauche avec une barre verticale à droite.
Quelqu'un connait se problème et sa solution ?


Cordialement JF
 
Dernière édition:
P

pailpoe

Compagnon
Ah super, je vois un soucis sur la position de broche en degré, elle devrait être entre 0 et 360°. L''overflow du codeur C doit être mal géré.
Tu vas vite, c'est cool.
Je vois aussi un décalage de l'écran à gauche
 
S

speedjf37

Compagnon
J'ai trouvé la solution pour l'écran sur le net
Le controleur n'est pas un SSD1306 mais un SH1106

//U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, PIN_RES_SCR);

U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, SCL, SDA, U8X8_PIN_NONE); // All Boards without Reset of the Display

JF
 
R

rotavap

Apprenti
Salut,

Je viens de voir ton post, je compte moi aussi bientôt jouer avec le mini_thread de @pailpoe ! :-D Je vais donc suivre l'avancé de ton projet avec beaucoup d'intérêt :wink:
Bon courage pour la suite !
 
S

speedjf37

Compagnon
Bonjour,

Avancée du projet au #12

Ajout d'un générateur (step/dir) pour simuler la rotation de la broche pour les tests.
Utilisation d'un nouveau PCNT (LIB FastAccelStepper)
Nouvelles commandes:
stepper_selected->runForward(); //rotationpermanente
stepper_selected->runBackward(); //rotationpermanente
stepper_selected->forceStopAndNewPosition(0);

Utilise les touches 12 13 14 15 du clavier
Vitesse variable de 1à 3000 tr/mn
Sens Normal /Inverse
gene.png

Détails du compte tour.
A vérifier l'affichage de la position de la broche dans les 2 sens de rotation !
detail_comptetour.png

Cordialement JF
 
P

pailpoe

Compagnon
Pour la position de la broche, elle ne doit pas passer en neg, la position est entre 0 et 359.999 degré !
 
S

speedjf37

Compagnon
Bonjour,

Après de nombreuses galère voir #12 le système est opérationnel.

C'est un premier pas fonctionnel avec des restrictions.

Voici le premier filetage réalisé avec minithead ESP32.
M8 (pas 1.25mm)sur un morceau d'alu de récup.
Vitesse broche 250 tr/mn (affichage 260).

premier_filetage_M8.png


Cordialement JF
 
Dernière édition:
S

speedjf37

Compagnon
Bonjour,

Implantation moteur Y en cours
1 Menu réglage


menu_reglage_my.png


2 Menu Moteur 2


Cordialement JF

menu_mot2.png
 
Dernière édition:
P

pailpoe

Compagnon
C’est cool. j’ai hâte de voir ta manière de gérer les 2 moteurs, il y a du taff pour faire ça propre.
 
S

speedjf37

Compagnon
Bonjour,

Afficheur reçu hier !
Câblé ce matin avec la mutation SPI -> I2C.
Problème RAZ confirmé. Câblé sur GPIO 0 pour test OK.

C'est bien plus confortable et lisible de loin !

je trouve le blanc (cold) froid alors que le petit est plus (warm) chaud.
la photo (avec le tel) ne rend pas bien les couleurs l'aff 7 seg est bien rouge !

nouvel_aff.jpg


Cordialement JF
 
Dernière édition:
S

speedjf37

Compagnon
Bonsoir,

Routage carte proto sous Kicad V5

1 ESP32 DEVKIT 30 Pin
4 CD4053 3 Mux 2 ch
1 ULN2003
1 AFF OLED 2.42"
1 Con pour clavier TM1836 (ou autre pas définitif)

3 Con JST pour les entrées C X Z
2 Con JST pour les sorties moteurs
2 Con JST pour les entrées CNC X Z (manque éventuellement une sortie pour le top synchro broche).
1 Con Alim 5V ext.

1612548609330.png


Le proto sera gravé à la CNC !

Cordialement JF
 
S

speedjf37

Compagnon
Bonjour,

Avec quelques soucis la carte Proto_R (R pour l'écran en mode inversé H/B)fonctionne.
Les commutations par mux CD4053 sont opérationnelles.
le clavier n'est pas intégré car pas encore complètement défini.

Cela me permet :
1) de passer en mode Simulation pour la broche avec le générateur intégré.
de simuler le filetage sans autre module ou câblage pour tester le logiciel !
2) de reboucler les sorties Step/Dir des moteurs sur les entrées X et Z (en mode Half) pour se passer des règles.
3)le bypass des sorties X Z depuis les entrées CNC.

4) de tout sélectionner pour passer en mode réel.

Gravure PCB sur Portix:
Les trous ne sont pas centrés !!!
Sur l'autre face la gravure est décalée de plus de 2mm.
2e gravure après perçage (sans Autoleveller) pour dégager les pastilles.
Pose de straps en fil pour les piste coupées par les 2 gravures.

La procédure de production du Gcode Kicad -> Gerbers ->Barbari script ->Flatcam est à améliorer.
Elle sera automatisée par un plugin Kicad.

Gravure_Proto_R.png


Proto_R en test ( l'écran est sur l'autre face ) :


Proto_R_test.png


Prochaine étape essais en réel.
Puis intégration des différentes configuration dans le logiciel avec menus et paramètres.

JF
 
Dernière édition:
S

speedjf37

Compagnon
Bonjour,

Pour les test il faut un clavier adapté (taille position des touches etc).

Création d'un PCB clavier 16 touches (PCF8574) et écran en I2C: (permet de récupérer 3 pin du clavier TM1638 en pseudo SPI).

Autorise le clavier/écran déporté du boitier de gestion en allongeant la liaison .
Les 16 touches donnent plus de possibilités au logiciel (exemple les 3 commandes des MUX).

Coté cuivre:

PCB2cuivre.jpg


Coté composants:
PCB2comp.jpg


PCB2Affclav1.jpg


Afficheur en service:
PCB2Affclav.jpg


A partir de maintenant on peut tout tester:
Les Mux avec leur commandes 3 boutons a gauche de l'écran.
_Bleu Géné sur entrée broche
_Rouge bypass mode CNC
_Gris Axes Xet Z Règle/StepDir moteurs

Le simulateur de broche 4 Boutons Bleu en haut
Le géné intégré: Rotation (Neg Pos ) Vitesse (moins plus).

Les choix de X et Z à 2 boutons blanc à droite de l'écran:
_Milieu mode de l'axe ---- MANU AUTO
_Bas Choix de l'axe X ou Z pour les boutons du bas (après l'init l'action valide l'axe sans passer par le menu)

Le bouton gris est inutilisé pour l'instant.

Les boutons du bas ont les mêmes fonctions que sur le Minithread original.
+ les fonctions de déplacement du X = mêmes touches que pour le Z avec rotation de 90°

Cordialement JF
 
Dernière édition:
S

speedjf37

Compagnon
Bonjour,

La gestion des touches multiples : Dur dur !
Le clavier I2C multiplexé 16 touches avec PCF8574 OK
Pas trouvé de lib qui gère plusieurs boutons en simultané.

Modif câblage avec diodes (schottky) anti retour sur les lignes ( à la place des 4 résistances sur P 0,1,2,3).
Ecriture lib gestion de plusieurs boutons en simultané.(compatible avec la lib TM1638 = même code touche en retour).
Code touche sur 16 bits.

Ajout affichage vitesse du Géné (si MUX_GENE actif) sur la ligne du bas !

Suite = test de toutes les entrées sorties avec les MUX (avec les changement de mode des compteurs associés).

Cordialement JF
 
S

speedjf37

Compagnon
Bonjour,

Quelques infos !

Câblage d'un boitier (récup Storage SCSI) pour les alimentations et les drivers.
Alim 5V et 48V
2 Drivers DM542
Sorties moteurs prises GX16 4P
Sortie Alim 5V GX12 2P
Entrées Enable Step Dir des 2 moteurs sur une RJ45 vers 2 JST XH (2.54).

Intégration logiciel de la fonction filetage automatique.
Comment calculer les passes ?
En fonction du diamètre et du pas ???
En mode direct et en mode angle ?????

Comment fait t'on le 0 outil sur un tour à commande numérique ?

Tests en cours , problème de lecture de vitesse broche à résoudre.

Vidéo quand ce sera concluant !!

Cordialement JF
 

Sujets similaires

Haut