Dependencies:   RPCInterface mbed

Revision:
0:2dbd366be5fd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/power_sources.h	Mon May 07 16:14:45 2012 +0000
@@ -0,0 +1,58 @@
+/*****************************************************************************/
+/*Constants                                                                  */
+/*****************************************************************************/
+
+#define SCAP_MIN_VOLTAGE 0.607      //Switch to batt below this value (supercap)
+#define SCAP_MAX_VOLTAGE 0.845      //Switch to batt above this value (supercap)
+#define BATT_MIN_VOLTAGE 0.71       //Shutoff below this value (battery)
+#define BATT_MAX_VOLTAGE 0.825      //Shutoff above this value (battery)
+
+/*****************************************************************************/
+/*Pin Setup                                                                  */
+/*****************************************************************************/
+
+DigitalOut relay(p23);          //Pin from which the relay coil is triggered
+
+/*****************************************************************************/
+/*Subroutines                                                                */
+/*****************************************************************************/
+
+//Checks battery and supercap voltages, returning 1 if the system needs to be shut down.
+int checkBattVoltages() {
+    //Check to see if batteries are out of proper voltage range
+#ifdef DUT_BATT_ENABLE
+    //check DUT batt
+    if (v_DUT_batt_measure < BATT_MIN_VOLTAGE
+            || v_DUT_batt_measure> BATT_MAX_VOLTAGE) { //check if voltage out of range
+        relay = 1; //switch to cap
+        return 1;
+    }
+#endif
+
+#ifdef DUT_BATT_CAP_ENABLE
+    //check DUT batt
+    if (v_DUT_batt_measure < BATT_MIN_VOLTAGE
+            || v_DUT_batt_measure> BATT_MAX_VOLTAGE) { //check if voltage out of range
+        relay = 1; //switch to cap
+        return 1;
+    }
+#endif
+
+#ifdef LOAD_BATT_ENABLE
+    //check load batt
+    if ( v_load_batt_measure < BATT_MIN_VOLTAGE
+            ||  v_load_batt_measure> BATT_MAX_VOLTAGE) { //check if voltage out of range
+        return 1;
+    }
+#endif
+    return 0; //return 0 if all batts are in the correct voltage range
+}
+
+#ifdef DUT_BATT_CAP_ENABLE
+void superCapControl() {
+    if (v_cap_measure <= SCAP_MIN_VOLTAGE && !regen
+            || regen && v_cap_measure >= SCAP_MAX_VOLTAGE) { //if cap is drained, and regen is not engaged, switch back to battery. Or if cap is at its max voltage, and regen is engaged, switch to batt to prevent overcharging of cap.
+        relay = 0; //switch to battery
+    } else relay = 1; //switch to cap
+}
+#endif
\ No newline at end of file