Drain batteries through an LM324 controlled CEB6030L from a defunct graphics card
Dependencies: mbed FastAnalogIn PID mbed-rtos
main.cpp
- Committer:
- eisd
- Date:
- 2016-07-05
- Revision:
- 0:e7492a4f4b2f
- Child:
- 1:712b9b5470d4
File content as of revision 0:e7492a4f4b2f:
#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); } }