极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 28682|回复: 12

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

[复制链接]
发表于 2019-3-26 14:24:21 | 显示全部楼层 |阅读模式
本帖最后由 arduinoxyz 于 2019-3-26 14:25 编辑

设置好所需长度和数量的线材后,自动完成切割。
硬件材料
1*Arduino UNO
1*电机驱动器
1*23步进电机
1*12v转5v稳压模块
1*支架、螺钉、垫片等
2*轮胎
灵感来源
人工线轴上拉出几千根长20cm的22awg电线并不是一件有趣的事。它很无聊,而且很容易出现不准确。需要2个人花上2天才能手动拉完706个22awg电线。如果你只有一个线轴(一次拉1个线),则需要更长的时间。使用Arduino切线机,你需输入所需的长度和数量,即可预先输入所需的长度和数量,就可以自动完成。

  1. #include <math.h>               //#math
  2. #include <Servo.h> //From Library
  3. Servo servoMain; // Define Servo
  4. #include <SoftwareSerial.h> // soft serial for LCD
  5. #define stp 2 //define stepper
  6. #define dir 3 //define stepper
  7. #define MS1 4 //define stepper
  8. #define MS2 5 //define stepper
  9. #define MS3 6 //define stepper
  10. #define EN  7 //define stepper

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

  22. void setup()          // set up
  23. {
  24.   pinMode(15, OUTPUT); // set the pin to input
  25.   servoMain.attach(9); // servo on digital pin 9
  26.   pinMode(13, OUTPUT); // led on pin 13
  27.   pinMode(stp, OUTPUT); //B.E.D
  28.   pinMode(dir, OUTPUT); //B.E.D
  29.   pinMode(MS1, OUTPUT); //B.E.D
  30.   pinMode(MS2, OUTPUT); //B.E.D
  31.   pinMode(MS3, OUTPUT); //B.E.D
  32.   pinMode(EN, OUTPUT); //B.E.D
  33.   resetBEDPins(); //Set step, direction, microstep and enable pins to default states
  34.   Serial.begin(9600);   // set up Serial library at 9600 bps
  35.   mySerial.begin(9600); // set up serial port for 9600 baud
  36.   Serial.println("Lets Cut Some Wires!"); //welcome message in serial window
  37.   Serial.println("");
  38.   Serial.flush(); //clear the input que.
  39. }

  40. void loop()

  41. {
  42.   {
  43.   mySerial.write("                "); // clear display
  44.   mySerial.write("                ");

  45.   mySerial.write(254); // move cursor to beginning of first line
  46.   mySerial.write(128);

  47.   mySerial.write("Solution Systems  Feed n Cut!");

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

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

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

  67.     c = (float( b*26 ));

  68.     Serial.print("Motor Steps = ");
  69.     Serial.println(c, DEC); Serial.println();
  70.     }
  71.    
  72.   Serial.println("Ready to Begin? Press ENTER");        // user Input request Y or N?
  73.   digitalWrite(EN, LOW);                                //Pull enable pin low to set FETs active and allow motor control
  74.   while (Serial.available() == 0);                      // If data is available to read,
  75.    {
  76.      val = Serial.read();                               // read it and store it in val
  77.      if (val == 'y')
  78.      {
  79.       Serial.println("Here We Go!");
  80.       delay(10);
  81.       for (a; a>0; a--){      // this step checks if the quantity entered (a) is greater than 0,...  and deducts 1 from a.
  82.         Feedft();             // if it is it repeats the step feed and cut function again.
  83.       }
  84.      }
  85.      else {
  86.      Serial.println("Restarting Setup...");             // otherwise restart
  87.      }
  88.    delay(10);                                           // Wait 10 milliseconds for next reading
  89.   }
  90.   { junk = Serial.read() ; }                           // clear the keyboard buffer
  91.   
  92. }

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

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

  119. //funtion Servo Cut
  120. void ServoMainCut(){
  121.    digitalWrite(13, HIGH);
  122.    delay(100);
  123.    digitalWrite(13, LOW);
  124.    servoMain.write(177); // CUT!! Turn Servo Left to 176 degrees
  125.    delay(750);          // Wait 1.5 second
  126.    servoMain.write(65); // Open Cutter Turn Servo Left to 65 degrees
  127.    digitalWrite(13, HIGH);
  128.    delay(100);
  129.    digitalWrite(13, LOW);
  130. }
复制代码







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2019-4-1 23:19:23 来自手机 | 显示全部楼层
這個有趣喔!不過可以看一下實機的樣子嗎?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-3 21:08:09 | 显示全部楼层
cjs1748 发表于 2019-4-1 23:19
這個有趣喔!不過可以看一下實機的樣子嗎?

可以的,这里没办法传视频,你留个邮箱,我发给你。
回复 支持 反对

使用道具 举报

发表于 2019-4-5 07:56:44 来自手机 | 显示全部楼层
你好我想做一个害羞的郁金香,你方便加我QQ交流一下吗(1148622948注明来人)
回复 支持 反对

使用道具 举报

发表于 2019-4-5 10:12:21 来自手机 | 显示全部楼层
或者发一个比较详细的制作过程给我(有图),谢谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-5 10:45:42 | 显示全部楼层
1148622948 发表于 2019-4-5 07:56
你好我想做一个害羞的郁金香,你方便加我QQ交流一下吗(1148622948注明来人) ...

已加,稍后发给你
回复 支持 反对

使用道具 举报

发表于 2019-4-10 14:49:22 | 显示全部楼层
同求样机视频,邮箱[email protected],谢谢。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-10 18:41:42 | 显示全部楼层
SDLIUYUE 发表于 2019-4-10 14:49
同求样机视频,邮箱,谢谢。

已发送,请查收邮箱
回复 支持 反对

使用道具 举报

发表于 2019-4-14 08:27:13 来自手机 | 显示全部楼层
求样机视频,[email protected]
回复 支持 反对

使用道具 举报

发表于 2019-4-14 21:55:17 | 显示全部楼层
[email protected] 想看视频谢谢,怎么设置参数,没看到按钮
回复 支持 反对

使用道具 举报

发表于 2019-4-22 19:44:21 | 显示全部楼层

非常棒的设计!!谢谢分享
回复 支持 反对

使用道具 举报

发表于 2019-4-24 17:50:58 来自手机 | 显示全部楼层
好特别的設計!!感谢分享!!
回复 支持 反对

使用道具 举报

发表于 2019-4-24 20:09:54 | 显示全部楼层
也可以发一个详细的制作过程给我嗎?? 谢谢!! QQ號碼:3425087054
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 06:20 , Processed in 0.040319 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表