Battery Charge Regulator
The Battery Charge Regulator (BCR) is an EPS module responsible for shunting any input power in excess of the load and using it to charge the battery pack. For the lithium ion batteries used on the CubeSat, it is standard practice to apply a constant-current/constant voltage (CC/CV) charge algorithm. This employs a "fast charge" mode when the battery is below a certain threshold SoC, dumping a high constant current into the pack, but switches over to constant-voltage regulation mode when the pack nears its full-charge voltage to trickle-charge and hold the pack at that level, avoiding overcharge.
Primary Power Path
Primary power on a satellite is the segment that actually generates electricity. In our case, this would be solar panels, or a tether to a power supply during ground tests. Secondary power is the storage element used to buffer and supply continuous power when the primary power source is unavailable. In most cases, this is a battery, however regenerative fuel cells have also been used in some flown designs. Our secondary power is the Lithium Ion Battery Pack.
The path design problem is how to connect the two sources together to provide uninterrupted power to the main bus. Different designs yield different main bus voltage ranges, different levels of fault tolerance, and different path losses.
An ORing configuration uses the same circuit used to run redundant output regulators in parallel to bus together the primary and secondary power sources. An ideal diode is inserted at the output of each source and the cathodes of said diodes are tied together at the main bus. Note that an ideal diode in this case cannot be replaced with a simple P-type MOSFET as in the reverse input protection case, as that only works with a full change in polarity. The disadvantage of this method is that it adds an extra diode or ideal diode controller into the path of each source, which increases losses. However, the design is more fault-tolerant since event with an open-circuited battery pack the main bus would still receive power whenever the primary power source is available.
An alternative method is to separate the primary power from the main bus entirely, and have the main bus powered solely from the battery pack. The primary power source would then only be responsible for charging the pack. This provides a much less wide voltage range on the main bus and removes the ORing diodes. The primary power would lift the bus voltage to the charge voltage. However, this may cause error in the charge algorithm as any current drawn by the load through the charge regulator could be misinterpreted as battery overcurrent. Additionally, since all primary power access is gated through the charge regulator, a faulting battery pack could disable all main bus power if the charge regulator decides not to charge a faulting battery pack.
LM5050MKX is an ideal diode controller from TI that's designed to control an external MOSFET. This increases component count and board space but allows us to tailor the MOSFET power rating to our needs. The chip can switch voltages of 5.0-75V. LM5050 should be disabled when not in use to eliminate its quiescent power draw.
A good MOSFET that's currently available is the DMN4800LSSDICT-ND from Diodes Incorporated. It has a continuous drain current of 9A which even after 50% derating still far exceeds the max 3.3437A we expect, is tolerant to plus or minus 25V from gate to source which is good since the source will in some cases be raised above the gate by the solar input voltage, and can handle 30V drain-to-source which again is necessary since the solar input voltage will be switched by one of these MOSFETs. It has a very low on-resistance between 11 and 20 mOhms when driven at the LM5050 5V boosted drive of 7V. With the worst-case on-resistance of 20 mOhms, worst-case max load, and the worst-case bus voltage (severely depleted battery pack) of 5.6V, this causes a worst-case ~1.19% loss. Under less extreme operating conditions this inefficiently is much less severe. For example, with a nominal pack voltage of 7.4V and a more reasonable load of 1A, even with the 20 mOhm on-resistance the loss falls off to ~0.27%.
The LM5050 datasheet warns that very low on-resistance makes it harder to sense a reverse condition, and will decrease the response time or in the case of very closely matched supplies, not sense it at all. It recommends a nominal drop of 22-100mV across the MOSFET for optimal response times. However, with our very low nominal currents the resistance required to achieve that drop could be around 1 Ohm, which is going to cause an insane amount of inefficiency. Since the primary power source will likely have its own reverse protection and we're not concerned about both supplies being on if they're very close (at worst we'll accidentally trip BMU overcharge protection), this recommendation will be ignored.
LTC4006 is a Linear Technologies battery charger that charges 2-4S configurations, with the configuration set at the factory. The charger implements a buck converter with a wide input voltage range from 6-28VDC. Current limiting functionality is built in to protect the supply with a configurable rating up to 4A, and the IC is designed to throttle the charge rate if the other loads start exceeding supply limitations. The throttling isn't necessary as our supply will be regulated and protected elsewhere. A driver for an N-channel reverse protection MOSFET is also included on the chip, as well sensing circuitry for a thermistor implementing an overtemperature cutoff. LTC4006 at the time of this writing is available in an easy-to-place 16-SSOP package. It has up to 96% efficiency.
The buck converter implemented by the LTC4006 is synchronous. This is likely a cause of the high efficiency (in combination with the N-channel reverse protection) but in the LEO radiation environment risks shoot-through due to SEU errors inducing latch-up or driver errors. The risk can be removed entirely by changing the buck converter to be asynchronous.
LTC4002 is another Linear Technologies battery charger that charges 2S configurations. Unlike LTC4006 it is designed as an asynchronous driver, which removes some of the complexity and cost we would be wasting anyway with the LTC4006. It also doesn't implement the unused current throttling. It is also smaller, in an easy-to-place 8-SOIC package, and has a lower overall component count. The disadvantage is efficiency. With asynchronous operation instead of synchronous and using only a diode for the input reverse protection, the overall efficiency is roughly 15%. However, we could implement more efficient reverse protection separately as part of the supply design.