Billiga Arduino kontrollerade 3-axlig pennplotter
Syftet med detta projekt var att göra en 3-axlig pennplotter så billigt jag kunde. Förutsatt att du redan har en Arduino slutade kostar mig $30 att bygga. Ni måste förstå att de stegmotorer som är inuti CD-ROM inte är stark. Om pennan kommer ner för långt kommer det sluta motorerna från att flytta. Detta skadar inte motorerna men jag trodde det skulle vara värt att nämna. Men om du söker efter ett billigt sätt att experimentera med 3-axlig här kan vara för dig.
Programmet läser binära 0 & 1s lagras i en word-matris i rad/kolumn mode & sedan styr motorerna därefter. Du kan ändra vad det skrivs ut genom att ändra data i matrisen "bild". Det är ganska grundläggande & vara inte så svårt att förstå eller ändra för att passa dina behov bättre.
Jag ingår den schematiska jag följde för ledningsdragning H-Bridge Motor drivrutinerna (SN754410NE). Jag ber om ursäkt för att inte ha ett komplett schema jag inte har hittat ett enkelt sätt att göra dem. Jag använde en LM317 5V regulator för varje H-brygga, men ärligt eftersom jag använt en dator strömförsörjning till ge mig 5V du inte borde ens behöver LM317. Du kan bara ta 5v från strömförsörjningen & tråd det till varje H-brygga. I mitt fall byggt jag kontrollstyrelsen innan du väljer ett nätaggregat.
Del lista kvantitet kostnad Totala
H-Bridge Motor Driver 1A (SN754410NE) 3 $2,35 $29.25
Spänningsregulator (LM317) 3 ~$1.95
10uF/25V kondensator 3 ~$0.45
Används CD-ROM 3 ~$5.00
Arduino Duemilanove/UNO (detta indestructible förutsätter att du redan har ett) ;)
Om du inte redan har en Arduino kommer att den totala kostnaden ligga närmare $60.00.
Om du inte vill hämta zip-filen, är koden nedan:Början
#include < Stepper.h >
ändra detta till antalet steg på din motor
#define steg 200
skapa en instans av klassen stepper, ange
antalet steg av motorn och stiften har
bifogas
Stepper stepperX (steg, 6, 7, 8, 9); x (överst) plattform
Stepper stepperY (steg, 2, 3, 4, 5); y (nederst) plattform
Stepper stepperZ (steg, 10, 11, 12, 13); z penna
int x_inc = 0;
int y_inc = 0;
int z_pos = 0;
ord bild [16] = {
0b0000001110000000,
0b0010011111000100,
0b0010001110000100,
0b0010000100000100,
0b0011111111111100,
0b0000011111000000,
0b0000011111000000,
0b0000001110000000,
0b0000011111000000,
0b0000011111000000,
0b0000110001100000,
0b0001100000110000,
0b0001100000110000,
0b0011100000111000,
0b0011100000111000,
0b1111111111111111
};
void setup()
{
ange hastigheten på motorerna till 60 varv
stepperX.setSpeed(60); botten (60 rpm)
stepperY.setSpeed(60); topp (60 rpm)
stepperZ.setSpeed(60); Pen (60 rpm);
Delay(2000);
}
void loop()
{
för (int rad = 0; rad < 16; rad ++) {
penUp();
stepperX.step(-x_inc);
x_inc = 0;
för (int kolumn = 0; kolumnen < 16; kolumn ++) {
booleska pixel = bitRead(image[row],column);
IF(pixel == 1) {
penDown();
Flytta framåt 5 steg för x-axeln för varje bit i matrisen
stepperX.step(10);
x_inc = x_inc + 10.
Delay(15);
}
annat {
penUp();
Flytta framåt 5 steg för x-axeln för varje bit i matrisen
stepperX.step(10);
x_inc = x_inc + 10.
Delay(15);
}
}
penUp();
Position y-axeln för nästa rad
stepperY.step(10);
y_inc = y_inc + 10.
Delay(15);
}
penUp();
Returnera X/Y-axel tillbaka till utgångsläget
stepperX.step(-x_inc);
stepperY.step(-y_inc);
Oändlig Loop
While(1) {
}
}
void penDown()
{
Om pennan lyfts
om (z_pos == 0) {
flytta pennan till papperet
stepperZ.step(83);
Delay(15);
z_pos = 83.
}
}
void penUp()
{
Om pennan mot papperet
IF(z_pos == 83) {
flytta penna från papper
stepperZ.step(-83);
Delay(15);
z_pos = 0;
}
}
SLUTET