PyCubed Energy Harvesting
Overview
PyCubed has a high efficiency solar energy harvesting circuit that is configured charge 2S Li-ion battery packs. Based around the Analog Devices LTC4121 chip, the circuit can handle input voltages from 9V-40V, and is configured for a max power-point tracking (MPPT) target voltage of 75% Voc (open circuit panel voltage) with a maximum charge rate of 400mA.
Enabling Solar Input
All solar inputs feed into the energy harvesting circuit through D2, which is not populated by default. This intentional decision is a result of countless possibilities in solar panel designs, forcing you (the designer) to make a decision about D2 depending on you solar panel scheme.
The LTC4121 design requires an input diode between the solar panel(s) and the charging circuit's input pin. However, many solar panel designs already include a diode on the output, thereby making a diode on D2 counter productive.
- If your solar panel design DOES have an output diode on each panel:
- Short D2 by populating with a 0ohm resistor or solder a solder bridge/piece of wire wire across the pads.
- If your solar panel design DOES NOT have output diodes on each panel:
- Populate D2 with an appropriate schottky diode such as: Diodes Incorporated DFLS130L.
Circuit Design
The solar charging circuit can be found in the "Power" section of the schematic. The schematic includes import notes about features that may or may not be enabled by default.
Setting the MPPT
The MPPT is enabled by default and set to 75% Voc. This means that the solar panels are expected to produce the most power at a fill factor of ~75% and the charging circuit will adjust input voltage (VCHRG_IN
) and output current (of VBATT
) to stay near the MPPT target voltage.
- MPPT target voltage can be adjusted by changing the resistance values of R11 and R12. See the LTC4121 datasheet for more details. 🗄Component Datasheets
- MPPT functionality can be disabled by replaced R11 with a 10K resistor and removing R12 altogether.
NOTE: I've noticed the charge current monitor is significantly less accurate with MPPT disabled.
Setting the battery voltage target
We have to tell the charging circuit what voltage to stop charging (full battery). This is called Vfloat
in the datasheet and set with R16 and R19. PyCubed is configured for 8.4V. See the LTC4121 datasheet for more details. 🗄Component Datasheets
Monitoring the charge current
As described in the datasheet, the PROG
pin is used to set the maximum charge current but it can also be used to actively monitor the charge current going into the batteries.
(the charge current value is only valid when the CHRG
signal goes low)
- When we call
cubesat.charging_current
from the ⭐pycubed.py library, it is measuring the analog voltage of thePROG
pin and then doing some calculations based on the information from the LTC4121 datasheet.