Hack CNC

De Learning Lab Environnements Connectés
Sauter à la navigation Sauter à la recherche

Objectif du projet : Remplacer le matériel de pilotage d'origine d'une graveuse à commande numérique de circuits imprimés propriétaire par du matériel Open Source, conception, adaptation et mise au point du logiciel de pilotage.

Ce projet comporte une différence majeure avec un certain nombre d'autres projets de la séquence Réparer le monde : au-delà de l'intérêt pédagogique et de la fenêtre temporelle du module, la machine a doit être utilisable par des professeurs et des élèves par la suite, personnes qui sont également susceptibles de faire des erreurs. Il faudra donc mettre en place des protocoles de sécurité et des systèmes d'arrêt d'urgence pour garantir l'intégrité physique des personnes et du matériel.

Impact Socioécologique

La gravure de circuits imprimés est une étape cruciale dans la fabrication de nombreux appareils électroniques, et la gravure à commande numérique est une méthode précise et efficace pour produire des circuits imprimés de haute qualité. En rendant le matériel et le logiciel de pilotage open source, nous permettons aux utilisateurs de machines CNC de réduire leur dépendance à l'égard des fournisseurs propriétaires, de réduire les coûts de maintenance et de réparation, et de prolonger la durée de vie utile de leurs machines. En outre, en partageant les plans, les schémas et les logiciels, nous contribuons à la diffusion des connaissances et à l'émancipation des utilisateurs, en leur donnant les moyens de comprendre, de modifier et d'améliorer leur équipement.

Réduction des déchets électroniques

Le projet de réparer une graveuse à commande numérique (CNC) à l'arrêt permet de réduire la quantité de déchets électroniques (DEEE) produits. Selon l'ADEME, en 2020, 750.000 tonnes de DEEE ont été générées en France, dont 77% ont été collectées et recyclées. Au niveau mondial, d'après l'Union Internationale des Télécommunications, cela représente 53.6Mt en 2020, soit plus de 7kg par habitant ! La réparation d'appareils électroniques permet de réduire ce chiffre et de préserver les ressources naturelles. Les appareils électroniques contiennent également de grandes quantités de métaux rares et précieux (Or, Cobalt, Argent, Palladium...) dont l'extraction et le raffinage sont très polluants. D'après ce rapport de l'Agence Internationale de l'Energie, les demandes de ces matériaux ne font qu'augmenter et risquent d'exploser dans les années à venir. En prolongeant la durée de vie des appareils, on réduit la pression sur ces ressources et on limite les impacts environnementaux.

Contribution à l'économie circulaire

Le projet s'inscrit dans une démarche d'économie circulaire, qui vise à réduire la consommation de ressources et la production de déchets en allongeant la durée de vie des produits. En réparant la graveuse CNC, on lui donne une seconde vie et on évite l'achat d'une nouvelle machine.

Impact social

Le projet permet de maintenir l'accès à la technologie CNC pour des ateliers et des makers qui n'ont pas les moyens d'acheter une nouvelle machine. Cela favorise l'innovation et la créativité dans le domaine de la fabrication numérique.


État de l'art

Ce projet s'inscrit dans la lignée d'une communauté active et dynamique de passionnés et de professionnels qui œuvrent pour rendre la technologie CNC plus accessible et abordable. De nombreux projets similaires ont été réalisés, avec des succès divers, et il existe une multitude de ressources disponibles en ligne pour accompagner les porteurs de projets.

Projets similaires

OpenSCAM: Un logiciel de pilotage CNC open source complet et convivial, développé par une communauté active.

CNCjs: Une interface web moderne pour piloter des machines CNC avec des firmwares GRBL ou Marlin.

Ressources personnelles

Un des étudiants du groupe a pu travailler au sein du Fablab de La Roche sur Yon sur des projets très similaire, on pourra donc utiliser les ressources, notes et listes de matériel de ce projet de restauration d'une CRA4 CharlyRobot et de ce projet de fabrication d'une CNC maison 870x1050x230mm.

Tutoriels et forums

CNC Cookbook: Un site web complet avec des tutoriels, des articles et des ressources pour tous les niveaux, des débutants aux experts.

Forum OpenBuilds: Un forum actif où les utilisateurs de machines CNC open source partagent leurs expériences et s'entraident.

Reddit r/CNC: Un subreddit dédié à la discussion sur les machines CNC, avec des questions et réponses, des conseils et des astuces.

Logiciels de pilotage open source

LinuxCNC: Un logiciel de pilotage CNC puissant et flexible, compatible avec une large gamme de machines.

GRBL: Un firmware open source populaire pour les microcontrôleurs Arduino, utilisé pour piloter des machines CNC de petite taille.

Mach3: Un logiciel de pilotage CNC commercial populaire, avec une version gratuite limitée.

Cartes de pilotage et modules

Arduino: Une plateforme de microcontrôleurs open source largement utilisée pour le pilotage de machines CNC.

CNC Shield Protoneer: Un module d'extension pour Arduino qui facilite le pilotage de machines CNC.

DRV8825 Stepper Motor Driver: Un driver de moteur pas à pas puissant et économique, compatible avec de nombreuses machines CNC.

Recherche et publications

Cet article de l'université de Kufa en Inde qui décrit comment concevoir et réaliser un système de pilotage open source pour une machine CNC.

Design and Implementation of a Home CNC Open Control System: Cet article décrit la conception et la réalisation d'un système de pilotage open source pour une machine CNC.

Open Source CNC Control Software: A Review: Cette revue d'articles scientifiques présente les différents logiciels de pilotage CNC open source disponibles.

The Future of Open Source CNC: Cet article explore les tendances et les développements futurs de la technologie CNC open source.$


Etat de la machine au début du projet

Nous avons découvert la machine jeudi 07/03 après-midi, en partie démontée.

Éléments électroniques d'origine

CNC ouverte dans sont état d'origine

  • Une alimentation AC 240V 3.5A -> DC 24V 8.3A

Alimentation d'origine

  • 3 moteurs pas à pas Nema23 de 1.8° par pas, alimentés en 2.0A (supposément 24V), et ayant un couple de 0.9Nm
  • Une carte mère basée sur un microcontrôleur ATmega644, avec 3 shields pour le pilotage des moteurs

Carte mère d'origine Shields moteurs d'origine

  • Une carte secondaire, servant probablement d'alimentation

Carte secondaire d'origine

  • Deux relais mécaniques qui, s'ils sont toujours en état de fonctionner, seront conservés

Relais d'origine

  • Un panneau frontal, comportant
    • Un bouton d'arrêt d'urgence type "coup de poing"
    • Un fusible 3A
    • Un bouton ON et un bouton OFF
    • Une LED ON

Éléments mécaniques d'origine

Sauf casse ou élément défaillant, la mécanique sera conservée

  • Vis sans fin (pas à déterminer), qui nécessitera un bon coup de dégraissage/regraissage
  • Un coupleur par moteur
  • ...


Besoins en matériel

L'architecture matérielle du projet a été choisie pour sa simplicité, son caractère commun, peu onéreux et sa facilité d'utilisation :

Update :

Carte MKS DLC32 et écran

Suite à la casse du module Protoneer à cause d'un driver moteur défaillant, nous nous sommes tournés vers une carte MKS DLC32 de chez Makerbase, qui présente une interface PC, un écran tactile et des interfaces WiFi, I2C et SD que nous n'utiliserons pas

Cette carte pilotera les moteurs à travers des drivers DRV8825 Driver DRV8825

On y flashera un système GRBL avec un interpréteur G-Code pour une grande compatibilité avec les logiciels de CAO/DAO usuels.


  • Des relais pour le transfert de l'alimentation (on pourra peut-être réutiliser les deux d'origine)

On aura également besoin de :

  • Un grand nombre de câbles pouvant supporter différents courants (à préciser par la suite)
  • Du matériel d'électronique et de soudure classique
  • Des consommables : graisse, gaines, colliers de serrage...
  • Un accès à une imprimante 3D ou une découpeuse bois/MDF... pour fabriquer des supports de cartes électroniques

Architecture générale

Schéma général de l'électronique

Section Alimentation

Schéma de la section alimentation

L'alimentation d'origine a été conservée, mais les systèmes annexes ont été légèrement modifiés :

La machine utilisait initialement deux relais pour réaliser un auto-maintient avec le bouton ON en normally-open (NO) et le bouton OFF en normmally-closed (NC). Nous avons décidé, pour simplifier le montage et pour améliorer la sécurité, d'utiliser plutôt un switch avec un capot, qui permet donc une coupure rapide du système en cas de danger.

L'arrêt d'urgence "coup de poing" a été gardé pour des raisons évidentes de sécurité, il est désormais en série avec le switch et le fusible, ce qui donne donc deux options pour couper complètement l'alimentation de la machine en cas de nécessité.

Ce circuit d'allumage est placé autour d'un relais 220V, directement relié à la prise murale, qui va permettre ou non à l'alimentation interne de la machine de s'allumer. Cette alimentation délivre une tension continue de 24V pour 3A, qui alimente la carte MKS et, à condition que le capot soit fermé (capteur magnétique), met en marche l'outil via un boîtier déporté.

Cette sécurité a été ajoutée pour éviter à un utilisateur peu précautionneux de se voir blessé par la fraise en manipulant l'intérieur de la machine lorsque celle-ci est en marche.

Section Commande

Partie Physique

Schéma de la section commande

La machine est pilotée par une carte MKS, et l'essentiel de l'électronique associée est placée dans le boîtier imprimé en 3D annexe à la machine.

3 drivers DRV8825 (1 par axe) sont placés sur la carte. Ils servent à envoyer à chaque moteur les impulsions correspondantes au mouvement souhaité. Ces drivers ont tendance à beaucoup chauffer lorsque la machine est en marche. Un bon refroidissement est donc essentiel au bon fonctionnement de la machine, aussi on veillera à ne pas obstruer le flux d'air des ventilateurs, sinon les drivers se mettent en sécurité et la machine ne fonctionnera plus correctement (pas non effectués, mouvements saccadés...).

Les trois moteurs sont branchés sur leur emplacement respectif en haut de la carte. L'axe Y2 n'est pas utilisé dans notre cas.

La carte est également reliée à des capteurs de fin de course, placés aux limites en X-, Y+ et Z-. Ces capteurs sont interprétés comme des limites physiques à ne pas dépasser. Il faudra donc être vigilant à tout message du type Hard Limit, et en cas de doute, faire appel à un responsable. En effet, la machine ne connaît pas sa position absolue dans l'espace, et risque donc de s'endommager fortement si le moteur force au-delà des limites du bâti.

La machine peut être pilotée via un écran tactile accessible sur le dessus du boîtier 3D. L'écran est relié à la carte par deux nappes multicolores branchées sur la droite de la carte. Il faut faire attention à ne pas intervertir les nappes, au risque d'endommager l'écran et/ou la carte.

NB : pour certains éléments de la machine, par exemple les LEDs au dessus de la broche, nous avions besoin de récupérer du 5V, nous avons donc décidé de le prendre sur les pins 5V des capteurs fin de course, que l'on n'utilise pas.

Partie Logicielle

Interface CNC.js

La carte a été flashée avec un système GRBL, qui comporte notamment un interpréteur G-Code, qui va lire les instructions envoyées par l'ordinateur et effectuer les actions correspondantes.

Comme dit précédemment, la machine ne connaît pas sa position absolue, mais seulement par rapport à une origine, initialisée à la position de la machine lors de l'allumage.

IL EST DONC IMPÉRATIF DE FAIRE UN HOMING DÈS L'ALLUMAGE DE LA MACHINE, ET PAR SÉCURITÉ, ENTRE CHAQUE DÉCOUPE

L'écran tactile sert de monitoring, il ne permet pas de lancer un fichier G-Code car la machine est branchée directement à l'ordinateur. Le bouton homing est néanmoins accessible directement sur l'écran tactile.

Côté ordinateur, il faut un logiciel pour communiquer avec la machine via le port série. Nous recommandons l'utilisation de CNC.js, qui propose une interface simple, colorée et intuitive pour le pilotage et des retours visuels sur la position de la machine, le tracé en cours, etc.

Une macro est nécessaire pour l'utilisation de la Z-probe, voici le code si besoin (NE PAS MODIFIER CE CODE, au risque d'endommager la machine).

; Remove soft limits
$20=0

; Place above probe
G21
G53 G0 Z-3
G53 G0 X21.5 Y-16

; Z-Probe
G91
G38.4 Z-35 F200
G90

; Set Z-axis center
G10L20 Z-1.3
G10L20 X-75.5 Y137

; Retract from the touch plate and go to work center
G53 G0 Z-3
G53 G0 X3 Y-3
G4 P1

; Soft limit
$20=1
%Z0=posz+3
$132=[Z0]

Lien avec l'ordinateur

Le lien avec l'ordinateur se fait via le port série par un câble USB type B. Il faudra notamment faire attention à sélectionner le bon port série dans le logiciel lors de la connexion à GRBL.

Manuel d'utilisation (WIP)

Manuel d'utilisation (en anglais)