Bonjour à tous,
je travaille actuelement sur un petit projet qui consiste à determiner un angle d'inclinaison à l'aide du capteur SCA103T-D04 de Murata.
J'utilise l'arduino comme micocontrolleur et j'tulise l'interface SPI pour lire les données.
J'ai fait les connections suivantes :
-
la broche 13 de Arduino avec la broche 1 de l'inclinometre.
-
la broche 12 de Arduino avec la broche 3 de l'inclinometre.
-
la broche 11 de Arduino avec la broche 4 de l'inclinometre.
-
la broche 10 de Arduino avec la broche 7 de l'inclinometre.
-
la broche 12 de l'inclinometre à la broche 5v de Arduino.
-
la broche 6 de l'inclinometre à la broche GND de Arduino.
En piece jointe une image du cablage et le Data sheet du capteur que j'utilise
J'utilise le code suivant pour établir la communication entre Arduino et le capteur :
/*
Programme de lecture des données
Alimentation de 5 V via Aruino
Dout=RDAX-RDAY
Angle = arcsin((Dout-Dout0)/Sens)
Dout0=0
Sens=6554(Pour le SCA103T-D04)
Serial communication, data output program
* CS - to digital pin 10 (SS pin)
* SDI - to digital pin 11 (MOSI pin)
* SDI - to digital pin 12 (MISO pin)
* CLK - to digital pin 13 (SCK pin)
*/
#include <SPI.h>
#include <math.h>
const int csbPin = 10;
void setup()
{
// Defini la broche 10 en sortie
pinMode (csbPin, OUTPUT);
// initialise le SPI:
Serial.begin(9600);
SPI.begin();
SPI.setBitOrder(MSBFIRST);
SPI.setDataMode(SPI_MODE0);
delay(1000);
}
void loop() {
int RDAX,RDAY; // Valeurs en X et en Y données par l'inclinometre
double angle; // Variable de l'angle
digitalWrite(csbPin,LOW);
RDAX=SPI.transfer(0x10); // Lecture de la valeur en X
RDAY=SPI.transfer(0x11); // Lecture de la valeur en Y
Serial.print("Valeur de X : ");
Serial.println(RDAX); // Affichage de la valeur de X
Serial.print("Valeur de Y : ");
Serial.println(RDAY); // Affichage de la valeur de Y
angle=asin(((RDAX-RDAY)-0)/6554);
Serial.print("Valeur de l'angle : ");
Serial.print(angle);
digitalWrite(csbPin,HIGH);
delay(1000);
}
Le code s'execute sans probleme mais j'obtiens pour 4 Cycles ces Valeurs :
Valeur de X : [0 0 0 0]
Valeur de Y : [123 124 125 126 ]
Valeur de l'angle : [0 0 0 0 ].
Le soucis est que en position horizontale j'aurais du Obtenir :
Valeur de X : 1024
Valeur de Y : 1024
Valeur de l'angle : 0.
je ne sais pas si c'est parce que je n'ai pas mis le condensateur de 100nF à la broche 12 (Vcc) de l'inclinometre ou si il y'a une erreur dans mon code.
A l'aide d'un multimètre j'ai vérifié que l'alimentation etait bien de 5v mais elle est environ 4,9 V . je ne sais pas si cela peut aussi etre source de problèmes.
Lorsque je déplace le capteur il ya une variation de la valeur en Y mais toujours pas de l'ordre souhaité.
Comment puis je déterminer d'ou provient l'erreur ou éffectuer un test sur mon capteur ?
Merci à tous de bien vouloir m'aider.
naturox