AnalogInputs::ValueType TheveninMethod::calculateNewValue(bool isEndVout, AnalogInputs::ValueType oldValue) { calculateRthVth(oldValue); storeOldValue(oldValue); /* AnalogInputs::ValueType Verr = 0; AnalogInputs::ValueType Vend_per_cell = Balancer::calculatePerCell(Vend_); for(uint8_t i = 0; i < cells_; i++) { int16_t error = Balancer::getV(i); if(!IO::digitalRead(SMPS_DISABLE_PIN)) { error -= Vend_per_cell; } else { error = Vend_per_cell - error; } if (error > 0) Verr += error; } if(Verr > 1) Vcell_err+= Verr; else if(Vcell_err) Vcell_err -= 2; if(!IO::digitalRead(SMPS_DISABLE_PIN)) { // if(isEndVout && balance_) { // Balancer::endBalancing(); // Balancer::done_ = false; // } return Vend_ - Vcell_err; } else return Vend_ + Vcell_err; */ return Vend_; }
AnalogInputs::ValueType TheveninMethod::calculateNewValue(bool isEndVout, AnalogInputs::ValueType oldValue) { AnalogInputs::ValueType i; calculateRthVth(oldValue); storeOldValue(oldValue); i = calculateI(); idebug_ = i; i = normalizeI(i, oldValue); //test if maximum output voltage reached switch(Ifalling_) { case NotFalling: if(!isEndVout) break; if(balance_) { Balancer::endBalancing(); Balancer::done_ = false; } Ifalling_ = LastRthMesurment; //temporarily turn off i = 0; break; default: Ifalling_ = Falling; break; } return i; }
AnalogInputs::ValueType TheveninMethod::calculateNewValue(bool isEndVout, AnalogInputs::ValueType oldValue) { AnalogInputs::ValueType i; //test for maximum output voltage reached if(isEndVout) { switch(Ifalling_) { case NotFalling: Ifalling_ = LastRthMesurment; //temporarily turn off storeOldValue(oldValue); return 0; default: Ifalling_ = Falling; break; } } calculateRthVth(oldValue); i = calculateI(); return normalizeI(i, oldValue); }