Indholdsfortegnelse:
- forsyninger:
- Trin 1: Dele, der er nødvendige
- Trin 2: En lille operationsteori.
- Trin 3: Hooking It All Up!
- Trin 4: Fortæl Ardunio Sådan overvåger du sensoren
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);
}