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);
    }
}