Test BMA180 and ITG3200 sensors.

Dependencies:   mbed BMA180

Fork of Sensor_test by Bo Carøe

Committer:
cdonate
Date:
Wed Aug 15 01:47:47 2012 +0000
Revision:
1:855d13c5051c
Parent:
0:f4e9301d548b
Test program for the ITG3200 and BMA180 sensors. English comments, values in degrees/s, rad/s, m/s^2 and degrees

Who changed what in which revision?

UserRevisionLine numberNew contents of line
caroe 0:f4e9301d548b 1 #include "mbed.h"
caroe 0:f4e9301d548b 2 #include "BMA180.h"
caroe 0:f4e9301d548b 3 #include "ITG3200.h"
caroe 0:f4e9301d548b 4 Serial pc(USBTX, USBRX);
caroe 0:f4e9301d548b 5
caroe 0:f4e9301d548b 6 DigitalOut l1(LED1);
caroe 0:f4e9301d548b 7 I2C I2CBus(p28, p27);
caroe 0:f4e9301d548b 8 Timer GlobalTime;
caroe 0:f4e9301d548b 9
caroe 0:f4e9301d548b 10 #define PI 3.1415926535897932384626433832795
cdonate 1:855d13c5051c 11 #define Rad2Dree 57.295779513082320876798154814105
cdonate 1:855d13c5051c 12
cdonate 1:855d13c5051c 13 float R;
caroe 0:f4e9301d548b 14 BMA180 Acc(I2CBus, GlobalTime);
caroe 0:f4e9301d548b 15 ITG3200 Gyro(I2CBus, GlobalTime);
caroe 0:f4e9301d548b 16
caroe 0:f4e9301d548b 17
caroe 0:f4e9301d548b 18 int main()
caroe 0:f4e9301d548b 19 {
cdonate 1:855d13c5051c 20 pc.baud(9600);
caroe 0:f4e9301d548b 21
caroe 0:f4e9301d548b 22 I2CBus.frequency(400000);
caroe 0:f4e9301d548b 23 GlobalTime.start();
caroe 0:f4e9301d548b 24 //***
caroe 0:f4e9301d548b 25 Acc.Init();
caroe 0:f4e9301d548b 26 wait_ms(500);
cdonate 1:855d13c5051c 27
cdonate 1:855d13c5051c 28 //User Calibration
cdonate 1:855d13c5051c 29 short Raw1g[3]= {0, 0, 0};
cdonate 1:855d13c5051c 30 Acc.userCalibration(Raw1g);
cdonate 1:855d13c5051c 31
cdonate 1:855d13c5051c 32 //0.5s Calibration
caroe 0:f4e9301d548b 33 Acc.Calibrate(500, Raw1g);
caroe 0:f4e9301d548b 34 //***
caroe 0:f4e9301d548b 35 Gyro.Init();
caroe 0:f4e9301d548b 36 wait_ms(500);
caroe 0:f4e9301d548b 37
cdonate 1:855d13c5051c 38 //0.5s Calibration
caroe 0:f4e9301d548b 39 Gyro.Calibrate(500);
caroe 0:f4e9301d548b 40 //***
cdonate 1:855d13c5051c 41 //Print the value for the Full-scale range
cdonate 1:855d13c5051c 42 pc.printf("Full-scale Range: %i \n\r", Gyro.getInfo());
caroe 0:f4e9301d548b 43
caroe 0:f4e9301d548b 44 while(1)
caroe 0:f4e9301d548b 45 {
cdonate 1:855d13c5051c 46 //Aquire new values for the Gyro and Acc
caroe 0:f4e9301d548b 47 Acc.Update();
caroe 0:f4e9301d548b 48 Gyro.Update();
caroe 0:f4e9301d548b 49
cdonate 1:855d13c5051c 50 //Calcuate the resulting vector R from the 3 acc axes
cdonate 1:855d13c5051c 51 R = sqrt(std::pow(Acc.Acc[0] , 2) + std::pow(Acc.Acc[1] , 2) + std::pow(Acc.Acc[2] , 2));
cdonate 1:855d13c5051c 52
cdonate 1:855d13c5051c 53 // Print the angle in degrees of all 3 axes
cdonate 1:855d13c5051c 54 pc.printf("Angles in degrees Acc: %.6f %.6f %.6f \n\r",
cdonate 1:855d13c5051c 55 Rad2Dree * acos(Acc.Acc[0]/R),
cdonate 1:855d13c5051c 56 Rad2Dree * acos(Acc.Acc[1]/R),
cdonate 1:855d13c5051c 57 Rad2Dree * acos(Acc.Acc[2]/R));
cdonate 1:855d13c5051c 58
cdonate 1:855d13c5051c 59 //Print the g-force vector on each axis in m/s^s
cdonate 1:855d13c5051c 60 /*pc.printf("BMA180:%.6f %.6f %.6f \n\r",
caroe 0:f4e9301d548b 61 (Acc.Acc[0]),
caroe 0:f4e9301d548b 62 (Acc.Acc[1]),
cdonate 1:855d13c5051c 63 (Acc.Acc[2]));*/
caroe 0:f4e9301d548b 64
cdonate 1:855d13c5051c 65 //Print the angular velocity in radians/sec of each axis
cdonate 1:855d13c5051c 66 /*pc.printf("Gyro:%.6f %.6f %.6f \n\r",
cdonate 1:855d13c5051c 67 (Gyro.Rate[0]),
cdonate 1:855d13c5051c 68 (Gyro.Rate[1]),
cdonate 1:855d13c5051c 69 (Gyro.Rate[2]));*/
caroe 0:f4e9301d548b 70
cdonate 1:855d13c5051c 71 wait_ms(100);
caroe 0:f4e9301d548b 72 }
caroe 0:f4e9301d548b 73 }