Drain batteries through an LM324 controlled CEB6030L from a defunct graphics card

Dependencies:   mbed FastAnalogIn PID mbed-rtos

Revision:
0:e7492a4f4b2f
Child:
1:712b9b5470d4
diff -r 000000000000 -r e7492a4f4b2f main.cpp
--- /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);
+    }
+}