Welcome! Log In Create A New Profile

Advanced

impresora 3d

Posted by vicenfranco 
impresora 3d
November 06, 2014 09:36AM
Muy buenos dias, estoy realizando un proyecto sobre una impresora 3d. El tema esta en que el programa debo de realizar yo y estoy tratando de mover los motores de paso y no estoy consiguiendo.
Mi algoritmo esta diseñado para realizar un cubo, al ejecutar el programa el motor hace un ruido y no gira. Alguna ayuda por favor? adjunto aca mi algoritmo

#define VELOCIDAD 1700 //Define la velocidad del motor, cuanto mas bajo mas rapido
#define VELOCIDAD2 2000 //Define la velocidad del motor, cuanto mas bajo mas rapido
// definimos todas los motores, los llamamos X, Y(2), Z y E

#define X_STEP_PIN 54//A0
#define X_DIR_PIN 55//A1
#define X_ENABLE_PIN 38
#define X_MIN_PIN 3
#define X_MAX_PIN 2

#define Y_STEP_PIN A6
#define Y_DIR_PIN A7
#define Y_ENABLE_PIN A2
#define Y_MIN_PIN 14
#define Y_MAX_PIN 15

#define Z_STEP_PIN 46
#define Z_DIR_PIN 48
#define Z_ENABLE_PIN A8
#define Z_MIN_PIN 18
#define Z_MAX_PIN 19

#define E_STEP_PIN 26
#define E_DIR_PIN 28
#define E_ENABLE_PIN 24

//Introducimos las variables que se iran modificando de acuerdo a nuestro interes

int i=0;
int aux=0;
int c=0;
int pasos = 1800;
int pasitos = 200;

void setup()
{
Serial.begin(9600);
pinMode(X_STEP_PIN, OUTPUT); // configura el 'pin' como salida
pinMode(X_DIR_PIN, OUTPUT); // configura el 'pin' como salida
pinMode(X_ENABLE_PIN, OUTPUT); // configura el 'pin' como salida

pinMode(Y_STEP_PIN , OUTPUT); // configura el 'pin' como salida
pinMode(Y_DIR_PIN, OUTPUT); // configura el 'pin' como salida
pinMode(Y_ENABLE_PIN, OUTPUT); // configura el 'pin' como salida

pinMode(Z_STEP_PIN , OUTPUT); // configura el 'pin' como salida
pinMode(Z_DIR_PIN , OUTPUT); // configura el 'pin' como salida
pinMode(Z_ENABLE_PIN, OUTPUT); // configura el 'pin' como salida

pinMode(E_STEP_PIN, OUTPUT); // configura el 'pin' como salida
pinMode(E_DIR_PIN, OUTPUT); // configura el 'pin' como salida
pinMode(E_ENABLE_PIN, OUTPUT); // configura el 'pin' como salida


}

//Aqui desarrollamos nuestra logica o ciclos de repeticion donde inicaremos la impresion
void loop()
{
while(c<=5)
{c++;
pasos = 1800;
while(pasos>=0)
{
/*En esta sesion vamos a imprimir en el eje x, primero lo habilitamos
luego marcamos la direccion para luego en el ciclo for imprimirlo*/

digitalWrite(X_ENABLE_PIN, LOW);//habilita el motor x
delay(100);
digitalWrite(X_ENABLE_PIN, HIGH);//habilita el motor x
digitalWrite(X_DIR_PIN, HIGH);


digitalWrite(E_ENABLE_PIN, LOW);//habilita el motor x
delay(100);
digitalWrite(E_ENABLE_PIN, HIGH);//habilita el motor x
digitalWrite(E_DIR_PIN, HIGH);

for(int i=0; i<pasos; i++) // hace girar el motor en sentido +x

{
digitalWrite(X_STEP_PIN, HIGH);
delayMicroseconds(VELOCIDAD);//velocidad de giro declarado al inicio
digitalWrite(X_STEP_PIN, LOW);
delayMicroseconds(VELOCIDAD);//velocidad de giro declarado al inicio
Serial.print(VELOCIDAD);

digitalWrite(E_STEP_PIN, HIGH);
delayMicroseconds(VELOCIDAD2);//velocidad de giro declarado al inicio
digitalWrite(E_STEP_PIN, LOW);
delayMicroseconds(VELOCIDAD2);//velocidad de giro declarado al inicio

Serial.println(i);

Serial.print(VELOCIDAD2);


}

digitalWrite(X_ENABLE_PIN, LOW);//desabilita el motor x

/*En esta sesion vamos a imprimir en el eje y, primero lo habilitamos
luego marcamos la direccion para luego en el ciclo imprimirlo*/

digitalWrite(Y_ENABLE_PIN, HIGH);//habilita el motor y
digitalWrite(Y_DIR_PIN, HIGH);

for(int i=0; i<pasos; i++)// hace girar el motor en sentido +y
{
digitalWrite(Y_STEP_PIN, HIGH);
digitalWrite(Y_STEP_PIN, LOW);
delayMicroseconds(VELOCIDAD);//velocidad de giro declarado al inicio

digitalWrite(E_STEP_PIN, HIGH);
digitalWrite(E_STEP_PIN, LOW);
delayMicroseconds(VELOCIDAD2);//velocidad de giro del estrusor
}

digitalWrite(Y_ENABLE_PIN, LOW); //desabilita el motor y

digitalWrite(X_ENABLE_PIN, HIGH);//habilita el motor x
digitalWrite(X_DIR_PIN, LOW);

/*En esta sesion vamos a imprimir en el eje -X, primero lo habilitamos
luego marcamos la direccion para luego en el ciclo imprimirlo*/

for(int i=0; i<pasos; i++)//hace girar el motor el -x
{
digitalWrite(X_STEP_PIN, LOW);
digitalWrite(X_STEP_PIN, HIGH);
delayMicroseconds(VELOCIDAD);//velocidad del motor declarado al inicio

digitalWrite(E_STEP_PIN, HIGH);
digitalWrite(E_STEP_PIN, LOW);
delayMicroseconds(VELOCIDAD2);//velocidad de giro del estrusor
}

digitalWrite(X_ENABLE_PIN, LOW);//desabilida el motor x

/*En esta sesion vamos a imprimir en el eje -y, primero lo habilitamos
luego marcamos la direccion para luego en el ciclo imprimirlo*/

digitalWrite(Y_ENABLE_PIN, HIGH);//habilita el motor y
digitalWrite(Y_DIR_PIN, LOW);

for(int i=0; i<pasos; i++)//hace girar el motor en -y
{
digitalWrite(Y_STEP_PIN, LOW);
digitalWrite(Y_STEP_PIN, HIGH);
delayMicroseconds(VELOCIDAD);//velocidad declarado al inicio
digitalWrite(E_STEP_PIN, HIGH);
digitalWrite(E_STEP_PIN, LOW);
delayMicroseconds(VELOCIDAD2);//velocidad de giro del estrusor
}

digitalWrite(Y_ENABLE_PIN, LOW);//desabilita el motor y

pasos = pasos-200;

/*En este bloque moveremos los motores X, Y y E. Los motores
X e y se moveran en diagonal en cambio el motor E se mueve en
sentido contrario chupando un poco el abs */

digitalWrite(X_ENABLE_PIN, HIGH);//habilita el motor x
digitalWrite(X_DIR_PIN, HIGH);

digitalWrite(Y_ENABLE_PIN, HIGH);//habilita el motor y
digitalWrite(Y_DIR_PIN, HIGH);

digitalWrite(E_DIR_PIN, LOW);

for(int i=0; i<pasos; i++) // hace girar el motor en sentido "+x" y "+y"

{
digitalWrite(X_STEP_PIN, HIGH);
digitalWrite(X_STEP_PIN, LOW);
digitalWrite(Y_STEP_PIN, HIGH);
digitalWrite(Y_STEP_PIN, LOW);
delayMicroseconds(VELOCIDAD);//velocidad de giro declarado al inicio

digitalWrite(E_STEP_PIN, HIGH);
digitalWrite(E_STEP_PIN, LOW);
delayMicroseconds(VELOCIDAD2);//velocidad de giro del estrusor
}

digitalWrite(X_ENABLE_PIN, LOW);//desabilita el motor x
digitalWrite(Y_ENABLE_PIN, LOW); //desabilita el motor y
digitalWrite(E_ENABLE_PIN, LOW); //desabilita el motor del estrusor

}

/*En este bloque el motor Z se mueve para arriba y los motores X e Y se moveran
en digonal pero en sentido contrario de manera a volver en el punto inicial */

digitalWrite(Z_ENABLE_PIN, HIGH);
digitalWrite(Z_DIR_PIN, LOW);

for(int i=0; i<pasitos; i++)
{
digitalWrite(Z_STEP_PIN, HIGH);
digitalWrite(Z_STEP_PIN, LOW);
delayMicroseconds(VELOCIDAD);
}
digitalWrite(Z_ENABLE_PIN, LOW);

digitalWrite(X_ENABLE_PIN, HIGH);//habilita el motor -x
digitalWrite(X_DIR_PIN, LOW);

digitalWrite(Y_ENABLE_PIN, HIGH);//habilita el motor -y
digitalWrite(Y_DIR_PIN, LOW);

for(int i=0; i<(pasos/2); i++) // hace girar el motor en sentido "-x" y "-y"

{
digitalWrite(X_STEP_PIN, HIGH);
digitalWrite(X_STEP_PIN, LOW);
digitalWrite(Y_STEP_PIN, HIGH);
digitalWrite(Y_STEP_PIN, LOW);
delayMicroseconds(VELOCIDAD);//velocidad de giro declarado al inicio
}

digitalWrite(X_ENABLE_PIN, LOW);//desabilita el motor x
digitalWrite(Y_ENABLE_PIN, LOW); //desabilita el motor y


}


}
Sorry, only registered users may post in this forum.

Click here to login