Paso 7: La combinación de vigas y paso a paso
Una vez que los dos lados de un control independiente habían sido clasificados necesitaba combinarlos para que el espejo se movía al mismo tiempo como recogida de datos. Este destacó que la colección de los datos es el paso limitante de la velocidad - el tomar tiempo para leer los dos análogos retarda el paso a paso para un rastreo - I sobre este vino reduciendo la frecuencia de muestreo de las LDRs. Para hacer esto simplemente resuelto cuántos pares de punto muestra quería (muestra y referencia en blanco) y divide el el número de motor de pasos para el barrido completo del espejo por ese número (500) esto me dieron el número de pasos de motor que el espejo se movía por antes de que se toma el siguiente par de datos - previamente la Junta tomaba un par de datos para cada motor paso que funcionó en unos 12000 conjuntos de datos.
Conexiones de perno
Óptica
NOTA
- El tablero de pan se utiliza para permitir conexiones múltiples con el mismo pin
- Al conectar las resistencias Variable intenté mantener el cableado consistente en cuanto a que la pierna fue enviado a la tierra y que a 5V
LDR 1 - muestra
- Resistencia Variable de GND PIN fuera de la pierna
- PIN A2 un lado de la LDR, el segundo lado de la LDR pasa a la etapa media de la resistencia Variable
- PIN 5V resistencia Variable otra pierna externa
LDR 2 - blanco
- Resistencia Variable de GND PIN fuera de la pierna
- PIN A0 un lado de la LDR, el segundo lado de la LDR pasa a la etapa media de la resistencia Variable
- PIN 5V resistencia Variable otra pierna externa
Linkit motor uno a EasyDriver
- LinkIT Pin 2 ED DIR (perno de dirección)
- LinkIT Pin 3 ED paso (Control de Motor paso)
- LinkIT Pin GND a GND de ED
El motor paso a paso está cableado por ensayo y error, sin embargo si los cables están ya en un enchufe entonces debe sólo ser dos intentos y se suministre energía al motor a través de adaptador de 9v.
Código
Combinar el código me coloca cada una de las secciones operacionales en funciones nombradas luego llama a la función como sea necesario esta permitido mi para establecer el número de pasos del motor antes de la lectura se toma - originalmente había intentado combinar ambos códigos directamente sin embargo esto me causó cierta confusión mientras y le resultó imposible acelerar el sistema.
Float potSample = A2; Pin de detector de punto de muestreo indicada por la muestra en el equipo
Float potBlank = A0; Pin de detector de punto de muestreo indicado por espacio en blanco en el flotador de equipo
SampleValue = 0; Establecer el valor inicial de la muestra a cero
flotador en blanco = 0; Establecer valor en blanco inicial a cero
int x = 0; Establecer la referencia de colección de datos a cero
//////////////////////////////////////////////////
int dirpin = 2;
int steppin = 3;
int i;
int a;
//////////////////////////////////////////////////
void setup() {}
Serial.Begin(9600); abre el puerto serie
Serial.println("CLEARDATA"); borra cualquier dato residual
Serial.println("Label,Time,Val,BLK"); configurar las partidas para la transferencia de datos a excel
pinMode (dirpin, salida);
pinMode (steppin, salida);
}
{} void forward()
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(500); Este retraso está cerca de la velocidad máxima para este
motor particular. Cualquier más rápido el motor se detiene.
}
void backward() {}
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(500); Este retraso está cerca de velocidad superior para esto}
{} void data()
SampleValue = analogRead(potSample);
En blanco = analogRead(potBlank);
}
void {Printdata()
Serial.Print("Data,Time,");
Serial.Print(SampleValue);
Serial.Print(",");
Serial.println(Blank);
}
//////////////////////////////////////////////////
void loop() {}
digitalWrite (dirpin, bajo); Establecer la dirección.
Delay(1000);
x = x + 1;
Si (x > = 200) {}
Serial.println("CLEARDATA");
x = 0;
//}
para (a = 0; a < 500; a ++) {}
Data();
Printdata();
para (i = 0; i < 23; i ++) / / iterar micropasos.
{
Forward();
}
}
digitalWrite (dirpin, HIGH); Cambiar de dirección.
Delay(100);
para (i = 0; i < 11500; i ++) / / iterar para 4000 micropasos
{
backward();
} / / particular motor. Cualquier más rápido el motor se detiene.
}