xinxi2014 发表于 2020-7-9 10:15:26

[项目分享]Arduino切线机剪线机

本帖最后由 xinxi2014 于 2020-7-9 09:41 编辑


http://bbs.elecfans.com/data/attachment/forum/201903/26/005701q6vinlnrqmz0hqj0.jpg.thumb.jpg
设置好所需长度和数量的线材后,自动完成切割。硬件材料1*Arduino UNO1*电机驱动器1*23步进电机1*12v转5v稳压模块1*支架、螺钉、垫片等2*轮胎灵感来源人工线轴上拉出几千根长20cm的22awg电线并不是一件有趣的事。它很无聊,而且很容易出现不准确。需要2个人花上2天才能手动拉完706个22awg电线。如果你只有一个线轴(一次拉1个线),则需要更长的时间。使用Arduino切线机,你需输入所需的长度和数量,即可预先输入所需的长度和数量,就可以自动完成。http://bbs.elecfans.com/data/attachment/forum/201903/26/005710dqgfrgomqfrgd6gl.png.thumb.jpg
http://bbs.elecfans.com/data/attachment/forum/201903/26/005718dnzdyyyvnt1nl2rn.png.thumb.jpg
http://bbs.elecfans.com/data/attachment/forum/201903/26/005726lr5lqzqu74b7w7ck.png.thumb.jpg
http://bbs.elecfans.com/data/attachment/forum/201903/26/005734rsax1zskcz8ow168.png.thumb.jpg
http://bbs.elecfans.com/data/attachment/forum/201903/26/005740a88ne554js5e6g1v.png.thumb.jpg
http://bbs.elecfans.com/data/attachment/forum/201903/26/005748vo4kz0wwvjyl9w47.png.thumb.jpg
http://bbs.elecfans.com/data/attachment/forum/201903/26/005754guudu2s2rrcf0oq6.png.thumb.jpg
http://bbs.elecfans.com/data/attachment/forum/201903/26/005801tp3vqvdlqq3hxdln.png.thumb.jpg
http://bbs.elecfans.com/data/attachment/forum/201903/26/005702wtars9a65qfqqf0s.jpg.thumb.jpg

[*]#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 EN7 //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 SystemsFeed 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);
[*]}






页: [1]
查看完整版本: [项目分享]Arduino切线机剪线机