living with the lab Acquiring Data from an ADXL335 Accelerometer DIGIKEY DKSB1002A Evaluation Board 3-axis accelerometer Arduino Uno microcontroller board living with the lab DKSB1002A Evaluation Board and ADXL335 Accelerometer • • • • DKSB1002A is a prototyping board purchased for $20 from Digikey Screw holes for mounting board onto “object of interest” Board is ~ 20mm square ADXL335 3-axis accelerometer chip • 3-axis this small chip is the ADXL335 accelerometer (this is an older model . . . they are even smaller now) • ±3g • • • • • z COM - ground VSS - power (we will provide 5V) X - acceleration in x-direction Y - acceleration in y-direction Z - acceleration in z-direction x y the DKSB1002A is a board used to evaluate the accelerometer; if you were putting an accelerometer in a device like a cell phone, you would only use the ADXL335 chip (and maybe some capacitors) 2 living with the lab Implementing a 3-axis Accelerometer: Wiring to Arduino COM - ground VSS - power (we will provide 5V) X - acceleration in x-direction Y - acceleration in y-direction Z - acceleration in z-direction 3 living with the lab Programming void setup() { Serial.begin(9600); } void loop() { int xaccel = analogRead(0); int yaccel = analogRead(1); int zaccel = analogRead(2); unsigned long timevar = millis(); Serial.print(timevar); Serial.print(" "); Serial.print(xaccel); Serial.print(" "); Serial.print(yaccel); Serial.print(" "); Serial.println(zaccel); associates a time with each set of accelerations } 4 living with the lab Calibration z x y 5 living with the lab +x qx Angle Measurement ax z x y θx = asin(ax/g) qx 1g (perceived vertical acceleration) 6 living with the lab Example Application The piezospeaker below outputs a frequency that varies with the acceleration in the xdirection. The equation for computing the frequency is chosen so that the device makes an audible noise that varies when rotating or shaking the device. void setup(){Serial.begin(9600); } void loop() { int xaccel = analogRead(0); int freq = 1500+xaccel*2; tone(7,freq); Serial.print(xaccel); Serial.print(" "); Serial.println(freq); } 7