Pupitre LinuxCNC autonome - 1/2

Réalisation d'un pupitre de pilotage CNC entièrement autonome (pas besoin d'ordinateur) avec une architecture basée sur l'utilisation d'une carte Beaglebone Black configurée avec MachineKit (LinuxCNC embarqué), ce pupitre permet de commander jusqu'à 5 axes et est équipé d'un écran tactile permettant d'accéder à toutes les fonctions de LinuxCNC. La Beaglebone dispose de nombreuses entrées/sorties ce qui permet de disposer des fonctions nécessaires à la plupart des machines d'usinage amateur.
Cette page décrit la génèse de cet ensemble depuis l'élaboration du cahier des charges jusqu'aux paramétrages et essais sur machine.
A ce jour, en 2018, le projet est en cours de réalisation, cette page sera donc enrichie au fur et à mesure de l'avancement.

Les articles sont en deux parties, la première partie traite du cahier des charges à la carte d'interface, la seconde partie décrit la réalisation du pupitre et son paramétrage.

Le cahier des charges

Généralités

Cet ensemble de pilotage a pour but de remplacer le logiciel Cnc3Axes implanté sur un PC d'atelier afin de piloter mon ensemble tour/fraiseuse et d'éventuelles évolutions futures telles que l'ajout d'axes rotatifs.
L'interface vers les drivers de moteurs pas à pas ne doit plus utiliser des ports en fin de vie (LPT).
L'interface doit être conviviale et intuitive, voir si possible proche d'une interface industrielle.
L'ensemble du projet ne doit pas utiliser de logiciels propriétaires et les adaptations de code doivent rester possibles.
Eviter les développements personnels trop lourds et complexes (risque de ne pas aboutir).

Fonctionnalités souhaitées

1-Pilotage de 1 à au moins 5 axes.
2-Gestion des vitesses et des rampes d'accélération.
3-Flux de pas d'au moins 50kHz ce qui permet d'utiliser des micro-pas (donne 1800mm/mn avec une vis au pas de 1 et 1600pas/tour).
4-Gestion d'une broche en marche/arrêt et vitesse, si possible avec asservissement en vitesse.
5-Possibilité de filetage au tour, nécessite mesure de vitesse et index de broche.
6-Fins de courses pour les 3 axes linéaires.
7-Interopolation linéaire simultanée sur au moins 3 axes.
8-Interpolation circulaire sur les différents plans.
9-Gestion de tables et corrections d'outils.
10-Gestion des origines machine et pièce.
11-Gestion de l'arrêt d'urgence soft et électrique.
12-Interprétation de code programme ISO (G-code).
13-Saisie de commandes et de programmes en IMD.
14-Mode jog soft.
15-Possibilité d'agir sur les vitesses de broche et d'avance pendant l'usinage (potentiomètres override).
16-Possibilité d'intégrer une "manivelle électronique".
17-Pilotage de sorties auxiliaires (arrosage, aspiration, etc...)
18-Possibilité de gérer un changeur d'outils.
19-Possibilité de programmation conversationnelle ou par apprentissage.
20-Possibilité de faire des pauses pendant un usinage et de reprendre (contrôles).
21-Possibilité d'étendre le nombre d'entrées/sorties.
22-Compensation des jeux d'inversion.
Sinumerik 840D (image Siemens)
Sur la base de ce cahier des charges fonctionnel, avec mon ami suisse Thierry (THL), nous avons entrepris des recherches sur le web afin de voir ce qui se fait et de déterminer le meilleur choix pour les amateurs que nous sommes.
L'un comme l'autre, notre goût pour les défits techniques fait que nous n'écartons pas la possibilité de créer nos propres cartes ou logiciels si nous ne trouvons pas ce que nous souhaitons "clé en main".
En voir plus
Cnc3Axes
Logiciel gratuit de pilotage pour machine CNC, téléchargeable sur ce site.
Machines outils
Comment construire soi-même ses machines pour usiner les métaux, à voir sur ce site.
En voir plus
Cnc3Axes
Logiciel de pilotage CNC
Machines outils
Construire ses machines outils

Les hypothèses techniques et notre choix

Les hypothèses 

Bien sûr nous n'avons pas trouvé de solution "clé en main" et freeware disponible, mais malgré tout plusieures hypothèses viables s'offrent à nous :
1-Carte IPL5X avec un logiciel de pilotage à développer car ceux proposés ne sont pas bien adaptés à l'usinage de pièces mécaniques.
2-Projet GRBL sur Arduino là aussi avec un logiciel à développer pour les mêmes raisons d'adaptation à l'usinage mécanique.
3-PC dédié en LinuxCNC auquel il faut adjoindre une carte interface, c'est sans doute la solution la plus fiable, mais elle nécessite un PC sous Linux.
4-Développement d'une carte interpolateur telle que IPL5X avec les fonctionnalités manquantes (overrides d'avance et de broche par exemple) et du logiciel adapté.
5-Développement d'une carte de pilotage entièrement autonome tel qu'il est fait pour certaines imprimantes 3D.
6-Utilisation d'un ordinateur monocarte comprenant des entrées/sorties intégrées et sous Linux pour embarquer LinuxCNC (Rapsberry, PCduino, UDoo, Beaglebone).

Cette liste n'est bien sûr pas exhaustive, il ne s'agit que des hypothèses que nous avons étudiées de plus près.

Analyse des hypothèses

Avec Thierry, nous avons réalisé cette carte qui lors des premiers essais en 2013 nous semblait très prometteuse car encore en développement à l'époque. C'est un interpolateur qui nécessite un logiciel sur PC/USB pour lui envoyer les instructions de déplacements mais contrairement à Cnc3Axes, c'est la carte qui gère les interpolations et le flux des pas. J'avais réalisé un banc de test avec des drivers de moteurs pas à pas LeadShine M542 et la performance était très bonne.
Toutefois, il était nécessaire de développer un logiciel d'interface adapté à l'usinage mécanique ce qui est très chronophage et complexe.
Nous n'avons pas retenu cette solution d'autant plus qu'à ce jour, en 2018, le développement de la carte IPL5X semble stoppé.
GRBL est un développement open source qui fonctionne sur Arduino Uno ou Mega. C'est un interpolateur qui comme IPL5X nécessite un logiciel sur un PC connecté par USB afin de communiquer les ordres d'exécution et de recueillir les informations nécessaires à une bonne interface homme- machine.
Comme pour IPL5X il existe déjà des logiciels de communication, mais aucun n'est adapté à l'usinage mécanique.
UDOO et PCduino
L'un comme l'autre sont des ordinateurs monocarte pouvant fonctionner sous Linux, UDOO semble plus évolué mais les deux sont cencés être compatibles avec les shield Arduino ce qui ouvre la porte à des implantations GRBL ou LinuxCNC.
Dans les deux cas nous n'avons pas fait de tests car nous ne disposions pas du matériel.
LinuxCNC sur PC
On ne présente plus LinuxCNC, tous les amateurs de CNC à la maison connaissent, c'est à mon avis le top en matière de pilotage, en plus c'est du logiciel libre et open source.
Tout est paramétrable et le nombre d'applications et d'informations disponibles sur le web sont incalculables.
Carte perso
Même pas peur ! Nous avions aussi envisagé le développement complet depuis la carte d'interpolation jusqu'au logiciel. Dans l'idée, Thierry qui est plus performant que moi en électronique se serait chargé de la carte et moi je me serait attaqué au logiciel en C++ avec l'environnement Qt.
Bien sûr nous avons rapidement abandonné cette hypothèse qui n'aurait sans doute jamais vu le jour faute de temps pour développer.
LinuxCNC sur Beaglebone Black
La carte Beaglebone Black présente l'avantage de disposer de nombreuses entrées/sorties, d'un slot SD, d'USB et HDMI. De plus il est possible d'y implanter facilement MachineKit qui est un clone de LinuxCNC capable de fonctionner sur des processeurs ARM.
La cerise sur le gâteau est que la Beaglebone Black (BBB) possède deux processeurs "temps réel" ce qui sur ce point la rend plus performante qu'une Raspberry.
J'ai donc réalisé un prototype de test avec cette carte qui est bon marché (45€ en 2018) afin d'en analyser les performances avec les M542 LeadShine.
Et là, j'ai été bluffé,  autant dire que notre choix était fait.

Notre choix

Après les différents tests, le choix de la Beaglebone Black implantée avec MachineKit s'est imposé car il existe déjà quelques projets réalisés sur cette base et le plus important pour un début est que des images systèmes avec MachineKit sont disponibles en téléchargement ce qui limite énormément le risque d'échec lors de l'installation du système. L'emsemble prototype a presque fonctionné du premier coup.
Il reste donc à étudier une carte d'interface (cape) répondant parfaitement à nos besoins en s'inspirant de celles existantes pour les imprimantes 3D et plus particulièrement de la carte Cramps.

Les schémas et la réalisation de cette carte sont l'objet du prochain article de cette page.
En voir plus
Carte IPL5X
Carte interpolateur basée sur un pic 18F4550 en liaison USB avec un PC.
GRBL
Projet open source d'interpolateur implanté sur une carte Arduino Uno ou Mega.
Linux CNC
Environnement de pilotage de machine entièrement paramétrable, gratuit et open source sous Linux.
Le top du pilotage CNC amateur.
Beaglebone
L'ensemble des cartes de la famille Beaglebone, un projet open source.
MachineKit
Dérivé de Linux CNC, Machinekit reprend la même base mais est adapté aux systèmes embarqués sur cartes ARM comme la Beaglebone.
LeadShine
Constructeur de drivers pour pas à pas et brushless.
En voir plus
Carte IPL5X
Carte interpolateur 18F4550
GRBL
Interpolateur sur Arduino
Linux CNC
Pilotage de machine CNC sous linux
Beaglebone Black
Projet Beaglebone
MachineKit
Pilotage de machine CNC sous Linux embarqué
LeadShine
Drivers pour pas à pas et brushless

Carte d'interface BBB-CNC-Cape : le prototype

Présentation de la carte

Les entrées/sorties de la carte Beaglebone Black ne supportent que des niveaux de tension à 3,3V ce qui les rendent incompatibles avec la plupart des drivers ou autres interfaces qui en général utilisent du 5V. C'est pourquoi il n'est pas possible de relier directement la Beaglebone avec les différents composants, il faut donc une carte interface, appelée "cape" pour jouer ce rôle d'adaptation des niveaux de tension. L'autre rôle de cette cape est de ramener tous les signaux sur des connecteurs plus simples à câbler dans un pupitre.

Ne trouvant pas de cape toute faite correspondant à notre cahier des charges, nous avons décidé de créer notre propre interface en s'inspirant de la cape CRAMPS qui est elle même très orientée imprimante 3D.
Cette cape dispose des fonctionnalités suivantes :

- 5 axes avec les lignes pulse+dir+enable (enable commun aux 5 axes).
- 1 commande de broche M/A+PWM+CW/CCW.
- 6 entrées fins de courses pour les 3 axes linéaires.
- 9 entrées/sorties auxiliaires utilisables en entrée ou en sortie par paramétrage LinuxCNC.
- 3 entrées codeur de broche A+B+Index.
- 2 entrées analogiques dédiées aux potentiomètres d'override F et S.
- 5 entrées analogiques disponibles (0 à 1,8V).
- 1 sortie I2C en 5V.
- 1 sortie I2C en 3,3V.
- 1 EEPROM afin de permettre la configuration automatique de la Beaglebone lors du boot (il n'est pas impératif qu'elle soit programmée).

Le dossier complet avec schéma, typon et implantation des composants est disponible en téléchargement, bien sûr j'apprécierai un petit message si vous le téléchargez.

En complément, vous trouverez la répartition des fonctions, telles que nous les avons choisies pour nos applications, sur le schéma des connecteurs.

La réalisation du prototype

La cape vue du côté connecteurs, cette face sera côté Beaglebone Black.
En noir les connecteurs pour la Beaglebone.
A droite 5 connecteurs d'axes et 1 de broche.
A gauche les entrées analogiques disponibles et deux connecteurs pour les potentiomètres d'override (F et S).
A gauche les connecteurs d'arrêt d'urgence et de sorties pour les voyants de marche et d'arrêt d'urgence.
En haut et en bas les connecteurs pour les 6 fins de courses, les entrées/sorties auxiliaires et le port I2C.
Vue du côté des composants, il est à noter que pour gagner un maximum de place, la carte est entièrement réalisée avec des composants CMS. J'ai choisi des CMS pas trop miniaturisés afin de pouvoir les souder avec des moyens traditionnels, c'est beaucoup plus simple qu'il n'y paraît, sauf qu'avec des yeux un peu usés il faut impérativement une loupe.
Les composants principaux utilisés pour l'adaptation des tensions sont le 74AC541 pour les lignes d'entrées ou sorties figées et le  74CBTD3861 pour les lignes où l'on peut choisir entrée ou sortie par paramétrage logiciel.
Vous pouvez voir le schéma complet en PDF.
L'une des plus grandes difficultés lors de la réalisation de cette carte a été la gravure du circuit imprimé. Le fait d'avoir choisi d'utiliser des CMS impose une gravure fine et précise, par chance, il n'a pas été nécessaire de graver en double face, il reste tout de même deux straps côté connecteurs à ne pas oublier.
Bien sûr il reste toujours possible de commander le circuit à des professionnels, mais c'est beaucoup plus enrichissant de le faire soi-même.
La technique utilisée est simple mais il faut être très rigoureux dans la mise en oeuvre.
Imprimer le typon sur un transparent (attention aux dimensions et à inverser l'image si nécessaire), insoler votre circuit avec un petit banc UV, révéler avec du révélateur neuf afin d'être très précis. La gravure a été faire au persulfate de sodium chauffé à 40°C et brassé avec un bulleur d'aquarium. Avec cette technique, le résultat est quasiment parfait dès le deuxième essai.
Attention car une gravure au perchlorure de fer ou pire au mélange acide chlorhydrique eau oxygénée ne donnera pas un résultat correct.
Pour un soudage facile et parfait, il faut aussi soigner l'étamage du circuit après gravure.
La soudure des composants peut se faire avec un fer à souder régulé en température, idéalement il faut aussi ajouter un peu de flux spécial pour les CMS mais ce n'est pas indispensable.
L'implantation se fait en commençant par les résistances et les condensateurs, se poursuit par les transistors puis les circuits intégrés et finir par les connecteurs.
Vous pouvez consulter l'implantation et télécharger le dossier complet.
Pour ce qui est de la Beaglebone Black, les entrées sorties sont affectées comme indiqué sur le croquis et peuvent être visualisées sur le schéma de la cape toute une partie du connecteur P8 n'est pas utilisée car réservée pour d'autres fonctionnalités (GLCD entre autres), c'est pourquoi une partie du connecteur correspondant sur la cape a été supprimée ce qui permet de gagner de la place pour les autres composants.
Le croquis ci-après représente les choix d'entrées/sorties tels qu'ils ont été paramétrés pour le prototype et pour le pupitre final. Bien sûr toutes les entrées/sorties auxiliaires peuvent être modifiée si nécessaire (vrai pour toutes les entrées/sorties gérées par les 74CBTD3861).
Toujours dans le but de gagner de la place pour placer tous les connecteurs, la BBB-CNC-Cape ne dispose pas du détrompeur caractéristique des capes pour Beaglebone, il faut donc faire attention lors du branchement.
La cape d'interface est maintenant fabriquée et testée. Le fonctionnement est bon et il ne reste plus qu'à l'intégrer dans le pupitre pour que tout soit fonctionnel.
La deuxième partie va décrire la fabrication du pupitre et son câblage, puis le paramétrage de MachineKit (LinuxCNC) afin de donner vie à tout ce matériel.
ATTENTION :
Les derniers tests effectués le 14 août 2018 ont révélé une défaillance du 74LS541 au niveau du canal AXE-ENABLE, le fait de connecter plus de 3 drivers surcharge la sortie qui est limitée à 32mA, la sortie a donc grillé au bout de quelques heures de fonctionnement.
La réalisation de cette carte ne doit donc pas être faite à partir des schéma du prototype.

Trois nouveaux schémas sont en cours de test et seront publiés prochainement.
Télécharger
Prototype BBB-CNC-Cape
Vous pouvez télécharger les documents PDF nécessaires à la réalisation de la carte BBB-CNC-Cape. Ce dossier est uniquement pour information car ce prototype comporte quelques bugs.
En voir plus
Projet CRAMPS
La CRAMPS est une cape pour Beaglebone destinée au pilotage d'imprimantes 3D. La CRAMPS a servi de base à l'étude de la BBB-CNC-Cape.
Réalisation des circuits imprimés
Site assez complet sur la réalisation de circuits imprimés à la maison. Vous y trouverez aussi bien d'autres choses en électronique.
Gravure des circuits imprimés
Un autre site qui explique comment graver des circuits imprimés soi-même.
Commerce
Go Tronic
Vente de composants électroniques en ligne. Site très sérieux, j'y commande régulièrement.
Farnell
L'une des références en matière de vente en ligne de composants. Vous y trouverez tous les CMS et même la Beaglebone Black.
Télécharger
Dossier BBB-CNC-Cape
Schéma, typon, implantation
En voir plus
Projet CRAMPS
Cape pour le pilotage d'imprimantes 3D
Réalisation de PCB
Site amateur très instructif
Gravure des PCB
Autre site amateur
Commerce
Go Tronic
Vente de composants électronique et matériel
Farnell
Une référence de la vente de composants électroniques
Site réalisé avec OpenElement
Date mise à jour  
CARNETS JL-L
Loisirs techniques
Carnets JLS
Top page