Hacking an Embroidery Machine

Another post based on work-related hacking. The baby monitor we sell uses a patented wearable sensor to measure respiration. Part of applying the sensor requires us to sew on a rubber component. We have a pretty sweet CNC embroidery machine (the Babylock Sofia 2) that we programmed to stitch around the rubber piece.


But we wanted to slow the embroidery machine down. We didn’t like the aesthetics of the stitching at typical hobby embroidery machines (400-800 stitches per minute) and found that 100-200 spm produced the results we wanted. Unfortunately we couldn’t find a single embroidery machine on the market that goes that slow!

My first thought was to take apart the embroidery machine and change a gear or pulley at some point to slow it down. scanlime did a pretty good job of hacking into her sewing machine, but mine was more treacherous — it was not made to ever be taken apart and I didn’t want to ruin the machine trying. Since this was a stop-gap solution until we moved to a factory, I decided to work with the handcrank and side-step the internal motor all together.

It was pretty easy to make a motor coupler to drive the handcrank directly. It was more difficult to align the shafts precisely, so I made a simple spider coupling to reduce wear on the motor. A spider coupling is a type of flexible coupling that allows the two shafts to move slightly relative to each other while still transmitting all the torque. They can also be used as mechanical fuses, which is a pretty neat idea — the coupling fails before your motor or whatever your driving does, disconnecting the two components.


In this picture, the white parts are rigid and connected to the two shafts. The black part is flexible. There are some great videos of a guy who posted his spider coupling to thingiverse that demonstrate how awesome this little device is.

photo 2

My spider coupling.

I ran the machine with a DC motor from Pololu. I did some simple hanging-weights-on-lever tests to figure out what kind of torque I would need. I also knew I would need to control the motor in two respects — the first being speed, the second being revolution count. When the machine runs it automatically stops the needle when the program is done; I would have to emulate that. In both respects a stepper motor would have solved this problem for me — I could easily control the speed by how fast I energized the coils and count the steps to know how many revolutions the motor had turned. So why a DC motor?

Every time we put a part into the embroidery machine, we had to center it. It is extremely useful to be able to lower the needle to ensure the part is centered properly. With a stepper motor, any time the motor is powered up it is locked in position– you would have to overcome the torque of the motor to turn it. Since you have to turn the handcrank to lower and raise the needle (after all, this is how I’m running the machine) I would have to power down the motor every time I wanted to actually hand crank the machine. This is technically not that difficult, but adds more steps for the operator, increasing cycle time and decreasing efficiency. Thus, a DC motor, which can be turned pretty easily even when power up.

Then, how to control it? Originally I got a motor with an encoder on the back, but it proved tricky to count the encoder ticks accurately enough to get a proper revolution count over hundreds of revolutions. In the end I put a mechanical switch on the side and a single bump on the handcrank to hit it. This was extremely accurate. I controlled the speed via the arduino; I was obviously noting the revolutions, and in arduino you can use the millis() command to return a timestamp.

That was the bulk of the project. I added a fan for the motor, a screen, go button, and emergency stop button, and a very cool laser to help align the part.

photo 4 photo 3Overall it worked extremely well, even if it’s not an industrial standard machine. It was a fun project to work on.

photo 1


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s