Introduction: Embroidery Machine

This project was inspired by jameskolme's project published on

We have 3 children with many similar dresses, we need permanent marking on them. We had an unused Brother sewing machine, I like to build CNC DIY projects, so I built an embroidery machine :-)

Step 1: The Sewing Machine

I needed a stepper driven sewing machine, so I had to remove the original motor and foot controller and replaced with a 4A NEMA23 stepper. This sewing machine has an internal motor solution, so the room inside limits the motor size.

I used the original timing belt. I printed a 18-teeth pulley to the NEMA23. The sewing machine has 81-teeth pulley, so their ratio is 1:4.5 (originally I planned a 27-teeth pulley, but it did not fit into housing)

The attached 3d printed nema23 holder is rigid and robust, but maybe a metal solution would be better.

I replaced the original connectors to a 9pole D-Sub connector. The switch has release function, disables/enables the stepper driver. It is very useful if we would like to turn the big knob on the right to tune the needle position. The capacitors are for noise filtering.

I used embroidery foot for the sewing machine like this. It must be adjusted so, that the foot is lifted up in the top position of the needle.

Step 2: XY Table

The sewing machine is prepared, but we need to move the fabric too. I built a construction from the materials I found at home. Nema17 standard steppers will provide enough power and speed for this task with GT2 timing belt and 20T pulleys. One axis runs on a 10mm with 2x1pcs SC10UU linear bearings, the other runs on a 8mm shaft with 2x2pcs LM8UU linear bearings. I plan to add one more pair SC10UU, to make it more robust.

I made endstops to the end of axes but in this project they are not really needed, I always use the middle range of the axes. I used light gates ITR20005 and this circuit to manage them. All items connected via a 25-pole D-SUB connector to the controller. (A 15-pole is enough)

I printed an own design of embroidery frame (KERET xx 120x120.stl files) but I use indeed an original, because it is smaller.

It is important in case of any frame that the fabric shall be in the height of the sewing machine's working height. I my case it is 90mm.

Step 3: Controller

See the block diagram about the controller. I used the Arduino uno + Arduino grbl driver software

The CNC shield + 2pcs A4988 stepper drivers are for nema17 steppers, the standalone DM556 driver for nema23. The DM556 is a overkill, it runs in 1.9A mode.

The optocoupler is to filter the the noises from the endstop signals. Use shielded cables against noise too.

Step 4: Software

1. Draw with Inkscape or import your vector drawing

2. Convert drawing to curves

3. Convert drawing to grbl file using InkStich extension

4. Send to Arduino via any CNC grbl sender. My favourites are bCNC. and the Universal gcode sender

Step 5: Advices

Use a working, well adjusted sewing machine. If it can sew normal fabrics, then it is ok.

Use embroidery needles, normal needles lead to thread rupture.

Check the handbook of the sewing machine. If it has embroidery mode then use it, if not, then switch it to normal sewing mode. Use the darning plate of the machine to the block the fabric movement.

If the result is not flat, the thread is jamming on front or backside, adjust slightly the thread tension control.

Modify It Speed Challenge

Grand Prize in the
Modify It Speed Challenge