{ "algorithm": "FOC", "description": "100A Single shunt No bus bar", "checkList": { "motor_0": "verified", "powerSupply_0": "verified", "powerSwitches_0": "verified", "speedSensingSel_0": "verified", "currentSensing_0": "verified", "busVoltageSensing_0": "verified", "temperatureSensing_0": "verified", "speedSensing_0": "verified", "driveManagement_0": "verified", "stageConfig_0": "verified", "userInterface": "verified", "applicationConfig": "verified", "pinsUsage": "verified", "projectInfo": "verified" }, "hardwares": { "type": "INVERTER", "control": { "mcu": { "id": "STM32F407IGHx" }, "clockSource": "8_crystal", "clockFrequency": 168, "connectors": [], "features": [ { "type": "Potentiometer", "name": "Potentiometer", "hwVariants": [ { "signals": { "POTENTIOMETER_LEVEL": [ { "name": "PC5", "help": {}, "cost": 0 } ] }, "type": "Potentiometer", "cost": 0, "potLevelMin": 0, "potRmax": 10000, "potVm": 3.3 } ] }, { "type": "SerialPortCommunication", "name": "SerialPortCommunication", "hwVariants": [ { "signals": { "UART_TX": [ { "name": "PB10", "help": {}, "cost": 0 } ], "UART_RX": [ { "name": "PB11", "help": {}, "cost": 0 } ] }, "type": "Uart2WiresCommunication", "cost": 0 } ] } ], "hardwareFamily": "CONTROL", "id": "user.ESC.json", "label": "ESC", "description": "", "descVersion": 4, "contentVersion": "1.0", "compatibility": [ "FOC", "sixStep" ] }, "power": [ { "motorDrives": [ { "name": "M1", "minRatedVoltage": 10, "maxRatedVoltage": 60, "maxRatedCurrent": 5, "maxRatedPower": 200, "resistorOffset": 0, "connectorType": "None", "features": [ { "type": "SpeedAndPositionSensing", "name": "SpeedAndPositionSensing", "hwVariants": [ { "signals": { "BEMF_V": [ { "name": "PA1", "help": {}, "cost": 0 } ], "BEMF_U": [ { "name": "PA0-WKUP", "help": {}, "cost": 0 } ], "BEMF_W": [ { "name": "PA2", "help": {}, "cost": 0 } ] }, "type": "BEMFSensingADCFixedDivider", "cost": 0, "dividingNetworkR1": 56000, "dividingNetworkR2": 3300 } ] }, { "type": "PhaseVoltageGeneration", "name": "PhaseVoltageGeneration", "driverName": "IR2181", "minDeadTime": 500, "driverPN": "IR2181", "tNoise": 500, "hwVariants": [ { "signals": { "PWM_CHU_H": [ { "name": "PA8", "help": {}, "cost": 0 } ], "PWM_CHU_L": [ { "name": "PB13", "help": {}, "cost": 0 } ], "PWM_CHV_H": [ { "name": "PA9", "help": {}, "cost": 0 } ], "PWM_CHV_L": [ { "name": "PB14", "help": {}, "cost": 0 } ], "PWM_CHW_H": [ { "name": "PA10", "help": {}, "cost": 0 } ], "PWM_CHW_L": [ { "name": "PB15", "help": {}, "cost": 0 } ] }, "type": "DrivingHighAndLowSides", "cost": 0, "deadTime": 800, "highSideSwitchesDrivingPolarity": "Active high", "lowSideSwitchesDrivingPolarity": "Active high" } ], "maxSwitchingFreq": 30 }, { "type": "CurrentSensing", "name": "CurrentSensing", "tRise": 400, "hwVariants": [ { "signals": { "CURRENT_AMPL_U": [ { "name": "PC0", "help": {}, "cost": 0 } ], "CURRENT_AMPL_V": [ { "name": "PC1", "help": {}, "cost": 0 } ], "CURRENT_AMPL_W": [ { "name": "PC2", "help": {}, "cost": 0 } ] }, "type": "ThreeShunt_AmplifiedCurrents", "cost": 0, "amplifyingNetworkImax": 100, "shuntResistor": 0.001, "amplifyingNetworkPrating": 5, "opAmpGain": 16, "amplifyingNetworkVm": 3.3, "polarizationOffset": 1.5488, "offsetNetworkAttenuation": 1 } ] }, { "type": "OverCurrentProtection", "name": "OverCurrentProtection", "hwVariants": [ { "signals": { "OC_TRIGGER": [ { "name": "PB12", "help": {}, "cost": 0 } ] }, "type": "OnPowerStageOCP", "cost": 0, "OCSignalPolarity": "Active low", "OCComparatorThreshold": 2.964, "OCNetworkGain": 0.016, "OCNetworkOffset": 1.5488, "OCThreshold": 88.45 } ] }, { "type": "VBusSensing", "name": "VBusSensing", "hwVariants": [ { "signals": { "VBUS": [ { "name": "PC3", "help": {}, "cost": 0 } ] }, "type": "VBusSensing", "cost": 0, "busVoltageDivider": 17.97, "busVoltageDividerR1": 56000, "busVoltageDividerR2": 3300, "help": { "en": "Bus voltage divider = (R2+ R1) / R2\nValidated by comparing to default inverter boards" } } ], "busVoltageDivider": 17.97 }, { "type": "TemperatureSensing", "name": "TemperatureSensing", "hwVariants": [ { "signals": { "TEMPERATURE_NTC": [ { "name": "PA3", "help": {}, "cost": 0 } ] }, "type": "NTCThermistor", "cost": 0, "maxSensorTemperature": 125, "t0": 25, "v0": 1650, "gain": 36.6, "help": { "en": "Determine the mv created by the potential divider at two temperature points which are somewhat close to each other (e.g. 25 and 30). Then calculate the gain from this" } } ] } ], "compatibility": [ "FOC", "sixStep" ] } ], "connectorTypes": [ "None" ], "hardwareFamily": "POWER", "id": "user.ESC.json", "label": "ESC", "description": "", "descVersion": 4, "contentVersion": "1.0", "compatibility": [ "FOC", "sixStep" ] } ], "motor": [ { "id": "motorMaxon", "label": "MAXON EC-I 100W", "hardwareFamily": "MOTOR", "description": "brushless DC motor with encoder and Z Index", "compatibility": [ "FOC", "sixStep" ], "polePairs": 7, "nominalCurrent": 1.6, "nominalDCVoltage": 36, "rs": 0.43, "ls": 0.338, "magneticStructure": { "type": "SM-PMSM" }, "BEmfConstant": 6.14, "inertia": 5, "friction": 14, "maxRatedSpeed": 4500, "hallSensor": { "sensorsDisplacement": 120, "placementElectricalAngle": 300 }, "quadratureEncoder": { "pulsesPerMechanicalRevolution": 1024, "hasIndexPin": true }, "motorProfiler": { "ctrl_board": "NUCLEO-F302R8", "pwr_board": "X-NUCLEO-IHM07M1", "operating_condition": { "cutoff_frequency": 6000, "pwm_frequency": 20000, "foc_rate": 1 }, "mechanical": { "acceleration": 1000, "max_speed_startup": 1600 } } } ], "connections": [ { "motor": 0, "power": 0, "drive": 0, "ctrlConn": 0 } ], "constrains": { "connectAlgoVersion": 1, "MCUParamVersion": 1, "motors": [ { "motor": "M1", "features": [ { "name": "SpeedAndPositionSensing", "type": "SpeedAndPositionSensing", "hwVariants": [ { "name": "BEMFSensingADCFixedDivider", "swVariants": [ { "name": "IndependentWires", "independentWires": { "BEMF_U": [ { "ip": "ADC1", "pin": "PA0-WKUP", "peripheral": "ADC1_IN0", "help": "", "cost": 0 }, { "ip": "ADC2", "pin": "PA0-WKUP", "peripheral": "ADC2_IN0", "help": "", "cost": 0 }, { "ip": "ADC3", "pin": "PA0-WKUP", "peripheral": "ADC3_IN0", "help": "", "cost": 0 } ], "BEMF_V": [ { "ip": "ADC1", "pin": "PA1", "peripheral": "ADC1_IN1", "help": "", "cost": 0 }, { "ip": "ADC2", "pin": "PA1", "peripheral": "ADC2_IN1", "help": "", "cost": 0 }, { "ip": "ADC3", "pin": "PA1", "peripheral": "ADC3_IN1", "help": "", "cost": 0 } ], "BEMF_W": [ { "ip": "ADC1", "pin": "PA2", "peripheral": "ADC1_IN2", "help": "", "cost": 0 }, { "ip": "ADC2", "pin": "PA2", "peripheral": "ADC2_IN2", "help": "", "cost": 0 }, { "ip": "ADC3", "pin": "PA2", "peripheral": "ADC3_IN2", "help": "", "cost": 0 } ] } } ] } ] }, { "name": "PhaseVoltageGeneration", "type": "PhaseVoltageGeneration", "hwVariants": [ { "name": "DrivingHighAndLowSides", "swVariants": [ { "name": "SingleTimer", "solutions": [ { "ip": [ "TIM1" ], "signals": [ { "name": "PWM_CHU_H", "pin": "PA8", "peripheral": "TIM1_CH1", "help": "" }, { "name": "PWM_CHV_H", "pin": "PA9", "peripheral": "TIM1_CH2", "help": "" }, { "name": "PWM_CHW_H", "pin": "PA10", "peripheral": "TIM1_CH3", "help": "" }, { "name": "PWM_CHU_L", "pin": "PB13", "peripheral": "TIM1_CH1N", "help": "" }, { "name": "PWM_CHV_L", "pin": "PB14", "peripheral": "TIM1_CH2N", "help": "" }, { "name": "PWM_CHW_L", "pin": "PB15", "peripheral": "TIM1_CH3N", "help": "" } ], "cost": 0 } ] } ] } ] }, { "name": "CurrentSensing", "type": "CurrentSensing", "hwVariants": [ { "name": "ThreeShunt_AmplifiedCurrents", "swVariants": [ { "name": "DualADCs", "solutions": [ { "ip": [ "ADC1", "ADC2" ], "sharedSignal": "CURRENT_AMPL_V", "signals": [ { "name": "CURRENT_AMPL_U", "pin": "PC0", "peripheral": "ADC1_IN10", "help": "" }, { "name": "CURRENT_AMPL_W", "pin": "PC2", "peripheral": "ADC2_IN12", "help": "" }, { "name": "CURRENT_AMPL_V", "pin": "PC1", "peripheral": "ADC1_IN11", "help": "" }, { "name": "CURRENT_AMPL_V", "pin": "PC1", "peripheral": "ADC2_IN11", "help": "" } ], "cost": 0 }, { "ip": [ "ADC1", "ADC3" ], "sharedSignal": "CURRENT_AMPL_V", "signals": [ { "name": "CURRENT_AMPL_U", "pin": "PC0", "peripheral": "ADC1_IN10", "help": "" }, { "name": "CURRENT_AMPL_W", "pin": "PC2", "peripheral": "ADC3_IN12", "help": "" }, { "name": "CURRENT_AMPL_V", "pin": "PC1", "peripheral": "ADC1_IN11", "help": "" }, { "name": "CURRENT_AMPL_V", "pin": "PC1", "peripheral": "ADC3_IN11", "help": "" } ], "cost": 0 }, { "ip": [ "ADC2", "ADC3" ], "sharedSignal": "CURRENT_AMPL_V", "signals": [ { "name": "CURRENT_AMPL_U", "pin": "PC0", "peripheral": "ADC2_IN10", "help": "" }, { "name": "CURRENT_AMPL_W", "pin": "PC2", "peripheral": "ADC3_IN12", "help": "" }, { "name": "CURRENT_AMPL_V", "pin": "PC1", "peripheral": "ADC2_IN11", "help": "" }, { "name": "CURRENT_AMPL_V", "pin": "PC1", "peripheral": "ADC3_IN11", "help": "" } ], "cost": 0 } ] }, { "name": "SingleADC", "solutions": [ { "ip": [ "ADC1" ], "signals": [ { "name": "CURRENT_AMPL_U", "pin": "PC0", "peripheral": "ADC1_IN10", "help": "" }, { "name": "CURRENT_AMPL_V", "pin": "PC1", "peripheral": "ADC1_IN11", "help": "" }, { "name": "CURRENT_AMPL_W", "pin": "PC2", "peripheral": "ADC1_IN12", "help": "" } ], "cost": 0 }, { "ip": [ "ADC2" ], "signals": [ { "name": "CURRENT_AMPL_U", "pin": "PC0", "peripheral": "ADC2_IN10", "help": "" }, { "name": "CURRENT_AMPL_V", "pin": "PC1", "peripheral": "ADC2_IN11", "help": "" }, { "name": "CURRENT_AMPL_W", "pin": "PC2", "peripheral": "ADC2_IN12", "help": "" } ], "cost": 0 }, { "ip": [ "ADC3" ], "signals": [ { "name": "CURRENT_AMPL_U", "pin": "PC0", "peripheral": "ADC3_IN10", "help": "" }, { "name": "CURRENT_AMPL_V", "pin": "PC1", "peripheral": "ADC3_IN11", "help": "" }, { "name": "CURRENT_AMPL_W", "pin": "PC2", "peripheral": "ADC3_IN12", "help": "" } ], "cost": 0 } ] } ] } ] }, { "name": "OverCurrentProtection", "type": "OverCurrentProtection", "hwVariants": [ { "name": "OnPowerStageOCP", "swVariants": [ { "name": "SingleWire", "solutions": [ { "ip": [ "TIM1" ], "signals": [ { "name": "OC_TRIGGER", "pin": "PB12", "peripheral": "TIM1_BKIN", "help": "" } ], "cost": 0 } ] } ] } ] }, { "name": "VBusSensing", "type": "VBusSensing", "hwVariants": [ { "name": "VBusSensing", "swVariants": [ { "name": "SingleWire", "solutions": [ { "ip": [ "ADC1" ], "signals": [ { "name": "VBUS", "pin": "PC3", "peripheral": "ADC1_IN13", "help": "" } ], "cost": 0 }, { "ip": [ "ADC2" ], "signals": [ { "name": "VBUS", "pin": "PC3", "peripheral": "ADC2_IN13", "help": "" } ], "cost": 0 }, { "ip": [ "ADC3" ], "signals": [ { "name": "VBUS", "pin": "PC3", "peripheral": "ADC3_IN13", "help": "" } ], "cost": 0 } ] } ] } ] }, { "name": "TemperatureSensing", "type": "TemperatureSensing", "hwVariants": [ { "name": "NTCThermistor", "swVariants": [ { "name": "SingleWire", "solutions": [ { "ip": [ "ADC1" ], "signals": [ { "name": "TEMPERATURE_NTC", "pin": "PA3", "peripheral": "ADC1_IN3", "help": "" } ], "cost": 0 }, { "ip": [ "ADC2" ], "signals": [ { "name": "TEMPERATURE_NTC", "pin": "PA3", "peripheral": "ADC2_IN3", "help": "" } ], "cost": 0 }, { "ip": [ "ADC3" ], "signals": [ { "name": "TEMPERATURE_NTC", "pin": "PA3", "peripheral": "ADC3_IN3", "help": "" } ], "cost": 0 } ] } ] } ] } ] } ], "features": [ { "name": "Potentiometer", "type": "Potentiometer", "hwVariants": [ { "name": "Potentiometer", "swVariants": [ { "name": "SingleWire", "solutions": [ { "ip": [ "ADC1" ], "signals": [ { "name": "POTENTIOMETER_LEVEL", "pin": "PC5", "peripheral": "ADC1_IN15", "help": "" } ], "cost": 0 }, { "ip": [ "ADC2" ], "signals": [ { "name": "POTENTIOMETER_LEVEL", "pin": "PC5", "peripheral": "ADC2_IN15", "help": "" } ], "cost": 0 } ] } ] } ] } ], "errors": [], "warnings": [], "info": [] }, "inverter": { "hardwareFamily": "INVERTER", "id": "user.ESC.json", "label": "ESC", "description": "", "descVersion": 4, "contentVersion": "1.0", "compatibility": [ "FOC", "sixStep" ], "status": "success" } }, "version": 13, "workBenchVersion": "6.3.0", "workBenchVersionFileCreation": "6.3.0", "details": { "steps": { "powerSwitches_0": { "setting": { "PWMFrequency": "Number.NaN", "chargeBootCapDuty": 50, "chargeBootCapMs": "Number.NaN", "drivingTopology": "", "H_L_SwData": { "swDeadTime": 800 } } }, "applicationConfig": { "freeRTOS": { "enabled": false }, "dacDebug": { "enabled": false }, "lowMemoryFootprintReg": false, "motorProfiler": true, "dbgMcuLoadMeasure": true }, "speedSensingSel_0": { "mainSensorParams": { "speedSensorMode": "pll" } }, "motor_0": { "label": "", "description": "", "polePairs": "Number.NaN", "mmsType": "", "rs": 0.02, "ls": 0.021, "mmsLd_lq_ratio": "Number.NaN", "maxCurrent": 100, "maxDCVoltage": 36, "BEmfConstant": 12, "inertia": "Number.NaN", "friction": "Number.NaN", "maxRatedSpeed": 3000, "hasHallSensor": false, "hallSensor": { "sensorsDisplacement": "Number.NaN", "placementElectricalAngle": "Number.NaN" }, "hasQuadratureEncoder": false, "quadratureEncoder": { "pulsesPerMechanicalRevolution": "Number.NaN", "hasIndexPin": true }, "nominalCurrent": "Number.NaN", "nominalDCVoltage": "Number.NaN" }, "currentSensing_0": { "executionRate": "Number.NaN", "topology": "", "topologyData": { "_tag": "3sh", "ampMode": "", "sensing": { "amplification": "external", "shuntResistor": "Number.NaN", "gain": "Number.NaN", "tNoise": "Number.NaN", "tRise": "Number.NaN", "maxModulation": "Number.NaN", "samplingTime": "Number.NaN", "mcuPinMapping": { "ip": [ "ADC1", "ADC2" ], "sharedSignal": "CURRENT_AMPL_V", "signals": [ { "name": "CURRENT_AMPL_U", "pin": "PC0", "peripheral": "ADC1_IN10", "help": "" }, { "name": "CURRENT_AMPL_W", "pin": "PC2", "peripheral": "ADC2_IN12", "help": "" }, { "name": "CURRENT_AMPL_V", "pin": "PC1", "peripheral": "ADC1_IN11", "help": "" }, { "name": "CURRENT_AMPL_V", "pin": "PC1", "peripheral": "ADC2_IN11", "help": "" } ], "cost": 0 } } }, "ocpData": { "enable": true, "ocpMode": "", "ocp": { "mode": "external", "digitalFilter": "Number.NaN", "threshold": "Number.NaN", "signalPolarity": "", "disablingEnable": false, "disablingSignalPolarity": "" } } }, "driveManagement_0": { "currentReg": { "controlMode": "", "autoPI": true, "KpKi": { "P": "Number.NaN", "I": "Number.NaN" }, "cutOffFrequency": "Number.NaN", "useMTPA": false, "feedForward": false, "MTPATarget": "Number.NaN" }, "speedReg": { "executionRate": "Number.NaN", "targetSpeed": "Number.NaN", "commutationTime": "Number.NaN", "KpKi": { "P": { "num": "Number.NaN", "den": "Number.NaN" }, "I": { "num": "Number.NaN", "den": "Number.NaN" } }, "autoPI": true }, "torqueReg": { "target": "Number.NaN", "KpKi": { "P": { "num": "Number.NaN", "den": "Number.NaN" }, "I": { "num": "Number.NaN", "den": "Number.NaN" } } }, "fluxReg": { "target": "Number.NaN", "KpKi": { "P": { "num": "Number.NaN", "den": "Number.NaN" }, "I": { "num": "Number.NaN", "den": "Number.NaN" } } }, "fluxWeak": { "enabled": false, "voltageLimit": "Number.NaN", "KpKi": { "P": { "num": "Number.NaN", "den": "Number.NaN" }, "I": { "num": "Number.NaN", "den": "Number.NaN" } } }, "posReg": { "executionRate": "Number.NaN", "KpKiKd": { "P": { "num": 10000, "den": 1024 }, "D": { "num": 1000, "den": 16 }, "I": { "num": 1000, "den": 32768 } } }, "debugSettings": { "openLoop": { "enabled": true } }, "modulationFlags": { "overModulation": false, "discontinuousPWM": false } }, "powerSupply_0": { "nominalDcBusVoltage": "Number.NaN", "nominalCurrent": 2, "maxCurrent_pk": "Number.NaN", "icl": { "enable": false, "polarity": "", "changeStateAfter": "Number.NaN", "capChargingDelay": "Number.NaN", "voltageThreshold": "Number.NaN" } }, "temperatureSensing_0": { "hw": { "v0": "Number.NaN", "t0": "Number.NaN", "gain": "Number.NaN", "maxSensorTemperature": "Number.NaN" }, "protection": { "enable": true, "hysteresis": "Number.NaN", "overTemperatureThreshold": 50 }, "samplingTime": "Number.NaN", "adc_freq": "Number.NaN", "enable": true } } } }