Cámara de giro para moto (2 / 4 paso)

Paso 2: programación

Después de haber montado completamente, ahora es el momento para subir el programa a Arduino.

Este circuito es la servo de la impulsión en el eje-X sólo. Sin embargo, datos del eje Y y Z son todavía necesarios para los respectivos giroscopio y acelerómetro. He intentado combinar aplicando cálculo del filtro de Kalman para reducir la salida de 'ruido' de giroscopio + acelerómetro para que el movimiento del servo es lisa y sin movimiento no deseado.

CÓDIGO:

/*
GIRO de cámara - saft7.com

Muestra vídeo de cámara de auto nivelación mediante giroscopio y acelerómetro con Arduino

El circuito:
Servo controlado por Arduino, con giroscopio y acelerómetro como referencia del movimiento.

Creado el 12 de marzo de 2013
por Firmansyah Saftari
www.saft7.com

Este código y el artículo completo pueden encontrarse en:

http://www.saft7.com/

Lenguaje de programación: C++

*/

#include < Servo.h >
Servo xservo;

#include < Wire.h >
#include "Kalman.h"
KalmanX Kalman;
KalmanY Kalman;

uint8_t IMUAddress = 0x68; Dirección MPU6050

/ * Datos IMU * /
accX int16_t;
int16_t Accy de la presión;
accZ int16_t;
tempRaw de int16_t;
int16_t Gyrox, S.l.;
int16_t gyroY;
int16_t gyroZ;

moveX int;
int mapX;
int correctionX;

doble accXangle;
doble accYangle;
doble gyroXangle = 9;
doble gyroYangle = 180;
compAngleX doble = 90;
compAngleY doble = 90;
doble kalAngleX;
doble kalAngleY;
temporizador de uint32_t;

---INICIO VOID SETUP---/
void setup() {}
Serial.Begin(115200);
xservo.Attach(10);


Wire.Begin();
i2cWrite(0x6B,0x00);           Desactivar el modo de sueño
if(i2cRead(0x75,1) [0]! = 0x68) {/ / leer el registro de "WHO_AM_I"
Serial.Print (F ("MPU-6050 con dirección 0 x"));
Serial.Print(IMUAddress,HEX);
Serial.println (F ("no está conectado"));
while(1);
}
kalmanX.setAngle(90);  Ángulo inicial del sistema
kalmanY.setAngle(90);
contador = micros();
}

---CONFIGURACIÓN VACÍO FINAL---/

---INICIO DE BUCLE VACÍO---/
void loop() {}
/ * Actualizar todos los valores * /
uint8_t * datos = i2cRead(0x3B,14);
accX = ((datos [0] << 8) | data[1]);
Accy de la presión = ((datos [2] << 8) | data[3]);
accZ = ((datos [4] << 8) | data[5]);
tempRaw = ((datos [6] << 8) | data[7]);
Gyrox, S.l. = ((datos [8] << 8) | data[9]);
gyroY = ((datos [10] << 8) | data[11]);
gyroZ = ((datos [12] << 8) | data[13]);

/ * Calcular los angls basado en el algoritmo y diferentes sensores * /

accYangle = (atan2(accX,accZ) + PI) * RAD_TO_DEG;
accXangle = (atan2(accY,accZ) + PI) * RAD_TO_DEG;
doble gyroXrate = Gyrox, S.l./131.0 (doble);
doble gyroYrate =-((doble) gyroY/131.0);
gyroXangle += gyroXrate*((double)(micros()-timer)/1000000); Calcular el ángulo de giro sin ningún filtro

gyroXangle += kalmanX.getRate()*((double)(micros()-timer)/1000000); Calcular el ángulo de giro utilizando la tasa de imparcial
compAngleX = (0.93*(compAngleX+(gyroXrate*(double)(micros()-timer)/1000000)))+(0.07*accXangle); Calcular el ángulo con un filtro gratuito

kalAngleX = kalmanX.getAngle (accXangle, gyroXrate, (double)(micros()-timer)/1000000); Calcular el ángulo con un filtro de Kalman
contador = micros();
mapX = mapa (kalAngleX, 200, 0, 0, 179);     Calcule la limitación de servo mecánico


// /////////////////////////////

correctionX = 27;     MODIFICAR ESTE VALOR PARA EL ÁNGULO DE CORRECCIÓN DE SERVO

// ////////////////////////////

moveX = 270 - (kalAngleX) + correctionX;

---ENVIAR SERIAL INICIO IMPRESIÓN---/

Serial.Print ("saft7.com X Pos:");
Serial.Print(moveX); Serial.Print("\t");
Serial.Print("\n");

---ENVIAR A SERIE FINAL IMPRESIÓN---/

---ENVIAR A SERVO INICIO---/

xservo.Write(moveX);   Enviar la señal al servo
Delay(15);     retraso para permitir que los servos mover (ms)

---ENVIAR A SERVO FINAL---/

Delay(1); Tasa de muestras máximo del acelerómetro es 1kHz
}
// ---------------------- VOID LOOP END -------------- /

--INICIO FUNCIONES--
i2cWrite vacío (uint8_t registerAddress, uint8_t datos) {}
Wire.beginTransmission(IMUAddress);
Wire.Write(registerAddress);
Wire.Write(Data);
Wire.endTransmission();                       Enviar stop
}

i2cRead * de uint8_t (uint8_t registerAddress, uint8_t nbytes) {}
datos de uint8_t [nbytes];
Wire.beginTransmission(IMUAddress);
Wire.Write(registerAddress);
Wire.endTransmission(false); No suelte el autobús
Wire.requestFrom (IMUAddress, nbytes);   Enviar un comienzo repetido y luego suelte el autobús después de la lectura
para (uint8_t i = 0; i < nbytes; i ++)
datos [i] = Wire.read();
devolver datos;
}
--FINAL DE FUNCIONES--

GYROCAM POR SAFT7.COM / /

FINAL

Artículos Relacionados

¿Barato (feo)? Soporte cámara para moto

¿Barato (feo)? Soporte cámara para moto

Después de tratar de un montaje de cámara clip-on manillar podría ver el potencial, pero era infeliz con la cámara shake "juddery" video.-decidió que necesitaba algunos amortiguación - vieron lo que estaba ahí y vino para arriba con esto. Funcio
Remolque para moto Vespa

Remolque para moto Vespa

disfruto mi Vespa (GTS250ie) mucho, lo uso tanto para el transporte profesional, así como para uso personal.Centro de la ciudad, a menudo se congestiona el tráfico, parking siempre es costoso o problemático y la Vespa es una solución muy eficaz para
Cámara de aire para pistola de aire

Cámara de aire para pistola de aire

se trata de cómo hacer una cámara de aire para usar en conjunto con mi pistola de acción bomba o una pistola de aireVoy a poner fotos buenas pronto pero por ahora tienes que confiar en pintura para fotosY enfermo en un vid prontoPaso 1: materiales Lo
Piratería de la cámara de Walgreens para siempre para cerca del cine gratis

Piratería de la cámara de Walgreens para siempre para cerca del cine gratis

el Walgreens para siempre la cámara es una cámara desechable que reutilización una y otra vez.  Después de la película incluyen la cámara, puede devolver la cámara y haz la película procesada.  Carga un nuevo rollo de película en la cámara gratis.  E
Teléfono móvil soporte/montaje para moto/bicicleta-con facilidad auriculares extensión hack, hack de cámara y gps (características adicionales).

Teléfono móvil soporte/montaje para moto/bicicleta-con facilidad auriculares extensión hack, hack de cámara y gps (características adicionales).

Este instructible muestra cómo hacer un soporte de teléfono móvil para tu moto/bicicleta/ciclo (cualquiera sea u llamarlo! jajaja)... las características de la bonificación de este así llamado-'hack' son muchos!!1. cansado de mantener el teléfono en
Encerado lona maraña bolsa para bicicleta

Encerado lona maraña bolsa para bicicleta

un bolso maraña hace uso del espacio no utilizado en el triángulo principal de tu marco de bicicleta. Es un gran lugar para tener un kit de reparación plana, gafas de sol o tu billetera y llaves. Voy a mostrar cómo hacer uno como el que hice para un
Cómo: Cambiar zapatas de freno de tambor para motos

Cómo: Cambiar zapatas de freno de tambor para motos

Es el sábado, no cualquier sábado, pero el sábado que van a andar los senderos en su bici de la suciedad. ¿Qué es ese ruido? ¿Un suave acariciando? Se mira fuera, NOOOOOOOOOOO, es lluvia que vertía fuera! Que todo día está arruinado, ya no puede ir a
Utilizando una cámara termográfica para encontrar problemas eléctricos!

Utilizando una cámara termográfica para encontrar problemas eléctricos!

Recientemente publiqué un artículo sobre el uso básico (cualitativo) de una cámara térmica.Poco después de esta publicación realicé un estudio térmico de una instalación eléctrica. Los resultados fueron significativos. Lo pensé que mejor crear este i
Pop (soda) puede el ruido de la bici de la suciedad para motos

Pop (soda) puede el ruido de la bici de la suciedad para motos

has alguna vez has querido tu moto a sonar como una bici de la suciedad, sin tener que pasar por la molestia de grabar una tarjeta a tu marco de bicicleta (que por cierto es una idea se hinchan), pues ahora usted puede con un simple pop (soda) puede.
Wireless Led mochila para moto

Wireless Led mochila para moto

La idea:Tener un juego de luces intermitentes y una luz de freno extra.¿Cómo?Cuando parpadea en la motocicleta, envía una señal para el arduino conectado, que a su vez envía la señal a la arduino en la mochila a través de los módulos Nrf24L01. Arduin
HUD de GPS para moto/motocicleta casco

HUD de GPS para moto/motocicleta casco

la idea principal de este proyecto era poder "jack baja" yo mismo y poder ver qué caminos había viajé en la temporada invernal de motos de nieve, luego tomar los datos y colóquela sobre un mapa de google para ver la endecha detallada de las ruta
Instalar un cableado de abrepuertas de garaje para motos Hi-Beam

Instalar un cableado de abrepuertas de garaje para motos Hi-Beam

estaba cansado de tener que conseguir en y fuera de mi bicicleta para abrir y cerrar la puerta cada vez que salió.  Mientras que mi esposa y yo estábamos fuera de la ciudad encontramos un proyecto en un distribuidor que le ha permitido operar la puer
Cámara con soporte para Multi Shot fotografía - la OB-Pod

Cámara con soporte para Multi Shot fotografía - la OB-Pod

quiero ser capaz de ajustar su cámara sin perder alineación de trípode para disparar perfectamente alineados múltiples imágenes?. ......................Este Instructable muestra cómo construir un dispositivo sencillo para que pueda retomar su cámara
De teléfonos con cámaras, fotografía para ciegos

De teléfonos con cámaras, fotografía para ciegos

Curiosamente la fotografía ha vuelto muy popular con las personas con discapacidad visual, muchos de ellos ser publicado como artistas en la su propia derecha. Hay muchos conceptos erróneos acerca de los ciegos y deficientes visuales pero este Instru