MakerBot Print is our newest print-prepration software, which supports native CAD files and STL assemblies,
allows you to interact with all your printers via the Cloud, and many other exciting new features.

Download Now


Electric Wool Winder

by ChPech Apr 3, 2017
Download All Files

Thing Apps Enabled

Please Login to Comment

Could you share the source files, so I can import into a CAD package to tweak this design? The basic design is great, however I need to redesign much of this the create balls of Christmas Lights (i.e. thinner spool holder, different tensioner mechanism, and most likely a different motor I have here.

I'm using an Arduino Uno (what I had on hand) and despite triple checking that all of the connections are good (both visually and with a multimeter), nothing works, and I have no idea why.

I made sure to upload the most recent code, too.

Any idea what could be up?

Nothing works? Not even the display? The UNO should have the exact same I2C pins like the Nano, A4 and A5. You could try setting the "#define DBG" and open the Serial Monitor in the arduini IDE to see if things happen.

I’ll try that when I get home from work. Should the “L” LED be blinking?

Yes, it should.

So I added in that line of code, and ran the Serial monitor.

Interestingly enough, the encoder seems to be working. It definitely reads a change when I turn the knob. Pressing the button doesn't seem to do anything. So at the very least the code seems to be working.

Still nothing from the OLED and motor.

It just dawned on me - I omitted the 10k resistors. (I couldn't find any in my parts box) Could that be causing my problems?

UPDATE: I also discovered that my OLED is an SSH1106, not an SSD1306. Perhaps that's why it isn't working.
(The one on your page has a dead link, and I didn't know there would be a difference. Had the same pinout, though...)

This is the one I bought: https://www.aliexpress.com/item/1-3-inch-IIC-I2C-Serial-128x64-OLED-LCD-Display-White-Screen-Module-For-Arduino/32830144222.html?spm=a2g0s.9042311.0.0.61e64c4daWiFu3

The 10k pulldowns are for when the driver start up before the arduino or the arduino is broken, then they prevent accidental motor rotation. But fur function they are irrelevant.

There is a modified library for the SH1106 oleds: https://github.com/wonho-maker/Adafruit_SH1106


All I would need to do is change the include statement to match the SH1106 instead of the other one?

Download the files from github first and put Adafruit_SH1106.h and Adafruit_SH1106.cpp into the same folder as the rest of the code, and then just change the include, yes.

The good news - I got it to run! I think I had a short on my ESC. I cleaned up and resoldered all my connections and that seemed to do it.

The bad news - I think my OLED is toast. Nothing I’ve done will make it work. Ah well. My wife’s happy with it as-is. Perhaps I’ll order another OLED eventually. Thanks for your help!

I’ll upload my build at some point this week, along with some parts I made that make it easier to mount internals. :)

Nice to hear. Indeed the Oled is not necessary in the current version. My girlfriend already requested a configurable automatic stop, so she can make equally sized spools unattended. <- in this case the display would be needed.
Also the Oled is only 2.50€ on aliexpress.

I have it together and have the motor going. So I have made some progress!

However, in your video it shows that it speeds up as you turn the potentiometer, for me though it is only on or off. I have to turn the potentiometer until 255 is written to pin3. Then it will turn on, but it is on full speed. (I have added a lot of debug statements to the firmware so I can see what it is doing).

It doesn't help that this motor driver doesn't have a datasheet, the only information we have for it is on the aliexpress site:

SET for the control side:
GND  control terminal ground
VR   the governor end 0-5V(corresponding to 10% of motor speed - 100%) <------pin2
ZF   reversing control(connected to 5V or ground can change the motor rotation direction)
M   tachometer pulse output(depending on the number of motor poles corresponding to the number of pulses per revolution of the output number)
EL  enable control terminal(connected to 5V or ground running then 5V, grounding the motor stops) <----- pin3

The firmware is doing a digitalWrite to pin2, but this doesn't make sense if that is the speed controller, shouldn't that be an analogWrite?

The firmware takes pin2 HIGH anytime RPM is greater than 0, which is all the time once you turn the potentiometer one notch.

I am kind of confused why I am not getting a gradual speed increase.

Motor is off when pin3 is 0-250:

iRPM (pin2): 980 RPM > 0? 1
pin3: 250

Turn it one more notch the motor is on full blast:

iRPM (pin2): 1000 RPM > 0? 1
pin3: 255

Turn it backwards on notch and the motor shuts off again:

iRPM (pin2): 980 RPM > 0? 1
pin3: 250

That cross-section was just the ticket to getting it assembled. Thanks! Now deciding best way to put the electronics in it, might just start out soldering it all together and then shoving up in there.

I had to cut the model in MeshMixer to print it on my 200x200 bed, I have been meaning to post that remix.

Since your last comment was flagged for moderation, which I can't do anything about, I am answering here:

Pin3 = EL -> which is On/Off
Pin2 = VR -> this ist the speed control

The firmware does:
const int iMin=30;analogWrite(3,iMin + (long(iRPM)*(255-iMin)/1000));

So I clearly mixed up 2 and 3 in the schematic, I have changed it in the github,

Yeah I am not sure why my comment got flagged for moderation. That happened when I went to edit the comment...I may have accidentally hit the Flag link, it is right next to the Edit link. It is back though.

I am pretty sure I actually already tried switching those pin numbers and the behavior didn't change; however, I tried several things so possibly didn't quite do that exact thing. The behavior certainly suggests those two pin numbers are switched, so I will revisit switching those pin numbers. The motor actually does stop when you push the switch on the potentiometer, so that part is working correctly.

If that doesn't work I will switch out the motor driver (bought 2) and nano (have plenty of those). My wife is looking forward to me getting this completed, she currently uses a hand cranked ball winder.

I must not have something right. I don't see how the slanted gear (gear.stl) will ever match up with the gear on top of the bearing stack (gear-bot.stl), it is way too high. I know that green part needs to go down into the big 6806 bearings but even when that happens it is still going to be much too high. (I have to do some sanding on it to get down in there).

Is there supposed to be a bearing under the spool?

The two large bearings go onto the small gear which goes inside the large gear. Here is a cross section: https://i.imgur.com/F7jJ70O.png

Thank you so much for that cross-section, that is super helpful!

The motor schematics from ali express list Motor U, V, W and Hall U, V, W; however, the motor driver lists Motor A, B, and C and Hall A, B, C so I am having trouble figuring out which wire connects to what. Can I assume u, v, w is the same order as a, b, c?

Yes, I assumed a=u, b=v, c=w and it worked as expected.

The motor you linked is pretty expensive.

What are this design's requirements for a NEMA 23 motor, so I can try to find cheaper options?

Also - what would I need to do to run a motor that's <12V off that board? Can you limit the maximum motor voltage/current via the Arduino code?


Not really a requirement, Nema 23 is just a convenient form factor and I bought several of these motors (they are cheaper in bulk) so I use them for different projects. Any other BLDC would work too, the cheapest ones are probably for RC cars and there are also NEMA32 adapters for them here on Thingiverse. You shoult select one with a "relatively low" RPM (low KV), also they don't have hall sensors so you need a sensorless driver. The driver board I specified, version 7 is with hall, but there is a nearly identical one (version 6) without hall.

If you want to run a DC motor you need a brushed motor driver or build one with a MOSFET and some resistors. If you put 50% PWM through a MOSFET on 12V connected to the motor, then from the motors point of view it is like running it on 6V.

A stepper won't work. It needs a completely different driver. In fact I tried to use a stepper in the first iteration because that's what I had at hand but it didn't work well, the movement was to jerkey, the speed to low, it would stall out too easily. It was only a Nema17, so a Nema23 might work better, but still I'd advise against it.

Where do the ball bearings go?

Between N63 and Gear_bot go the two larger bearings. The small one is pressed between TInner_top and TInner_bottom and put into the tapered gear.

I have printed all the parts, and have most of the parts. Can you recommend specific nuts and bolts? I've been looking through my bolt stash and haven't been able to find ones that work. I will most likely have to go to the local big box store.

I have another question... I put the tensioner on the yarn guide. What keeps it in place? Should I apply a little glue, or maybe wrap it with some tape to get a better fit?

Thanks for all your assistance.

What is the best orientation to print the "House" to avoid supports?

The top side should be on the bottom, then the angles (45°) will print as overhangs and the rest is bridgeable. None of the parts require support.

1) This is a really cool design. I've got all the parts built and the electronics on order, and I'm hyped to get this running for my wife. Thanks for putting in the time to design and upload it. :D

2) That said, its good practice to upload the .stl files in the orientation you designed for them to be printed. It's not always obvious - like with the housing - and keeps you from needing to answer questions like this. It also saves everyone the (admittedly minor) annoyance of having to reorient every single part.
I'm sure you already know this, but if not (or for anyone else reading this who may not know)...its as simple as uploading to Slicer, orienting it the correct way, and hitting "Export .stl" to save over the original file. Next time you open it it will be in the correct orientation.
Just a thought. :-)

I didn't realize you could that. I use Simplify3D, however it has the same functionality. Just thought I would throw that out in case anyone reading this thread uses S3D.

Indeed. I should reorient them, usually I use Meshmixer for it. But thanks for the tip with slic3r.

Hi, would you share the source file? I'll try to adapt it to good old Nema 17 steppers.

Nice work - I'm thinking about making one for my wife :).

Do you know if there are similar motors to this one that may be easier and cheaper to obtain? That particular one is quite expensive to ship to the UK and isn't easy to get hold of.

I don't know any motor which fits the same size. The cheapest possibility would be any low rpm DC motor. This would also mean that the driver can be replaced by a single mosfet but the rotation counter would not work without an additional sensor.

Thanks for the reply. I'll have a tinker and see if one of the motors I've got will be suitable and report back if so :).

how to assembly it?

Great Job.
The OLED/Arduino counts rpm or length?

It counts number of revolutions. You can calculate length from this but it depends on the thickness of the yarn.

this is incredible. do you have instructions on assembly? thanks! can I donate somewhere?

super cool ! simple and fool proof

Cool! Woolwinder with OLED! Its need to be extended with clock/timer/alarm/humidity/temperature meter and radio :-)))

You'd think the OLED is overly fancy, but compared to the rest it is really simple and costs only 2 bucks.