This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Código acelerometro
#1
Buenas a tod@s:

Estoy trabajando en un proyecto donde tengo que construir un sensor que me mida la velocidad en la que va un vehículo. Para ello, utilizao el sensor ADXL335.

He buscado en la red a ver si había algun código con el que basarme y he encontrado este:

Código:
const int xPin = 0;     //Pines analogicos de lectura
const int yPin = 1;
const int zPin = 2;

int minVal = 265;    // Valores mínimos y máximos del acelerometro en reposo
int maxVal = 402;

double x;    // para guardar los valores calculados
double y;
double z;

void setup ( ) {
Serial.begin(9600);
}

void loop ( ) {

int xRead = analogRead(xPin);   //Lee los valores analogicos del acelerometro
int yRead = analogRead(yPin);
int zRead = analogRead(zPin);

// mapea los valores leidos a un rango  -90 a 90 grados (-π  a  π )
int xAng = map(xRead, minVal, maxVal, -90, 90);
int yAng = map(yRead, minVal, maxVal, -90, 90);
int zAng = map(zRead, minVal, maxVal, -90, 90);

//Convertimos los radianes a grados
x = RAD_TO_DEG * (atan2(-yAng, -zAng) + PI);
y = RAD_TO_DEG * (atan2(-xAng, -zAng) + PI);
z = RAD_TO_DEG * (atan2(-yAng, -xAng) + PI);

//Imprimimos en el monitor serial los caluculos
Serial.print("x: ");
Serial.print(x);
Serial.print(" | y: ");
Serial.print(y);
Serial.print(" | z: ");
Serial.println(z);

delay(100);       //Espera 1 decima de segundo
}

Parece que los valores són correctos y creo que el código me puede servir para satisfacer mis necesidades. Sin embargo, no sé como puedo convertir los datos obtenidos en km/h que es lo que realmente yo quiero mostrar por una pantalla TFT???

Muchas gracias de antemano.
  Responder
#2
Un acelerometro no mide velocidad, sino aceleracion. Cuando vayas a velocidad constante no tendras medida alguna.

Necesitarias un GPS.....
  Responder
#3
Buenas a tod@s:

Tienes razón. Sin embargo obtengo valores aún estando parado. Y por eso no me cuadra
  Responder
#4
Eso es el ruido que te da el propio sensor. Tendrías que aplicarle un filtro: http://jenswilly.dk/2011/12/filtering-adxl335-data/

Pero como dice trigger no te sirve para medir velocidad. Otra opción además del GPS es usar un encoder.
  Responder
#5
Buenas a tod@s:

Pero con la aceleración puntual no hay ningún modo de calcular la velocidad puntual???
  Responder
#6
Con la aceleración puedes calcular la velocidad (aceleración x tiempo), y la puedes ir guardando en una variable. Eso ya es más física que electrónica Sisi3
  Responder
#7
Pero..., a velocidad constante, la aceleración no es 0??

Edito, no había leído el comentario de trigger que dice lo mismo Facepalm

Que tipo de coche es? Automóvil? Coche RC?

S2! Mola
  Responder
#8
Buenas a tod@s:

Entonces.... mejor me voy buscando otro tipo de sensor y este lo descarto para este proyecto?

No iría montado en ningún tipo de vehículo. Simplemente sería una caja que mediría la velocidad, andando, en bici, en coche...

Muchas gracias por vuestras aprotaciones.
  Responder
#9
dcp1985 escribió:Pero..., a velocidad constante, la aceleración no es 0??

Edito, no había leído el comentario de trigger que dice lo mismo Facepalm

Que tipo de coche es? Automóvil? Coche RC?

S2! Mola
Sí, es 0, pero si el chisme cuando se enciende está parado (supongo), sabemos la velocidad inicial es 0. Si vamos variando la velocidad según las aceleraciones, podemos estimar la velocidad a la que vamos.
  Responder
#10
WeSo escribió:Sí, es 0, pero si el chisme cuando se enciende está parado (supongo), sabemos la velocidad inicial es 0. Si vamos variando la velocidad según las aceleraciones, podemos estimar la velocidad a la que vamos.

Si, en los tramos de aceleración/deceleración se puede sacar la velocidad instantánea.

Si es una señal triangular (siempre acelerando o frenando) puedes estimar la velocidad, pero si ya es trapezoidal (con el tramo medio con velocidad constante), veo dificil estimar la velocidad, aunque seguro que hay alguna manera

S2! Mola
  Responder
#11
dcp1985 escribió:
WeSo escribió:Sí, es 0, pero si el chisme cuando se enciende está parado (supongo), sabemos la velocidad inicial es 0. Si vamos variando la velocidad según las aceleraciones, podemos estimar la velocidad a la que vamos.

Si, en los tramos de aceleración/deceleración se puede sacar la velocidad instantánea.

Si es una señal triangular (siempre acelerando o frenando) puedes estimar la velocidad, pero si ya es trapezoidal (con el tramo medio con velocidad constante), veo dificil estimar la velocidad, aunque seguro que hay alguna manera

S2! Mola
La velocidad en el tramo medio será la velocidad "acumulada" durante la aceleración. Lo que ya no sé qué tal será la precisión del invento...
  Responder


Posibles temas similares…
Tema Autor Respuestas Vistas Último mensaje
  Acelerometro kingClon 6 366 19-06-2022, 09:19 PM
Último mensaje: kingClon
  CONSULTA Saludos - Problema con código Alexeim56 2 797 29-03-2021, 09:59 PM
Último mensaje: asesorplaza1
  CONSULTA ¿como uno dos codigos en un solo codigo? laurangcard 1 943 18-11-2020, 10:03 PM
Último mensaje: asesorplaza1
  CONSULTA problemas en codigo kuro 1 802 13-10-2020, 11:06 PM
Último mensaje: asesorplaza1
  error al compilar el código homer32 4 1,984 23-09-2019, 01:29 PM
Último mensaje: homer32