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 ont donc été étudiés pour pallier ce problème, ils sont décrits dans l'article suivant.
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

Cartes d'interfaces BBB-CNC-Cape opérationnelles

Les nouveaux designs

Après la réalisation et les tests du prototype, nous avons étudié trois nouvelles versions destinées d'une part à corriger les problèmes rencontrés sur le prototype, et d'autre part pour proposer des versions d'aspect beaucoup plus professionnel.
Ces nouveaux schéma s'appuient sur deux principes.
Le premier est basé sur le prototype avec l'utilisation de circuits 74AC541 pour les sorties sauf pour ENABLE qui est traité par un mosfet 2N7002, c'est la cape "1" (BBB-CNC-Cape).
Le second remplace les 74AC541 par des ULN2803 qui permettent jusqu'à 500mA en courant de sortie ce qui est bien plus sécurisant que les 30mA des 74AC541, c'est le principe des capes "2" et "3".
BBB-CNC-Cape et BBB-CNC-Cape-1 disposent des mêmes connecteurs et sont 100% compatibles, BBB-CNC-Cape-3 a des connecteurs séparés fonction par fonction.
Ces trois cartes on été développées grace au logiciel KiCAD et sont conçues pour être réalisée sur un PCB double face avec trous métallisés.
BBB-CNC-Cape
BBB-CNC-Cape-2
BBB-CNC-Cape-3

Les circuits imprimés (pcb)

Le nouveau design en double face avec trous métallisé impose quasiment de faire fabriquer les cartes avec des moyens industriels.
Nous avons choisi de les commander à nos amis chinois dont certains proposent une très bonne qualité pour un prix très abordable.

Si vous décidez de réaliser vous même les pcb, il faudra prévoir de remplacer les trous métallisés par un soudage sur chaque face pour tous les trous.

Le soudage des composants

Lors de l'écriture des ces lignes (mars 2019) seule BBB-CNCCape type 1 a été montée et testée.
Le soudage commence par la face arrière avec uniquement des CMS et les connecteurs de la Beaglebone, rien de difficile surtout avec un pcb étamé et le masque de soudure. La face avant ne pose pas plus de problèmes, seuls les circuits intégrés demandent un peu plus de soin. Pour terminer les connecteurs qui peuvent être verticaux comme j'ai choisi mais aussi horizontaux, les cartes on été conçues pour s'adapter au désirs des utilisateurs. Si comme moi vous montez cette carte dans un coffret muni des leds de signalisation reliées aux connecteurs, inutile de les mettre sur la carte.
Face arrière
Face avant
Avec les connecteurs
La BBB-CNC-Cape nouvelle génération est maintenant enfichée sur la Beaglebone, l'emplacement pour le connecteur RJ45 sert de détrompeur, les leds de la BBB restent visibles.

Cette carte est maintenant implantée dans le pupitre et les tests donnent entière satisfaction.

Tout comme pour le proto, la cape est équipée d'une EEPROM pour le paramétrage automatique des entrées/sorties, mais bien sûr rien n'oblige à l'utiliser.
Les deux autres capes ne présentent pas plus de problèmes de réalisation. J'ai aussi réalisé la BBB-CNC-Cape-2 afin de tester les deux principes, cela me fera aussi une rechange en cas de problème.
BBB-CNC-Cape-2 top
La BBB-CNC-Cape-2 est quasiment identique à la BBB-CNC-Cape mais permet un courant plus élevé sur les sorties grace aux ULN2803.
Sa réalisation est identique à la précédente.
BBB-CNC-Cape-2 bottom
Voilà, il ne vous reste plus qu'à télécharger les dossiers de réalisation avec les schémas, liste des composants et typons pour graver les circuits imprimés.

Si toutefois vous souhaitez comme moi utiliser des circuits imprimés de qualité professionnel, vous pouvez me contacter car il m'en restes quelques uns. N'hésitez donc pas à prendre contact pour connaitre la disponibilité et les prix.
Télécharger
BBB-CNC-Cape
Dossier de plans pour la réalisation de BBB-CNC-Cape en version 09A.
Interface avec 74AC541.
BBB-CNC-Cape-2
Dossier de plans pour la réalisation de BBB-CNC-Cape-2 en version 02A.
Interface avec ULN2803.
BBB-CNC-Cape-3
Dossier de plans pour la réalisation de BBB-CNC-Cape-3 en version 02A.
Connectique spéciale.
Logiciels
KiCAD
Lociciel de développement de cartes électroniques. Complet et gratuit.
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.
Mouser
Comme pour Farnell, un très grand choix et des bons prix.
Télécharger
Dossier BBB-CNC-Cape
Schéma, typon, implantation
Dossier BBB-CNC-Cape-2
La deuxième version
Dossier BBB-CNC-Cape-3
Connectique spéciale
Logiciels
KiCAD
Logiciel de développement de cartes électroniques
Commerce
Go Tronic
Vente de composants électronique et matériel
Farnell
Une référence de la vente de composants électroniques
Mouser
Une autre référence pour l'achat de composants
Site réalisé avec OpenElement
Date mise à jour  
CARNETS JL-S
Loisirs techniques
Carnets JLS
Top page