Mechanical Design + Embedded Systems + Arduino

Automatic Wire
Cutter & Stripper

A precision machine that cuts wire to length and strips insulation on both ends, fully automated. Designed from scratch in CAD, 3D printed, and programmed on Arduino with NEMA stepper motors, an OLED interface, and rotary encoder control.

Internship at Fleeca · High School

Top view CAD render

Mechanically planned and 3D modeled from scratch

Every part was designed in CAD and 3D printed. The mechanism uses a linear motion system driven by NEMA stepper motors for blade actuation, and a separate extruder stepper to feed wire through the cutting head. Red parts are structural, blue parts are mounting brackets, and black is the electronics enclosure.

Multiple CAD views
Assembly ViewsTop, isometric, and perspective renders showing the full mechanism
Exploded and detail views
Detail ViewsIsometric closeup and exploded component layout

From spool to finished wire in seconds

01

Configure

Set wire length, stripping lengths for both ends, stripping depth, and quantity on the OLED screen using the rotary encoder.

02

Initial Cut

The blade stepper drives down to sever the wire at the starting point, creating a clean edge.

03

Feed & Strip

The extruder stepper feeds wire by the first strip length. The blade partially closes to the configured depth, scoring the insulation without cutting the conductor.

04

Feed & Strip

Wire advances by the main wire length. The blade strips the second end at the configured depth. Wire advances the final strip length, then a full cut separates the piece.

05

Repeat

The cycle repeats for the configured quantity. Each piece comes out cut to length with both ends stripped.

Arduino firmware with OLED UI and stepper control

How it works

The firmware runs on an Arduino with two NEMA stepper motors: one for the linear motion blade (cutting and stripping) and one for the wire extruder (feeding). A rotary encoder with a push button lets the operator configure all parameters on a 128x64 OLED display: strip length for each end, wire length, stripping depth, and batch quantity.

The cutting cycle is a sequence of moveWire() and moveBlade() calls. A full cut drives the blade down by 17,750 steps. A strip only goes partway, controlled by the depth multiplier. The extruder moves wire by the configured length times a calibration constant (408 steps per unit). The whole sequence loops for the batch quantity with configurable delay between pieces.

Calibration mode lets you fine-tune the wire movement multiplier by feeding a known length and adjusting until it matches physically. Two manual buttons allow blade positioning during setup.

Core cutting sequence
void runAutoCuttingStripping() {
    cut();
    delay(DELAY_BETWEEN_CUTS);

    for (int i = 0; i < comps[QUANTITY].value; i++) {
        moveWire(comps[STRIP_LEN_1].value);
        strip();
        moveWire(comps[WIRE_LEN].value);
        strip();
        moveWire(comps[STRIP_LEN_2].value);
        cut();
        delay(DELAY_BETWEEN_CUTS);
    }
}

void cut() {
    moveBlade(-CUTTING_STEPS);  // 17,750 steps down
    moveBlade(CUTTING_STEPS);   // return to home
}

void strip() {
    // partial close: depth * 300 steps
    moveBlade(-(comps[DEPTH].value
        * STRIPPING_MULTIPLIER));
    moveBlade(comps[DEPTH].value
        * STRIPPING_MULTIPLIER);
}

void moveBlade(int steps) {
    linMotSteppers.step(steps);
}

void moveWire(int steps) {
    extruderStepper.step(
        steps * WIRE_MOVEMENT_MULTI);
    // 408 steps per unit
}

What went into building this

Mechanical Design 3D CAD Modeling 3D Printing Arduino / C++ NEMA Stepper Motors Stepper Driver Control OLED Display (SH1106) Rotary Encoder Embedded Firmware Precision Calibration Wire Harness Manufacturing Prototyping