martes, 27 de octubre de 2009

acelerómetro de 3 ejes con conexión analógica, pasando los valores a una salida de led RGB



Cuando pensamos en las maravillas que podíamos hacer con el acelerómetro nos dirigimos directamente a las variaciones que este podía producir con los led RGB, nos parecía interesante poder variar los colores de un led según el sentido de inclinación que nosotros le diéramos al sensor.
Buscamos y buscamos códigos y encontramos el blog de Jeff Kirsch quien había modificado el código del acelerómetro y RGB para que este mostrará sus variantes. No tiene mucha técnica y al decir verdad la conexión de cables realmente no tiene mucha lógica.
Aquí va un esquema con la conexión

y una foto real de la placa conectada:


Y aquí esta e código para programar el arduino:

Based on http://www.arduino.cc/en/Tutorial/ADXL3xx by David A. Mellis
modified by Tom Igoe

The circuit:
analog 0: accelerometer self test
analog 1: z-axis
analog 2: y-axis
analog 3: x-axis
analog 4: ground
analog 5: vcc

Digital pins 9, 10 and 11 drive blue, red and green legs
*/
// these constants describe the pins. They won't change:
const int groundpin = 18; // analog input pin 4 -- ground
const int powerpin = 19; // analog input pin 5 -- voltage
const int xpin = 3; // x-axis of the accelerometer
const int ypin = 2; // y-axis
const int zpin = 1; // z-axis (only on 3-axis models)
const int blueLed = 9; // output pin for blue LED
const int redLed = 10; // output pin for red LED
const int greenLed = 11; // output pin for green LED
void setup()
{

// Provide ground and power by using the analog inputs as normal
// digital pins. This makes it possible to directly connect the
// breakout board to the Arduino. If you use the normal 5V and
// GND pins on the Arduino, you can remove these lines.
pinMode(groundpin, OUTPUT);
pinMode(powerpin, OUTPUT);
digitalWrite(groundpin, LOW);
digitalWrite(powerpin, HIGH);

//sets pins for LEDs as outputs
pinMode(blueLed, OUTPUT);
pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);
}
void loop()
{
//run tilitToLight function for each axis
tiltToLight(xpin, blueLed);
tiltToLight(ypin, redLed);
tiltToLight(zpin, greenLed);

}

void tiltToLight(int readFrom, int writeTo){
//set readVal to the input from the accelerometer, minus 400
//for this model accelerometer, raw input minus 400 yields values roughly between 0 and 255
int readVal = (analogRead(readFrom) - 400);

//check for out-of-range values
if (readVal < readval =" 0;"> 255) {
readVal = 255;
}

//write the modified input from the specificed axis of the accelerometer to the appropriate output pin
analogWrite(writeTo, (readVal));

}

Logramos nuestro objetivo, he hicimos funcionar el led como nosotros queríamos, tuvimos un percance, que el led solo reproducía dos colores, la gama completa de los verdes, la gama completa de los rojos ó la gama completa de los azules.

También para que funcionara una pata de la resistencia tenía que tocar las patas del led RGB

y bueno Aqui un video de como nos quedo:





SensorAcelerometro

Acelerómetro:

Esta placa tiene un acelerómetro ADXL3xx que es de alta calidad junto con unos condensadores de desacoplo para un optimo funcionamiento. Y es apta para cualquier tipo de proyecto de micros controladores o para rebotica.

Cada eje (Z,X,Y) devuelve una tención proporcional a la aceleración, con lo que podemos fácilmente interpretar la señal para alinear nuestro robot o para nuestro propio control de wii.

Un acelerómetro es un producto de tensión variable en función de la cantidad de aceleración aplicada. La referencia común es la aceleración resultante producida por la fuerza de gravedad de la tierra.

La unidad utilizada para medir esta aceleración es G, que corresponde a la gravedad de la tierra sobre el nivel del mar. Y su formula sería la siguiente.

1G=9,8m/s21G=9,8/s2

Su resultado debe integrarse con respecto al tiempo para obtener la velocidad e ntegrar los dos para obtener la posición.


Usos:

Para medir la velocidad inicial de un objeto.

Para medir inclinación ó inclinación de orientación.

Medición de vibraciones o impactos

Nuevas tecnologías como celulares, cámaras, controles.


Tipos:

Con capacidad diferencial.

Con tención de salida dependiendo de la distancia entre dos superficies planas.

Con superficie donde se encausan las corrientes eléctricas, el cambio de brecha existente entre las dos placas cambia la capacidad eléctrica o del sis

tema

Especificaciones

Numero de ejes: tres ejes (x,y,z)

Senor input:+-3 a +- 3,6g

Sensiblidad:270ª 330 mV/g



La estabilidad de amplitud:

Cambios en la sensibilidad de la temperatura o tiempo

Zero G offset: 1,2-1,8V

(Salida de tención en 0g) se especifica la posición del sensor en el que se activa el eje perpendicular a la gravedad de la tierra.


Respuesta de frecuencia:

Es la señal de salida en un rango de frecuencias donde el sensor debe funcionar.

Ancho de banda: X e Y= 1600Hz Z= 550Hz

Frecuencia de una lectura fiable; se puede tomar: cientos de hertzios de vibración

Amplificador de salida: Baja 0,1V Alta:2,8V

Fuente de alimentación: 2 a 3,6V

Rango de temperatura: de -25° a 70°C