Solenoid Coiler
Group members
- Ahmed Elabasy
- Joni Rajala
- Michele Heller
Solenoid Coiler
Files
- Solenoid core
- Solenoid core ring
- Nema17 mount
- Carriage for tightener
- Spindle (conical)
- Spindle (pyramid)
- Sled for spindle
- Sled for tightener carriage
- Spacers for attaching spindle and tightener together
Description
We chose to construct a solenoid coiling machine. It was deemed necessary for one of the members’ final project. It takes any width of coil and any size of core (within reason), and coils a copper wire around it.
The original design included five parts that needed to be designed: - The coiling motor - The part that moves the wire to the correct position - Part that creates tension, se the wire is always put to the correct spot - Spool holder for the wire before it is collide - Some kind of control mechanisms for all of this
The final design combined the wire tension device and the positioning device, fashioned a makeshift spool holder and used a Arduino CNC shield – a device that uses GRBL and gcodes - to control the device. We also wrote a small C# script that creates the needed gcode for running the device. Thus we ended with two components and one script.
The whole device was powered through a 12V 5A power converter.
List of bought parts
- Aluminium profiles
- Stepper motor with d-profile shaft (17HD4401)
- Stepper motor with threaded shaft
- Ball bearings
- Wheels
- Arduino Uno
- CNC Shield for Arduino Uno
- Nuts, bolts and profile attachment parts.
Design process per part
Chassis
- Stepper Motor Holder
- Parts from thingiverse
All of us worked in the chassis. We wanted to make a structure that is easy to modify on and have strong supports. Therefore, we used T slot extrusions to construct the frame. We started with the base of the slider and the stepper. We used the following technique: We used an angle to attach two T slot extrusions perpendicular on each others. We used a hex key to fix this type of angles, which have built-in screws.
Then, we used the following stepper fixer and sliding nuts to fix the stepper motor later.
Then, we fixed the stepper motor to its base with screws
We attached the stepper to the chassis with a Nema17 profile bracket that we found from thingiverse and printed. Link: https://www.printables.com/model/658277-nema17-mount. We used it as is, without any modifications. One of the steppers were attached to the base with a metallic mount, that we found from the storage. This caused us some problems, as the 3D printed mount and the metallic one had different thicknesses, and thus the stepper was higher on the 3D printed one. This meant that the threaded axel in the carriage was a bit bent, but it did not bother us in our use case, as we did not need the full length of the axel.
We also used it to attach the ball bearings to the other side of the machine, so that the opposing pieces would be on the same level.
Controlling the machine
To control the machine, we used a CNC shield for Arduino (https://www.partco.fi/en/arduino/arduino-shields/21138-ard-cdp03051c.html), a shield for Arduino UNO that is designed for controlling stepper motors used by CNC machines. It uses GRBL to run gcodes, and makes the stepper motors rotate so that a bit attached to them would move correctly in the CNC machines.
Our design did not need three, or even two dimensional movement. It just needed rotation and small back and forward movement. But both of them could be done with stepper motors, so a prebuilt shield for controlling stepper motors would fit our purposes just fine. All we had to do, was to write a gcode that moves forever in one axis in a zigzag motion, and be done with it. We chose x-axis as the rotational movement (i.e. it moves steadily in one direction until enough loops have passed) and y-axis as the wire positioning axis (i.e. it moves back and forth between along positions designed for both ends of the coils.)
We wrote a code that does it:
// The code expects that the coiler is at the position {0, 0} at the beginning.
class yAxis {
public const double mmPerUnit = 2.8;
public const double minRangeInMillis = 0;
public const double maxRangeInMillis = 200;
}
class xAxis {
public const double unitsPerRevolution = 0.83 * 4;
}
class Core {
public double length;
public double diameter;
public Core(double length, double diameter) {
this.length = length;
this.diameter = diameter;
}
}
public class Coiler {
public static void Main (string[] args) {
double wireThickness = 0.4f;
double targetLoopCount = 100;
double coreLength = 40;
double coreDiameter = 10;
Core solenoid = new Core(coreLength, coreDiameter);
//Legend:
// total - full length of movement
// leg - one layer of coil spin from one end of the core to another
double loopsPerLeg = solenoid.length / wireThickness;
int legCount = (int)Math.Ceiling(targetLoopCount / loopsPerLeg);
double yLegDistance = solenoid.length * (1.0 / yAxis.mmPerUnit);
double xDistanceTraveled = 0.0;
for (int legIndex = 0; legIndex<legCount; ++legIndex) {
double xLegDistance = xAxis.unitsPerRevolution * loopsPerLeg;
Console.WriteLine("G1 X{0} Y{1} F90", xDistanceTraveled + xLegDistance, legIndex % 2 == 0 ? -yLegDistance : 0);
xDistanceTraveled += xLegDistance;
}
}
public static double Circumference(double coreDiameter, double wireThickness, double layerIndex) {
return Math.PI * (coreDiameter + 2*wireThickness*layerIndex);
}
}
The code required some measurements from the completed machine. The measurements it needed were how many millimeters the wire positioner moves per unit moved in y-axis, and how many units in x-axis is required for full rotation of the solenoid. We measured y-axis by inputting command “Y1” into UGS, and seeing how far the wire positioner moved. The rotation was tested by inputting random values to X in UGS and honing in to where the spindle only rotated exactly once.
Spindle heads
This caused the most problems for us. We tried 4 different designs for this.
First plan was to use a 3D printed lathe chuck (https://www.thingiverse.com/thing:2670620) for the motor end, and a cone shape to center the piece. The printed lathe chuck had too much friction in it, and it snapped before we could test it.
The second design had the same cone shape as before, but now on the motor side, and a flat piece of plastic, attached to a spring on the other side. This had multiple problems. The connection between the motor head (the cone) and the solenoid slipped, and often the solenoid slipped away from the device altogether.
The third design used a threaded shaft on the stepper motor, on which we screwed the solenoid in, and tightened it with nuts on both ends. This was a really annoying design, as it needed to be completely disassembled to insert and remove the solenoid from the device. Also the solenoid was not centered properly on the shaft, and vibrations caused the nuts to loosen, making the solenoid drift a bit.
The last design returned to the roots of the first one, where we put a spiring loaded cone on the opposing end, but instead of a lathe chuck, we printed a pyramid shaped head on the motor end. After we printed a solenoid core that had a matching square hole in the bottom, we could use the torque from the motor to rotate it, and sharp pokey bit on both ends kept solenoid centered and prevented it from escaping.
Solenoid cores
We also designed our own solenoid cores, or chassises, i.e. not the part that moves, but the part that hold the coil in place.
Originally we designed them just because we could, and it was easier to 3D print one than to find a big enough yarn holder.
The original design was just that: an H-shaped circular pipe with wider hats at the ends. The upper hat was smaller, as it was expected that overhand are problem when 3D printing. But even the smaller, 3mm overhang was too much.
The next design replaced the upper hat with a notch, where another printed ring could be attached to. This worked better.
But as the final design for the spindle head was a pyramid shape, the core needed to be have a rectangular slot as well. So we printed one which had a square slot at the bottom. The slot tapers a bit as it goes up to reduce slippage, reduce the likelihood of printing spaghetti, and to make the wall a bit more thick and structurally stable.
Slider
The slider is a combination or a sled, carriage that travels the threaded axel and a wire tensioner.
Sleds
To be able to move the different parts easier, we developed two kinds of sleds. Both sledges were laser cut on acrylic 3mm.
Sledge
The sledge was designed to make it possible that the copper wire can be moved along the x-axis. Therefore, four wheels, two on each side, guarantee the movement. Additionally, the acrylic plate should be screwed to the frame so that it offers greater support. This leads to following design:
The sledge was then laser cut before the different parts have been attached to each others.
Boat
A second sled was required in order to be able to adjust the position according to the width of the core. Since the two supporting points at both ends of the core must be at the same height level, this sled must be designed as a boat so that the shield is cut out. Again, four wheels, two on each side, enable a smooth adjustment along the y-axis. The design looks as follows:
The plate was then laser cut before it was assembled.
Carraige
We worked on making the slider on the carriage so for making it, and used Fusion 360 to create the following slider.
The idea behind this slider is to make it mount to the car using screws, and have a place in the middle to put a screw lead nut to make it move along a screw shaft and to be a base to mount a T slot extrusion on it which allows huge amount of adjustment and modifications on the tensioner part which will come later. To be honest, we were not sure that the tensioner will work so, we thought about this mounting of the T slot extruder to ease modifications and modify the design of the tensioner.
We had a problem that the printed T slot extruder mount had to long sides and the T slot extrusion didnot fit into.
So to solve this, we used a sanding tool to remove the long sides.
Then the T slot extrusion fit into. Then it was fixed with screws the screw lead nut and the car to the slider.
Tensioner
For the tensioner two rollers were used to squash the wire in between in order not to slide away and to maintain fixed tension. One of the rollers is made of plastic and it was provided in our Fablab. The second roller was made from polyflex material to add friction between the rollers and the wire.