Étape 7: Combinant le stepper et poutres
Une fois que les deux côtés de contrôle distincts ont été réglées, j’avais besoin de les combiner afin que le miroir se déplacerait en même temps que la collecte de données. Il a souligné que la collecte des données est l’étape de limitation de vitesse - le prendre de temps à lire les deux analogues ralentit le stepper à un rampement - moi sur cela est venu en réduisant le taux d’échantillonnage pour les LDRs. Pour faire ce que je dicided simplement combien de paires point échantillon je voulais (sample et blanc de référence) et divise le nombre de moteur les étapes pour le balayage complet du miroir par ce chiffre (500) cela m’a donné le nombre d’étapes moteurs que le miroir se déplacerait par avant la prochaine paire de données a été prise - précédemment, le Conseil prenait une paire de données pour chaque étape de moteur qui s’est déroulée à environ 12 000 séries de données.
Connexions des broches
Optique
REMARQUE
- Le jury de pain est utilisé pour autoriser les connexions multiples sur le même NIP
- Pour câbler les résistances variables j’ai essayé de garder le câblage conforme en termes dont la jambe a été envoyé à GND et qui à 5V
LDR 1 - échantillon
- Broche GND commande externe de jambe
- Broche A2 un côté de la LDR, le second côté de la LDR va au pied de l’intermédiaire de la résistance Variable
- Broches 5V résistance Variable autre jambe extérieure
LDR 2 - blanc
- Broche GND commande externe de jambe
- Broches A0 un côté de la LDR, le second côté de la LDR va au pied de l’intermédiaire de la résistance Variable
- Broches 5V résistance Variable autre jambe extérieure
Moteur Linkit One à EasyDriver
- Linkit Pin 2 à ED Dir (axe de Direction)
- Broche 3 de Linkit ED étape (étape Motor Control)
- Linkit broche GND pour ED GND
Le moteur pas à pas est câblé par essai et erreur, cependant si les fils sont déjà dans un bouchon puis il devrait juste être deux tentatives et tension au moteur via un adaptateur 9v.
Code
Pour combiner le code j’ai placées chacune des sections opérationnelles dans fonctions nommées puis appelle la fonction conformément à cela mon permis pour définir le nombre de mesures prises par le moteur avant que la lecture est prise - j’avais initialement essayé de combiner les deux codes directement mais cela m’a causé une certaine confusion tout en et trouvé dans l’impossibilité d’accélérer le système.
float potSample = A2 ; Broche de détecteur de Point d’échantillonnage indiquée par exemple sur l’équipement
float potBlank = A0 ; Broche de détecteur de Point d’échantillonnage indiqué par blanc sur le flotteur de l’équipement
SampleValue = 0 ; Valeur initiale de l’échantillon la valeur zéro
flotteur blanc = 0 ; La valeur initiale valeur vide à zéro
int x = 0 ; Définir la référence de collection de données à zéro
//////////////////////////////////////////////////
int dirpin = 2 ;
int steppin = 3 ;
int i ;
int a ;
//////////////////////////////////////////////////
void setup() {}
Serial.Begin(9600) ; ouvre le port série
Serial.println("CLEARDATA") ; efface toutes les données résiduelles
Serial.println("label,Time,Val,BLK") ; définir les en-têtes pour le transfert de données vers excel
pinMode (dirpin, sortie) ;
pinMode (steppin, sortie) ;
}
mémoire Sub {}
digitalWrite (steppin, faible) ; Cette faible à élevée changement est ce qui crée la
digitalWrite (steppin, haut) ; "Rising Edge" pour l’easydriver sache quand à l’étape. delayMicroseconds(500) ; Ce délai se trouve à proximité de la vitesse de pointe de cette
moteur particulier. Plus vite le moteur cale.
}
void backward() {}
digitalWrite (steppin, faible) ; Cette faible à élevée changement est ce qui crée la
digitalWrite (steppin, haut) ; "Rising Edge" pour l’easydriver sache quand à l’étape. delayMicroseconds(500) ; Ce délai se trouve à proximité de la vitesse de pointe pour cela}
data() Sub {}
SampleValue = analogRead(potSample) ;
Vide = analogRead(potBlank) ;
}
void Printdata() {}
Serial.Print("Data,Time,") ;
Serial.Print(SampleValue) ;
Serial.Print(",") ;
Serial.println(blank) ;
}
//////////////////////////////////////////////////
void loop() {}
digitalWrite (dirpin, basse) ; Définissez la direction.
Delay(1000) ;
x = x + 1 ;
Si (x > = 200) {}
Serial.println("CLEARDATA") ;
x = 0 ;
//}
pour (a = 0; a < 500 ; un ++) {}
Data() ;
PrintData() ;
pour (i = 0; i < 23; i ++) / Iterate micropas.
{
mémoire ;
}
}
digitalWrite (dirpin, HIGH) ; Changer de direction.
Delay(100) ;
pour (i = 0; i < 11500; i ++) / Iterate pour 4000 micropas
{
Backward() ;
} / / particulier moteur. Plus vite le moteur cale.
}