#pragma once #include "main.h" #define PSU_MAX_VOLTAGE 1000 //1V/bit #define PSU_MIN_VOLTAGE 150 //1V/bit #define PSU_MAX_CURRENT 133 //1A/bit #define PSU_MIN_CURRENT 1 //1A/bit #define PSU_MAX_POWER 40000 //1W/bit #define PSU_BLOCK_POWER_30KW 30000u #define PSU_BLOCK_POWER_40KW 40000u #define PSU_BLOCK_CURRENT_30KW 100u #define PSU_BLOCK_CURRENT_40KW 133u #define PSU_NUM 1 /* Values match bootloader-flasher firmwares.json psuTypes[].value (InfoBlock byte 10). */ typedef enum { PSU_TYPE_NONE = 0, PSU_TYPE_NIUERA_30KW = 1, PSU_TYPE_NIUERA_40KW = 2, PSU_TYPE_TONHE_30KW = 3 } PsuType_t; /* Dynamic LV clamp (CS60 hv_limit): active only on overload at low bus voltage. */ #define PSU_LV_CLAMP_V 499u #define PSU_HV_LIMIT_ON_THRESHOLD 480u #define PSU_HV_LIMIT_OFF_THRESHOLD 495u #define PSU_HV_SWITCH_DELAY_MS 1000u #define PSU_HV_LOAD_CURRENT 300u /* 30.0 A, MeasuredCurrent is 0.1 A/bit */ #define PSU_HV_LIMIT_MAX_COUNT 3u /* TonHe group start: ≤500 V = LV, >500 V = HV. LV→HV while ON dies; HV→LV stays ON. */ #define TONHE_HV_THRESHOLD_V 500u /* Fast discharge: Niuera off/on cycle on step-down (unloaded bus). TonHe skips this. */ #define PSD_ENABLE 1u #define PSD_MAX_CMD_CURRENT_0P1A 20u /* 2.0 A */ #define PSD_MAX_MEASURED_CURRENT_0P1A 30u /* 3.0 A */ #define PSD_MEASURED_LATCH_MS 500u #define PSD_MIN_VOLTAGE_STEP_V 50u #define PSD_DISCHARGE_MARGIN_V 15u #define PSD_DEBOUNCE_MS 2000u #define PSD_MAX_PER_SESSION 4u #define PSD_OFF_TIMEOUT_MS 10000u /* как PSU_WAIT_ACK_OFF */ #define PSD_ON_TIMEOUT_MS 10000u #define PSD_ON_RETRY_MS 500u /* повтор SET+ON в ON_WAIT */ #define PSD_PRECHARGE_TOLERANCE_V 40u /* ~±10% for 350 V precharge window */