This is for our FYDP project. 2 MPU6050s are used

Dependencies:   Servo mbed

Committer:
majik
Date:
Sun Mar 22 06:34:30 2015 +0000
Revision:
4:05484073a641
Parent:
0:21019d94ad33
BOTH IMUs WORK NOW. Put them in separate threads. Servo is included.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
majik 0:21019d94ad33 1 #include "ACS712.h"
majik 0:21019d94ad33 2
majik 0:21019d94ad33 3 ACS712::ACS712() : sensor(SENSOR_PIN),
majik 0:21019d94ad33 4 currentSwitch(SWITCH_PIN)
majik 0:21019d94ad33 5 {
majik 0:21019d94ad33 6 currentSwitch = 1; //turn off the currentSwitch (1 = off, 0 = on)
majik 0:21019d94ad33 7 m = 0;
majik 0:21019d94ad33 8 b = 0;
majik 0:21019d94ad33 9 }
majik 0:21019d94ad33 10
majik 0:21019d94ad33 11 void ACS712::calibrate(){
majik 0:21019d94ad33 12 float V1,V2,A1,A2;
majik 0:21019d94ad33 13 A1 = LOW_CURRENT;
majik 0:21019d94ad33 14 A2 = HIGH_CURRENT;
majik 0:21019d94ad33 15
majik 0:21019d94ad33 16 currentSwitch = 1;
majik 0:21019d94ad33 17 wait_ms(100);
majik 0:21019d94ad33 18 //wait_ms(5000);//MARK
majik 0:21019d94ad33 19 V1 = read_sensor(CALIBRATION_SAMPLES,10);
majik 0:21019d94ad33 20
majik 0:21019d94ad33 21 currentSwitch = 0;
majik 0:21019d94ad33 22 //Thread::wait(100);
majik 0:21019d94ad33 23 //wait_ms(5000);//MARK
majik 0:21019d94ad33 24 wait_ms(100);
majik 0:21019d94ad33 25 V2 = read_sensor(CALIBRATION_SAMPLES,10);
majik 0:21019d94ad33 26 currentSwitch = 1;
majik 0:21019d94ad33 27 m = (A2-A1)/(V2-V1);
majik 0:21019d94ad33 28 b = A1 - V1*m;
majik 0:21019d94ad33 29 }
majik 0:21019d94ad33 30 float ACS712::get_current(){
majik 0:21019d94ad33 31 return m*read_sensor(10,0) + b;
majik 0:21019d94ad33 32 }
majik 0:21019d94ad33 33 float ACS712::read_sensor(){
majik 0:21019d94ad33 34 sensor_val = sensor.read();
majik 0:21019d94ad33 35 return sensor_val;
majik 0:21019d94ad33 36 }
majik 0:21019d94ad33 37 float ACS712::read_sensor(int n, int t){
majik 0:21019d94ad33 38 sensor_val = 0;
majik 0:21019d94ad33 39 for(int i = 0; i<n; i++){
majik 0:21019d94ad33 40 sensor_val += sensor.read();
majik 0:21019d94ad33 41 wait_ms(t);
majik 0:21019d94ad33 42 //Thread::wait(10);
majik 0:21019d94ad33 43 }
majik 0:21019d94ad33 44 sensor_val = sensor_val/float(n);
majik 0:21019d94ad33 45 return sensor_val;
majik 0:21019d94ad33 46 }