{ 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
//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
#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 = {
} 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