Schritt 7: Kombination aus Stepper und Balken
Sobald die zwei separate Steuerung Seiten geklärt hatte, die ich brauchte, um sie zu kombinieren, so dass der Spiegel zur gleichen Zeit wie das Sammeln von Daten bewegen würde. Dies unterstrichen, die die Erhebung der Daten die Geschwindigkeit limitierende Schritt ist-die Zeit nehmen zu lesen, die zwei Entsprechungen verlangsamt das Stepper auf ein Schneckentempo - ich über kam dies durch die Reduzierung der Sampling-Rate für die LDRs. Um zu tun das ich mir einfach mieteten wieviele Probe Punktpaare ich wollte (Probe und Referenz Blank) und unterteilt, die die Anzahl Schritte des Motors für den vollen Sweep des Spiegels durch diese Zahl (500) dies die Anzahl der motor Schritte, die, denen der Spiegel durch bewegen würde, bevor das nächste Datenpaar genommen wurde - zuvor nahm das Board ein Datenpaar für jeden motor Schritt die in etwa 12000 Datenmengen lief.
Steckerbelegung
Optik
HINWEIS
- Das Brot-Brett wird verwendet, um mehrere Verbindungen mit demselben Pin zu ermöglichen
- Wenn die Variable Widerstände Verdrahtung habe ich versucht die Verdrahtung konsistent zu halten in Bezug auf welches Bein GND und 5V gesendet wurde
LDR 1 - Probe
- PIN GND Variablen Widerstand draußen Bein
- PIN A2 einseitig von den LDR, geht die zweite Seite der LDR an das mittlere Bein variabler Widerstand
- PIN 5V Variablen Widerstand anderer Außenschenkel
LDR 2 - Blank
- PIN GND Variablen Widerstand draußen Bein
- PIN A0 einseitig von den LDR, geht die zweite Seite der LDR an das mittlere Bein variabler Widerstand
- PIN 5V Variablen Widerstand anderer Außenschenkel
Motor Linkit One für EasyDriver
- LinkIT Pin 2, ED Dir (Richtung Pin)
- LinkIT Pin 3 ED Schritt (Motor-Schritt-Regler)
- LinkIT Pin GND GND ED
Der Schrittmotor wird durch Versuch und Irrtum, aber wenn die Drähte bereits in einem Stecker sind dann es nur sollte zwei Versuche, und ist der Motor über 9v Adapter mit Strom versorgt.
Code
Verbinden wir den Code den operativen Abschnitten in benannten Funktionen legte ich dann rief die Funktion bedarf dies durfte mein legen Sie die Anzahl der Schritte des Motors vor der Messung - ich ursprünglich versucht hatte, beide Codes direkt kombinieren dies jedoch einige Verwirrungen während und fand es unmöglich, das System zu beschleunigen.
Float PotSample = A2; Sample Point Detektor Pin durch Probe auf dem Gerät angezeigt
Float PotBlank = A0; Sample Point Detektor Pin angegeben von Blank auf dem Geräte-Schwimmer
SampleValue = 0; Erste Probe Wert auf Null gesetzt
Float Blank = 0; Leere Anfangswert auf Null gesetzt
Int X = 0; Legen Sie die Daten Sammlung Verweis auf Null
//////////////////////////////////////////////////
Int Dirpin = 2;
Int steppin = 3;
Int i;
Int a;
//////////////////////////////////////////////////
void setup() {}
Serial.Begin(9600); öffnet die serielle Schnittstelle
Serial.println("CLEARDATA"); Löscht alle verbleibenden Daten
Serial.println("Label,Time,Val,BLK"); Legen Sie die Überschriften für die Übertragung der Daten nach excel
PinMode (Dirpin, Ausgang);
PinMode (steppin, OUTPUT);
}
void forward() {}
DigitalWrite (steppin, niedrig); Dieses niedrig zu hoch ist, was schafft die
DigitalWrite (steppin, hoch); "Steigende Flanke" damit die Easydriver weiß, wann man Schritt. delayMicroseconds(500); Diese Verzögerungszeit ist in der Nähe von Höchstgeschwindigkeit für diese
bestimmten Motor. Nicht schneller Stände des Motors.
}
void backward() {}
DigitalWrite (steppin, niedrig); Dieses niedrig zu hoch ist, was schafft die
DigitalWrite (steppin, hoch); "Steigende Flanke" damit die Easydriver weiß, wann man Schritt. delayMicroseconds(500); Diese Verzögerungszeit ist in der Nähe von Höchstgeschwindigkeit für diese}
void data() {}
SampleValue = analogRead(potSample);
Leer = analogRead(potBlank);
}
void Printdata() {}
Serial.Print("Data,Time,");
Serial.Print(SampleValue);
Serial.Print(",");
Serial.println(blank);
}
//////////////////////////////////////////////////
void loop() {}
DigitalWrite (Dirpin, LOW); Legen Sie die Richtung.
Delay(1000);
X = X + 1;
Wenn (X > = 200) {}
Serial.println("CLEARDATA");
X = 0;
//}
für (ein = 0 a < 500; a++) {}
Data();
Printdata();
für (ich = 0; ich < 23; i ++) / / Mikroschritte zu durchlaufen.
{
Forward();
}
}
DigitalWrite (Dirpin, HIGH); Ändern Sie Richtung.
Delay(100);
für (ich = 0; ich < 11500; i ++) / / für 4000 Mikroschritte durchlaufen
{
Backward();
} / / besondere Motor. Nicht schneller Stände des Motors.
}