Tyler Weaver
/
battery_endurance_test
For testing battery life on the harp project.
main.cpp@0:42b722625abf, 2012-11-30 (annotated)
- 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?
User | Revision | Line number | New 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 | } |