2018-11-21 23:17:31 +01:00
/*
* Charger . cpp
*
* Created on : 19.11 .2018
* Author : Hendrik Schutter
*/
# include "openChargeMicro.h"
2018-11-22 20:43:21 +01:00
charger : : charger ( const struct s_charger pCharger ) {
2018-11-21 23:17:31 +01:00
charger_settings = pCharger ;
2018-11-22 20:43:21 +01:00
active = false ;
2018-11-22 23:27:20 +01:00
capacity = 0 ;
2018-11-21 23:17:31 +01:00
}
charger : : ~ charger ( ) {
}
2018-11-22 22:32:02 +01:00
/* returns current charge-current in mA */
2018-11-23 13:03:13 +01:00
int charger : : getCurrent ( ) {
2018-11-21 23:17:31 +01:00
mux . setChannel ( charger_settings . chI ) ;
int tmp = ( int ) io . readAdc ( 0 ) ;
2018-11-23 21:23:40 +01:00
int ret = ( int ) ( ( tmp * 1.4286 ) + 34.857 ) ; //TODO calibration and testing
2018-11-21 23:17:31 +01:00
return ret ;
}
2018-11-22 22:32:02 +01:00
/* returns current battery voltage in V */
2018-11-21 23:17:31 +01:00
double charger : : getVoltage ( ) {
mux . setChannel ( charger_settings . chU ) ;
int tmp = ( int ) io . readAdc ( 0 ) ;
2018-11-23 13:03:13 +01:00
double ret = ( ( double ) tmp ) * 0.00615 ;
2018-11-21 23:17:31 +01:00
return ret ;
}
2018-11-23 21:23:40 +01:00
/* returns summed up charged capacity since charge start in µAh */
2018-11-22 23:27:20 +01:00
unsigned int charger : : getCapacity ( ) {
return capacity ;
2018-11-21 23:17:31 +01:00
}
2018-11-22 23:27:20 +01:00
void charger : : setStartTime ( struct time_t pTime ) {
2018-11-22 22:40:46 +01:00
startTime = pTime ;
}
2018-11-22 23:27:20 +01:00
struct time_t charger : : getStartTime ( ) {
return startTime ;
}
2018-11-21 23:17:31 +01:00
void charger : : getInfo ( ) {
char buffer [ 50 ] ;
sprintf ( buffer , " Nr: %i - Uch %i - Ich %i \r \n " , charger_settings . nr ,
charger_settings . chU , charger_settings . chI ) ;
serialSend ( buffer ) ;
}
2018-11-22 20:43:21 +01:00
void charger : : setStatus ( bool pBool ) {
active = pBool ;
}
bool charger : : getStatus ( ) {
return active ;
}
2018-11-21 23:17:31 +01:00
2018-11-22 23:27:20 +01:00
/* resets the capacity */
void charger : : reset ( ) {
2018-11-23 21:23:40 +01:00
capacity = 0 ;
2018-11-22 23:27:20 +01:00
}
/* updates the capacity */
void charger : : update ( ) {
2018-11-23 13:03:13 +01:00
// 1sec / 3600
const double div = 0.000277778 ;
2018-11-23 21:23:40 +01:00
capacity = capacity + ( ( unsigned long int ) ( div * getCurrent ( ) * 1000 ) ) ;
2018-11-23 13:03:13 +01:00
//serialSend("update\r\n");
2018-11-22 23:27:20 +01:00
}