Five layers
A lithium charger is the kind of product where one bug should not be able to cause a fire. Snowbird has five protection layers, each independent of the others, and a firmware fault has to misconfigure two separate chips before a cell can be overcharged.
| Layer | What it does | Depends on firmware? |
|---|---|---|
| 1. Chemistry jumper | Sets the voltage ceiling in hardware. Software can select at or below it. The PRIMARY position disables charging | No |
| 2. Charger | Charge voltage, current and the JEITA temperature profile, enforced by the charger's own TS pin | No, once configured; defaults are the jumper's chemistry |
| 3. BMS | Independent per-cell cutoffs for overcharge, overdischarge, overcurrent, short circuit and temperature. Safe defaults in non-volatile memory | No |
| 4. Comparator | A hard over-temperature cutoff at 65 °C that pulls both regulators' enable pins low | No |
| 5. Fuse | 5 A on the 1S boards, 8 A on the Pack, on the battery input | No |
The BMS switch is on the high side, so battery ground stays common with system and Qwiic ground when protection trips. Your host keeps its ground reference and the supervisor keeps reporting.
Temperature windows
The thermistor on the battery connector (10 kΩ, B = 3435 by default, other B values a firmware setting) feeds the charger's TS pin, the BMS and the supervisor. The defaults are the chemistry's; setTempLimits() can narrow them and cannot widen them.
| Chemistry | Charge | Reduced-current charge | Discharge |
|---|---|---|---|
| Li-ion / LiPo / LiHV | 0 to 45 °C | 0 to 10 °C at half current | −20 to 60 °C |
| LiFePO4 | 0 to 45 °C | 0 to 10 °C at half current | −20 to 60 °C |
| LiSOCl2 | never | −40 to 85 °C |
Outside the charge window the charger holds. The load keeps running from USB or solar through the power path, and the battery waits. Outside the discharge window the supervisor turns the outputs off and keeps reporting; if the fault lasts more than ten minutes it opens the battery switch and enters ship mode, from which an input wakes it.
With no thermistor connected the board refuses to charge by default. The NTC-SRC jumper selects an on-board sensor near the connector instead, which reads board temperature rather than cell temperature; use it only for a cell that sits against the board.
What each fault does
Every fault sets a bit in faults(), pulses INT, sets the BTHome problem flag, and appears in the BLE event log with a timestamp.
| Fault | Trigger | Action | LED |
|---|---|---|---|
| OverVoltage | Cell above the chemistry's limit plus 50 mV | Charging stops; BMS opens the charge FET | both off |
| UnderVoltage | Cell below the cutoff | Outputs off; BMS opens the discharge FET; recovery below | both off |
| OverCurrent | Discharge above the BMS limit for 10 ms | Discharge FET opens; retries after 1 s, three times, then latches | both off |
| ShortCircuit | Above 20 A for 200 µs | Discharge FET opens; latched until the load is removed | both off |
| OverTemp | Cell above the discharge maximum, or board above 65 °C | Outputs off; comparator holds them regardless of firmware | yellow blink |
| UnderTemp | Cell below the charge minimum | Charging held; load runs from the input | yellow blink |
| NtcOpen, NtcShort | Thermistor out of range | Charging held | yellow blink |
| InputOverVoltage | Solar above 24 V | Input disconnected until it falls below 23 V | green blink |
| ReversedBattery | Reversed cell detected at plug-in | Switch stays open; nothing powered | both off |
| CellCountMismatch | Balance connector disagrees with the cell-count resistor (Pack) | Switch stays open | both off |
| BmsTripped | Any BMS protection active | As above; cleared when the BMS recovers |
Overdischarge recovery
A cell that has been run flat latches the BMS off. Plug in USB or solar: the charger pre-charges the cell at 50 mA until it is above the cutoff, then the BMS closes and normal charging starts. A cell below 2.0 V (Li-ion) or 1.5 V (LiFePO4) is treated as damaged; the board charges it at the pre-charge rate for at most 30 min and then stops with Fault::UnderVoltage set permanently until the cell is replaced.
Reverse battery and solar
Cheap 1S pouch cells arrive with the JST-PH wires reversed often enough that the board checks polarity before closing the switch. A reversed cell is reported and nothing powers up. The solar input has an ideal-diode P-FET, a 26 V TVS and programmable overvoltage protection; a reversed panel does nothing, and a surge from a long panel lead is clamped.
Ship mode
shipMode() opens the battery switch, turns the radio off and puts the supervisor in its deepest sleep, drawing 3 µA from the cell. USB or solar wakes it. Use it before a board goes into a box, into the post, or onto a shelf. It needs the unlock sequence because it takes the host down with it.
Handling lithium cells
Snowbird ships without a cell, so what is in the parcel is not dangerous goods. The cell you add is.
- Use cells with a built-in protection circuit for the Snowbird Lite 1S, which has no BMS. The other boards protect raw cells.
- Match cells in a pack. The balancer corrects a few tens of millivolts, not a mixed pack.
- Never charge below 0 °C. The board enforces this; do not defeat it with the NTC-SRC jumper on a cell that is not against the board.
- Mount the board where it can shed heat. At 10 W in, the charger area reaches 40 °C above ambient in still air.
- Keep the 5 V terminal block's screws tight. A loose bare wire at 2 A is the most common cause of an OverCurrent trip.
- If a cell swells, smells or gets hot, disconnect it outdoors and do not charge it again.
Reporting an incident
If a Snowbird board is involved in any incident that caused or could have caused injury or damage, tell us through the safety incident form. We are required by the Canada Consumer Product Safety Act to report within two days of learning of an incident, and the form starts that clock immediately. Include which board, the serial number if you have it, the cell, and what happened.