Description
This machine allows you to make varying size vertical coils, so it would be handy for Tesla coil builders or amateur electric equipment building or repair. Designs is inspired by those already available on the internet but improved and uses affordable parts, is simple to make and modify to personal needs. Most of the mechanical parts are fabricated on 3D printer. Winder is propelled by two stepper motors, this combination was tested on wire diameters from very thin 0.06mm (40 AWG) to thick 0.8 mm (20 AWG), using a thicker wire is problematic because of stepper motor loosing steps. Replacing it with DC servo might be a task for future improvements. Winding process is controlled from PC by dedicated GUI application. Electronics board communicates with AVR micro-controller via USB serial connection. Any 3d printer electronics board can be used or there is option to etch your own.
Some pics of machine look and in operation.
Build and assembly
CAD is made with FreeCAD and partially OpenSCAD, you need both installed to open and export meshes for printing to format commonly understandable by 3d slicers. Project repository is in there.
List of printable parts:
- 3x bearing8mm_distance.fcstd
- 1x carriage_base.fcstd
- 1x carriage_lid.fcstd
- 1x carriage_motor_holder.fcstd
- 2x coupler_holder.fcstd
- 2x frame_vertex_bearings.fcstd - print with 90deg supports
- 1x frame_vertex_bearings_motor.fcstd - print with 90deg supports
- 3x frame_vertex_foot2.fcstd
- 3x frame_vertex_foot.fcstd
- 2x knob_tightener.fcstd
- 2x rod_clamp.fcstd
- 1x wire_guide2.fcstd
- 1x wire_guide_arm1.fcstd
- 1x wire_guide_arm2.fcstd
- 1x wire_guide_base.fcstd
- 1x wire_guide.fcstd - optional, this is another variant
- 3x wire_guide_wheel.fcstd
- 3x wire_guide_wheel_lid.fcstd
- 2x wire_tensioner_knob.fcstd
- 2x wire_tensioner_washer_backplate.fcstd
- 2x wire_tensioner_washer.fcstd
Those parts are from scad directory and are parametric, which means that you can easily change things like motor axis diameter, used belt profile, number of teeth for pulley and so on - all to suit your setup or already owned parts.
- 1x winder_gears.scad - two parts in one file (small and big gear)
- 1x winder_pulleys.scad - two parts in one file
Check also files from tools directory for necessary printable accessories like holder for your bobbins or templates for windings preparation for induction motors.
Non printable
- 6x 608ZZ_Ball_Bearing
- 2x 626ZZ_Ball_Bearing
- 2x 623ZZ_Ball_Bearing
- 3x 693ZZ_Ball_Bearing
- 76x DIN 125 class 4 M8 Flat Washer
- 4x ISO4032_Hex_Nut_M6
- 76x ISO4032_Hex_Nut_M8
- 3x ISO7091DIN126_CLASS_C_M6 washer
- 1x NEMA-17_Stepper_Motor_40mm -> high torque
- 2x rod_8x250mm
- 1x rod_M6_220mm - cut on different length to adjust work area.
- 1x rod_M8_125mm
- 3x rod_M8_160mm
- 1x rod_M8_210mm
- 3x rod_M8_270mm
- 4x rod_M8_300mm - cut on different length to adjust work area.
- 3x rod_M8_330mm
- 1x stepper_tin - cheap recycled stepper motor or other NEMA-17 with any torque
- 1x infinite loop belt 150mm length, any profile should work - ultimately it can be made by gluing together straight belt
- some M3 screws (for hex key if possible), nuts and washers
Assemblies
Just open main FreeCAD assembly and study it, start by assembling parts together, in a way shown in those files:
- 1x assembly_carriage.fcstd
- 2x assembly_triangle.fcstd - note: one frame contains also carriage_motor_holder, other one rod_clamp.fcstd
- 1x assembly_triangle_motor.fcstd
Collect all needed parts, press roller bearings into place, but remember to put small distance cylinder between bearing, it is easy to preview in project assembly files. Note that appearance of some parts presented in photos might change with newer releases.
Start assembly from frame triangles, there are small differences between each triangle, keep it in mind. Don't screw nuts with too high torque because it may smash and broke plastic parts.
Screw frame triangles together with 300 mm threaded rods, cut those rods on different lengths if you need wider work area (for example tesla coil). Measure and check if all the distances between vertices are equal, correct that by screwing a nuts. Correctly assembled frame should stay steadily on flat surface.
From this point there is the time to start putting together wire guide carriage. Slide in smooth rods with linear bearings, with cable ties (straps) attach carriage to the bearings. Carriage is moved by M6 threaded rod (220 mm by default), inside carriage there is a place for two nuts and spring which are screwed onto this rod. Rod is kept in place by two bearings, placed inside frame part, on the rod end there is a pulley. Mount both stepper motors with gears and pulleys into their places. On the top, there is easy to mount coil tensioner rod and more problematic main drive rod (axle) which needs to be screwed into bigger gear and set of nuts along with washers.
Finalizing the mechanical part, there is a wire guide left. This part can be quickly attached or removed at any time by turning four screws. Guide can be mounted in two positions: far or close to the coils. Guide itself has a adjustable frictional wire tensioner and horizontally stiff arm with tip for wire guiding. Arm and rollers are on precise small bearings. Springs are made of thick steel and I think that it is obvious that to control the tension use screws regulation to squeeze the spring. After some time of exploitation tensioner washers wear out and should be replaced. There is also a very sophisticated electric component which needs to be mounted on one smooth rod - a homing micro-switch. Accomplish this with small cable tie, but firstly solder an cable to it and isolate connection.
This is wiring scheme for tensioner and guide.
Electronic and software
Electronics needs to handle two stepper motors and one switch (for homing), for this version is that all. In future there might be additionally a need for directional encoder and H bridge. Boards like CNC shield, Ramps and similar should do the job, but proper software configuration needs to be written. If you decide to make your own minimalistic board, its design can be found there, check this out for parts list and schematics. This board can be turned into Arduino like electronics by flashing a micro-controller with proper boot loader. All listed boards use AVR mcu family and popular stepstick motor drivers. In this repo (branch coil_winder) you can find dedicated, lightweight firmware, which by default works with atmega32 and mentioned DIY board. Any 3d printer firmware could be adopted but they are so heavy (too much for this task) and I haven't tested that out.
Custom electronics board. Endstop switch is connected to 3-pin connector marked SWITCH1 (bottom right corner as seen on image, top first pin is +5V not used for mechanical endstop). Motors are powered through common +12V jack connector.
Main coil winder repository contains controller_app directory with wxPython GUI application for connecting to the board, commands sending and generation. Launch app by running controler.py file, config.py contains configurable constants like maximum speed, work area length, change them to suit your config.
Notes about firmware configuration
Most of the configuration is focused in config.h header file. Every configurable constant is briefly described, but those worth mentioning are listed in snippet bellow. If you decided to have different work area set its value in Y_MAX. For different stepper motors (I have been using 200 and 48 full steps per revolution) adjust STEPS_PER_M_X and STEPS_PER_M_Y values are set as steps per revolution * 1000 (X) or steps per millimeter * 1000 (Y). Baud rate value 115200 is fine and I found higher than 9600 values to work better.
In the pinout section pins are addressed not with arduino numbering but rather avr-libc manner. If you got pin mapping related compiler error, check their presence in arduino_32U4.h. When porting to other other micro controller copy that file under other name and replace it under include directive in config.h. In the future I will be updating different board configurations - if you got your own new working one, then send me merge request.
#include
#include "arduino_32U4.h"
...
#define Y_MAX 150.0
#define STEPS_PER_M_X 12800000
#define STEPS_PER_M_Y 768000
#define BAUD 9600 // it's better to use 115200
...
#define X_STEP_PIN PC3
#define X_DIR_PIN PC2
#define X_MIN_PIN PA5
#define X_MAX_PIN DIO2
#define X_ENABLE_PIN PC4
#define X_INVERT_DIR
#define X_INVERT_MIN
#define X_INVERT_MAX
#define X_INVERT_ENABLE
#define Y_STEP_PIN DIO9
#define Y_DIR_PIN PC5
#define Y_MIN_PIN PD2
#define Y_MAX_PIN DIO7
#define Y_ENABLE_PIN DIO10
#define Y_INVERT_DIR
#define Y_INVERT_MIN
#define Y_INVERT_MAX
#define Y_INVERT_ENABLE
Operation
Machine usage requires a bit of practice, so i would suggest trying it first time on some non-important training materials. Launch controller application, a window similar to this bellow should pop up. Otherwise check console output or get wxPython in version 3 at least. At the bottom there is a status bar, displaying "Not connected" after starting. Set port device and baud from dropdown lists at top and try connect button. From now status bar should display machine position like: X0.0 Y0.0 F50.0, X stands for turn number, Y is carriage position, F is a feedrate (speed). On the right side there are two white text fields, top one contains log of performed actions, second underneath is a queue of planned commands which is send to machine on "Execute queue" button. Above status bar there are four buttons for manual steering but before that play, home the winder by clicking "Home". Any set of instructions being executed in progress can be stopped with "Stop" button, it comes useful when something is going wrong.
Whole process starts from mounting bobbin or template into the winders main axis, depending of the job there are several different tools which are provided. Small coils can be hold just by one side of the winder, for bigger ones there is adjustable hook from other side too. Correctly mounted bobbin does not wiggle or move in unwanted directions and is straight and geometrically centered much as possible. Take a spool of wire and set up one ending through the guide tensioner system, as it was presented on photo earlier. When bobbin sits tightly in place first step is to set the workarea margins. Use both sliders to set the position and "Go to" button to check the position. Correctly set margins make wire being wound evenly and close to the bobbin extreme walls positions. To apply new margins values use "Set margins" button. Speed value depends of desired winding precision and used wire, the thicker the wire is then lower the speed. Valid range is between 20-200 rpm, send new speed value to machine with "Set movement" button. Winding motor direction can be set to one choice: upwards (preferred) or downwards. Guide direction depends of the end, where you start new winding, by default start winding them from right end to left end. When typing wire diameter consider additional thickens for insulation and errors from irregularities, for wire 0.26 it might become 0.3.
Windings count is the number of turns to be wind, from this point a guide starting position and direction are important. If number of windings does not fit current layer and hits a established marginal position, next layer is started and guide direction changes to opposite. Before queuing new commands check proposed guide direction, because it changes automatically after queuing, to value right for next queue. Ending position for the guide is also calculated automatically to right value for next queuing task, but after preforming immediate "Stop" this position needs to be corrected by "Get starting pos" button. Assume that you have planned new queue but decided to delete it without executing, calculated position is invalid and needs to be corrected as well. By default queue is not cleared after executing, I'm not sure if thats right because it is permitted to execute same queue multiple times. For unexperienced users this might be a trouble so just "Clear queue" before every next step and "Get starting pos" after each "Stop" or queue undo - hmm seems like it can be automated in code.
In some conditions don't try to wind whole hundreds of turns at once, start by first and second layers and when everything seems to lay fine - queue the rest - otherwise fix some parameters like wire diameter, margin position or wire tension.
Bellow are some pictures of winding process. Bobbins can be bought, made of some pieces of plastic or printed on 3d printer (ABS only) as a two halves for gluing. If you want to print your custom bobbins, it is good to start from adjusting this model.
It is important to wind first layer evenly and pretty, turn close to turn, otherwise next layers become ugly and hard to wind evenly too.
Second layer in progress, this is 0.6 mm wire.
When layer is complete, all the sides are impregnated by applying a lacquer. It prevents wire insulation from grinding due to vibrations from alternating field and improves insulation at all.
This bobbin is finished and has exactly 490 turns of wire.
This additional tool allows to wind bobbin-less coils for electric motors.
On second page, a practical procedure of rebuilding a mains transformer is described.
- 1
- 2