Code Arduino om versnellingsmeter uit te lezen:
int scale = 3; // 3 (±3g) for ADXL337, 200 (±200g) for ADXL377
void setup()
{
// Initialize serial communication at 115200 baud
Serial.begin(115200);
}
// Read, scale, and print accelerometer data
void loop()
{
// Get raw accelerometer data for each axis
int rawX = analogRead(A0);
int rawY = analogRead(A1);
int rawZ = analogRead(A2);
// Scale accelerometer ADC readings into common units
// Scale map depends on if using a 5V or 3.3V microcontroller
float scaledX, scaledY, scaledZ; // Scaled values for each axis
scaledX = mapf(rawX, 0, 675, -scale, scale); // 3.3/5 * 1023 =~ 675
scaledY = mapf(rawY, 0, 675, -scale, scale);
scaledZ = mapf(rawZ, 0, 675, -scale, scale);
// Print out raw X,Y,Z accelerometer readings
Serial.print("X: ");
Serial.print(rawX);
Serial.print(" ");
Serial.print(scaledX);
Serial.print(" Y: ");
Serial.print(rawY);
Serial.print(" ");
Serial.print(scaledY);
Serial.print(" Z: ");
Serial.print(rawZ);
Serial.print(" ");
Serial.print(scaledZ);
Serial.println();
delay(20); // Minimum delay of 2 milliseconds between sensor reads (500 Hz)
}
// Same functionality as Arduino's standard map function, except using floats
float mapf(float x, float in_min, float in_max, float out_min, float out_max)
{
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
De arduino waarden zijn te lezen als:
X: [ruwe x waarde] [X g-krachten] Y: [ruwe Y waarde] [Y g-krachten] Z: [ruwe Z waarde] [Z g-krachten]
De verkregen waarden zijn als volgt:
Bij stilstand:
Bij beweging:
Er is dus te zien dat de x- en z-waarden niet veranderen. Alleen de y-waarde verandert op een
gegeven moment maar deze gaat hierna ook niet meer terug naar de stationaire waarde.
Met deze gegevens heb ik de conclusie getrokken dat de accelorameter defect is en dat er een nieuwe
besteld moet worden.