Project in progress
Simple Wire Length Cutting Tool

Simple Wire Length Cutting Tool © GPL3+

This device runs a desired length and quantity of wires and cuts each length.

  • 6,425 views
  • 13 comments
  • 54 respects

Components and supplies

Necessary tools and machines

RotoZip
General Shop Tools, drill, bits, taps, etc.

About this project

Designer: Lonnie Sexton

Code Writers: Lonnie Sexton, Brandon Mutari & Julia Burlingham.

Hello world!

I would like to share this project I've been working using for over a year now. Pulling thousands of 22awg wires 8ft long off a 5000ft spool is no fun task. It's boring, it's prone to inaccuracy, it's boring, it takes 2 people 2 days to manually pull 706 22awg wires and it's boring. If you only have 1 spool (pulling 1 wire at a time) it takes much longer. With the Feed n Cut, you can just enter the desired length and quantity and presto, no lame tasks.

The Wiring Schematic hookup.

Click Here ==> (PDF) = Printable hook up chart.

I built the enclosure from poly-carbonate.250" thick sheets. They were recycled from an oil field product I saved from the going to a land fill.

The Sparkfun Bearing Holder Hubs (ROB-12328 x 4qty) are worth every penny.

Upright Bearing Hub ROB-12333

The wheel axles are from HPI On-Road RC Parts and the Sparkfun.250" OD - D-Shaft. Tapped the center at 6-32 and drilled a 1/16th pin hole.

ROB-12323 D-Shaft with 6-32 tap center

HPI Hex Hub

drilled 1/16th pin hole through the axle

Stepper Motor, T15 Pulleys.250"id

The Drive Wheel on bottom is connected to a nema 23 (200 step) 4 wire stepper motor and Sparkfun Big Easy Driver (An official by Brian S., not the cheap knock offs!). The driver, mounts, pulleys and motor are available from Sparkfun.

Stepper= ROB-13656; Pulleys = ROB-13597

Big Easy = ROB-12859

The top wheel or pitch wheel is pressed down by an HPI On-Road Shock.

Added a Sparkfun LCD 16x2 w/serial to display the state of the cycle. (LCD-09067)

This is just preparing for the 2nd phase of this project (Key Pad and LCD).

The cutter was made with a 1/4 scale servo (183torq oz per inch) and precision wire side cutters. I used some cable clamps to mount the cutters to the enclosure wall.

A short tool review...

I'm actually a little disappointed how easy is was to pull the handles off. Aven isn't the only guilty manufacturer if the handle slip issue. I've seen this from all the great tools. They can all do better. As for the cut produced they are A+. They shear the smallest awg wire smooth, no pinching. It's important when prepping small wires for exact fit into gold crimp pins.

Everbilt cable clamps converted to handle holders.

HiTec HS-755HB Servo ROB-12625

Aven Wire Cutters 10827F-ND

Everbilt Cable Clamps

The Control Panel Top holds the LCD, Power Switch, Key Pad (not shown) and start button.

12 to 5 volt DC Isolated Regulator. The small PTV12010 come with 8 small leads coming off the bottom. I created this small break out board for easy access.

12vdc to 5vdc Iso-Regulator

I skinned the top with carbon replica adhesive wrap.

The last piece is the wire spool holder.

Random Build Pictures...

The funnel was used to capture the incoming wire off the spool

as it sways from side to side coming off the reel.

Barrel Plug for incoming DC Power.

Arduino C+ Serial Menu Input

Learning to code this was more of a task then building the mechanical, it actually took me longer. I knew what I wanted it to do long before I knew how to make it happen. I spent a good 3 weeks of reading forums, Arduino libraries, reference, guides, etc. Spent some time talking to co-workers and friends. Most of the time and frustration went into trial and error. I broke down the code into chucks I needed to learn and tackled them one bit at a time.

  • Serial Input; taking a user input and storing it, and using it in functions.
  • Operating the Stepper Motor and Big Easy Driver.
  • Driving the stepper a certain number of steps.
  • Operating the Servo was pretty easy, I had previous experience on another project.
  • Operating the LCD. Sending display messages to the LCD. (more to come on this in later updates.)
  • Counting down a certain number of cycles then start at the beginning.

It all went smooth, but I got stuck on the counting function for a good 2 weeks. After weeks of torture and triumph it came down to a Julia that spend about 10 minutes looking at my code and helped fix a couple placement issues. I greatly appreciate getting the help from a true code master = Julia B!

Hope you find the project inspiring or helpful. Thanks for stopping by and good luck makers!

Sample Video

Finished Product

So far using this has been better than I could have planned. The accuracy is almost perfect. There is a small difference offset (+/-.125") at 96.00" (8ft).

Thank you for stopping by to check out the project.

<Exit>

Lonnie Sexton

Code

Wire Cutter CodeArduino
Load to Arduino UNO, Open a Serial Comm window, It will ask for a length in Inches, desired quantity and if you are ready. Entering Y will proceed with operation.
//Written by Lonnie Sexton 2017. Special Thanks to Julia B.
//for the help with fixing a probelm with the code. 
#include <math.h>               //#math
#include <Servo.h> //From Library
Servo servoMain; // Define Servo
#include <SoftwareSerial.h> // soft serial for LCD
#define stp 2 //define stepper
#define dir 3 //define stepper
#define MS1 4 //define stepper
#define MS2 5 //define stepper
#define MS3 6 //define stepper
#define EN  7 //define stepper

float a;              //variable assignment qty
float b;              //variable assignment inches
float c;              //variable assignment required motor steps
float W;              //removed from functions for now, might need later.
char junk = ' ';      //any random character input. 
char val;             // Data received from the serial port
char user_input;
int x;                //Probably over loaded on assignments, not sure. Remove later and test. 
int y;
int state;
SoftwareSerial mySerial(0, 11); // pin 11 = TX

void setup()          // set up
{
  pinMode(15, OUTPUT); // set the pin to input
  servoMain.attach(9); // servo on digital pin 9
  pinMode(13, OUTPUT); // led on pin 13
  pinMode(stp, OUTPUT); //B.E.D
  pinMode(dir, OUTPUT); //B.E.D
  pinMode(MS1, OUTPUT); //B.E.D
  pinMode(MS2, OUTPUT); //B.E.D
  pinMode(MS3, OUTPUT); //B.E.D
  pinMode(EN, OUTPUT); //B.E.D
  resetBEDPins(); //Set step, direction, microstep and enable pins to default states
  Serial.begin(9600);   // set up Serial library at 9600 bps
  mySerial.begin(9600); // set up serial port for 9600 baud
  Serial.println("Lets Cut Some Wires!"); //welcome message in serial window
  Serial.println("");
  Serial.flush(); //clear the input que. 
}

void loop()

{
  {
  mySerial.write("                "); // clear display
  mySerial.write("                ");

  mySerial.write(254); // move cursor to beginning of first line
  mySerial.write(128);
 
  mySerial.write("Solution Systems  Feed n Cut!");

  delay(2);
  }
  Serial.println("Enter Quantity, Press ENTER");        // user Input request qty
  while (Serial.available() == 0) ;                     // Wait here until input buffer has a character
  {
  
    a = Serial.parseFloat();                           // new command in 1.0 forward
    Serial.print("a = "); Serial.println(a, DEC);

    while (Serial.available() > 0)                      // .parseFloat() can leave non-numeric characters
    { junk = Serial.read() ; }                          // clear the keyboard buffer
  }

  Serial.println("Enter Length in Inches, Press ENTER");
  while (Serial.available() == 0) ;
  {
    
    b = Serial.parseFloat();
    Serial.print("b = "); Serial.println(b, DEC);
    while (Serial.available() > 0)
    { junk = Serial.read() ; }                          // clear the keyboard buffer

    c = (float( b*26 ));

    Serial.print("Motor Steps = ");
    Serial.println(c, DEC); Serial.println();
    }
    
  Serial.println("Ready to Begin? Press ENTER");        // user Input request Y or N?
  digitalWrite(EN, LOW);                                //Pull enable pin low to set FETs active and allow motor control
  while (Serial.available() == 0);                      // If data is available to read,
   { 
     val = Serial.read();                               // read it and store it in val
     if (val == 'y')
     { 
      Serial.println("Here We Go!");
      delay(10);
      for (a; a>0; a--){      // this step checks if the quantity entered (a) is greater than 0,...  and deducts 1 from a.
        Feedft();             // if it is it repeats the step feed and cut function again.
      }
     } 
     else {
     Serial.println("Restarting Setup...");             // otherwise restart
     }
   delay(10);                                           // Wait 10 milliseconds for next reading
  }
  { junk = Serial.read() ; }                           // clear the keyboard buffer
  
}

  
//Reset Big Easy Driver pins to default states
void resetBEDPins(){
  digitalWrite(stp, LOW);
  digitalWrite(dir, LOW);
  digitalWrite(MS1, LOW);  // leaving wired and in sketch for now, not using micro-step control at this time. 
  digitalWrite(MS2, LOW);
  digitalWrite(MS3, LOW);
  digitalWrite(EN, HIGH);
}

//Functions 
void Feedft(){
  Serial.println("Feeding Wire at default step mode.");
  digitalWrite(dir, LOW);                   //Pull direction pin low to move "forward"
  for(x= 1; x<c; x++){                      //Loop the forward stepping enough times for motion to be visible
    digitalWrite(stp,HIGH);                 //Trigger one step forward
    delay(1);
    digitalWrite(stp,LOW);                  //Pull step pin low so it can be triggered again
    delay(1);
  }                                         //Need to add a stepper done moving function here!!!!!!!!!!!!!<==================
   ServoMainCut();                          //Run the Cut Function
   delay(2000);   
   Serial.println("Cutting Wire!");         //Fair Warning.....
  // RepeatCount();                           //Run the repeat function
  { junk = Serial.read();}                  //Clear the keyboard buffer
}

//funtion Servo Cut
void ServoMainCut(){
   digitalWrite(13, HIGH);
   delay(100);
   digitalWrite(13, LOW);
   servoMain.write(177); // CUT!! Turn Servo Left to 176 degrees
   delay(750);          // Wait 1.5 second
   servoMain.write(65); // Open Cutter Turn Servo Left to 65 degrees
   digitalWrite(13, HIGH);
   delay(100);
   digitalWrite(13, LOW);
}

Schematics

Connection Diag
Layout graphic wsdcrkqpj5

Comments

Author

30percent
30percent
  • 2 projects
  • 9 followers

Additional contributors

  • R&d support / budget / time. by Ted B.
  • Technical support. by Alex S
  • Helping fix my code when i hit a wall. by Julia B.
  • Engineering and code support. by Brandon M

Published on

March 14, 2019

Members who respect this project

AdambenzPhotoDefaultPhotoDefaultDefaultDefaultSenku 2okmv3utqk

and 46 others

See similar projects
you might like

Similar projects you might like

Simple Arduino Digital Clock Without RTC

Project in progress by Annlee Fores

  • 116,664 views
  • 29 comments
  • 106 respects

Simple Arduino Uno - ESP 8266 Integration

Project tutorial by circuito.io team

  • 112,564 views
  • 25 comments
  • 93 respects

Simple Programmable Robotic Arm

Project showcase by Ryan Chan

  • 85,409 views
  • 75 comments
  • 219 respects

Simple FM Radio

Project tutorial by Alexander

  • 33,898 views
  • 14 comments
  • 35 respects

Simple Home Automation Using Bluetooth, Android and Arduino

Project tutorial by Prasanth K S

  • 27,436 views
  • 3 comments
  • 22 respects

Simple Arduino Battery Capacity Tester

Project showcase by sim-flynn-13

  • 19,538 views
  • 1 comment
  • 30 respects
Add projectSign up / Login