What is the charging range in temperature the design allows on a Muon?
Has the user have a say or this has been predefined by design (example. via resistors)?
Thanks
What is the charging range in temperature the design allows on a Muon?
Has the user have a say or this has been predefined by design (example. via resistors)?
Thanks
The Muon used the PM-BAT power module on the carrier board. The temperature can be configured with PM-BAT using resistors, and they are populated on the Muon carrier board.
The high side resistor RT1 is 6.98K and the low-side resistor RT2 is 82.5K. That works out to minimum charge temperature of -2°C, maximum charge temperature HTF=39°C and TCO=43°C.
thanks again
This is the cut off temperature for charging only, and not for general power of the Muon, correct?
I imagine I can continue to use a Muon on 50°C. Not that I want to, but environment and enclosure will help with this.
(wanted to double triple check - thanks!)
Yes, that's only the charging temperature. The operating temperature should be -10°C to 60°C, but there is no circuitry that shuts down based on temperature.
Hello, I have a follow up question.
Where is the BATTERY_STATE_NOT_CHARGING coming from?
I wonder if it indicates that the battery is not charging because the temperature (example: too cold to charge). Is that so?
Thanks!
const uint8_t status = power.getSystemStatus();
const uint8_t pwr_good = (status >> 2) & 0b01;
// Deduce current battery state
const uint8_t chrg_stat = (status >> 4) & 0b11;
if (chrg_stat) {
if (power.isChargingEnabled()) {
// Charging or charged
if (chrg_stat == 0b11) {
batteryStateTransitioningTo(BATTERY_STATE_CHARGED);
} else {
// We might receive continuous interrupt. Counting the charging state may lead to fake charging state.
batteryStateTransitioningTo(BATTERY_STATE_CHARGING, false);
}
}
// Else charging is disabled, the register is just not updated, do nothing
} else {
// Now we need to deduce whether it is NOT_CHARGING, DISCHARGING, or in a FAULT state
// const uint8_t chrg_fault = (curFault >> 4) & 0b11;
const uint8_t bat_fault = (curFault >> 3) & 0b01;
// const uint8_t ntc_fault = curFault & 0b111;
if (bat_fault) {
confirmBatteryState(g_batteryState, BATTERY_STATE_FAULT);
} else if (!pwr_good) {
confirmBatteryState(g_batteryState, BATTERY_STATE_DISCHARGING);
} else {
// We might receive continuous interrupt. Counting the not charging state may lead to fake not charging state.
batteryStateTransitioningTo(BATTERY_STATE_NOT_CHARGING, false);
}
}
In order to reach BATTERY_STATE_NOT_CHARGING
the bq24195 PMIC system status register low 2 bits must be 0b00.
Bit 1 THERM_STAT: 0 – Normal, 1 – In Thermal Regulation
Bit 0 VSYS_STAT: 0 – Not in VSYSMIN regulation (BAT > VSYSMIN), 1 – In VSYSMIN regulation (BAT < VSYSMIN)
Since bit 1 is 0, it's not in thermal regulation (battery pack out of charging range)
Since bit 0 is 0, battery voltage is greater than system voltage.
The next requirement is that the battery not be in charge fault.
The pwr_good test is also based on the bq24195 system status register
Bit 2 PG_STAT R 0 – Not Power Good, 1 – Power Good
This is whether VIN is greater than the configured VSYS_MIN voltage which can be configured from 3.0V to 3.6V. I think the defaults is 3.5V.
So basically BATTERY_STATE_NOT_CHARGING
occurs when the battery is not in fault, there is voltage on VIN > VSYS_MIN, but the voltage is below the battery voltage, I think.
Thank you for the extra details!