Used for testing battery sense circuit, looking for max and min levels. Allow for finding true empty, half and full values for driving LEDs for example
Dependencies: mbed MPL3115A2 TSI WiGo_BattCharger
main.cpp
- Committer:
- monpjc
- Date:
- 2013-05-16
- Revision:
- 0:17ad5a30ff25
- Child:
- 1:b1921e153d21
File content as of revision 0:17ad5a30ff25:
#include "mbed.h" //Battery Circuit #define BATT_FULL PTB10 #define BATT_MED PTB9 #define BATT_LOW PTB8 #define CHRG_EN1 PTB2 #define CHRG_EN2 PTB3 #define CHRG_SNS_EN PTC2 #define CHRG_SNS PTB1 #define CHRG_POK PTC6 #define CHRG_CHG PTA5 #define POWER_OK 0 #define CHARGING 0 #define LED_ON 0 #define LED_OFF 1 #define RGB_LED_ON 0 #define RGB_LED_OFF 1 DigitalOut myled1(LED1); DigitalOut myled2(LED2); DigitalOut myled3(LED3); Serial pc(USBTX, USBRX); //Battery DigitalOut BattFull(BATT_FULL); DigitalOut BattMed(BATT_MED); DigitalOut BattLow(BATT_LOW); DigitalOut ChargeEN1(CHRG_EN1); DigitalOut ChargeEN2(CHRG_EN2); DigitalOut ChargeSenseEN(CHRG_SNS_EN); DigitalIn SupplyOk(CHRG_POK); DigitalIn Charging(CHRG_CHG); AnalogIn ChargeSense(CHRG_SNS); float max_batt; float min_batt; float batt_lvl; int main() { //100mA Charge ChargeEN1 = 0; ChargeEN2 = 0; ChargeSenseEN = 0; wait(0.5); max_batt = ChargeSense; min_batt = ChargeSense; while(1) { //If charging then blink Blue led to show we are alive if( Charging == CHARGING ) { myled2 = RGB_LED_OFF; myled3 = RGB_LED_OFF; myled1 = RGB_LED_ON; wait(0.1); myled1 = RGB_LED_OFF; wait(0.9); } //If no power applied (via USB) then turn all on, blink Bled led off if( SupplyOk != POWER_OK ) { myled2 = RGB_LED_ON; myled3 = RGB_LED_ON; myled1 = RGB_LED_OFF; wait(0.1); myled1 = RGB_LED_ON; wait(0.9); } batt_lvl = ChargeSense; if( batt_lvl <= 0.53 ) { BattLow = LED_OFF; BattMed = LED_OFF; BattFull = LED_OFF; } if( batt_lvl > 0.53 && batt_lvl <= 0.605 ) { BattLow = LED_ON; BattMed = LED_OFF; BattFull = LED_OFF; } if( batt_lvl > 0.605 && batt_lvl <= 0.67 ) { BattLow = LED_ON; BattMed = LED_ON; BattFull = LED_OFF; } if( batt_lvl > 0.67 ) { BattLow = LED_ON; BattMed = LED_ON; BattFull = LED_ON; } if( batt_lvl < min_batt ) { min_batt = batt_lvl; } if( batt_lvl > max_batt ) { max_batt = batt_lvl; } pc.printf(">%f Min:%f Max:%f\n\r", batt_lvl, min_batt, max_batt); } }