I need to cut about 1000 pieces of wire of about the same length (5.5cm). So I built this “quick and dirty” contraption to do the job for me:
I’m not sure if it would have been faster to cut them by hand, but it definitely wouldn’t have been so much fun. Also, I doubt that cutting the wire manually would result in such nice uniform lengths. Finally, I might need even more wires in the future and I know I’ll be very happy to be able to pull this thing out of the junk box again.
The wire feed and the cutter action are both driven by their own DC motor (RB350050-0A101R gear motor). The motors are driven by an Adafruit Motor shield, I found in my parts box. The shield (and the motors) are powered with 12V from my lab power supply.
The cutter action has one end stop for the “open” state. When cutting the wire, the motor pulls the upper grip down for a “hand tuned” amount of time and then opens the cutter again by running backwards until the end stop is reached. The feeder motor is driven for a fixed amount of time with no feedback loop at all. The rollers on the wire feed are cut pieces of a plastic wine cork…
The whole thing is controlled by an Arudino Duemillenove with a little Arduino sketch, using the Adafruit library for the motor shield:
#include <AFMotor.h> int switch_pin = A0; AF_DCMotor cutterMotor(4); AF_DCMotor feedMotor(1); void setup() { Serial.begin(115200); Serial.println("I'm cutting the red wire!"); pinMode(switch_pin, INPUT_PULLUP); // turn on motor cutterMotor.setSpeed(255); cutterMotor.run(RELEASE); feedMotor.setSpeed(255); feedMotor.run(RELEASE); } int count=0; int wanted=290; void snip() { // Cut cutterMotor.run(FORWARD); delay(800); // Release cutterMotor.run(BACKWARD); while(digitalRead(switch_pin)) delay(1); // Until the upper endstop is reached cutterMotor.run(RELEASE); Serial.print(++count); Serial.println("pcs"); // Stop when the wanted number of wires is cut if(count>=wanted) while(true); } void loop() { // Feed the wire feedMotor.run(FORWARD); delay(630); // The wire length is determined by this delay feedMotor.run(RELEASE); // Cut it... snip(); }
3 comments