Het doel van dit project was om een 3-as penplotter zo goedkoop als ik kon. Veronderstellend hebt u reeds een Arduino eindigde het kost me $30 te bouwen. Gelieve te begrijpen dat de stappenmotoren die binnen CD-ROMS niet sterk zijn. Als de pen neer te ver komt stopt de motoren van het bewegen. Dit is niet schadelijk voor de motoren, maar ik dacht dat het zou het vermelden waard. Maar als u op zoek bent naar een goedkope manier om te experimenteren met 3 assen is dit wellicht voor u.
Het programma leest de binaire 0 & 1s opgeslagen in de matrix van een woord in de rij/kolom mode & vervolgens dienovereenkomstig bepaalt de motoren. U kunt wijzigen wat het wordt afgedrukt door het veranderen van de gegevens in de array "beeld". Het is vrij basic & moet niet te moeilijk te begrijpen of wijzigen aanpassen aan uw wensen beter.
Ik opgenomen het schema dat ik volgde voor de bedrading van de H-Bridge Motor Drivers (SN754410NE). Ik verontschuldig me voor het niet hebben van een compleet schema, ik heb niet gevonden een gemakkelijke manier om hen te maken. Ik gebruikte een LM317 5V regulator voor elke H-brug, maar eerlijk gezegd omdat ik gebruikte een computer voeding te geven me 5V u moet niet zelfs nodig van de LM317. U kon slechts nemen de 5v van de voeding & draad het aan elke H-Bridge. In mijn geval bouwde ik de control board voor het kiezen van een voeding.
Deel lijst hoeveelheid kosten Totale
H-Bridge Motor Driver 1A (SN754410NE) 3 2,35 dollar $29.25
Voltage Regulator (LM317) 3 ~$1.95
10uF/25V condensator 3 ~$0.45
Used CD-ROM 3 ~$5.00
Arduino Duemilanove/UNO (dit onverwoestbaar wordt ervan uitgegaan dat u al een) ;)
Als u niet al een Arduino is de totale kosten zullen dichter bij $60,00.
Begin
#include < Stepper.h >
dit omzetten in het aantal stappen op uw motor
#define stappen 200
Maak een instantie van de klasse van de stepper, opgeven
het aantal stappen van de motor en de pinnen zijn er
gekoppeld aan
Stepper stepperX (stappen 6, 7, 8, 9); x (boven) platform
Stepper stepperY (trappen, 2, 3, 4, 5); y (onder) platform
Stepper stepperZ (stappen, 10, 11, 12, 13); z pen
int x_inc = 0;
int y_inc = 0;
int z_pos = 0;
woord afbeelding [16] = {}
0b0000001110000000,
0b0010011111000100,
0b0010001110000100,
0b0010000100000100,
0b0011111111111100,
0b0000011111000000,
0b0000011111000000,
0b0000001110000000,
0b0000011111000000,
0b0000011111000000,
0b0000110001100000,
0b0001100000110000,
0b0001100000110000,
0b0011100000111000,
0b0011100000111000,
0b1111111111111111
};
VOID Setup
{
Zet de snelheid van de motoren naar 60 RPMs
stepperX.setSpeed(60); bodem (60 rpm)
stepperY.setSpeed(60); Top (60 rpm)
stepperZ.setSpeed(60); Pen (60 rpm);
delay(2000);
}
void loop
{
voor (int rij = 0; rij < 16; rij ++) {}
penUp();
stepperX.step(-x_inc);
x_inc = 0;
voor (int kolom = 0; kolom < 16; kolom ++) {}
Booleaanse pixel = bitRead(image[row],column);
if(pixel == 1) {}
penDown();
verplaatsen van de x-as vooruit 5 stappen voor elke bit in de matrix
stepperX.step(10);
x_inc = x_inc + 10;
delay(15);
}
else {}
penUp();
verplaatsen van de x-as vooruit 5 stappen voor elke bit in de matrix
stepperX.step(10);
x_inc = x_inc + 10;
delay(15);
}
}
penUp();
Positie y-as voor volgende rij
stepperY.step(10);
y_inc = y_inc + 10;
delay(15);
}
penUp();
Terug naar X/Y-as terug naar de uitgangspositie
stepperX.step(-x_inc);
stepperY.step(-y_inc);
Eindeloze lus
while(1) {}
}
}
VOID penDown()
{
Als de pen wordt verhoogd
Als (z_pos == 0) {}
de pen te verplaatsen naar het papier
stepperZ.step(83);
delay(15);
z_pos = 83;
}
}
VOID penUp()
{
Als de pen tegen het papier
if(z_pos == 83) {}
pen uit de buurt van papier te verplaatsen
stepperZ.step(-83);
delay(15);
z_pos = 0;
}
}
EINDE