Bouw een Arduino-gestuurde 3D Draadbiegmachine: Stap-voor-Stap Handleiding
Overzicht
Deze 3D draadbiegmachine is een typisch mechatronisch systeem (mechanica, elektronica, software). Het principe: draad loopt door uiteenlopende rollen (rechtzetten), wordt door een stappenmotor precies voorgezet naar het buigmechanisme (stappenmotor + servo voor buigen). Een derde stappenmotor (Z-as) roteert het buigmechanisme om de draad heen voor 3D-vormen. Bestuurd door Arduino op custom PCB.


Software: custom functies voor ster, kubus, staandertje, en handmatige modus via seriële monitor.
3D-model
Ontworpen in 3D-software. Downloadbaar op Thangs. Tandenwielen, lagerblokken, koppelingen geprint. Creality CR-10 leverde uitstekende kwaliteit.



Machine bouwen
Basis: 8 mm MDF, 18 mm multiplex, cirkelzaag, houtlijm, schroeven, 90° klemmen, F-klemmen.

Railsysteem (Z-as)
Aluminium buizen: horizontaal 16 mm diameter (2×27 cm), verticaal 20 mm (3×45 cm). In 18 mm hout: gaten met Forstnerboor. Lagers 6202 (35×15 mm) in 3D-geprinte kussens. 15 mm holle as (koperen buis, ~30 cm) door lagers = Z-as. Tussen lagers: 3D-print tandwiel (module 1.5, 30 tanden, M3 moeren/schroeven voor vastzetten).


Z-as stappenmotor (NEMA 17) op 3D-print beugel, 18-tands tandwiel. Beugel heeft gleuven voor tandwielafstand. Beugel op bovenplaat monteren.


Voedermechanisme
Stappenmotor (NEMA 17) direct op bovenplaat. 3D-print koppelstuk met koperen buis als voederwiel. Teegen: hefboom met lager, stuk multiplex met T-moer en bout voor instelbare klemkracht.



Draadrechtzetting
Drie M8 bouten met multiplexplaat. Rollen: lagers + 3D-print geneste ringen. 3 rollen aan één kant, 2 aan de andere (gleuf in hout voor boutkoppen). Met moeren vastspannen. Extra houtstukken voor/na rollen als draadgeleiders.


Buigmechanisme
MDF-plaat: NEMA 23 stappenmotor (38 mm gat). 18-tands tandwiel (module 2.5) op motoras. Gepaard met 30-tands tandwiel met geïntegreerde plaat voor MG996R servo. Servo beweegt tandstang (pin) die uit tandwiel steekt → buigt draad. Lager op tandwiel (epoxy), koperen buis op tandstang (contactvlak). Tandstang + servo vastzetten.




Buigmechanisme op Z-as monteren
Twee 3D-print asklemmen: aan buigplaat (M6), om Z-as (koperen buis) heen, vastspannen. Alles draait vrij.

Afwerkingen
3 mm mondstuk op as (draaduitgang). Micro-limietschakelaar onder buigmechanisme voor homing.


Schakelschema
3 stappenmotors → 3 DRV8825 drivers. 12 V / ≥3 A voeding. Servo (MG996R) via aparte LM7805 5 V regelaar (Arduino 5 V regelaar onvoldoende). Limietschakelaar met pull-up op digitale pin.

Componenten
- Stappenmotor NEMA 17 (×2)
- Stappenmotor NEMA 23 (×1)
- DRV8825 Stappenmotor driver (×3)
- Micro limietschakelaar
- 12 V 2 A adapter (min. 3 A aanbevolen)
- Voedingsjack
- Arduino board
PCB-ontwerp
Custom PCB in EasyEDA (dubbelzijdig). Stappenmotorresolutie-pinnen, extra limietschakelaar, vrije digitale/analoge pinnen. Besteld bij JLCPCB (sponsor). Kwaliteit prima.




PCB assembleren
Pinheaders solderen (voor makkelijk demonteren). Kleine componenten (condensators, weerstanden, LM7805, klemblokken) direct op PCB. Stappenmotor drivers en Arduino prikken. Voedingsconnector + schakelaar aan klemblokken. Motorkabels aan drivers + PCB. Servo op D2, gevoed door LM7805. Microstepping pinnen instellen (1/16 stap → juiste pinnen verbinden).


Arduino Code
Bibliotheek: AccelStepper (Mike McCauley) + Servo.h. Pinnen definiëren, variabelen.
#include <AccelStepper.h>
#include <Servo.h>
#define limitSwitch 11
AccelStepper feederStepper(1, 5, 6); // driver, STEP, DIR
AccelStepper zAxisStepper(1, 7, 8);
AccelStepper benderStepper(1, 9, 10);
Servo servo01;
String dataIn = ""; String manualStatus = "";
int count = 0; int dist;
setup(): Servo init (pin 2, 40° = pin omhoog). Max snelheid 2000. Homing: buigmotor draait naar limietschakelaar, positie 0, dan 1400 stappen terug naar startpositie (0 graden).
void setup() {
Serial.begin(9600);
pinMode(limitSwitch, INPUT_PULLUP);
servo01.attach(2); servo01.write(40);
feederStepper.setMaxSpeed(2000);
zAxisStepper.setMaxSpeed(2000);
benderStepper.setMaxSpeed(2000);
// Homing
while (digitalRead(limitSwitch) != 0) {
benderStepper.setSpeed(1200);
benderStepper.runSpeed();
benderStepper.setCurrentPosition(0);
}
delay(40);
while (benderStepper.currentPosition() != -1400) {
benderStepper.setSpeed(-1200);
benderStepper.run();
}
benderStepper.setCurrentPosition(0);
}
loop(): Seriële commando's: "manual", "star", "cube", "stand".
void loop() {
String mode = Serial.readString();
if (mode.startsWith("manual")) manual();
if (mode.startsWith("star")) star();
if (mode.startsWith("cube")) cube();
if (mode.startsWith("stand")) stand();
}
Ster functie
5 punten. Voeden (38 mm → stappen), pin omhoog, buigen 52°, terug, voeden, pin omlaag, nieuwe beginpositie, buigen 105° andere kant, terug 63°, pin omhoog, herhalen.
void star() {
while (count != 5) {
int feed = 38; int feedDistance = feed * 48;
while (feederStepper.currentPosition() != feedDistance) {
feederStepper.setSpeed(1200); feederStepper.run();
}
feederStepper.setCurrentPosition(0);
servo01.write(40); delay(200);
int angleConst = 18;
// Buigen 52°
while (benderStepper.currentPosition() != -52 * angleConst) {
benderStepper.setSpeed(-700); benderStepper.run();
}
benderStepper.setCurrentPosition(0); delay(100);
// Terug
while (benderStepper.currentPosition() != 52 * angleConst) {
benderStepper.setSpeed(1200); benderStepper.run();
}
benderStepper.setCurrentPosition(0); delay(100);
// Opnieuw voeden
while (feederStepper.currentPosition() != feedDistance) {
feederStepper.setSpeed(1200); feederStepper.run();
}
feederStepper.setCurrentPosition(0); delay(100);
servo01.write(130); delay(200); // Pin omlaag
// Nieuwe beginpositie
while (benderStepper.currentPosition() != -42 * angleConst) {
benderStepper.setSpeed(-1200); benderStepper.run();
}
benderStepper.setCurrentPosition(0); delay(200);
servo01.write(40); delay(200); // Pin omhoog
// Buigen 105° andere kant
while (benderStepper.currentPosition() != 105 * angleConst) {
benderStepper.setSpeed(700); benderStepper.run();
}
benderStepper.setCurrentPosition(0); delay(50);
while (benderStepper.currentPosition() != -63 * angleConst) {
benderStepper.setSpeed(-1200); benderStepper.run();
}
delay(100); servo01.write(130);
benderStepper.setCurrentPosition(0);
count++;
}
}
Kubus en staandertje werken op dezelfde manier (stappen tellen, hoeken, Z-as rotaties). Handmatige modus: commando's via seriële monitor: f<mm> (voeden), b<graden> (buigen), z<graden> (Z-as). Negatieve waarden mogelijk.
if (dataIn.startsWith("f")) {
dataInS = dataIn.substring(1); dist = dataInS.toInt();
Serial.print("Feed "); Serial.print(dist); Serial.println("mm wire.");
dist = dist * 48;
while (feederStepper.currentPosition() != dist) {
feederStepper.setSpeed(1200); feederStepper.run();
}
feederStepper.setCurrentPosition(0); delay(100);
}
Complete code aan het einde van de tutorial.
Let op
Het rechtzetsysteem werkt niet perfect: te strak → voeder verliest grip. Oplossing: sterker materiaal dan koperen buis, ander voedersysteem.

Veel bouwplezier! Vragen? Reacties hieronder.
Productieproces
- De Evolutie en Productie van Naaimachines: Van 19e-Eeuwse Innovatie tot Moderne Automatisering
- Prikkeldraad Uitgelegd: Geschiedenis, Constructie en Modern Gebruik
- Premium Hexagonale Draadnettingmachine voor Landbouw & Pluimveehouderij
- Waarom Wire EDM Snijmachines Precisie en Kostenbesparing Leveren
- Platvouwmachines uitgelegd: Typen, processen en toepassingen
- Draad-EDM in Taiwan: Precisie-inzichten in de metaalindustrie
- Top Wire EDM machines: precisiesnijoplossingen uit Taiwan
- Professioneel CNC buigmachine voor buizen: precisie & efficiëntie
- Expertgids voor vierkante buigmachines: van basis tot toepassing
- Geavanceerde Hydraulische Buigmachine voor Werkplaats Precisie
- Elektrische Buigmachines Uitgelegd: Technologie & Toepassingen