"Arduino Micro" Kameratårn Niveau: 4 trin

"Arduino Micro" Kameratårn Niveau: 4 trin

Indholdsfortegnelse:

Anonim

Jeg har et kamera op på en stang, som jeg bruger til video meteor jagt. Et problem, jeg har haft, er at sørge for at tårnet ligger på toppen. Det skal være rigtigt at sørge for, at hele horisonten er synlig for fisheye-objektivet på kameraet.

Jeg har set forskellige små udjævningsværktøjer til tårnene, men ingen var nemme at bruge. Jeg troede, jeg kunne gøre en mere velegnet til mine behov!

Også efter høj vind og storme. Nogle gange vil tårnet blive un-level, og jeg vil nødt til at bringe det ned og genmontere mit udjævningsudstyr. Hvad jeg havde brug for var en løsning, der kunne opstilles på toppen af ​​tårnet i kamerahuset, som jeg kunne se fra jorden, da jeg lavede tårnene.

Jeg havde en Arduino Micro, som jeg havde spillet med og nogle sensorer fra et Parallax BoeBot kit. i det havde jeg kompas og en vippesensor.

Jeg besluttede at se, om jeg kunne bygge et simpelt elektronisk bobeniveau for at holde på tårnet og se fra jorden, da jeg havde brug for at justere kameraet.

I min ansøgning kører jeg kraftledningerne ned til tårnbunden og tilslut bare et batteri, når jeg skal bruge niveauet.

I dette instruerbare vil jeg gerne vise dig, hvordan du opretter en simpel arduino-baseret "leveling bubble"

forsyninger:

Trin 1: Dele, der er nødvendige

De dele du har brug for til dette projekt er:

1. En Arduino Micro

2.et 2125 accelerometer

3. et lille brødbræt

4. Flere længder er af ledning.

5. 4 røde lysdioder og en grøn LED

Trin 2: En lille operationsteori.

En lille baggrund om hvordan vippesensoren fungerer!

Inde i den lille boks på sensoren er en lille varmekilde. på hver side er små termiske sensorer, der kan detektere varmen, der genereres af midten af ​​blokken. som sensoren er vippet. Denne varme stiger op mod en af ​​sensorerne og ved at sammenligne de værdier, som enheden kan mærke ved hvilken vinkel den bliver vippet.

Arduino læser disse data og konverterer den til en X Y-måling, som kan bruges til at tænde lysdioder for at indikere vippefunktionen.

Trin 3: Hooking It All Up!

Placer Arduino Micro på brødbrættet og sørg for at lade være med plads til din sensor og lysdioder.

Du kan bryde LED'erne ud til et separat "display" bord, hvis det er nødvendigt.

Tilslut m2125 til Arduino Micro på følgende måde.

Digital Pin 2 ----- M2125 pin 5 (hvid wire)

Digital pin 3 ----- M2125 pin 2 (orange wire)

Jord til ----- M2125 ben 3 4 (alle jordledninger er sorte)

5volts til ------ M2125 pin 6 (Røde ledninger)

Center (grøn led) til pin D5 (blå ledning på diagram)

nedre X (venstre rød led) til pin D8 (lilla tråd på diagram)

øverste X (højre rød led) til pin D7 (brun ledning på diagram)

øverste Y (øverste rød led) til pin D6 (gul ledning på diagram)

Nedre Y (nederste rød led) til pin D13 (grøn ledning på diagram)

Se diagram

Trin 4: Fortæl Ardunio Sådan overvåger du sensoren

Nu skal vi uploade en skitse i arduino, så det vil kunne overvåge output fra vores sensor og fortælle os, det er alt på niveau!

Denne skitse udover lyset vil også LED'erne udlæse X Y-målingerne til seriel, hvis du vil overvåge dataene

Strømmen udføres i dette format: X (xvalue) Y (Yvalue)

IE. X243Y165

hver linje slutter med en tilbagetrækning.

________________________________________________

// arduino micro led visuelle niveau

const int X = 2; // X pin på m2125

const int Y = 3; // Y pin på m2125

void setup () {

// opsæt serienummer

Serial.begin (9600);

// Sæt tappene til output for ledninger

for (int i = 5; i <13; i ++) {

pinMode (i, OUTPUT);

}

pinMode (X, INPUT);

pinMode (Y, INPUT);

}

void loop () {

// læs i pulsdataene

int pulseX, pulseY;

int accelerationX, accelerationY;

pulseX = pulsIn (X, HIGH);

pulseY = pulseIn (Y, HIGH);

// kort dataene til mellem 0 og 500

accelerationX = map (pulseX, 3740, 6286, 0, 500);

accelerationY = map (pulseY, 3740, 6370, 0, 500);

hvis (accelerationX> 249 og accelerationX <259 og accelerationY> 249 og accelerationY <259) {

digitalWrite (5,30);

}

ellers {

digitalWrite (5,0);

}

hvis (accelerationX <249) {

digitalWrite (8,30);

}

ellers {digitalWrite (8,0);

}

hvis (accelerationX> 261) {

digitalWrite (7,30);

}

ellers {digitalWrite (7,0);

}

hvis (acceleration <249) {

digitalWrite (13,30);

}

ellers {digitalWrite (13,0);

}

hvis (acceleration> 261) {

digitalWrite (6,30);

}

ellers {digitalWrite (6,0);

}

// Send dataene til serienummeret, hvis vi gerne vil se, hvad der bliver rapporteret og muligvis brug af pc senere

Serial.print ("X");

Serial.print (accelerationX);

Serial.print ("Y");

Serial.print (accelerationY);

Serial.println ("");

// forsinke datafeltet til at vi ikke overskrider det serielle

forsinkelse (90);

}