RobotDesign
22.04.2012, 22:24
Hallo Experten,
beim Versuch die Beschleunigungswerte des DE-ACCM3D2 mit einem Arduino auszulesen komme ich nicht wirklich weiter:
Das Signal ist so "verrauscht" dass die Werte nicht sinnvoll verwendbar sind. :confused:
Wie in dem Datenblatt angegeben habe ich VCC auf den Arduino 5V Ausgang gelegt, GND mit GND verbunden. Die x,y,z Pins habe ich mit den Analog-In-Pins 0,1,2 des Arduino verbunden. Nachdem, was ich dazu im Datenblatt finde sollte das funktionieren:
General Description
The DE-ACCM3D2 is a complete 3D ±2g analog accelerometer solution. It features integrated op amp buffers for direct connection to a microcontroller’s analog inputs, or for driving heavier loads.
[...]
Output buffers
A bare accelerometer chip has an output impedance of 110kΩ, which is unsuitable for obtaining reliable measurements when connected to an analog to digital converter. On the DE-ACCM3D2, a quad rail to rail operational amplifier buffers the outputs from the LIS344ALH, greatly reducing output impedance. The absolute maximum load beyond which accuracy begins to seriously suffer is 3.3mA, or 500Ω.
Supply filtering
A 1uF ceramic bypass capacitor on the DE-ACCM3D2 provides excellent power supply decoupling. No
external capacitors are necessary between Vcc and GND.
Output filtering and noise
A pair of 10nF capacitors limit the noise figure of the DE-ACCM3D2, without overly sacrificing bandwidth.
RMS noise is typically 7.3mg, and output bandwidth is 500Hz - making it suitable for high frequency sampling of acceleration.
Hier der Arduino- Code:
//3D Accelleration Sensor Test
int ADCX=0;
int ADCY=1;
int ADCZ=2;
int valueX;
int valueY;
int valueZ;
float Gx;
float Gy;
float Gz;
void setup()
{
Serial.begin(9600);
delay (2000);
}
void loop()
{
Serial.print("G");
delay (2);
valueX=analogRead(ADCX);
Serial.print(valueX);
Serial.print(";");
valueY=analogRead(ADCY);
Serial.print(valueY);
Serial.print(";");
valueZ=analogRead(ADCZ);
Serial.print(valueZ);
Serial.println(";");
}
Mein Problem ist, dass die Werte für x,y,z immer nahezu gleich sind - auch wenn ich das Bauteil (mit dem angeschlossenen Arduino) drehe oder den Sensor ruckartig in einer Fläche bewege. Die im Datenblatt angegebenen Rechenbeispiele legen etwas anderes nahe.
Die Pins für Gx,GY,Gz sind nicht elektrisch miteinander verbunden. (Das Bauteil habe ich gesockelt - insofern konnte ich das nachprüfen.)
Mein zweites Problem ist, dass die Sensordaten auch dann stark rauschen, wenn der Arduino mit dem Bauteil auf dem Tisch liegen.
Wenn ich delay (2) auf höhere Werte lege (100-500) sieht man deutlich, dass das Signal rhytmisch schwankt mit -geschätzten- 1 Hz. Bei delay (2) [Millisekunden] sind die Signale unbrauchbar.
Die Signale habe ich per seriellem Kabel ausgelesen. Den Arduino habe ich über einen USB- Verteiler (mit seperater Stromversorgung) und auch direkt mit dem Rechner verbunden. Alternativ habe ich es auch mit einem geregelten Labornetzteil und einem Bluetooth - Shield versucht. Allerdings hatte das keinen Effekt auf das Messergebnis.
Hat einer von Euch Erfahrungen mit dem Bauteil? Sind die 500 Ohm das Problem?
beim Versuch die Beschleunigungswerte des DE-ACCM3D2 mit einem Arduino auszulesen komme ich nicht wirklich weiter:
Das Signal ist so "verrauscht" dass die Werte nicht sinnvoll verwendbar sind. :confused:
Wie in dem Datenblatt angegeben habe ich VCC auf den Arduino 5V Ausgang gelegt, GND mit GND verbunden. Die x,y,z Pins habe ich mit den Analog-In-Pins 0,1,2 des Arduino verbunden. Nachdem, was ich dazu im Datenblatt finde sollte das funktionieren:
General Description
The DE-ACCM3D2 is a complete 3D ±2g analog accelerometer solution. It features integrated op amp buffers for direct connection to a microcontroller’s analog inputs, or for driving heavier loads.
[...]
Output buffers
A bare accelerometer chip has an output impedance of 110kΩ, which is unsuitable for obtaining reliable measurements when connected to an analog to digital converter. On the DE-ACCM3D2, a quad rail to rail operational amplifier buffers the outputs from the LIS344ALH, greatly reducing output impedance. The absolute maximum load beyond which accuracy begins to seriously suffer is 3.3mA, or 500Ω.
Supply filtering
A 1uF ceramic bypass capacitor on the DE-ACCM3D2 provides excellent power supply decoupling. No
external capacitors are necessary between Vcc and GND.
Output filtering and noise
A pair of 10nF capacitors limit the noise figure of the DE-ACCM3D2, without overly sacrificing bandwidth.
RMS noise is typically 7.3mg, and output bandwidth is 500Hz - making it suitable for high frequency sampling of acceleration.
Hier der Arduino- Code:
//3D Accelleration Sensor Test
int ADCX=0;
int ADCY=1;
int ADCZ=2;
int valueX;
int valueY;
int valueZ;
float Gx;
float Gy;
float Gz;
void setup()
{
Serial.begin(9600);
delay (2000);
}
void loop()
{
Serial.print("G");
delay (2);
valueX=analogRead(ADCX);
Serial.print(valueX);
Serial.print(";");
valueY=analogRead(ADCY);
Serial.print(valueY);
Serial.print(";");
valueZ=analogRead(ADCZ);
Serial.print(valueZ);
Serial.println(";");
}
Mein Problem ist, dass die Werte für x,y,z immer nahezu gleich sind - auch wenn ich das Bauteil (mit dem angeschlossenen Arduino) drehe oder den Sensor ruckartig in einer Fläche bewege. Die im Datenblatt angegebenen Rechenbeispiele legen etwas anderes nahe.
Die Pins für Gx,GY,Gz sind nicht elektrisch miteinander verbunden. (Das Bauteil habe ich gesockelt - insofern konnte ich das nachprüfen.)
Mein zweites Problem ist, dass die Sensordaten auch dann stark rauschen, wenn der Arduino mit dem Bauteil auf dem Tisch liegen.
Wenn ich delay (2) auf höhere Werte lege (100-500) sieht man deutlich, dass das Signal rhytmisch schwankt mit -geschätzten- 1 Hz. Bei delay (2) [Millisekunden] sind die Signale unbrauchbar.
Die Signale habe ich per seriellem Kabel ausgelesen. Den Arduino habe ich über einen USB- Verteiler (mit seperater Stromversorgung) und auch direkt mit dem Rechner verbunden. Alternativ habe ich es auch mit einem geregelten Labornetzteil und einem Bluetooth - Shield versucht. Allerdings hatte das keinen Effekt auf das Messergebnis.
Hat einer von Euch Erfahrungen mit dem Bauteil? Sind die 500 Ohm das Problem?