![](/media/cache/profiles/ff6dec2c39768126491474050424b2ed.jpg.50x50_q85.jpg)
Battery drain test (http://adwiens.com/projects/balloons/batt/index.html)
See http://adwiens.com/projects/balloons/batt/index.html
main.cpp@0:1c367d1c3ad3, 2014-01-20 (annotated)
- Committer:
- adwiens
- Date:
- Mon Jan 20 22:48:40 2014 +0000
- Revision:
- 0:1c367d1c3ad3
works great
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
adwiens | 0:1c367d1c3ad3 | 1 | #include "mbed.h" |
adwiens | 0:1c367d1c3ad3 | 2 | #include "rtos.h" |
adwiens | 0:1c367d1c3ad3 | 3 | |
adwiens | 0:1c367d1c3ad3 | 4 | #define ON_SECS (10) |
adwiens | 0:1c367d1c3ad3 | 5 | #define OFF_SECS (10) |
adwiens | 0:1c367d1c3ad3 | 6 | #define SAMPLE_RATE_HZ (5) |
adwiens | 0:1c367d1c3ad3 | 7 | |
adwiens | 0:1c367d1c3ad3 | 8 | Serial pc(USBTX, USBRX); |
adwiens | 0:1c367d1c3ad3 | 9 | DigitalOut relay(p21); |
adwiens | 0:1c367d1c3ad3 | 10 | DigitalOut led1(LED1); |
adwiens | 0:1c367d1c3ad3 | 11 | DigitalOut led2(LED2); |
adwiens | 0:1c367d1c3ad3 | 12 | AnalogIn adc(p20); |
adwiens | 0:1c367d1c3ad3 | 13 | LocalFileSystem local("local"); |
adwiens | 0:1c367d1c3ad3 | 14 | |
adwiens | 0:1c367d1c3ad3 | 15 | double get_voltage(double d) { /* calibrated in freezer */ |
adwiens | 0:1c367d1c3ad3 | 16 | return 8.14*d; |
adwiens | 0:1c367d1c3ad3 | 17 | } |
adwiens | 0:1c367d1c3ad3 | 18 | |
adwiens | 0:1c367d1c3ad3 | 19 | void relay_thr(void const *argument) { |
adwiens | 0:1c367d1c3ad3 | 20 | int i; |
adwiens | 0:1c367d1c3ad3 | 21 | while(1) { |
adwiens | 0:1c367d1c3ad3 | 22 | relay = led1 = 1; |
adwiens | 0:1c367d1c3ad3 | 23 | for(i=0; i<ON_SECS; ++i) Thread::wait(1000); |
adwiens | 0:1c367d1c3ad3 | 24 | relay = led1 = 0; |
adwiens | 0:1c367d1c3ad3 | 25 | for(i=0; i<OFF_SECS; ++i) Thread::wait(1000); |
adwiens | 0:1c367d1c3ad3 | 26 | } |
adwiens | 0:1c367d1c3ad3 | 27 | } |
adwiens | 0:1c367d1c3ad3 | 28 | |
adwiens | 0:1c367d1c3ad3 | 29 | void log_thr(void const *argument) { |
adwiens | 0:1c367d1c3ad3 | 30 | FILE *fp = fopen("/local/bv.csv", "a"); |
adwiens | 0:1c367d1c3ad3 | 31 | fprintf(fp,"BEGIN\n"); |
adwiens | 0:1c367d1c3ad3 | 32 | fclose(fp); |
adwiens | 0:1c367d1c3ad3 | 33 | while(1) { |
adwiens | 0:1c367d1c3ad3 | 34 | led2 = 1; |
adwiens | 0:1c367d1c3ad3 | 35 | FILE *fp = fopen("/local/bv.csv", "a"); |
adwiens | 0:1c367d1c3ad3 | 36 | fprintf(fp, "%d,%f\n",(int)relay,get_voltage(adc)-5.0); |
adwiens | 0:1c367d1c3ad3 | 37 | printf("%d,%f\n",(int)relay,get_voltage(adc)-5.0); |
adwiens | 0:1c367d1c3ad3 | 38 | fclose(fp); |
adwiens | 0:1c367d1c3ad3 | 39 | led2 = 0; |
adwiens | 0:1c367d1c3ad3 | 40 | Thread::wait(1000/SAMPLE_RATE_HZ); |
adwiens | 0:1c367d1c3ad3 | 41 | } |
adwiens | 0:1c367d1c3ad3 | 42 | } |
adwiens | 0:1c367d1c3ad3 | 43 | |
adwiens | 0:1c367d1c3ad3 | 44 | int main() { |
adwiens | 0:1c367d1c3ad3 | 45 | Thread relay_thread(relay_thr); // toggles relay |
adwiens | 0:1c367d1c3ad3 | 46 | Thread log_thread(log_thr); // logs batt voltage |
adwiens | 0:1c367d1c3ad3 | 47 | while(1); |
adwiens | 0:1c367d1c3ad3 | 48 | } |