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(); }
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; }
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
#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
*/ #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
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 };
*/ #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
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
#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
{ 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