Drain batteries through an LM324 controlled CEB6030L from a defunct graphics card
Dependencies: mbed FastAnalogIn PID mbed-rtos
Diff: main.cpp
- Revision:
- 4:fb20b0b3f57d
- Parent:
- 3:08488e544b3e
- Child:
- 5:7112e564d33a
--- a/main.cpp Tue Jul 05 12:39:11 2016 +0000 +++ b/main.cpp Tue Jul 05 20:03:55 2016 +0000 @@ -63,6 +63,27 @@ } } +bool header = false; +Timer T; +float charge = 0; +void discharge(const void*) { + Thread::wait(3000); + I = 2; + T.start(); + header = true; + int lastT = 0; + while(vbat_rest > 0.9 && (lastT < 5000000 || iget > I/2)) { + int t = T.read_us(); + charge += iget * (t - lastT)/3600000.0; + lastT = t; + Thread::wait(30); + } + I = 0; + PwmOut led(LED1); + led.period_ms(2000); + led = 0.2; +} + int main() { pc.baud(115200); @@ -79,10 +100,19 @@ Thread t3(&rest); Thread t4(&ui); + Thread t5(&discharge); + while (true) { + if (header) { + header = false; + pc.printf("Discharging\r\n"); + pc.printf("Duration (s)\tVbat (V)\tVbat_rest (V)\tDischarge (I)\tCapacity (mAh)\r\n"); + } //pc.printf("Iset %f Iget %6d %f Vbat %6d %f \r", Iset.read(), Iget.read_u16(), Iget.read(), Vbat.read_u16(), Vbat.read()); - pc.printf("Iset %f Iget %8d %f %f", Iset.read(), Iget.read_u16(), Iin(Iget.read()), (float)iget); - pc.printf(" Vbat %8d %f %f %f\r", Vbat.read_u16(), Vin(Vbat.read()), (float)vbat, (float)vbat_rest); - Thread::wait(500); + //pc.printf("Iset %f Iget %8d %f %f", Iset.read(), Iget.read_u16(), Iin(Iget.read()), (float)iget); + //pc.printf(" Vbat %8d %f %f %f charge %f\r", Vbat.read_u16(), Vin(Vbat.read()), (float)vbat, (float)vbat_rest, charge); + if (active) + pc.printf("%-8.2f\t%f\t%f\t%f\t%f\r\n", (T.read_us()/10000)/100.0, (float)vbat, (float)vbat_rest, (float)iget, charge); + Thread::wait(1000); } }