"Arduino Micro" Nivel de torre de cámara: 4 pasos

"Arduino Micro" Nivel de torre de cámara: 4 pasos

Tabla de contenido:

Anonim

Tengo una cámara arriba en un poste que uso para la caza de meteoros en video. Un problema que he tenido es asegurarme de que la torre esté nivelada en la parte superior. Tiene que estar muy nivelado para asegurarse de que todo el horizonte sea visible a la lente ojo de pez de la cámara.

He visto varias herramientas de nivelación pequeñas para las torres, pero ninguna fue fácil de usar. ¡Pensé que podría hacer uno más adecuado a mis necesidades!

También después de fuertes vientos y tormentas. A veces la torre se desestabilizaba y tenía que derribarla y volver a colocar mi equipo de nivelación. Lo que necesitaba era una solución que pudiera instalarse en la parte superior de la torre en la carcasa de la cámara que podía ver desde el suelo mientras hacía las nivelaciones de las torres.

Tenía un Arduino Micro con el que había estado jugando y algunos sensores de un kit Parallax BoeBot. En ella tenía una brújula y un sensor de inclinación.

Decidí ver si podía construir un simple nivel de burbuja electrónica para mantener en la torre y ver desde el suelo cuando necesitaba nivelar la cámara.

En mi aplicación corro las líneas de energía hasta el fondo de la torre y solo conecto una batería cuando necesito usar el nivel.

En este instructivo me gustaría mostrarle cómo configurar una simple "burbuja de nivelación" basada en arduino

Suministros:

Paso 1: Piezas necesarias

Las partes que necesitarás para este proyecto son:

1. Un Arduino Micro

2.un acelerómetro 2125

3. un pequeño tablero de pan

4. Varias longitudes de alambre.

5. 4 LEDs rojos y un LED verde

Paso 2: Una pequeña teoría de la operación.

¡Un poco de historia sobre cómo funciona el sensor de inclinación!

Dentro de la pequeña caja en el sensor hay una pequeña fuente de calor. En cada lado hay pequeños sensores térmicos que pueden detectar el calor generado por la mitad del bloque. ya que el sensor se inclina. Este calor se eleva hacia uno de los sensores y al comparar los valores que el dispositivo puede detectar en qué ángulo se está inclinando.

El Arduino lee estos datos y los convierte en una medición XY que se puede utilizar para encender los LED para indicar la dirección de inclinación.

Paso 3: ¡Enganchándolo todo!

Coloque el Arduino Micro en la placa de pruebas y asegúrese de dejar algo de espacio para el sensor y los LED.

Podría separar los LED en una placa de "pantalla" separada si es necesario.

Conecte el m2125 al Arduino Micro de la siguiente manera.

Pin digital 2 ----- pin 5 M2125 (cable blanco)

Pin digital 3 ----- pin 2 M2125 (cable naranja)

Conecte a tierra a ----- pines M2125 3 4 (todos los cables de tierra son negros)

5 voltios a ------ M2125 pin 6 (cables rojos)

Centro (led verde) al pin D5 (cable azul en el diagrama)

X inferior (led rojo izquierdo) al pin D8 (cable morado en el diagrama)

X superior (led rojo derecho) al pin D7 (cable marrón en el diagrama)

Y superior (led rojo superior) al pin D6 (cable amarillo en el diagrama)

Baje Y (led rojo inferior) al pin D13 (cable verde en el diagrama)

Ver diagrama

Paso 4: Dile al Ardunio cómo monitorear el sensor

¡Ahora necesitamos cargar un boceto en el arduino para que pueda monitorear la salida de nuestro sensor y decirnos que todo está en el nivel!

Este boceto, además de iluminar los LEDS, también emitirá las mediciones XY a serie si desea monitorear los datos

El flujo se alimenta en este formato: X (xvalue) Y (Yvalue)

ES DECIR. X243Y165

Cada línea termina con un retorno de carrage.

________________________________________________

// arduino micro led visual level

const int x = 2; // X pin en m2125

const int Y = 3; // Y pin en m2125

configuración vacía () {

// configurar serial

Serial.begin (9600);

// configura los pines a salida para leds

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

pinMode (i, SALIDA);

}

modo de pin (X, ENTRADA);

modo de pin (Y, ENTRADA);

}

bucle de vacío () {

// leer en los datos del pulso

int pulseX, pulseY;

int aceleraciónX, aceleraciónY;

pulseX = pulseIn (X, HIGH);

pulseY = pulseIn (Y, ALTO);

// mapea los datos entre 0 y 500

aceleraciónX = mapa (pulseX, 3740, 6286, 0, 500);

aceleración Y = mapa (pulseY, 3740, 6370, 0, 500);

si (aceleración X> 249 y aceleración X <259 y aceleración Y> 249 y aceleración Y <259) {

escritura digital (5,30);

}

else {

escritura digital (5,0);

}

si (aceleración X <249) {

escritura digital (8,30);

}

else {digitalWrite (8,0);

}

si (aceleración X> 261) {

escritura digital (7,30);

}

else {digitalWrite (7,0);

}

si (aceleración Y <249) {

escritura digital (13,30);

}

else {digitalWrite (13,0);

}

si (aceleraciónY> 261) {

escritura digital (6,30);

}

else {digitalWrite (6,0);

}

// Envíe los datos a la serie en caso de que nos gustaría ver lo que se informa y el posible uso de la PC más adelante.

Serial.print ("X");

Serial.print (aceleración X);

Serial.print ("Y");

Serial.print (aceleración Y);

Serial.println ("");

// retrasar la alimentación de datos para que no superemos la serie

retraso (90);

}