Introduction: Semi-automatic Spoke Threading Machine

About: I like figuring out how things work and learning new skills. I am a software engineer and so making things is an outlet for me.
Threading spokes with a cyclo spoke threading machine is fun and easy.  The cyclo spoke thread rolling die rolls the threads by way of cold forging.  I find two passes works well, with the second pass set for a deeper thread.  However, threading 60 spokes as for a highwheel of a Penny Farthing is a repetitive task.  With the possibility of building a few wheels, I gave some thought to automating the process.
My solution uses a cordless screwdriver, a microcontroller, and an H-bridge driver,   How many threads get rolled is easily configured by modifying the timing on the software running on the microcontroller and the speed setting on the screwdriver.
I have read about other (very expensive) machines that thread spokes very quickly at the pull of a lever.   My solution, threads spokes at the touch of a button.

Step 1: How It Works

Bill of materials:
Cordless screwdriver
microcontroller, H-bridge
Bracket hardware

The idea is to automatically turn the crank handle on the threading machine clockwise
for a period of time and then turn it  counterclockwise by controlling the screwdriver.
As the handle is turned clockwise, the die "grabs" the spoke and advances. 
Rather than have the screwdriver advance along with the handle, a 90 degree crank bit
is built for the screwdriver.  This crank bit gets a washer at the tip which accepts the 
handle.  The handle freely slides in and out through the washer.  
Finally, a spring is loaded on the handle.   Now when the spoke is inserted and
pushed against the die, the spring causes the die to slightly force itself onto the spoke,
allowing the die to "grab" and advance.

Step 2: Electronics

Controlling a motor to turn clockwise/counter clockwise at the touch of a button requires an H-bridge.
The microcontroller interfaces to the H-bridge which in turn controls the motor.
I used bridge A of the L298N dual full-bridge driver (http://www.digikey.com/product-detail/en/L298N/497-1395-5-ND/585918?WT.z_cid=ref_octopart_dkc_buynow). 
It includes a pin, ENABLE A, which when low, it turns the motor off.
You set high/low INPUT 1/INPUT 2 to prepare for clockwise turning. and low/high for counter clockwise.  The button is tied to a pull-up resistor and grounded when pressed.  Setting ENABLE A high gets the motor running, looking for adventure.
A PIC16F88 microcontroller was used but most any other would do equally.
Pictured is the simplified schematic.  Software is written in JAL which follows in its entirety..

-- This program is for controlling the cyclo spoke threading machine
-- for the Semi-automatic spoke threading machine project on instructables
-- by Carlitos
-- B2 is input button tied to pullup resistor.  Button being used is normally on
-- so normally it is grounded.  Pressing button causes input to go high.
--  which will trigger motor control cycle
-- B4 is motor enable (high is enabled)
-- B6, B7 is motor direction where high/low is clockwise and low/high is counterclockwise
-- motor control cycle:
--    1. enable motor set to run clockwise
--    2. run clockwise for x seconds
--    3. run counterclockwise for x+delta seconds
--    4. disable motor

include 16f88

-- set all IO as digital
enable_digital_io()

pragma target clock  8_000_000
pragma target OSC  INTOSC_NOCLKOUT
OSCCON_IRCF = 0b_111
pragma target WDT  disabled

-- Output pins
pin_b4_direction = output  -- motor enable
pin_b6_direction = output  -- motor i1
pin_b7_direction = output  -- motor i2

-- Input pins
pin_b2_direction = input  -- button with pullup resistor used to trigger motor

include delay
var word delayclockwise = 90
var word delaycounterclockwise = 100

pin_b4 = low  -- disable motor
pin_b6 = high -- set for clockwise
pin_b7 = low  -- set for clockwise

forever loop
      if pin_b2 == high then  -- button pressed
         delay_100ms(5)

         pin_b4 = high -- enable motor
         delay_100ms(delayclockwise)
         pin_b4 = low -- disable motor

         pin_b6 = low  -- set for counterclockwise
         pin_b7 = high -- set for counterclockwise

         pin_b4 = high -- enable motor
         delay_100ms(delaycounterclockwise)
         pin_b4 = low -- disable motor

         pin_b6 = high -- set for clockwise
         pin_b7 = low  -- set for clockwise
      end if

      delay_100ms(1) -- wait a little before polling button
end loop


Step 3: Hardware

A bracket was welded up using angle iron.  It bolts on securely to the spoke threading machine and supports the screwdriver's geared motor with electrical tie wraps. 
The crank bit was welded with 3/8" rod and a washer.  A compression spring was cut to size.  The threading machine conveniently accepts a vise.

Instructables Design Competition

Participated in the
Instructables Design Competition