GaN MPPT

From 'Engineers of Innovation Wiki'
Jump to navigation Jump to search
Baseboard with two phases populated

Part of a system consisting of 8x Gan Phases and 1x Baseboard.: Picture above is fully populated BaseBoard with 8 GaN boost converters mounted. PCB's can be cooled through Inductors on the bottom using a coldplate, while still being easily replaced from the top by remving the four bolts. Software based on TPEE MPPT

Can Bus Protocol Format

The CAN bus telemetry is output using Standard CAN IDs (11-bit) by default. The ID structure uses the upper 7 bits for the Node ID (default 64, offset by hardware pins) and the lower 4 bits for the Packet ID.

Here is the documentation for the telemetry messages:

CAN Bus Frame Format

Frame Type: Standard Frame (11-bit ID)

Bitrate: 1000kbps

Node ID: Configurable generalCanId (64) + Hardware ID offset (Pins ID0-ID3)

NB: The ID is based on the position on the mainboard. Where ID0-ID2 is equal to the position 0-7, and ID3 is dependent on the DIP-switch on the mainboard. Front ID3 = 1, Read ID3 = 0.

CAN ID Construction: (NodeID << 4) | PacketID

Power

Packet ID 0x00: Power (2Hz)

Sent every 500ms. Contains the primary voltage and current measurements.

Packet ID: 0x00

Data Length: 8 Bytes

Format: Big Endian (Network Order)

Byte Name Type Scaling Description
0-1 Input Voltage int16 0.01 V/bit Input Voltage (Vlow)
2-3 Input Current int16 0.0005 A/bit Input Current (Iind). Scaling factor 2000.0f
4-5 Output Voltage int16 0.01 V/bit Output Voltage (Vhigh)
6-7 Output Current int16 0.0005 A/bit Output Current (Ihigh). Scaling factor 2000.0f

Note on Scaling:

buffer_append_float16(data, value, scale, &index) multiplies the float value by scale and stores it as an int16.

To decode: float value = (float)((int16_t)received_value) / scale

Input/Output Current Scale: 2000.0 -> Divide received int16 by 2000.0 to get Amps.

Input/Output Voltage Scale: 100.0 -> Divide received int16 by 100.0 to get Volts.

Status

Packet ID 0x01: Status (1Hz)

Sent every 1000ms. Contains the operating state and fault codes.

Packet ID: 0x01

Data Length: 5 Bytes

Byte Name Type Scaling / Enum Description
0 Mode uint8 PhaseMode_t Operating Mode (1=CIV, 2=CIC, 3=MinInputCurrent, 4=COV, 5=COC, 6=Temp Derating, 7=Fault)
1 Fault uint8 PhaseFault_t Fault Code (0=OK, 1=Config, 2=Input OV, 3=Output OV, 4=Output OC, 5=Input OC, 6=Input UC, 7=Phase OC)
2 Enabled uint8 bool 1 if Enabled, 0 if Disabled
3 Board Temp int8 1 °C/bit Ambient Temperature in °C
4 Heat Sink Temp int8 1 °C/bit Heatsink Temperature in °C

Sweep Data

Packet ID 0x02: Sweep Data (On Request)

Sent during an MPPT sweep operation.

Packet ID: 0x02

Data Length: 5 Bytes

Byte Name Type Scaling Description
0 Index uint8 1 Sweep point index (0-255)
1-2 Current int16 0.0005 A/bit Current at this sweep point (Scale 2000.0)
3-4 Voltage int16 0.01 V/bit Voltage at this sweep point (Scale 100.0)

Enums

PhaseMode_t (Byte 0 of Status)

0: None (Start)

1: CIV (Constant Input Voltage)

2: CIC (Constant Input Current)

3: MinInputCurrent

4: COV (Constant Output Voltage)

5: COC (Constant Output Current)

6: TD (Temperature Derating)

7: Fault

PhaseFault_t (Byte 1 of Status)

0: OK

1: Config Error

2: Input Over Voltage

3: Output Over Voltage

4: Output Over Current

5: Input Over Current

6: Input Under Current

7: Phase Over Current

8: General Fault