2D Plotter
Introducere
Proiectul constă în dezvoltarea un plotter 2D care translatează fișiere bitmap în trasee vectoriale și, ulterior, în cod G‑code executat fizic pe două axe X și Y. Ansamblul realizează mișcarea plană cu două motoare pas‑cu‑pas NEMA 17 și două drivere DRV8825 montate pe un Arduino Uno ce rulează firmware GRBL 1.1. Ridicarea și coborârea instrumentului de scris sunt gestionate de un servo MG90S, iar alimentarea întregului sistem se face dintr‑un adaptor de 12 V / 2 A.
Scopul practic al dispozitivului este producerea rapidă și ieftină de desene liniare, șabloane tehnice, etichete sau semnături mecanizate. Utilizatorul poate obține contururi precise, fără a apela la imprimante specializate sau la echipamente CNC de gabarit mai mare.
Ideea de pornire a fost realizarea unui echipament minimal XY care să convertească direct fișiere grafice în mișcări controlate pentru a oferi o soluție de trasare precisă destinată aplicațiilor de uz laborator: desenarea măștilor PCB cu marker rezistent la acid, generarea de șabloane tehnice sau contururi de piese, etc.
Descriere generală
┌────────────────────┐ USB‑Serial ┌────────────────────┐
PNG / SVG / G‑code│ APP │─────────────►│ Arduino Uno │
conversie & control │ (vectorizare + │ │ │
│ generare G‑code) │ └─────────┬──────────┘
└────────────────────┘ │
│step/dir
▼
┌─────────────────────────┐
│ DRV8825 (axa X) │──► NEMA 17 X
├─────────────────────────┤
│ DRV8825 (axa Y) │──► NEMA 17 Y
└─────────────────────────┘
│PWM
▼
Servo MG90S (pen up/down)
┌────────────────────┐ ▲
│ End‑stop‑uri X,Y │──────digital───────────┘
└────────────────────┘
12 V / 2 A adaptor ───────────────► Magistrală 12 V (DRV8825, Servo)
Modulul software de pe PC realizează întregul lanț de procesare al imaginilor: încarcă fișierul PNG, îl vectorizează, filtrează nodurile inutile și convertește traseele obținute în comenzi G‑code. Aceleași utilitare trimit apoi fluxul de G‑code prin interfața USB către microcontroler.
Pe Arduino Uno rulează firmware‑ul GRBL 1.1, care primește instrucțiunile, calculează planul de accelerație și generează impulsurile STEP și semnalele DIR pentru fiecare axă. Axa X și axa Y sunt acționate de cele două drivere DRV8825; fiecare driver convertește semnalele logice pentru motoarele pas‑cu‑pas NEMA 17. Pe ieșirea PWM se furnizează un semnal proporțional, folosit aici pentru deplasarea servo‑ului MG90S care ridică și coboară instrumentul de scris.
Toate elementele de putere — driverele, motoarele și servo‑ul — sunt alimentate dintr‑un adaptor stabilizat de 12 V, în timp ce logica Arduino este alimentată prin magistrala USB.
PNG → SVG → G‑code → GRBL → STEP/DIR → mișcare fizică.
Hardware Design
Aici puneţi tot ce ţine de hardware design:
listă de piese
-
diagrame de semnal
rezultatele simulării
Software Design
Codul aplicației se împarte în două module:
Preprocesarea datelor
citeşte un fişier G-code
converteşte mişcările G0/G1 în paşi pe X şi Y;
generează un fişier CSV/stream serial cu triplete dir_x, dir_y, delay_us;
inserează comenzi speciale „8,8,8” = PEN DOWN şi „9,9,9” = PEN UP.
Embedded code
citeşte tripletele prin UART (115 200 baud);
setează direcţiile pe driverele de pas (X_DIR, Y_DIR);
emite impulsuri STEP de 8 µs pe axele X/Y;
comută servomotorul (0° = UP, 90° = DOWN);
Pentru generare fisierelor G-code din imagini, folosesc GRBL Plotter v1.7.5.3
Rezultate Obţinute
Care au fost rezultatele obţinute în urma realizării proiectului vostru.
Concluzii
Download
O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună

.
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.
Jurnal
13 MAI 2025
Progres
HARDWARE
Am finalizat proiectarea si printarea 3D a pieselor:
Doua suporturi pentru profilul de aluminiu
Doua suporturi pentru prinderea motoarelor
Doua suporturi pentru prinderea scripetelor
Doua cadre pentru intersectia celor doua profile (Ox si Oy)
Suportul pentru prinderea placutei Arduino
Sistemul de prindere si manevrare a uneltei de scris + servomotor
Am fixat cele doua profile de aluminiu
Am prins stepperele NEMA-17 si scripetii de suporturile printate
Cu ajutorul unor piulite pentru canal T am fixat suporturile de profilul de aluminiu
Am fixat provizoriu benzile dintate cu elastice
Am conectat shield-ul, stepperele si driverele de motor pe placuta
SOFTWARE
Nu am implementat nimic software, insa am decis sa renunt la GRBL si sa implementez propriul cod de acceleration ramping si generare de semnale STEP/DIR pentru fiecare axa
Pentru vectorizarea imaginilor voi folosi cel mai probabil InkScape + un algoritm de optimizare a traseelor vectoriale:
Eliminare puncte redundante (ex. cele coliniare)
Eliminare linii foarte mici/nesemnificative
Combinarea liniilor continue
20 MAI 2025
Progres
HARDWARE
Am facut stepperele functionale prin modificarea Vref-ului de pe drivere (Vref = Imax/2, in cazul meu Vref=0.85) si prin a face switch intre bobinele de la bornele sale (au venit inversate din fabrica).
Am facut jumper enable pe toate cele 3 perechi de pini de sub driverele DRV8825 pentru a putea face pasi 1/32 lipind cate un picior de rezistor intre fiecare 2 pini. (nu aveam jumpere asa ca am improvizat un pic:-P)
SOFTWARE
Bibliografie/Resurse
Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.
Export to PDF