Muon defined charging range

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.

1 Like

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.

1 Like

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.

1 Like

Thank you for the extra details!