Linkit en - Dual beam spektrometer (4 / 10 steg)
Steg 4: Stepper motorstyrning
Den första delen att få arbeta var stegmotorer - jag ursprungligen kommer att använda två av motorerna, de resande konvex spegeln och slit stepper, som skulle vara ansluten till Linkit en via en EasyDriver styrelse. Då noterade jag att skåran stepper var en fem tråd enhet och just nu vet jag inte hur tråd denna typ lätt föraren.
Chage av planer
Så flyttat jag behöver fortfarande snitten och du kan se att stepper installerat i resterande bilder man manuellt s krävs. Den viktig motorn är den resande speglingen som dess detta som delar ut spektrumet, och sedan kan du flytta den över skåran, så då att skapa den första strålen som delas av speglarna som följer och diffraktion galler.
Jag behövde veta hur långt du vill flytta spegeln så jag skrev ett litet skript ska köras från styrelsen och justeras antalet räknas förrän jag hade rörelsen rätt.
Jag började genom att manuellt flytta masken hjulet tills spektrum av ljus i början av skåran placerar och sedan svärdet med en penna, då började jag manuset och gjort andra avtryck på guide järnväg som spectrana andra änden passerade slit position. Det gav mig distansera av resor. Detta är koden för resor testet.
int x = 0;
void setup() {
Serial.BEGIN(9600);
pinMode (8, OUTPUT);
pinMode (9, OUTPUT);
digitalWrite 8, låg.
digitalWrite (9, låg). }
void loop() {
digitalWrite (9, hög).
Delay(1);
digitalWrite (9, låg).
Delay(1);
x = x + 1.
Serial.println(x);
}
Värdet av x visas på Serial Monitor fönster öppna på datorn, eftersom nummerlistan nått andra varumärket på styrskenan jag spelade in värdet av x och för min uppsättning upp denna var 19124 motor steg. Detta senare visade sig vara stora som det gjorde den tid det tar att göra en behandling alldeles för länge för mitt tålamod och reducerades till cirka 11500
Följande är den resulterande kod att svänga spegeln.
int dirpin = 2;
int steppin = 3;
void setup() {
Serial.BEGIN(9600);
pinMode (dirpin, produktionen);
pinMode (steppin, OUTPUT);
}
void loop() {
int i;
digitalWrite (dirpin, låg); Ange riktning.
Delay(1000);
för (jag = 0; jag < 19124; i ++) / / iterera för 19124 microsteps.
{
digitalWrite (steppin, låg); Detta låg till hög förändring är det som skapar den
digitalWrite (steppin, högt); "Stigande kanten" så easydriver vet att när man ska kliva. delayMicroseconds(1500); Denna fördröjning är nära toppfart för detta
} / / särskild motor. Något snabbare motorn spiltor.
digitalWrite (dirpin, hög); Ändra riktning.
Delay(100);
för (jag = 0; jag < 19124; i ++) / / iterera för 19124 microsteps
{
digitalWrite (steppin, låg); Detta låg till hög förändring är det som skapar den
digitalWrite (steppin, högt); "Stigande kanten" så easydriver vet att när man ska kliva. delayMicroseconds(1500); Denna fördröjning är nära toppfart för detta
} / / särskild motor. Något snabbare motorn spiltor.
}