Traceur cartésien XY conçu et fabriqué au makerspace. Documentation complète de notre démarche, choix techniques, difficultés rencontrées et solutions mises en œuvre.
Contexte, objectifs et cahier des charges
Projet réalisé dans le cadre du Makerspace d'UniLaSalle Amiens. Objectif : concevoir et fabriquer une machine cartésienne pilotant un stylo sur deux axes X et Y via des moteurs pas-à-pas et le firmware GRBL-Servo.
| Domaine | Contrainte |
|---|---|
| Matériaux | Planche contreplaqué fournie obligatoirement |
| Électronique | Arduino et composants associés |
| Logiciel | Arduino IDE, GitHub, Processing |
| Précision | Traits précis et soignés |
| Budget-temps | 30 h par semestre en makerspace |
Modélisation 3D Onshape et description des pièces imprimées
Toutes les pièces ont été modélisées sur Onshape, assemblées virtuellement et exportées en STL pour impression 3D.
| Pièce | Qté | Remplissage | Fonction |
|---|---|---|---|
| Support moteur | 1 | 30% | Logement moteur axe X |
| Support moteur simple | 1 | 30% | Fixation moteur axe Y |
| Support moteur double | 1 | 35% | Fixation renforcée |
| Support double poulie | 2 | 25% | Renvoi de courroie |
| Support barre métal | 4 | 25% | Maintien tiges guidage |
| Adaptateur | 2 | 100% | Liaison axe/poulie |
| Pieds de coin | 4 | 20% | Rigidité châssis |
Architecture, composants et PCB KiCad
[PC — Processing / UGS]
│ USB
▼
[Arduino Uno + CNC Shield v3]
│
┌────┴────────────────┐ │
│ │ │
[Driver A4988] [Driver A4988] [Servo FS5103B]
│ │ │
[Moteur — X] [Moteur — Y] [Stylo ↑↓]
[Alimentation 12V externe]
| Composant | Modèle | Qté | Rôle |
|---|---|---|---|
| Microcontrôleur | Arduino Uno | 1 | Pilotage GRBL-Servo |
| Carte d'extension | CNC Shield v3 | 1 | Interface moteurs et alim. |
| Driver moteur | A4988 | 2 | Contrôle moteur pas-à-pas (STEP/DIR) |
| Moteur pas-à-pas | NEMA 17 | 2 | Déplacement axes X et Y |
| Servo-moteur | FeeTech FS5103B | 1 | Levée/abaissement stylo |
| Alimentation | 12V / 5A | 1 | Alimentation moteurs |
Nous avons conçu nous-mêmes un PCB sur KiCad pour centraliser l'électronique : régulateur de tension 3,3V, deux emplacements drivers A4988, connecteur servo, lecteur SD, écran OLED, fins de course X/Y et barrel jack 12V. Lors des tests physiques, la tension 3,3V était absente en sortie du régulateur — problème non résolu faute de temps.
| Bloc | Composants | Rôle |
|---|---|---|
| Alimentation | Barrel Jack 12V, régulateur 3,3V, C1 C2 100µF | Distribution des tensions |
| Moteurs | 2× socket A4988 (A1, A3), connecteurs Moteur X/Y | Pilotage pas-à-pas |
| Contrôle | Connecteur Arduino (J13, J14), fins de course SW_X/SW_Y | Interface microcontrôleur |
| Périphériques | Servo (J1), lecteur SD (J3), OLED I²C, LED | Extensions futures |
| Caractéristique | Valeur |
|---|---|
| Tension alimentation moteur | 8 à 35V |
| Courant max par phase | 2A |
| Modes micro-pas | 1 · 1/2 · 1/4 · 1/8 · 1/16 |
| Formule Vref | Vref = Imax × 8 × Rs (Rs = 0,1 Ω) |
| Caractéristique | Valeur |
|---|---|
| Angle de pas | 1,8° (200 pas/tour) |
| Tension nominale | 12V |
| Courant par phase | ~1,5A |
| Couple de maintien | ~40 N·cm |
M3 S0 → Stylo levéM3 S255 → Stylo abaissé| Caractéristique | Valeur |
|---|---|
| Plage PWM | 600 à 2400 µs |
| Angle | 180° |
| Tension | 4,8 à 6V |
Firmware GRBL-Servo, logigramme et pipeline G-code
Firmware open-source transformant un Arduino Uno en contrôleur CNC. Il interprète les commandes G-code (USB) et génère les signaux STEP/DIR pour les moteurs. La version Servo réaffecte M3/M5 au contrôle du servo-moteur.
Dossier grbl/ → Documents/Arduino/libraries/
#define RC_SERVO_SHORT 9 et #define RC_SERVO_LONG 34
File → Examples → grbl → grblUpload
Envoyer $100, $101, $110, $111…
Ce logigramme décrit le fonctionnement complet de la machine, de l'image source jusqu'au tracé physique sur la feuille.
| Paramètre | Commande | Valeur typique |
|---|---|---|
| Steps/mm axe X | $100= | À calibrer |
| Steps/mm axe Y | $101= | À calibrer |
| Vitesse max X (mm/min) | $110= | 800 |
| Vitesse max Y (mm/min) | $111= | 800 |
| Accélération X (mm/s²) | $120= | 10 |
Préparation des matériaux et assemblage mécanique
| Matériau | Usage | Quantité |
|---|---|---|
| Planche contreplaqué (fournie) | Châssis principal | 1 pièce |
| Filament PLA | Toutes les pièces imprimées | Selon besoin |
| Visserie M3 | Fixation pièces imprimées | ~30 pièces |
| Visserie M5 | Fixation rails et moteurs | ~20 pièces |
| Courroie GT2 | Transmission mouvement | ~1 m × 2 axes |
| Poulies GT2 | Guidage courroie | ×4 |
| Tiges lisses acier | Guidage linéaire | 2 axes |
| Pièce | Remplissage | Statut |
|---|---|---|
| Support moteur (×3) | 30–35% | ✅ Imprimé (2 versions) |
| Support double poulie (×2) | 25% | ✅ Imprimé |
| Support barre métal (×4) | 25% | ✅ Imprimé (2 versions) |
| Adaptateur (×2) | 100% | ✅ Imprimé |
| Pieds de coin (×4) | 20% | ✅ Imprimé |
Câblage électronique et PCB KiCad
Nous avons conçu un PCB personnalisé sur KiCad pour centraliser l'électronique : régulateur de tension, connecteurs moteurs, gestion servo. Les fichiers sont disponibles sur notre GitHub.
Arduino Uno + CNC Shield v3
│
├── Slot X ──► Driver A4988 ──► Moteur pas-à-pas (axe X)
├── Slot Y ──► Driver A4988 ──► Moteur pas-à-pas (axe Y)
└── Pin Z+ ──► Servo FS5103B (stylo ↑↓)
Bornier CNC Shield ──► Alimentation 12V externe
Arduino ──────────────► PC via USB (GRBL + UGS)
Le potentiomètre règle le courant max. Trop faible → moteur vibre sans tourner.
Vref = Imax × 8 × Rs Pour moteur pas-à-pas à 1,5A : Vref = 1,5 × 8 × 0,1 = 1,2V
Problèmes, causes identifiées et solutions
Problème : Notre PCB KiCad ne délivrait pas le 3,3V en sortie lors des tests physiques.
Hypothèses : Composant défectueux sur le régulateur, erreur de routage, ou mauvaise soudure.
Solution adoptée : Abandon du PCB, adoption d'Arduino Uno + CNC Shield v3.
Avec plus de temps : Diagnostic au multimètre en sortie du régulateur, correction et refabrication du PCB.
Problème : Les moteurs pas-à-pas vibraient mais ne tournaient pas lors des premiers tests.
Causes : Courant insuffisant sur le driver A4988 (Vref trop basse), ou paire de bobines inversée dans le connecteur.
Solution envisagée : Mesurer Vref au multimètre → ajuster à 1,2V. Vérifier la continuité des bobines.
État : Les moteurs ont tourné lors d'un test mais le problème n'a pas été résolu de façon stable.
Problème 1 — Trous de visserie M3 trop petits : Rétreint du PLA. Correction : +0,3 mm dans Onshape, réimpression.
Problème 2 — Logement des tiges trop serré : Diamètre mesuré au pied à coulisse. Correction : +0,2 mm de jeu, réimpression.
Ce qui aurait été fait avec plus de temps
Malgré les difficultés et la machine non finalisée, ce projet nous a appris :