For testing battery life on the harp project.

Dependencies:   Servo mbed

Committer:
tylerjw
Date:
Fri Nov 30 16:41:18 2012 +0000
Revision:
0:42b722625abf
Battery Endurance Test 1.0;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tylerjw 0:42b722625abf 1 #include "mbed.h"
tylerjw 0:42b722625abf 2 #include "Servo.h"
tylerjw 0:42b722625abf 3
tylerjw 0:42b722625abf 4 DigitalOut myled(LED1);
tylerjw 0:42b722625abf 5 AnalogIn battery(p19);
tylerjw 0:42b722625abf 6 DigitalOut battery_warning(p24);
tylerjw 0:42b722625abf 7 Serial pc(USBTX, USBRX);
tylerjw 0:42b722625abf 8 LocalFileSystem local("local"); // Create the local filesystem under the name "local"
tylerjw 0:42b722625abf 9 Timer t;
tylerjw 0:42b722625abf 10
tylerjw 0:42b722625abf 11 void warning_light_check(float);
tylerjw 0:42b722625abf 12
tylerjw 0:42b722625abf 13 int main() {
tylerjw 0:42b722625abf 14 pc.baud(9600);
tylerjw 0:42b722625abf 15 const float BAT_MUL = 10.26;
tylerjw 0:42b722625abf 16 const float BAT_LIM = 7.0;
tylerjw 0:42b722625abf 17 float sample;
tylerjw 0:42b722625abf 18 float voltage;
tylerjw 0:42b722625abf 19
tylerjw 0:42b722625abf 20 Servo left_s(p21);
tylerjw 0:42b722625abf 21 Servo right_s(p22);
tylerjw 0:42b722625abf 22
tylerjw 0:42b722625abf 23 left_s.calibrate_max(0.0007);
tylerjw 0:42b722625abf 24 left_s.calibrate_min(-0.0014);
tylerjw 0:42b722625abf 25 right_s.calibrate(0.0009);
tylerjw 0:42b722625abf 26
tylerjw 0:42b722625abf 27 FILE *fp = fopen("/local/battery.csv", "w");
tylerjw 0:42b722625abf 28 fputs("Time,Battery\r\n", fp);
tylerjw 0:42b722625abf 29
tylerjw 0:42b722625abf 30 t.start();
tylerjw 0:42b722625abf 31
tylerjw 0:42b722625abf 32 while(1) {
tylerjw 0:42b722625abf 33 sample = battery.read();
tylerjw 0:42b722625abf 34 voltage = sample*BAT_MUL;
tylerjw 0:42b722625abf 35 fprintf(fp, "%f,%f\r\n", t.read(), voltage);
tylerjw 0:42b722625abf 36 pc.printf("VBat: %4.3f, ADC: %4.3f, Vadc: %4.3f\r\n", voltage, sample, sample*3.3);
tylerjw 0:42b722625abf 37 left_s = 1.0;
tylerjw 0:42b722625abf 38 warning_light_check(voltage);
tylerjw 0:42b722625abf 39
tylerjw 0:42b722625abf 40 wait(0.5);
tylerjw 0:42b722625abf 41
tylerjw 0:42b722625abf 42 sample = battery.read();
tylerjw 0:42b722625abf 43 voltage = sample*BAT_MUL;
tylerjw 0:42b722625abf 44 fprintf(fp, "%f,%f\r\n", t.read(), voltage);
tylerjw 0:42b722625abf 45 pc.printf("VBat: %4.3f, ADC: %4.3f, Vadc: %4.3f\r\n", voltage, sample, sample*3.3);
tylerjw 0:42b722625abf 46 left_s = 0.0;
tylerjw 0:42b722625abf 47 warning_light_check(voltage);
tylerjw 0:42b722625abf 48
tylerjw 0:42b722625abf 49 wait(0.5);
tylerjw 0:42b722625abf 50
tylerjw 0:42b722625abf 51 if(voltage < BAT_LIM)
tylerjw 0:42b722625abf 52 break;
tylerjw 0:42b722625abf 53 }
tylerjw 0:42b722625abf 54 fclose(fp);
tylerjw 0:42b722625abf 55 myled = 1;
tylerjw 0:42b722625abf 56 }
tylerjw 0:42b722625abf 57
tylerjw 0:42b722625abf 58 void warning_light_check(float voltage)
tylerjw 0:42b722625abf 59 {
tylerjw 0:42b722625abf 60 if(voltage < 6.4)
tylerjw 0:42b722625abf 61 battery_warning = 0;
tylerjw 0:42b722625abf 62 else
tylerjw 0:42b722625abf 63 battery_warning = 1;
tylerjw 0:42b722625abf 64 wait(1);
tylerjw 0:42b722625abf 65 }