Used with KL25Z Freescale board to access the Avnet Wi-Go Battery charger

Dependents:   KL25Z_Batt_Test

Committer:
monpjc
Date:
Fri May 17 20:13:01 2013 +0000
Revision:
2:f52adda183d2
Parent:
1:4c20371cd5c2
Added Light Sensor (Not Working)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
monpjc 0:d52ea6d270c0 1 #include "WiGo_BattCharger.h"
monpjc 0:d52ea6d270c0 2 #include "mbed.h"
monpjc 0:d52ea6d270c0 3
monpjc 0:d52ea6d270c0 4 WiGo_BattCharger::WiGo_BattCharger( PinName battlow, PinName battmed, PinName battfull, PinName en1, PinName en2, PinName snsen, PinName sense, PinName supplystate, PinName chargestate ) : _battlow(battlow), _battmed(battmed), _battfull(battfull), _en1(en1), _en2(en2), _snsen(snsen), _sense(sense), _supplystate(supplystate), _chargestate(chargestate)
monpjc 0:d52ea6d270c0 5 {
monpjc 0:d52ea6d270c0 6 _battlow = BATT_LED_OFF; //Default State
monpjc 0:d52ea6d270c0 7 _battmed = BATT_LED_OFF;
monpjc 0:d52ea6d270c0 8 _battfull = BATT_LED_OFF;
monpjc 0:d52ea6d270c0 9 _en1 = 0; //100mA Charge
monpjc 0:d52ea6d270c0 10 _en2 = 0;
monpjc 0:d52ea6d270c0 11 _snsen = 1; //Off
monpjc 0:d52ea6d270c0 12 }
monpjc 0:d52ea6d270c0 13
monpjc 1:4c20371cd5c2 14 void WiGo_BattCharger::init( int n )
monpjc 0:d52ea6d270c0 15 {
monpjc 2:f52adda183d2 16 switch(n) {
monpjc 1:4c20371cd5c2 17 default:
monpjc 1:4c20371cd5c2 18 case 0: //100mA Charge
monpjc 1:4c20371cd5c2 19 _en1 = 0;
monpjc 1:4c20371cd5c2 20 _en2 = 0;
monpjc 1:4c20371cd5c2 21 break;
monpjc 2:f52adda183d2 22
monpjc 1:4c20371cd5c2 23 case 1: //500mA
monpjc 1:4c20371cd5c2 24 _en1 = 0;
monpjc 1:4c20371cd5c2 25 _en2 = 1;
monpjc 1:4c20371cd5c2 26 break;
monpjc 2:f52adda183d2 27
monpjc 1:4c20371cd5c2 28 case 2: //724mA
monpjc 1:4c20371cd5c2 29 _en1 = 1;
monpjc 1:4c20371cd5c2 30 _en2 = 0;
monpjc 1:4c20371cd5c2 31 break;
monpjc 2:f52adda183d2 32
monpjc 1:4c20371cd5c2 33 case 3: //Suspend
monpjc 1:4c20371cd5c2 34 _en1 = 1;
monpjc 1:4c20371cd5c2 35 _en2 = 1;
monpjc 1:4c20371cd5c2 36 break;
monpjc 1:4c20371cd5c2 37 }
monpjc 0:d52ea6d270c0 38 }
monpjc 0:d52ea6d270c0 39
monpjc 0:d52ea6d270c0 40 void WiGo_BattCharger::sense_en( int n)
monpjc 0:d52ea6d270c0 41 {
monpjc 0:d52ea6d270c0 42 if( n == 0 )
monpjc 0:d52ea6d270c0 43 _snsen = 1;
monpjc 0:d52ea6d270c0 44 else
monpjc 0:d52ea6d270c0 45 _snsen = 0;
monpjc 0:d52ea6d270c0 46 }
monpjc 0:d52ea6d270c0 47
monpjc 0:d52ea6d270c0 48 float WiGo_BattCharger::read( void )
monpjc 0:d52ea6d270c0 49 {
monpjc 0:d52ea6d270c0 50 return _sense;
monpjc 0:d52ea6d270c0 51 }
monpjc 0:d52ea6d270c0 52
monpjc 0:d52ea6d270c0 53 int WiGo_BattCharger::charging( void )
monpjc 0:d52ea6d270c0 54 {
monpjc 0:d52ea6d270c0 55 return _chargestate;
monpjc 0:d52ea6d270c0 56 }
monpjc 0:d52ea6d270c0 57
monpjc 0:d52ea6d270c0 58 int WiGo_BattCharger::supply( void )
monpjc 0:d52ea6d270c0 59 {
monpjc 0:d52ea6d270c0 60 return _supplystate;
monpjc 0:d52ea6d270c0 61 }
monpjc 0:d52ea6d270c0 62
monpjc 2:f52adda183d2 63 void WiGo_BattCharger::LEDupdate( int n )
monpjc 0:d52ea6d270c0 64 {
monpjc 0:d52ea6d270c0 65 float batt_level;
monpjc 2:f52adda183d2 66
monpjc 2:f52adda183d2 67 if( n == 1 ) {
monpjc 2:f52adda183d2 68 sense_en(1);
monpjc 2:f52adda183d2 69 batt_level = read();
monpjc 2:f52adda183d2 70 if( batt_level <= BATT_0 ) {
monpjc 2:f52adda183d2 71 _battlow = BATT_LED_OFF;
monpjc 2:f52adda183d2 72 _battmed = BATT_LED_OFF;
monpjc 2:f52adda183d2 73 _battfull = BATT_LED_OFF;
monpjc 2:f52adda183d2 74 }
monpjc 2:f52adda183d2 75 if( batt_level > BATT_0 && batt_level <= 0.605 ) {
monpjc 2:f52adda183d2 76 _battlow = BATT_LED_ON;
monpjc 2:f52adda183d2 77 _battmed = BATT_LED_OFF;
monpjc 2:f52adda183d2 78 _battfull = BATT_LED_OFF;
monpjc 2:f52adda183d2 79 }
monpjc 2:f52adda183d2 80 if( batt_level > 0.605 && batt_level <= BATT_100 ) {
monpjc 2:f52adda183d2 81 _battlow = BATT_LED_ON;
monpjc 2:f52adda183d2 82 _battmed = BATT_LED_ON;
monpjc 2:f52adda183d2 83 _battfull = BATT_LED_OFF;
monpjc 2:f52adda183d2 84 }
monpjc 2:f52adda183d2 85 if( batt_level > BATT_100 ) {
monpjc 2:f52adda183d2 86 _battlow = BATT_LED_ON;
monpjc 2:f52adda183d2 87 _battmed = BATT_LED_ON;
monpjc 2:f52adda183d2 88 _battfull = BATT_LED_ON;
monpjc 2:f52adda183d2 89 }
monpjc 0:d52ea6d270c0 90 }
monpjc 2:f52adda183d2 91 else
monpjc 2:f52adda183d2 92 {
monpjc 2:f52adda183d2 93 _battlow = BATT_LED_OFF;
monpjc 2:f52adda183d2 94 _battmed = BATT_LED_OFF;
monpjc 2:f52adda183d2 95 _battfull = BATT_LED_OFF;
monpjc 0:d52ea6d270c0 96 }
monpjc 0:d52ea6d270c0 97 }
monpjc 2:f52adda183d2 98
monpjc 2:f52adda183d2 99 int WiGo_BattCharger::level( void )
monpjc 2:f52adda183d2 100 {
monpjc 2:f52adda183d2 101 float returnValue = 0;
monpjc 2:f52adda183d2 102 float batt_level = read();
monpjc 2:f52adda183d2 103
monpjc 2:f52adda183d2 104 returnValue = ((batt_level - BATT_0) * (BATT_100 - BATT_0)) * 10000;
monpjc 2:f52adda183d2 105
monpjc 2:f52adda183d2 106 if( returnValue > 100 )
monpjc 2:f52adda183d2 107 returnValue = 100;
monpjc 2:f52adda183d2 108
monpjc 2:f52adda183d2 109 if( returnValue < 0 )
monpjc 2:f52adda183d2 110 returnValue = 0;
monpjc 2:f52adda183d2 111
monpjc 2:f52adda183d2 112 return (int)returnValue;
monpjc 2:f52adda183d2 113 }