Drain batteries through an LM324 controlled CEB6030L from a defunct graphics card
Dependencies: mbed FastAnalogIn PID mbed-rtos
Diff: main.cpp
- Revision:
- 0:e7492a4f4b2f
- Child:
- 1:712b9b5470d4
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Jul 05 08:39:20 2016 +0000 @@ -0,0 +1,43 @@ +#include "mbed.h" +#include "rtos.h" +#include "FastAnalogIn.h" + +AnalogOut Iset(PTE30); +FastAnalogIn Iget(PTE20); +AnalogIn Vbat(PTB0); +int flop = 0; +void adjust() { + //flop = (flop + 1) % 4; + Iset.write(flop == 0? 0.2/4.61 : 0); +} +float k = 0.01, iget = Iget.read(), vbat = Vbat.read(), vbat_rest = Vbat.read(); +void filter() { + iget = k * Iget.read() + (1 - k) * iget; + vbat = k * Vbat.read() + (1 - k) * vbat; + if (Iset.read() == 0) + vbat_rest = k * Vbat.read() + (1 - k) * vbat; +} +int main() +{ + Ticker t; + t.attach(&adjust, 5.0); + Ticker t2; + t2.attach_us(&filter, 1000); + Iset.write(0.0); + Serial pc(USBTX, USBRX); + pc.baud(115200); + int i = 0; + + while (true) { + //pc.printf("Iset %f Iget %6d %f Vbat %6d %f \r", Iset.read(), Iget.read_u16(), Iget.read(), Vbat.read_u16(), Vbat.read()); + float x = Iset.read(); + pc.printf("Iset %f Iget %8d %f %f", Iset.read(), Iget.read_u16(), Iget.read() * 36.140224, iget * 36.140224); + if ((i = (i + 1) % 50) == 0) { + Iset = 0; + Thread::wait(50); + } + pc.printf(" Vbat %8d %f %f %f\r", Vbat.read_u16(), Vbat.read() * 36.7538, vbat * 36.7538, vbat_rest * 36.7538); + Iset = x; + Thread::wait(100); + } +}