16. Wildcard Week¶
This week Hero shot!¶
This week Checklist¶
This week I want to make some copper wire artwork produce by machine, but I did’t have machine to make it, so I will try to make a wire bending machine to make copper wire artwork.
- [✓] Documented how I made my creation
- [✓] Described problems and how I fixed them
- [✓] Included my design files and hero shot of the result
Research¶
I have searched a lot of videos/instructions and this is what I think is most likely to be achieved with the resources on hand.
Arduino 3D Wire Bending Machine
Hands-on¶
▼ Print out 3DP gear components first, and collect mechanical and electronic parts from old machines.
▼ I choose to use this board - Makerbase MKS DLC V2.0, because it can be programmed using the Arduino IDE.
▼ Measure and arrange parts.
▼ Mount to MDF board.
▼ Hardware part of the wire bending machine is roughly completed.
Problems¶
█ 1. Stepper motor too hot!
When the machine is running about 10 minutes, one of the steppers will be very hot, and the servo motor will continue to vibrate slightly. I modified the program so that the motor will stop power supply when it reaches the desired position, to prevent the motor overheat.
In addition, I adjusted the maximum current of the motor driver board according to the advice of the instructors, and now there is no problem of overheating.
█ 2. Control board out of order…
▼ I’ve tried everything I can think to try to repair it, but still not work, In the end I decided to buy two more control boards.
▼ The video below is one of the testing before the control board broke down.
Coding¶
#include <Servo.h>
const int servoPin = A5;
Servo myservo;
#define enPin 8
// stepper motor X
#define stepXPin 2
#define dirXPin 5
// stepper motor Y
#define stepYPin 3
#define dirYPin 6
#define stepsPerRevolution 200
#define delayms 1000
void setup() {
Serial.begin(115200);
pinMode(servoPin, OUTPUT);
pinMode(stepXPin, OUTPUT);
pinMode(dirXPin, OUTPUT);
pinMode(stepYPin, OUTPUT);
pinMode(dirYPin, OUTPUT);
pinMode(enPin , OUTPUT);
digitalWrite(enPin, HIGH); // disable Stepper
action001(); // make a star shape
delay(3000);
}
void loop() {
}
void feed(int distance) {
digitalWrite(enPin, LOW); // enable Stepper
digitalWrite(dirYPin, HIGH);
for (int i = 0; i < stepsPerRevolution * (distance / 2); i++) {
digitalWrite(stepYPin, HIGH);
delayMicroseconds(delayms);
digitalWrite(stepYPin, LOW);
delayMicroseconds(delayms);
}
delay(500);
digitalWrite(enPin, HIGH); // disable Stepper
}
void turn(boolean direction, int angle) {
digitalWrite(enPin, LOW); // enable Stepper
digitalWrite(dirXPin, direction);
for (int i = 0; i < stepsPerRevolution * angle; i++) {
digitalWrite(stepXPin, HIGH);
delayMicroseconds(delayms);
digitalWrite(stepXPin, LOW);
delayMicroseconds(delayms);
}
delay(500);
}
void header(boolean position) {
myservo.attach(servoPin);
if (position) {
myservo.write(20);
} else {
myservo.write(110);
}
delay(1500); // delay for 1.5 second
myservo.detach();
}
void action001() {
header(false); // ⬇ true = high position, false = position
feed(30); // feed 25mm
for (int j = 0; j < 5; j++) {
header(true); // ⬆
turn(HIGH, 4); // ▶ to +4
for (int i = 0; i < 4; i++) {
feed(5); // feed 5mm
turn(HIGH, 1); // ▶
} // ▶ to +8 尖角轉彎
turn(LOW, 6); // ◀ to 2
header(false); // ⬇
feed(25); // feed 25mm
header(true); // ⬆
turn(LOW, 5); // ◀ to -3
turn(HIGH, 2); // ◀ to -1
header(false); // ⬇
feed(30); // feed 25mm
turn(HIGH, 1); // ▶ to 0
}
}
Downloads¶
Arduino program for wire bending machine (Makerbase MKS DLC 2.0 board)
week16.ino