Introduction: DIY Pickup Winder

About: I am a hobbyist, maker, tinkerer, and generally curious person. I make Arduino projects and 3D print things as well. I’ll probably try something new next month

Hello there,

Thank you for stopping by. Today I am going to show you how I built a pickup winder to wind pickups for electric guitars and basses. I don’t play guitar but I did take some bass lesson in high school, I remember nothing but several riffs for Red Hot Chilli Pepper songs, I had an interesting teacher… I don’t play any more.

A friend asked if I could build one ask I decided to make one for them and show all of you how I did it as well.

The goal was $50 US, I got pretty close but did end up going over. This does assume you have or have access to a 3D printer.

This is a pretty minimal winder but it works well enough to wind some basic pickups.

Supplies

This project uses the most parts of any project I have made so far. So be ready for a long list.

None of the links are affiliate.

If you have some of these parts go ahead and use them. I did choose to buy several kits of parts, this means that you’ll have parts left over, which you can use to build more, or to use for other projects. If that's not your jam, take a look around, I was able to find singles of several parts that cost only a bit more. Or check out your local electronics store as they likely sell smaller quantities.

Disclaimer on the prices, because of *gestures vaguely at the supply chain*. The costs are from May 2022. I can’t say the prices will stay the same.

Parts

Tools

Need:

  • 3D printer (I used an Ender 3 V2)
  • Wire strippers/Cutters
  • Allen keys
  • Screw driver
  • Soldering Iron
  • Multi-Meter

Nice to have:

  • Wire crimper
  • Bread board

Step 1: What Is a Pickup

Everyone I have explained this project to has looked at me like i have 9 heads when i tell them i am building a pickup winder. So I am going to quickly cover what a pickup is and what a pickup winder is. 

The pick up is the part of an electric guitar that turns the wiggly strings into music. It uses magnets and a bit of magic, I don't really understand the mechanics of how it works but that's the general idea. There are about a billion different pickup configurations but for what I am making they are made up of a central plastic bobbin, with metallic poles, and the bobbin is then wrapped with very thin copper wire anywhere from 5,000 to 10,000 times. A magnet is then attached to the bottom of the pickup. When the metal string wiggles in the magnetic field that is conveyed by the poles it induces a voltage in the copper wire, this is what you actually hear out of the guitar. (huge disclaimer here, i only barely understand how magnets work so I might be totally wrong here, this is what I remember from physics and some light research).


The poles are oftentimes just ferrous metal, or metal with iron in it so that it can become magnetic, but sometimes they are magnetic.

The wire is very thin, think thinner than a human hair. The typical wire gauge is anywhere from 42 to 44. And it is usually enamel coated to prevent shorts.


The winder is used to wrap the wire around the bobbin. It is designed to wrap the wire in a controlled manner and count how many times you wrap the wire around the bobbin.

That's what I am building here, the winder. I will make a pickup in the last step but that is tangential to this project.

Step 2: Case

I designed and printed a case for this winder. It was designed in Fusion 360, and printed on my Ender 3. I printed the case out of PETG but PLA will also work here. 

I always print the case first so that when you are ready to start the project you have it all ready. 

Printables link: https://www.printables.com/model/212530-pickup-winder


Most of the parts print support free, take a look at the images for print orientation.

The only two that needs supports is the Lid and the Motor Support. The Lid needs supports under the two long bridges in the front and back. The Motor Support gets supports under the small over hang. Take a look at the images for more info on where the put supports

Step 3: Mechanical Assembly

The first assembly step I want to cover is the mechanical assembly, or everything but the circuit.

The case has mounting points for the arduino, screen, pot, switch, reed switch, magnet, and barrel jack. 


The arduino and screen get screwed into placing using M2 and M3 screws respectively. The only thing to note with the screen is the pin direction/order. My screen came with 90* pins so I had to bend them straight using a pair of pliers so that I can get the jumper wires on later. Also note down the order they are in if you can’t see it from the back.


The magnet and reed switch get set into place using glue. I used E6000 but I think hot glue would work just as well here. The leads of the reed switch go through the side of the winder and it should sit securely into the small grove. Once the reed switch was in place I soldered on some leads so that I could attach it to the circuit in the next step. The magnet goes into the recess in the side of the pickup holder.


For the wire guide I used and M3 bolt through the lid and 2 nuts on the inside to lock it in place. I made mine out of a section of ⅜” dowel. I have included a printed version as well, just make sure to sand the face the wire will rest on very well, to remove any layer lines. The rod is held in place with another M3 screw and the washer and stop then slide on. The stop gets a 3rd M3 screw to hold it in place too.


The motor is, I think, the most complex to install. I added lead wires to the motor, then used my longest M2 Screws to feed through the top U piece and then down into the motor base, where I put a nut on loosely. After that was done on both sides I slid the motor in place and tightened the screws. I then added a second nut here, butted up against the first. This will keep the nuts from unscrewing due to the vibration of the motor. If you have an M2 lock nut you could also use that in place of the 2 nuts, or some locktight. With the motor securely in the holder I used 2 M2 screws to attach it to the side of the case. 


The barrel jack is next, I didn't actually make a place for this in my case as I planned to use the barrel jack on the arduino. However as that can't provide the current the motor needs, I switched to the external barrel jack. Hense only rendingerings for this one. This is screwed down using M2 screws using the U piece to hold it in place.


Finally, the pot and switch get put in place. Before I installed them I added wire leads to attach to the circuit.

My switch came with a washer with a registration notch to keep it from rotating but I didn't leave a place for that in the model so I put it on backwards, so the notch goes into the case away from the edge. I tightened it down with some pliers and I haven’t had any trouble with it. For the pot the registration notch was cast into the face of it. Using some pliers I was able to gently snap it off, I used the external tooth washer that came with the pot and some pliers to tighten it down and have had no issues. With everything in place, the knob can be placed on the pot.

Step 4: Circuit

The circuit in mine is built in a bread board,I like to have the flexibility to change things out as a I work on the project, but I will eventually replace this with a proto board, for reliability and cost reasons.

I’ve attached the diagram that I came up with for this circuit. 

A huge word of warning: when working with the circuit make sure to turn the power off first/unplug it, as letting the 12v get into the wrong spot on the arduino can brick it. 


The circuit is basically just a few small separate circuits that are all connected through the ground and 5v rail. The potentiometer, reed switch, and screen all use power from the 5v rail and ground to the ground rail.

I can then pull a signal wire from each component into one of the arduino pins to read. I need to read the value of the potentiometer, and the reed switch. The potentiometer tells me how fast the motor should go and the reed switch will pulse every time the disk goes around to count the revolutions. 

(talk about why each part works?)


The motor and switch are within their own circuit. This circuit runs on 12v as that will take the motor to max speed. The arduino cant directly control 12v for the motor, but we can use a component to interface between the arduino and the 12v line, a Mosfet. I can use a PWM signal from the arduino to tell the mosfet how much power to give the motor. This works by allowing different amounts of power through, so when the PWM signal is, say, 10 the motor gets power only 10% of the time, so it goes about 10% speed and when the PWM signal is higher at something like 90% it gets 90% power and goes 90% speed. This circuit needs a few extra components, including a resistor and a diode. The diode is CRITICAL, the motor when it is turned off can continue to rotate and send what is called a flyback current into the circuit and these can be huge currents. They aren’t particularly dangerous to you or me at only 12v but they can kill components like arduinos easily. The diode, known as a fly back diode, stops the current and our arduino can live another day.

The switch is inline with the 12v incoming power to the motor. THis easily allows me to cut the power to the motor without turning the pot, so if I find a speed I like and need to stop I can just flip the switch to turn off the motor power and then flip it again to turn it back on.

Step 5: Code

Of course every arduino project needs some code. Here is the code for this project. It is a bit more complex than my other projects but I think with a bit of guidance it will make sense. 

The code is pretty much just looking for 2 things, the speed the motor needs to be at and when the magnet goes past the reed switch. It deals with setting the motor speed and screen information from there.

I keep track of the revolutions I am using an interrupt. This will, when triggered, stop the code the arduino is running and run the small section to add to the revolution count. This is useful to ensure that a revolution is never missed and the count is correct. 

The other thing that I am checking in the main loop is the pot value, or what percent speed the motor should be set at. I can read this every time the loop runs and update the motor speed as needed. 

Also in the main loop I update the screen. The screen gets updated whenever there is information that needs to change on it. 


The best way to wrap your head around this code is to look at the small parts and then see how they work together to make the whole program.


/*
 * Written by Tiny Boat Productions, 2022
 * DIY Pick up winder
 * Video on YouTube
 * 
 * Referance Documents
 * Potentiometer: https://docs.arduino.cc/learn/electronics/potentiometer-basics
 * DC Motor: https://www.tutorialspoint.com/arduino/arduino_dc_motor.htm
 * Reed Switch: https://create.arduino.cc/projecthub/muchika/reed-switch-with-arduino-81f6d2
 * I2C LCD: https://create.arduino.cc/projecthub/Arnov_Sharma_makes/lcd-i2c-tutorial-664e5a
 * Debounce: https://www.arduino.cc/en/Tutorial/BuiltInExamples/Debounce
 */

#include "Wire.h"
#include "LiquidCrystal_I2C.h"

const int DEBUG_PORT = 9600;
const unsigned long DEBOUNCE_DELAY = 20;
const int LCD_COLUMNS = 16;

//Pin declarations
const int MOTOR_PIN = 9; //motor pin
const int POT_PIN = A0; //pot switch pin
const int REED_PIN = 3; //reed switch pin

LiquidCrystal_I2C lcd(0x27,20,4); //LCD setup

//Inital Values
int potVal;   //reading from the potentiometer
int lastPotVal = 0;
int motorSpeed;
int turnCount = 0;   //revoultion count
//int reedState;
//int lastReedState = LOW;
unsigned long lastDebounceTime = 0;
int turnsSinceUpdate = 0;
int lastUpdateTime = 0;
int currentRPM = 0;
int lastPercent = 0;
int motorPercent = 0;

void handleReedUpdate() {
 int currentTime = millis();

 if (currentTime - lastDebounceTime > DEBOUNCE_DELAY) {
  turnsSinceUpdate++;
  currentRPM = 60 / (currentTime - lastUpdateTime);
  lastUpdateTime = currentTime;
 }
 lastDebounceTime = currentTime;
}

void setup() {
 //set up motor and reed switch pins
 pinMode(MOTOR_PIN, OUTPUT);
 pinMode(REED_PIN, INPUT_PULLUP);
 attachInterrupt(digitalPinToInterrupt(REED_PIN), handleReedUpdate, FALLING);

 Serial.begin(DEBUG_PORT);

 //set up the lcd
 lcd.init();
 lcd.backlight();  //turn on the backlight
 lcd.setCursor(0,0); //set the cursor in the uper left corner
 lcd.print("Pickup winder");
 lcd.setCursor(0,1); //set the cursor at the start of the second line
 lcd.print("By: Tiny Boat");
 delay(1500);
  
 while (analogRead(POT_PIN) > 5){ //Make sure the motor is at low speed before starting it
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Turn pot CCW...");
  delay(500);
 }
  
 while(digitalRead(REED_PIN) == 0){ //Ensure you dont start on the magnet so the count is accurate
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Turn winding wheel 1/4 turn");
  delay(500);
  turnCount = 0;
 }

  lcd.clear();
  lcd.print("Speed: Count:");
  lcd.setCursor(0, 1);
  lcd.print("0");
}

void loop() {
 // put your main code here, to run repeatedly:
 potVal = analogRead(POT_PIN);
 //motorSpeed = map(potVal, 0, 1024, 0, 255);
 if (potVal != lastPotVal) {
  motorSpeed = potVal / 4;
  analogWrite(MOTOR_PIN, motorSpeed);
  lastPotVal = potVal;

  motorPercent = (motorSpeed*100)/255;
  if (motorPercent != lastPercent){
   //if( motorSpeed >= lastSpeed*0.01)||(motorSpeed <= lastSpeed*0.01){
    lcd.setCursor(0, 1);
    lcd.print("    ");
    lcd.setCursor(0, 1);
    lcd.print( motorPercent);
    lastPercent = motorPercent;
   //}
  }
 }

 if (turnsSinceUpdate > 0) {
  turnCount += turnsSinceUpdate;
  turnsSinceUpdate = 0;

  lcd.setCursor(LCD_COLUMNS / 2, 1);
  lcd.print(turnCount);
 }

 //Serial.print("Pot val: " + potVal + ", Motor speed: " + motorSpeed + ", Turn count: " + turnCount);
}

Step 6: Final Assembly

Once the mechanical parts are inplace and the circuit is wired up and tested you should be good to close it up. I fixed the base on with M3 screws and put small rubber feet on the bottom to help keep it from shaking around.


Power it and try it out. 

In the next step I will walk through how I made a pickup but this is the finished winder.

Step 7: Do Not Build This Pickup

I cant leave this without winding at least one pickup. I am building a bass pickup for a friend. Hence 4 strings. I am aiming to have a resistance of around 7k omhs, and through some calculations i found that will need about 9,000 wraps of wire. (ohms are a pretty common way to measure a pickup, what does it tell you ¯\_(ツ)_/¯)

Disclaimer: IDFK what i am doing when it comes to winding pickups, this is a reference for you, not a guide.


The bobbin is printed out of PLA, link here, in three parts. I then glued the parts together using E6000 given the full 3 days to harden (also forgetting about it helps). If this is, like me, your first pickup then you should print off and glue up 3 or 4, it won't hurt. 

The poles and magnet I’m using are pulled out of some old electric guitar pickups.

I got some 42 gauge wire, link here, and it works well. It's on the thicker side for a pickup, but it's a good starting wire, I haven't (knock on wood) had it snap on me yet, it's only a matter of time. It is an enameled wire, the best way I have found to remove the coating is some sand paper. I used some 400 grit sandpaper to gently remove the coating from the starting end.


I also got these small rivets that are designed for PCBs that I will be putting in at the end. But I am leaving them out while winding so that I don't have to worry about snagging them.


To start, I fed the wire through one of the very small holes in the base a few times and tapped the loose end to the bottom. I adjusted the wire guide so that the space between the washer and stop is the same as the gap between the top and bottom of the pickup.

I used some double sided foam tape to stick the pickup to the pickup holder. I turned the whole thing on and began very slowly wrapping the wire around the bobbin. I went very slowly, like <50% speed, for my first one. It seemed to be going ok until I realized that I had the stops wrong and several of the wraps were around the foam tape. I cut that one off and began again. I was able to get 5k wraps on my first pickup. But after cutting the wire and sanding a small section to measure the resistance I found it to be far too low, at around 4.5k ohms.

After a few more tries I was able to get a pickup with about 10,000 wraps and a resistance of 7k ohms.

I removed the wire I had wrapped through the small hole in the base. And used a soldering iron to heat set the small rivets into the base. I then solder the thin wire and one of the leads of some speaker wire into the rivet. I did this to both ends of the wire. Making sure that I had connectivity on my multimeter after every step.

I press the poles in place and put some clear nail polish over the top to hold them in place. I wrapped the wire with some electrical tape, and then potted the pickup in soy wax, its what I had, but I have seen people use leftover unscented candles for it.

I then scrapped the wax off the bottom of the pickup and used thin double sided tape to stick a bar magnet to the bottom. 

I was then able to install it in the bass. I’ve included a sound test from the pickup. They say it sounds good, I really have no frame of reference but hey, it works!

Step 8: Final Thoughts

First off, thanks for reading. I spend a lot of time making these projects and you getting this far means a lot to me. 

I had a lot of fun making this project and learned a lot along the way. I hope that you have learned something too.


I’m sure I left something out so if you have questions or think that something needs some clarity, leave a comment below. 

If you make this add a make, you have no idea how much of a thrill I get any time someone adds one. If you can drop a link to a sound test too (I don’t know if you can add as a make here, but a comment with a video would work)


Again, thanks for reading, I hope you will check out the video I made for this project. And if you feel really generous check out my instagram, @TeenyBoatProductions.

Electronics Contest

Runner Up in the
Electronics Contest