Paso 4: Control de motor paso a paso
La primera parte para conseguir trabajo fue los motores paso a paso - originalmente iba a usar dos de los motores, el espejo convexo itinerante y los pasos de Raja, que se conectaría al Linkit vía un tablero EasyDriver. En ese momento observé que los pasos de la abertura era una unidad de cinco hilos y actualmente no sé cómo este tipo de alambre al conductor fácil.
Cambio de planes
Tan mientras que necesito las rendijas y se puede ver paso a paso en el resto de fotos será mover manualmente s necesaria. El motor importante es el viaje espejo como su esto que divide al espectro de luz y luego le permite moverse en la ranura, para crear el haz inicial que luego se divide por los espejos que siguen y la rejilla de difracción.
Necesitaba saber cómo ahora mover el espejo así que escribió un pequeño script para ejecutar desde el tablero y ajustar el número de cuentas hasta que tuviera el movimiento correcto.
Empecé moviendo manualmente la rueda de gusano hasta el espectro de la luz fue al comienzo de la posición de la ranura y luego marca la barra de guía con un lápiz, luego comencé el guión y hacer una segunda marca en el carril guía como los espectros otro extremo pasa la posición de abertura. Esto me dio la distancia de viaje. Este es el código para la prueba de viaje.
int x = 0;
void setup() {}
Serial.Begin(9600);
pinMode (8, salida);
pinMode (9, salida);
digitalWrite (8, bajo);
digitalWrite (9, bajo); }
void loop() {}
digitalWrite (9, alto);
Delay(1);
digitalWrite (9, bajo);
Delay(1);
x = x + 1;
Serial.println(x);
}
El valor de x se muestra en la ventana de Monitor serie abierta en el equipo, como el paso a paso alcanzada la segunda marca en el carril de guía que registró el valor de x y para mi configurar pasos motor 19124. Más tarde esto resultó para ser grande como hizo el tiempo necesario para hacer una lectura demasiado tiempo para mi paciencia y se redujo a alrededor de 11500
El siguiente es el código resultante a oscilar el espejo.
int dirpin = 2;
int steppin = 3;
void setup() {}
Serial.Begin(9600);
pinMode (dirpin, salida);
pinMode (steppin, salida);
}
void loop() {}
int i;
digitalWrite (dirpin, bajo); Establecer la dirección.
Delay(1000);
para (i = 0; i < 19124; i ++) / / iterar por 19124 micropasos.
{
digitalWrite (steppin, baja); Este bajo a alto cambio es lo que crea la
digitalWrite (steppin, alto); "Aumento de borde" para el easydriver sabe cuando dar un paso. delayMicroseconds(1500); Este retraso está cerca de la velocidad máxima para este
} / / particular motor. Cualquier más rápido el motor se detiene.
digitalWrite (dirpin, HIGH); Cambiar de dirección.
Delay(100);
para (i = 0; i < 19124; i ++) / / iterar por 19124 micropasos
{
digitalWrite (steppin, baja); Este bajo a alto cambio es lo que crea la
digitalWrite (steppin, alto); "Aumento de borde" para el easydriver sabe cuando dar un paso. delayMicroseconds(1500); Este retraso está cerca de la velocidad máxima para este
} / / particular motor. Cualquier más rápido el motor se detiene.
}