Example #1
0
{
    uint16_t vr = AnalogInputs::analogValue<REVERSE_POLARITY_PIN>();
    uint16_t vo = AnalogInputs::analogValue<OUTPUT_VOLATAGE_PIN>();
    if(vr > vo) return vr - vo;
    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
Example #2
0
//http://batteryuniversity.com/learn/article/charging_the_lead_acid_battery
/*Pb*/  { ANALOG_VOLT(2.000), ANALOG_VOLT(2.450), ANALOG_VOLT(1.750),   0,  0 /*??*/},
//LiXX
/*Life*/{ ANALOG_VOLT(3.300), ANALOG_VOLT(3.600), ANALOG_VOLT(2.000),   ANALOG_VOLT(3.300) /*??*/, 0},
/*Lilo*/{ ANALOG_VOLT(3.600), ANALOG_VOLT(4.100), ANALOG_VOLT(2.500),   ANALOG_VOLT(3.750) /*??*/, 0},
/*LiPo*/{ ANALOG_VOLT(3.700), ANALOG_VOLT(4.200), ANALOG_VOLT(3.000),   ANALOG_VOLT(3.850) /*??*/, 0},

/*Li430*/{ ANALOG_VOLT(3.700), ANALOG_VOLT(4.300), ANALOG_VOLT(3.000),   ANALOG_VOLT(3.850) /*??*/, 0},
/*Li435*/{ ANALOG_VOLT(3.700), ANALOG_VOLT(4.350), ANALOG_VOLT(3.000),   ANALOG_VOLT(3.850) /*??*/, 0},
//based on "mars" settings - not tested
/*NiZn*/{ ANALOG_VOLT(1.600), ANALOG_VOLT(1.900), ANALOG_VOLT(1.300),   ANALOG_VOLT(1.600) /*Probably not??*/, 0},

};

const ProgramData::BatteryData defaultProgram[ProgramData::LAST_BATTERY_TYPE] PROGMEM = {
        {ProgramData::Unknown,  ANALOG_CHARGE(2.200), ANALOG_AMP(2.200), ANALOG_AMP(1.900), 10000},
        {ProgramData::NiCd,     ANALOG_CHARGE(2.200), ANALOG_AMP(2.200), ANALOG_AMP(1.900), 1},
        {ProgramData::NiMH,     ANALOG_CHARGE(2.200), ANALOG_AMP(2.200), ANALOG_AMP(1.900), 1},
        {ProgramData::Pb,       ANALOG_CHARGE(2.200), ANALOG_AMP(0.220), ANALOG_AMP(1.900), 6},
        {ProgramData::Life,     ANALOG_CHARGE(2.200), ANALOG_AMP(2.200), ANALOG_AMP(1.900), 3},
        {ProgramData::Lilo,     ANALOG_CHARGE(2.200), ANALOG_AMP(2.200), ANALOG_AMP(1.900), 3},
        {ProgramData::Lipo,     ANALOG_CHARGE(2.200), ANALOG_AMP(2.200), ANALOG_AMP(1.900), 3},
        {ProgramData::Li430,    ANALOG_CHARGE(2.200), ANALOG_AMP(2.200), ANALOG_AMP(1.900), 3},
        {ProgramData::Li435,    ANALOG_CHARGE(2.200), ANALOG_AMP(2.200), ANALOG_AMP(1.900), 3},
        {ProgramData::NiZn,     ANALOG_CHARGE(2.200), ANALOG_AMP(2.200), ANALOG_AMP(1.900), 3}
};

const char batteryString_Unknown[]  PROGMEM = "Unknown";
const char batteryString_NiCd[]     PROGMEM = "NiCd";
const char batteryString_NiMH[]     PROGMEM = "NiMH";
const char batteryString_Pb[]       PROGMEM = "Pb?";
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    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, 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
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    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, 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
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    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
Example #6
0
#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
};


const uint32_t Settings::UARTSpeedValue[Settings::UARTSpeeds] PROGMEM = {
Example #7
0
}


uint16_t reversePolarityValue()
{
    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