Pages: [1]   Go Down
Author Topic: Montage ADXL335 & valeurs incohérentes  (Read 1377 times)
0 Members and 1 Guest are viewing this topic.
Thionville, France
Offline Offline
Newbie
*
Karma: 0
Posts: 31
Arduino addicted
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour à tous,

(newbie inside)

J'en appelle à votre aide car je deviens maboule sur un cas super simple....

J'essaie actuellement un petit montage sur base d'un accéléromètre +/-3G ADXL335 chez Adafruit (ICI) directement monté sur les pins 1->5 analogiques de mon arduino 2009

Mon problème est que les valeurs mesurées me laisse perplexe :-/ J'ai vérifié plusieurs fois le câblage et la configuration des I/O mais rien ne se passe comme prévu. Même lorsque l'ensemble est à l'arrêt, immobile sur le bureau (donc 0g), les valeurs mesurées varient à chaque mesure (loop du sketch). Extrait:

Quote
x=385       y=335       z=522
x=380       y=346       z=522
x=360       y=369       z=510
x=338       y=395       z=492
x=346       y=386       z=498
x=352       y=379       z=504
x=329       y=406       z=484
x=314       y=432       z=461
x=306       y=459       z=436
x=303       y=486       z=408
x=303       y=476       z=417
x=304       y=468       z=427
x=304       y=497       z=400
x=310       y=513       z=379
x=321       y=522       z=359
x=336       y=527       z=338
x=331       y=527       z=346
x=327       y=525       z=353
x=343       y=525       z=329
x=364       y=516       z=313
x=390       y=499       z=305
x=382       y=505       z=306
x=374       y=511       z=310
x=399       y=492       z=304
x=427       y=470       z=302
x=453       y=445       z=308
x=479       y=419       z=319

En ce qui concerne le sketch, il est des plus simpliste:

Quote

/*
 ADXL335 Ada-fruit PCB test sketch
 
 Reads an Analog Devices ADXL3xx accelerometer and communicates the
 acceleration to the computer. 
 
 http://www.arduino.cc/en/Tutorial/ADXL3xx

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

// these constants describe the pins. They won't change:
const int selftestPin = 0;           // self test
const int powerPin = 1;              // voltage
const int xPin = 2;                   // x-axis of the accelerometer
const int yPin = 3;                   // y-axis of the accelerometer
const int zPin = 4;                   // z-axis of the accelerometer
const int groundPin = 5;             // ground

int x,y,z;

void setup()
{
  // initialize the serial communications:
  Serial.begin(9600);
  
  // 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);
}

void loop()
{
  // print the sensor values:
  
  x = analogRead(xPin);
  Serial.print("x=");
  Serial.print(x, DEC);
  
  // print a tab between values:
  Serial.print("\t y=");
  y = analogRead(yPin);
  Serial.print(y);
  
  // print a tab between values:
  Serial.print("\t z=");
  z = analogRead(zPin);
  Serial.print(z);
  
  Serial.println();
  
  // delay before next reading:
  delay(100);
}


J'ai essayé plusieurs alternatives:
- Alimentation USB
- Alimentation externe 9v (Pile)
- Changer d'Arduino
---> même résultat. J'ai même essayé de faire tourner le programme sans capteur (uniquement avec l'Arduino) et j'ai aussi le même résultat. C'est comme si le capteur ADXL était mort... smiley-sad

Voilà. Si l'un d'entre vous a une explication, je suis preneur !!

Merci d'avance de votre aide.
Olivier

« Last Edit: December 05, 2009, 10:07:51 am by faipassa » Logged

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3438
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si on se réfère à la doc sur le site d'Adafruit on voit que l'accéléro fonctionne en 3,3V (max 3,6V). Si tu alimentes par les sorties de l'arduino tu peux avoir jusqu'à 5V. C'est pas bon pour ton accéléromètre.
Quote
J'ai même essayé de faire tourner le programme sans capteur (uniquement avec l'Arduino) et j'ai aussi le même résultat
Sans capteur, il faut penser à mettre les entrées à un potentiel connu pour vérifier le fonctionnement. Si tu les mets à la masse ou au +5V tu devrais lire 0 ou 3FF.
Logged

Thionville, France
Offline Offline
Newbie
*
Karma: 0
Posts: 31
Arduino addicted
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

Bien vu! Merci pour ton aide. C'était effectivement un problème de voltage. Une fois l'ADXL335 alimenté par la sortie 3v de l'Arduino, il s'est mis à fonctionner correctement smiley

Maintenant, les valeurs mesurées sont bien stables (~1% de variation) quand le montage est au repos et varient clairement quand je déplace franchement dans une des 3 directions.

Merci encore
a+
Olivier

« Last Edit: December 05, 2009, 12:47:05 pm by faipassa » Logged

Sophia-Antipolis (06)
Offline Offline
God Member
*****
Karma: 4
Posts: 618
Rejoignez le club !
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Le sketch est faux concernant l'alimentation par groundPin et powerPin : les numéros 1 et 5 de l'analogique ne peuvent être utilisés tels quels avec pinMode et digitalWrite : ces deux fonctions s'utilisent avec des pattes numériques et analogiques donc pour les secondes il faut continuer l'ordre après les 13 numériques : 14 pour analog 0, 15 pour analog 1, etc..

D'ailleurs c'est bizarre, le sketch trouvé sur le lien vers adafruit dans le commentaire du  début est bon (mais avec des pattes différentes, sans doute une évolution en passant du 330 au 335..) : http://www.arduino.cc/en/Tutorial/ADXL3xx qui utilise bien les pattes 18 et 19 pour les opérations numériques sur les pattes analogiques 4 et 5.
« Last Edit: December 05, 2009, 12:59:35 pm by julien@pobot.org » Logged

Thionville, France
Offline Offline
Newbie
*
Karma: 0
Posts: 31
Arduino addicted
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

Merci pour cette correction. Cette erreur vient de moi en adaptant le script au modèle 335 dont le câblage est différent du 322 utilisé dans l'exemple de code. Faute d'explication comme celle que tu viens de donner sur l'utilité de renuméroter les pins ano quand on utilise la methode digitalwrite() sur de l'ana, j'avais pensé qu'il s'agissait d'une erreur quand le code adressait les pins 18 et 19  :o

Je ne m'en suis pas apercu et mon code marche quand même car maintenant mes pin VCC et GRND de l'ADXL sont directement cablés sur les pin +3V et GRND de l'arduino et je n'utilise les analogiques que pour les mesures en x,y,z smiley-razz

Super vos contributions, très instructifs pour un petit nouveau comme moi.

a+
Olivier







Logged

Pages: [1]   Go Up
Jump to: