nikita teggi / Mbed 2 deprecated merged_code2_3rd_nov_2017

Dependencies:   SDFileSystem ds3231 eeprom_Nikita mbed testUniGraphic_150217

Fork of merged_code2_20sept_2017_4th_oct_2017 by nikita teggi

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers battery.cpp Source File

battery.cpp

00001 #include "mbed.h"
00002 #include "battery.h"
00003 #include "display_modules.h"
00004 
00005 #define BATTERY_PIN                                      PTB1                                                   // Battery Pin
00006 #define BATTERY_MAX_OPERATING_VOLTAGE                   (float)3.3                                              // Battery Max Operating Voltage
00007 #define BATTERY_INTERMEDIATE_HIGH_VOLTAGE               (float)3.64                                             // Battery Full Voltage
00008 #define BATTERY_MEDIUM_VOLTAGE                          (float)3.57                                             // battery Medium Voltage
00009 #define BATTERY_LOW_VOLTAGE                             (float)3.53                                             // Battery LOW Voltage 
00010 
00011 #define  BATTERY_SCREEN_CHARGE_CONDITION                                            0
00012 #define  BATTERY_LOW_CHARGE_CONDITION                                               1
00013 #define  BATTERY_CRITICALLY_LOW_CHARGE_CONDITION                                    2
00014 #define  BATTERY_SCREEN_NO_CHARGE_CONDITION                                         3
00015 
00016 static uint8_t battery_voltage_condition = 0;
00017 
00018 
00019 AnalogIn A(BATTERY_PIN);
00020 Serial battery(USBTX, USBRX);
00021 
00022 /*  Function    : To Monitor Battery Voltage
00023     returns     : void
00024 
00025 */
00026  
00027  //uint8_t battery_condition=0;
00028 void battery_monitor() 
00029 {
00030     
00031     float b_voltage;
00032     b_voltage = A.read_u16()*(BATTERY_MAX_OPERATING_VOLTAGE/65535)*2;
00033     wait(0.001f);   
00034     battery.printf("voltage=%f",b_voltage);
00035     
00036     if (b_voltage >= BATTERY_INTERMEDIATE_HIGH_VOLTAGE )
00037          battery_voltage_condition = BATTERY_SCREEN_CHARGE_CONDITION;
00038     
00039     else if ((b_voltage <  BATTERY_INTERMEDIATE_HIGH_VOLTAGE ) && (b_voltage > BATTERY_MEDIUM_VOLTAGE))             // 15% to 10% Battery voltage
00040          battery_voltage_condition =  BATTERY_LOW_CHARGE_CONDITION ;
00041               
00042     else if ((b_voltage < BATTERY_MEDIUM_VOLTAGE) && (b_voltage > BATTERY_LOW_VOLTAGE))                             // 10% to 5% battery volage
00043         battery_voltage_condition =  BATTERY_CRITICALLY_LOW_CHARGE_CONDITION;
00044             
00045     else if (b_voltage < BATTERY_LOW_VOLTAGE)
00046          battery_voltage_condition = BATTERY_SCREEN_NO_CHARGE_CONDITION ;
00047                    
00048   
00049     
00050  
00051 }
00052 
00053 /*  Function: To Display Battery Status
00054     returns : void
00055 */
00056 
00057 void battery_status_display()
00058 {
00059     if (battery_voltage_condition == BATTERY_SCREEN_CHARGE_CONDITION)
00060         battery_screen_charge();
00061         
00062     else if (battery_voltage_condition == BATTERY_LOW_CHARGE_CONDITION)      
00063          battery_low_charge();
00064          
00065     else if (battery_voltage_condition == BATTERY_CRITICALLY_LOW_CHARGE_CONDITION)      
00066          battery_critically_low_charge();
00067   
00068     else if (battery_voltage_condition == BATTERY_SCREEN_NO_CHARGE_CONDITION) {
00069          do
00070             {     
00071                 battery_screen_nocharge();
00072                 wait_ms(500);
00073                } while(battery_voltage_condition == BATTERY_SCREEN_NO_CHARGE_CONDITION );
00074             
00075         }
00076 }
00077 
00078 /*  Function    : To get battery status depending battery voltage 
00079     returns     : battery_voltage_condition
00080 
00081 */
00082 
00083 uint8_t get_battery_status()
00084 {
00085     
00086     return battery_voltage_condition;    
00087 }