コード例 #1
0
void ProgramData::changedType()
{
    battery.Vc_per_cell = getDefaultVoltagePerCell(VCharged);
    battery.Vd_per_cell = getDefaultVoltagePerCell(VDischarged);

    if(battery.type == NoneBatteryType) {
        battery.capacity = ANALOG_CHARGE(2.000);
        battery.cells = 3;

        battery.time = ANALOG_MAX_TIME_LIMIT;
        battery.enable_externT = false;
        battery.externTCO = ANALOG_CELCIUS(60);

        battery.enable_adaptiveDischarge = false;
        battery.DCRestTime = 30;
        battery.capCutoff = 120;
    }

    if(isNiXX()) {
        battery.enable_deltaV = true;
        if(battery.type == NiMH) {
            battery.deltaV = -ANALOG_VOLT(0.005);
        } else {
            battery.deltaV = -ANALOG_VOLT(0.015);
        }
        battery.deltaVIgnoreTime = 3;
        battery.deltaT = ANALOG_CELCIUS(1);
        battery.DCcycles = 5;
    } else {
        battery.balancerError = ANALOG_VOLT(0.008);
        battery.Vs_per_cell = getDefaultVoltagePerCell(VStorage);
    }
    changedCapacity();

}
コード例 #2
0
void SettingsMenu::changeDeltaTemp(AnalogInputs::ValueType &v, int step) {
    const AnalogInputs::ValueType min = ANALOG_CELCIUS(0.1);
    const AnalogInputs::ValueType max = ANALOG_CELCIUS(10);
    step *= ANALOG_CELCIUS(0.1);
    v+=step;
    if(v < min) v = min;
    if(v > max) v = max;
}
コード例 #3
0
ファイル: imaxB6.cpp プロジェクト: cid26/cheali-charger
    return 0;
}

uint16_t empty()
{
    return 0;
}

const AnalogInputs::DefaultValues inputs_P[AnalogInputs::PHYSICAL_INPUTS] PROGMEM = {
    {AnalogInputs::analogValue<OUTPUT_VOLATAGE_PIN>,    {0,0},      {25920, ANALOG_VOLT(11.945)}},  //Vout
    {reversePolarityValue,                              {0,0},      {38000, ANALOG_VOLT(11.829)}},  //VreversePolarity
    {AnalogInputs::analogValue<SMPS_CURRENT_PIN>,       {0,0},      {10985, ANALOG_AMP(1.013)}},    //Ismps
    {AnalogInputs::analogValue<DISCHARGE_CURRENT_PIN>,  {0,0},      {14212, ANALOG_AMP(0.100)}},    //Idischarge

    {empty,    {0, 0},                      {0, ANALOG_VOLT(0)}},  //VoutMux
    {empty,    {0, 0},                      {0, ANALOG_CELCIUS(0)}},   //Tintern
    {AnalogInputs::analogValue<V_IN_PIN>,        {0, 0},            {48063, ANALOG_VOLT(14.044)}},  //Vin
    {mux.analogRead<MADDR_T_EXTERN>,    {5765,ANALOG_CELCIUS(23.2)},{14300, ANALOG_CELCIUS(60)}},   //Textern

    {mux.analogRead<MADDR_V_BALANSER1>, {0, 0},                     {52072, ANALOG_VOLT(3.985)}},   //Vb0
    {mux.analogRead<MADDR_V_BALANSER2>, {0, 0},                     {52686, ANALOG_VOLT(3.984)}},   //Vb1
    {mux.analogRead<MADDR_V_BALANSER3>, {0, 0},                     {52094, ANALOG_VOLT(3.935)}},   //Vb2

    {mux.analogRead<MADDR_V_BALANSER4>, {0, 0},                     {51180, ANALOG_VOLT(3.867)}},   //Vb3
    {mux.analogRead<MADDR_V_BALANSER5>, {0, 0},                     {51130, ANALOG_VOLT(3.866)}},   //Vb4
    {mux.analogRead<MADDR_V_BALANSER6>, {0, 0},                     {49348, ANALOG_VOLT(3.876)}},   //Vb5

    {smpsValue,                         {0, 0},                     {86,    ANALOG_AMP(1.013)}},      //IsmpsValue
    {dischargerValue,                   {0, 0},                     {82,    ANALOG_AMP(0.100)}},      //IdischargeValue
#ifdef ANALOG_INPUTS_V_UNKNOWN
    {mux.analogRead<MADDR_V_UNKNOWN0>,  {0,0},                      {1, 1}},                        //UNKNOWN0
コード例 #4
0
ファイル: Settings.cpp プロジェクト: Djok39/cheali-charger
#endif

#ifndef SETTINGS_FORCE_BALANCE_PORT_DEFAULT
#define SETTINGS_FORCE_BALANCE_PORT_DEFAULT 1
#endif

#ifndef SETTINGS_ADC_NOISE_DEFAULT
#define SETTINGS_ADC_NOISE_DEFAULT 0
#endif

Settings settings;

const Settings defaultSettings PROGMEM = {
        70,                 //backlight
        Settings::FanTemperature, //fanOn
        ANALOG_CELCIUS(50), //fanTempOn
        ANALOG_CELCIUS(60), //dischargeTempOff
        SETTINGS_EXTERNAL_T_DEFAULT, //externT
        ANALOG_CELCIUS(60), //externTCO

        ANALOG_CELCIUS(1),  //deltaT
        SETTINGS_DELTA_V_ENABLE_DEFAULT, //enable_deltaV
        -ANALOG_VOLT(0.005), //deltaV_NiMH
        -ANALOG_VOLT(0.015), //deltaV_NiCd
        ANALOG_VOLT(1.800), //cutoffV_NiMH
        ANALOG_VOLT(1.800), //cutoffV_NiCd
        5,                  //DCcycles
        30,                 //DCRestTime

        1,                  //AudioBeep: yes/no
        10,                 //minIoutDiv
コード例 #5
0
*/

#include "AnalogInputsPrivate.h"
#include "memory.h"
#include "Utils.h"

const AnalogInputs::DefaultValues AnalogInputs::inputsP_[] PROGMEM = {

  {{0, ANALOG_VOLT (0.000)}, {25124, ANALOG_VOLT (23.328)}},    //Vout_plus_pin
  {{0, ANALOG_VOLT (0.000)}, {25124, ANALOG_VOLT (23.328)}},    //Vout_minus_pin
  {{2*113, ANALOG_AMP (0.100)}, {5025, ANALOG_AMP (1.000)}},      //Ismps
  {{2*857, ANALOG_AMP (0.100)}, {5703, ANALOG_AMP (0.300)}},      //Idischarge


  {{0, ANALOG_VOLT (0.000)}, {1, ANALOG_VOLT (0.001)}}, //VoutMux
  {{8000, ANALOG_CELCIUS (59.40)}, {8642, ANALOG_CELCIUS (34.80)}},   //Tintern
  {{0, ANALOG_VOLT (0.000)}, {23508, ANALOG_VOLT (14.012)}},    //Vin
  {{9780, ANALOG_CELCIUS (28.60)}, {9144, ANALOG_CELCIUS (60.00)}},   //Textern

  {{0, ANALOG_VOLT (0.000)}, {23765, ANALOG_VOLT (3.901)}},     //Vb0_pin
  {{0, ANALOG_VOLT (0.000)}, {23765, ANALOG_VOLT (3.901)}},     //Vb1_pin
  {{0, ANALOG_VOLT (0.000)}, {48029, ANALOG_VOLT (7.613)}},     //Vb2_pin
  {{0, ANALOG_VOLT (0.000)}, {24315, ANALOG_VOLT (3.750)}},     //Vb3_pin
  {{0, ANALOG_VOLT (0.000)}, {25561, ANALOG_VOLT (3.957)}},     //Vb4_pin
  {{0, ANALOG_VOLT (0.000)}, {26409, ANALOG_VOLT (4.092)}},     //Vb5_pin
  {{0, ANALOG_VOLT (0.000)}, {26614, ANALOG_VOLT (4.108)}},     //Vb6_pin

#if MAX_BANANCE_CELLS > 6
  {{,}, {,}},                   //Vb7_pin
  {{,}, {,}},                   //Vb8_pin
#endif
コード例 #6
0
ファイル: Calibrate.cpp プロジェクト: wregwreg/cheali-charger
    do {
        i = menu.runSimple();
        if(i<0) break;
        current = pgm::read(&values[i]);
        calibrateI(textMenu == chargeIMenu, i, current);
    } while(true);
}


/* temperature calibration */

#define EANALOG_T(name) {CP_TYPE_TEMPERATURE, 0, &AnalogInputs::real_[AnalogInputs::name]}
#define EANALOG_ADC(name) {CP_TYPE_UNSIGNED, 0, &AnalogInputs::avrAdc_[AnalogInputs::name]}

const StaticEditMenu::StaticEditData editExternTData[] PROGMEM = {
{string_t_menu_temperature,     COND_E_ANALOG,  EANALOG_T(Textern),             {1, 0, ANALOG_CELCIUS(100)}},
{string_t_menu_adc,             COND_ALWAYS,    EANALOG_ADC(Textern),           {0,0,0}},
{string_menu_point,             COND_POINT,     {CP_TYPE_UNSIGNED, 0, &calibrationPoint},        {1, 0, 1}},
{NULL,                      StaticEditMenu::Last}
};

const StaticEditMenu::StaticEditData editInternTData[] PROGMEM = {
{string_t_menu_temperature,     COND_E_ANALOG,  EANALOG_T(Tintern),             {1, 0, ANALOG_CELCIUS(100)}},
{string_t_menu_adc,             COND_ALWAYS,    EANALOG_ADC(Tintern),           {0,0,0}},
{string_menu_point,             COND_POINT,     {CP_TYPE_UNSIGNED, 0, &calibrationPoint},        {1, 0, 1}},
{NULL,                      StaticEditMenu::Last}
};

const AnalogInputs::Name externTName[] PROGMEM = { AnalogInputs::Textern };
const AnalogInputs::Name internTName[] PROGMEM = { AnalogInputs::Tintern };
コード例 #7
0
*/

#include "AnalogInputsPrivate.h"
#include "memory.h"
#include "Utils.h"

const AnalogInputs::DefaultValues AnalogInputs::inputsP_[] PROGMEM = {

  {{0, ANALOG_VOLT (0.000)}, {25914, ANALOG_VOLT (11.973)}},    //Vout_plus_pin
  {{0, ANALOG_VOLT (0.000)}, {25914, ANALOG_VOLT (11.973)}},    //Vout_minus_pin
  {{504, ANALOG_AMP (0.050)}, {11132, ANALOG_AMP (1.000)}},     //Ismps
  {{1152, ANALOG_AMP (0.050)}, {7936, ANALOG_AMP (0.300)}},     //Idischarge


  {{0, ANALOG_VOLT (0.000)}, {0, ANALOG_VOLT (0.000)}}, //VoutMux
  {{0, ANALOG_CELCIUS (0.000)}, {0, ANALOG_CELCIUS (0.000)}},   //Tintern
  {{0, ANALOG_VOLT (0.000)}, {42624, ANALOG_VOLT (12.490)}},    //Vin
  {{19650, ANALOG_CELCIUS (2.980)}, {18700, ANALOG_CELCIUS (6.000)}},   //Textern

  {{0, ANALOG_VOLT (0.000)}, {48963, ANALOG_VOLT (3.752)}},     //Vb0_pin
  {{0, ANALOG_VOLT (0.000)}, {55409, ANALOG_VOLT (4.200)}},     //Vb1_pin
  {{0, ANALOG_VOLT (0.000)}, {55727, ANALOG_VOLT (4.200)}},     //Vb2_pin
  {{0, ANALOG_VOLT (0.000)}, {26432, ANALOG_VOLT (2.000)}},     //Vb3_pin
  {{0, ANALOG_VOLT (0.000)}, {54799, ANALOG_VOLT (4.200)}},     //Vb4_pin
  {{0, ANALOG_VOLT (0.000)}, {55496, ANALOG_VOLT (4.200)}},     //Vb5_pin
  {{0, ANALOG_VOLT (0.000)}, {55434, ANALOG_VOLT (4.200)}},     //Vb6_pin
#if MAX_BANANCE_CELLS > 6
  {{,}, {,}},                   //Vb7_pin
  {{,}, {,}},                   //Vb8_pin
#endif
コード例 #8
0
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

#include "AnalogInputsPrivate.h"
#include "memory.h"
#include "Utils.h"

const AnalogInputs::DefaultValues AnalogInputs::inputsP_[] PROGMEM = {
    {{0,0},                         {50816, ANALOG_VOLT(23.118)}},  //Vout
    {{0,0},                         {27516, ANALOG_VOLT(12.552)}},  //VreversePolarity
    {{0,   ANALOG_AMP(0)},    {0, ANALOG_AMP(0)}},    //Ismps
    {{0,   ANALOG_AMP(0)},    { 0, ANALOG_AMP(0)}},    //Idischarge

    {{0, 0},                        {44736, ANALOG_VOLT(23.118)}},  //VoutMux
    {{21500, ANALOG_CELCIUS(52)},   {41023, ANALOG_CELCIUS(29)}},   //Tintern
    {{0, 0},                        {47872, ANALOG_VOLT(14.020)}},  //Vin
    {{6272,  ANALOG_CELCIUS(24)},   {14300, ANALOG_CELCIUS(60)}},   //Textern

    {{0, 0},                        {0, ANALOG_VOLT(0)}},           //Vb0_pin -??
    {{0, 0},                        {50244, ANALOG_VOLT(3.834)}},   //Vb1_pin
    {{0, 0},                        {50176, ANALOG_VOLT(3.835)}},   //Vb2_pin
    {{0, 0},                        {50280, ANALOG_VOLT(3.837)}},   //Vb3_pin

    {{0, 0},                        {50602, ANALOG_VOLT(3.862)}},   //Vb4_pin
    {{0, 0},                        {50752, ANALOG_VOLT(3.865)}},   //Vb5_pin
    {{0, 0},                        {51008, ANALOG_VOLT(3.885)}},   //Vb6_pin

#if MAX_BANANCE_CELLS > 6
    {{0, 0},                        {50752, ANALOG_VOLT(3.865)}},   //Vb7_pin
    {{0, 0},                        {51008, ANALOG_VOLT(3.885)}},   //Vb8_pin
コード例 #9
0
ファイル: Settings.cpp プロジェクト: 9DSmart/cheali-charger
#ifndef SETTINGS_MAX_CHARGE_I
#define SETTINGS_MAX_CHARGE_I       MAX_CHARGE_I
#endif

#ifndef SETTINGS_MAX_DISCHARGE_I
#define SETTINGS_MAX_DISCHARGE_I    MAX_DISCHARGE_I
#endif


Settings settings;

const Settings defaultSettings PROGMEM = {
        70,                 //backlight
        Settings::FanTemperature, //fanOn
        ANALOG_CELCIUS(50), //fanTempOn
        ANALOG_CELCIUS(60), //dischargeTempOff

        1,                  //AudioBeep: yes/no
        ANALOG_AMP(0.050),  //minIc
        SETTINGS_MAX_CHARGE_I,       //maxIc
        ANALOG_AMP(0.050),  //minId
        SETTINGS_MAX_DISCHARGE_I,    //maxId
        ANALOG_VOLT(10.000),//inputVoltageLow

        SETTINGS_ADC_NOISE_DEFAULT, //adcNoise
        Settings::Disabled, //UART - disabled
        3,                   //57600
        Settings::Software, //UARToutput
        Settings::MenuSimple, //menuType
        Settings::MenuButtonsReversed, //menuButtons
コード例 #10
0
ファイル: GTPowerA6-10.cpp プロジェクト: cid26/cheali-charger
{
    uint16_t vr = AnalogInputs::analogValue<REVERSE_POLARITY_PIN>();
//    return vr;
    uint16_t vo = AnalogInputs::analogValue<OUTPUT_VOLATAGE_PIN>();
    if(vr > vo) return vr - vo;
    return 0;
}

const AnalogInputs::DefaultValues inputs_P[AnalogInputs::PHYSICAL_INPUTS] PROGMEM = {
    {AnalogInputs::analogValue<OUTPUT_VOLATAGE_PIN>,    {0,0},      {50816, ANALOG_VOLT(23.118)}},  //Vout
    {reversePolarityValue,                              {0,0},      {27516, ANALOG_VOLT(12.552)}},  //VreversePolarity
    {AnalogInputs::analogValue<SMPS_CURRENT_PIN>,       {256,   ANALOG_AMP(0.051)}, {10240, ANALOG_AMP(2.000)}},    //Ismps
    {AnalogInputs::analogValue<DISCHARGE_CURRENT_PIN>,  {384,   ANALOG_AMP(0.051)}, { 9024, ANALOG_AMP(1.000)}},    //Idischarge

    {mux.analogRead<MADDR_V_OUTMUX>,    {0, 0},                     {44736, ANALOG_VOLT(23.118)}},  //VoutMux
    {mux.analogRead<MADDR_T_INTERN>,    {21500, ANALOG_CELCIUS(52)},{41023, ANALOG_CELCIUS(29)}},   //Tintern
    {mux.analogRead<MADDR_V_IN>,        {0, 0},                     {47872, ANALOG_VOLT(14.020)}},  //Vin
    {mux.analogRead<MADDR_T_EXTERN>,    {6272,  ANALOG_CELCIUS(24)},{14300, ANALOG_CELCIUS(60)}},   //Textern

    {mux.analogRead<MADDR_V_BALANSER1>, {0, 0},                     {50244, ANALOG_VOLT(3.834)}},   //Vb0
    {mux.analogRead<MADDR_V_BALANSER2>, {0, 0},                     {50176, ANALOG_VOLT(3.835)}},   //Vb1
    {mux.analogRead<MADDR_V_BALANSER3>, {0, 0},                     {50280, ANALOG_VOLT(3.837)}},   //Vb2

    {mux.analogRead<MADDR_V_BALANSER4>, {0, 0},                     {50602, ANALOG_VOLT(3.862)}},   //Vb3
    {mux.analogRead<MADDR_V_BALANSER5>, {0, 0},                     {50752, ANALOG_VOLT(3.865)}},   //Vb4
    {mux.analogRead<MADDR_V_BALANSER6>, {0, 0},                     {51008, ANALOG_VOLT(3.885)}},   //Vb5

    {smpsValue,                         {22, ANALOG_AMP(0.051)},    {744, ANALOG_AMP(2.000)}},      //IsmpsValue
    {dischargerValue,                   {32, ANALOG_AMP(0.051)},    {657, ANALOG_AMP(1.000)}},      //IdischargeValue
#ifdef ANALOG_INPUTS_V_UNKNOWN
    {mux.analogRead<MADDR_V_UNKNOWN0>,  {0,0},                      {1, 1}},                        //UNKNOWN0