Calibrage d'un accelerometre 3 axes ..

[u]Bonjour à tous,[/u]

Moi et mon collègue sommes en Math Sup, et dans le cadre de notre TIPE (Travaux d'Initiation Pratique Encadré), nous avons choisi d'étudier le fonctionnement d'un accéléromètre 3 axes. Nous avons choisie l'ADXL 335 d'arduino, fonctionnant avec une carte Adruino Uno. Nous l'avons branché à l'ordinateur, insérer le programme grâce au logiciel d'arduino, mais nous récupérons une série de valeur comprise entre 300 et 600.

Nous aimerions pouvoir changer ces valeurs, et les remplacer (en temps réel) par des valeurs de "g" positif et négatif. Il faudrait donc changer le programme, mais nous ne connaissons pas grand-chose en programmation ..

Alors je vous demande de l'aide pour continuer notre TIPE !

Merci d'avance pour ceux qui liront et répondront à ce message

Voici le programme:

/* ADXL3xx * *Reads an Analog Devices ADXL3xx accelerometer and communicates the acceleration to the computer. The pins used are designed to be easily compatible with the breakout boards from Sparkfun, available from: http://www.sparkfun.com/commerce/categories.php?c=80 http://www.arduino.cc/en/Tutorial/ADXL3xx The circuit: analog 0: accelerometer self test analog 1: z-axis analog 2: y-axis analog 3: x-axis * *created 2 Jul 2008 by David A. Mellis modified 30 Aug 2011 by Tom Igoe * *This example code is in the public domain. */ // these constants describe the pins. They won't change: const int xpin = A3; // x-axis of the accelerometer const int ypin = A2; // y-axis const int zpin = A1; // z-axis (only on 3-axis models) void setup() { * *// initialize the serial communications: * *Serial.begin(115200); * *pinMode(xpin, INPUT); * *pinMode(ypin, INPUT); * *pinMode(zpin, INPUT); } void loop() { * *// print the sensor values: * *Serial.print(analogRead(xpin)); * *// print a tab between values: * *Serial.print(" ; "); * *Serial.print(analogRead(ypin)); * *// print a tab between values: * *Serial.print(" ; "); * *Serial.println(analogRead(zpin)); * *// delay before next reading: delay(10); }

Et un exemple de donnée reçu après un test en voiture a 50km/h et frein jusqu'à l'immobilisation de la voiture. (La première colonne correspond à l'axe des X, la seconde a celle des Y, et la dernière a celle des Z.)

342 ; 342 ; 402 336 ; 337 ; 417 329 ; 340 ; 401 333 ; 334 ; 407 336 ; 345 ; 411 351 ; 342 ; 404 355 ; 345 ; 414 339 ; 348 ; 411 338 ; 332 ; 415 333 ; 344 ; 405 337 ; 340 ; 409 355 ; 342 ; 401 346 ; 342 ; 412 343 ; 340 ; 413 343 ; 339 ; 415 320 ; 339 ; 404 334 ; 340 ; 398 325 ; 341 ; 410 336 ; 341 ; 404 356 ; 339 ; 400 336 ; 340 ; 417 324 ; 335 ; 409 332 ; 337 ; 407 336 ; 343 ; 403 331 ; 339 ; 405 346 ; 337 ; 413 338 ; 342 ; 411 336 ; 337 ; 412 335 ; 337 ; 409 343 ; 344 ; 404 336 ; 341 ; 405 336 ; 340 ; 407

Il faut convertir les valeurs raw avec des fonctions trigonométriques et voir ajouté un filtre complémentaire ou Kalman, sa doit pas poser problèmes a des mecs en math sup :roll_eyes: j'ai déjà utilisé ces fonctions mais pour rentré dans les détails c'est clairement pas de mon niveau après je m’arrête la