Added current factors. Various fixes for temperature monitor. Added partial implementation for can1 and can2
This commit is contained in:
@@ -108,10 +108,10 @@ void modPowerElectronicsInit(modPowerElectronicsPackStateTypedef *packState, mod
|
||||
modPowerElectronicsPackStateHandle->packInSOADischarge = true;
|
||||
modPowerElectronicsPackStateHandle->watchDogTime = 255;
|
||||
modPowerElectronicsPackStateHandle->packOperationalCellState = PACK_STATE_NORMAL;
|
||||
modPowerElectronicsPackStateHandle->temperatures[0] = -50.0f;
|
||||
modPowerElectronicsPackStateHandle->temperatures[1] = -50.0f;
|
||||
modPowerElectronicsPackStateHandle->temperatures[2] = -50.0f;
|
||||
modPowerElectronicsPackStateHandle->temperatures[3] = -50.0f;
|
||||
// modPowerElectronicsPackStateHandle->temperatures[0] = 0.0f;
|
||||
// modPowerElectronicsPackStateHandle->temperatures[1] = 0.0f;
|
||||
// modPowerElectronicsPackStateHandle->temperatures[2] = 0.0f;
|
||||
// modPowerElectronicsPackStateHandle->temperatures[3] = 0.0f;
|
||||
modPowerElectronicsPackStateHandle->tempBatteryHigh = 0.0f;
|
||||
modPowerElectronicsPackStateHandle->tempBatteryLow = 0.0f;
|
||||
modPowerElectronicsPackStateHandle->tempBatteryAverage = 0.0f;
|
||||
@@ -122,6 +122,11 @@ void modPowerElectronicsInit(modPowerElectronicsPackStateTypedef *packState, mod
|
||||
modPowerElectronicsPackStateHandle->buzzerOn = false;
|
||||
modPowerElectronicsPackStateHandle->powerDownDesired = false;
|
||||
modPowerElectronicsPackStateHandle->powerOnLongButtonPress = false;
|
||||
|
||||
for (uint8_t tempPointer = 0; tempPointer < NoOfTempSensors; ++tempPointer)
|
||||
{
|
||||
modPowerElectronicsPackStateHandle->temperatures[tempPointer] = 0;
|
||||
}
|
||||
|
||||
// init the cell module variables empty
|
||||
for( uint8_t modulePointer = 0; modulePointer < NoOfCellMonitorsPossibleOnBMS; modulePointer++) {
|
||||
@@ -592,30 +597,41 @@ void modPowerElectronicsCalcTempStats(void) {
|
||||
|
||||
// BMS temperatures
|
||||
|
||||
for(uint8_t sensorPointer = 1; sensorPointer < 16; sensorPointer++){
|
||||
for(uint8_t sensorPointer = 0; sensorPointer < 16; sensorPointer++){
|
||||
if(modPowerElectronicsGeneralConfigHandle->tempEnableMaskBMS & (1 << sensorPointer)){
|
||||
modPowerElectronicsPackStateHandle->temperatures[sensorPointer] = modPowerElectronicsPackStateHandle->auxVoltagesIndividual[sensorPointer-1].auxVoltage;
|
||||
}
|
||||
}
|
||||
|
||||
for(uint8_t sensorPointer = 0; sensorPointer < 16; sensorPointer++){
|
||||
// for(uint8_t sensorPointer = 0; sensorPointer < 16; sensorPointer++){
|
||||
|
||||
if(modPowerElectronicsGeneralConfigHandle->tempEnableMaskBMS & (1 << sensorPointer)){
|
||||
if(modPowerElectronicsPackStateHandle->temperatures[sensorPointer] > tempBMSMax)
|
||||
tempBMSMax = modPowerElectronicsPackStateHandle->temperatures[sensorPointer];
|
||||
// if(modPowerElectronicsGeneralConfigHandle->tempEnableMaskBMS & (1 << sensorPointer)){
|
||||
// if(modPowerElectronicsPackStateHandle->temperatures[sensorPointer] > tempBMSMax)
|
||||
// tempBMSMax = modPowerElectronicsPackStateHandle->temperatures[sensorPointer];
|
||||
|
||||
if(modPowerElectronicsPackStateHandle->temperatures[sensorPointer] < tempBMSMin)
|
||||
tempBMSMin = modPowerElectronicsPackStateHandle->temperatures[sensorPointer];
|
||||
// if(modPowerElectronicsPackStateHandle->temperatures[sensorPointer] < tempBMSMin)
|
||||
// tempBMSMin = modPowerElectronicsPackStateHandle->temperatures[sensorPointer];
|
||||
|
||||
tempBMSSum += modPowerElectronicsPackStateHandle->temperatures[sensorPointer];
|
||||
tempBMSSumCount++;
|
||||
}
|
||||
}
|
||||
// tempBMSSum += modPowerElectronicsPackStateHandle->temperatures[sensorPointer];
|
||||
// tempBMSSumCount++;
|
||||
// }
|
||||
// }
|
||||
|
||||
// Battery temperatures statistics for LTC aux channels without taking into account the first slave board temp measurement
|
||||
|
||||
for(uint8_t sensorModulePointer = 0; sensorModulePointer < modPowerElectronicsGeneralConfigHandle->cellMonitorICCount; sensorModulePointer++) {
|
||||
for(uint8_t sensorPointer = 0; sensorPointer < modPowerElectronicsGeneralConfigHandle->noOfTempSensorPerModule; sensorPointer++) {
|
||||
if(modPowerElectronicsGeneralConfigHandle->tempEnableMaskBMS & (1 << sensorPointer)){
|
||||
if(modPowerElectronicsPackStateHandle->temperatures[sensorPointer] > tempBMSMax)
|
||||
tempBMSMax = modPowerElectronicsPackStateHandle->temperatures[sensorPointer];
|
||||
|
||||
if(modPowerElectronicsPackStateHandle->temperatures[sensorPointer] < tempBMSMin)
|
||||
tempBMSMin = modPowerElectronicsPackStateHandle->temperatures[sensorPointer];
|
||||
|
||||
tempBMSSum += modPowerElectronicsPackStateHandle->temperatures[sensorPointer];
|
||||
tempBMSSumCount++;
|
||||
}
|
||||
|
||||
if(modPowerElectronicsGeneralConfigHandle->tempEnableMaskBattery & (1 << sensorPointer)){
|
||||
if(modPowerElectronicsPackStateHandle->auxVoltagesIndividual[sensorPointer].auxVoltage > tempBatteryMax)
|
||||
tempBatteryMax = modPowerElectronicsPackStateHandle->auxVoltagesIndividual[sensorPointer].auxVoltage;
|
||||
@@ -921,8 +937,9 @@ void modPowerElectronicsCellMonitorsCheckConfigAndReadAnalogData(void){
|
||||
// Read aux voltages
|
||||
driverSWLTC6804ReadAuxVoltagesArray(modPowerElectronicsPackStateHandle->auxModuleVoltages,modPowerElectronicsGeneralConfigHandle->NTC25DegResistance[modConfigNTCGroupLTCExt],modPowerElectronicsGeneralConfigHandle->NTCTopResistor[modConfigNTCGroupLTCExt],modPowerElectronicsGeneralConfigHandle->NTCBetaFactor[modConfigNTCGroupLTCExt],25.0f);
|
||||
modPowerElectronicsAuxMonitorsArrayTranslate();
|
||||
//driverSWLTC6804ReadAuxSensors(modPowerElectronicsAuxVoltageArray);
|
||||
//modPowerElectronicsPackStateHandle->temperatures[0] = modPowerElectronicsPackStateHandle->temperatures[1] = driverSWLTC6804ConvertTemperatureExt(modPowerElectronicsAuxVoltageArray[1],modPowerElectronicsGeneralConfigHandle->NTC25DegResistance[modConfigNTCGroupLTCExt],modPowerElectronicsGeneralConfigHandle->NTCTopResistor[modConfigNTCGroupLTCExt],modPowerElectronicsGeneralConfigHandle->NTCBetaFactor[modConfigNTCGroupLTCExt],25.0f);
|
||||
|
||||
// driverSWLTC6804ReadAuxSensors(modPowerElectronicsAuxVoltageArray);
|
||||
// modPowerElectronicsPackStateHandle->temperatures[0] = modPowerElectronicsPackStateHandle->temperatures[1] = driverSWLTC6804ConvertTemperatureExt(modPowerElectronicsAuxVoltageArray[1],modPowerElectronicsGeneralConfigHandle->NTC25DegResistance[modConfigNTCGroupLTCExt],modPowerElectronicsGeneralConfigHandle->NTCTopResistor[modConfigNTCGroupLTCExt],modPowerElectronicsGeneralConfigHandle->NTCBetaFactor[modConfigNTCGroupLTCExt],25.0f);
|
||||
|
||||
//Read exp voltages
|
||||
// driverSWADC128D818ReadExpVoltagesArray(modPowerElectronicsPackStateHandle->expModuleVoltages,modPowerElectronicsGeneralConfigHandle->NTC25DegResistance[modConfigNTCGroupExp],modPowerElectronicsGeneralConfigHandle->NTCTopResistor[modConfigNTCGroupExp],modPowerElectronicsGeneralConfigHandle->NTCBetaFactor[modConfigNTCGroupExp],25.0f);
|
||||
|
||||
Reference in New Issue
Block a user