Skip to main content
Associate
March 28, 2024
Solved

is anything wrong in my invert.json?

  • March 28, 2024
  • 2 replies
  • 2092 views

I'm working on a custmoize inverter board .

and I wan't to use Three-Shunt variants for current sensing, I implemented it in hwVariants, according to the documentation.

See the following :

{
 "type": "inverter",
 "name": "testNow",
 "descVersion": 4,
 "contentVersion": "1.1",
 "PN": "testNow",
 "longDescription": "",
 "shortDescription": "",
 "link": "",
 "mcu": "STM32F303RCTx",
 "clockSource": "8_crystal",
 "clockFrequency": 72,
 "motorDrives": [
 {
 "name": "M1",
 "maxRatedVoltage": 600,
 "minRatedVoltage": 300,
 "maxRatedCurrent": 10,
 "features": [
 {
 "name": "CurrentSensing",
 "type": "CurrentSensing",
 "tRise": 2550,
 "hwVariants": [
 {
 "type": "ThreeShunt_AmplifiedCurrents",
 "help": " ",
 "shuntResistor": 0.01,
 "amplifyingNetworkImax": 9,
 "amplifyingNetworkVm": 3.3,
 "amplifyingNetworkPrating": 2.0,
 "offsetNetworkAttenuation": 1,
 "opAmpGain": 2,
 "polarizationOffset": 1.86,
 "signals": {

 "CURRENT_AMPL_U": [
 {
 "name": "PA7",
 "help": "",
 "cost": 0
 }
 ],
 "CURRENT_AMPL_V": [
 {
 "name": "PA6",
 "help": "",
 "cost": 0
 }
 ],
 "CURRENT_AMPL_W": [
 {
 "name": "PA3",
 "help": "",
 "cost": 0
 }
 ]
 }
 },
 {
 "type": "SingleShunt_AmplifiedCurrents",
 "help": " ",
 "shuntResistor": 0.01,
 "amplifyingNetworkImax": 9,
 "amplifyingNetworkVm": 3.3,
 "amplifyingNetworkPrating": 2.0,
 "offsetNetworkAttenuation": 1,
 "opAmpGain": 2,
 "polarizationOffset": 1.86,
 "signals": {
 "CURRENT_AMPL": [
 {
 "name": "PA2",
 "help": "",
 "cost": 0
 }
 ]
 }

 }
 ]
 },


 {
 "name": "PhaseVoltageGeneration",
 "type": "PhaseVoltageGeneration",
 "driverName": "",
 "driverPN": "",
 "minDeadTime": 100,
 "maxSwitchingFreq": 100,
 "tNoise": 2000,
 "hwVariants": [
 {
 "type": "DrivingHighAndLowSides",
 "help": "",
 "deadTime": 100,
 "highSideSwitchesDrivingPolarity": "Active high",
 "lowSideSwitchesDrivingPolarity": "Active high",
 "signals": {
 "PWM_CHU_H": [
 {
 "name": "PA8",
 "help": "",
 "cost": 0
 }
 ],
 "PWM_CHV_H": [
 {
 "name": "PA9",
 "help": "",
 "cost": 0
 }
 ],
 "PWM_CHW_H": [
 {
 "name": "PA10",
 "help": "",
 "cost": 0
 }
 ],
 "PWM_CHU_L": [
 {
 "name": "PB13",
 "help": "",
 "cost": 0
 }
 ],
 "PWM_CHV_L": [
 {
 "name": "PB14",
 "help": "",
 "cost": 0
 }
 ],
 "PWM_CHW_L": [
 {
 "name": "PB15",
 "help": "",
 "cost": 0
 }
 ]
 }
 }
 ]
 },





 {
 "name": "VBusSensing",
 "type": "VBusSensing",
 "busVoltageDivider": 136,
 "hwVariants": [
 {
 "type": "VBusSensing",
 "help": "",
 "signals": {
 "VBUS": [
 {
 "name": "PA1",
 "help": "",
 "cost": 0
 }
 ]
 },
 "busVoltageDivider": 136,
 "busVoltageDividerR1": 1620,
 "busVoltageDividerR2": 12,
 "busVoltageDividerR3": null
 }
 ]
 }
 ]
 }

 ],

 "features": [
 {
 "name": "SerialPortCommunication",
 "type": "SerialPortCommunication",
 "hwVariants": [
 {
 "type": "Uart2WiresCommunication",
 "help": "",
 "signals": {
 "UART_TX": [
 {
 "name": "PC10",
 "help": "",
 "cost": 0
 }
 ],
 "UART_RX": [
 {
 "name": "PC11",
 "help": "",
 "cost": 0
 }
 ]
 }
 }
 ]
 }




 ]
}

 

and then the picture show in MC Workbench:

截屏2024-03-28 19.11.18.jpg截屏2024-03-28 19.10.48.jpg

 

only show one shunt Resistor. I don't know what's wrong with it. need to help!!!

 

 

 

    This topic has been closed for replies.
    Best answer by cedric H

    Hello @tonyqian926 ,

    Your issue comes from the pin you selected.

    PA7 -> ADC2_IN4

    PA6 -> ADC2_IN3

    PA3 -> ADC1_IN4

    The algorithm uses only 2 phases among the 3 (depending on the angle). If there is only 1 ADC connected to the 3 phases, then it does the 2 sampling sequentially. But if there is 2 ADCs, the idea is to be able to do the sampling of the two phases in the same clock cycle. To do so, one of the 3 pins must be accessible to the 2 ADCs.

    In your case the suggestion will be then :

    - replacing PA3 by PA5 -> ADC2_IN2, then you will have a proposal using only ADC2.

    - replacing PA6 by PC3 -> ADC1_IN9, ADC2_IN9, then you will be able to use 2 ADCs with the following schema :

    (U,V) sampled by ADC2_IN4, ADC1_IN9

    (U,W) sampled by ADC2_IN4, ADC1_IN4

    (V,W) sampled by ADC2_IN9, ADC1_IN4

    Here the phase V is shared between ADC1 and ADC2.

    Regards

    Cedric

    2 replies

    cedric H
    cedric HBest answer
    Technical Moderator
    March 28, 2024

    Hello @tonyqian926 ,

    Your issue comes from the pin you selected.

    PA7 -> ADC2_IN4

    PA6 -> ADC2_IN3

    PA3 -> ADC1_IN4

    The algorithm uses only 2 phases among the 3 (depending on the angle). If there is only 1 ADC connected to the 3 phases, then it does the 2 sampling sequentially. But if there is 2 ADCs, the idea is to be able to do the sampling of the two phases in the same clock cycle. To do so, one of the 3 pins must be accessible to the 2 ADCs.

    In your case the suggestion will be then :

    - replacing PA3 by PA5 -> ADC2_IN2, then you will have a proposal using only ADC2.

    - replacing PA6 by PC3 -> ADC1_IN9, ADC2_IN9, then you will be able to use 2 ADCs with the following schema :

    (U,V) sampled by ADC2_IN4, ADC1_IN9

    (U,W) sampled by ADC2_IN4, ADC1_IN4

    (V,W) sampled by ADC2_IN9, ADC1_IN4

    Here the phase V is shared between ADC1 and ADC2.

    Regards

    Cedric

    Associate
    March 29, 2024

    thanks very much, I can see 3 shunt now. 截屏2024-03-29 17.28.00.jpg

     

    another question, there is some problem about the OCP function.  

    the json file 

    {
     "type": "inverter",
     "name": "testNow",
     "descVersion": 4,
     "contentVersion": "1.1",
     "PN": "testNow",
     "longDescription": "",
     "shortDescription": "",
     "link": "",
     "mcu": "STM32F303RCTx",
     "clockSource": "8_crystal",
     "clockFrequency": 72,
     "motorDrives": [
     {
     "name": "M1",
     "maxRatedVoltage": 600,
     "minRatedVoltage": 300,
     "maxRatedCurrent": 10,
     "features": [
     {
     "name": "CurrentSensing",
     "type": "CurrentSensing",
     "tRise": 2550,
     "hwVariants": [
     {
     "type": "ThreeShunt_AmplifiedCurrents",
     "help": " ",
     "shuntResistor": 0.01,
     "amplifyingNetworkImax": 9,
     "amplifyingNetworkVm": 3.3,
     "amplifyingNetworkPrating": 2.0,
     "offsetNetworkAttenuation": 1,
     "opAmpGain": 2,
     "polarizationOffset": 1.86,
     "signals": {
    
     "CURRENT_AMPL_U": [
     {
     "name": "PA7",
     "help": "",
     "cost": 0
     }
     ],
     "CURRENT_AMPL_V": [
     {
     "name": "PC3",
     "help": "",
     "cost": 0
     }
     ],
     "CURRENT_AMPL_W": [
     {
     "name": "PA5",
     "help": "",
     "cost": 0
     }
     ]
     }
     },
     {
     "type": "SingleShunt_AmplifiedCurrents",
     "help": "Soldering the pins SENS1 to Vshunt_2 of connector J5 and the pins SENS3 to Vshunt_2 of the connector J6",
     "signals": {
     "CURRENT_AMPL": [
     {
     "name": "PA2",
     "help": "CN7.36. Factory default. Solder R48.",
     "cost": 0
     }
     ]
     },
     "shuntResistor": 0.01,
     "amplifyingNetworkImax": 30,
     "amplifyingNetworkVm": 3.3,
     "amplifyingNetworkPrating": 4,
     "offsetNetworkAttenuation": 0.909,
     "opAmpGain": 5.7,
     "polarizationOffset": 1.710
     }
    
    
    
     ]
     },
    
    
    
    
    
    
     {
     "name": "OverCurrentProtection",
     "type": "OverCurrentProtection",
     "hwVariants": [
     {
     "type": "OnPowerStageOCP",
     "help": "How to enable this variant",
     "signals": {
     "OC_TRIGGER": [
     {
     "name": "PA2",
     "help": "",
     "cost": 0
     }
     ]
     },
     "OCThreshold": 480,
     "OCComparatorThreshold": 0.3,
     "OCNetworkOffset": 0,
     "OCNetworkGain": 0.01,
     "OCSignalPolarity":"Active low"
     }
     ]
     },
    
    
    
     {
     "name": "PhaseVoltageGeneration",
     "type": "PhaseVoltageGeneration",
     "driverName": "",
     "driverPN": "",
     "minDeadTime": 100,
     "maxSwitchingFreq": 100,
     "tNoise": 2000,
     "hwVariants": [
     {
     "type": "DrivingHighAndLowSides",
     "help": "",
     "deadTime": 100,
     "highSideSwitchesDrivingPolarity": "Active high",
     "lowSideSwitchesDrivingPolarity": "Active high",
     "signals": {
     "PWM_CHU_H": [
     {
     "name": "PA8",
     "help": "",
     "cost": 0
     }
     ],
     "PWM_CHV_H": [
     {
     "name": "PA9",
     "help": "",
     "cost": 0
     }
     ],
     "PWM_CHW_H": [
     {
     "name": "PA10",
     "help": "",
     "cost": 0
     }
     ],
     "PWM_CHU_L": [
     {
     "name": "PB13",
     "help": "",
     "cost": 0
     }
     ],
     "PWM_CHV_L": [
     {
     "name": "PB14",
     "help": "",
     "cost": 0
     }
     ],
     "PWM_CHW_L": [
     {
     "name": "PB15",
     "help": "",
     "cost": 0
     }
     ]
     }
     }
     ]
     },
    
    
    
    
    
     {
     "name": "VBusSensing",
     "type": "VBusSensing",
     "busVoltageDivider": 136,
     "hwVariants": [
     {
     "type": "VBusSensing",
     "help": "",
     "signals": {
     "VBUS": [
     {
     "name": "PA1",
     "help": "",
     "cost": 0
     }
     ]
     },
     "busVoltageDivider": 136,
     "busVoltageDividerR1": 1620,
     "busVoltageDividerR2": 12,
     "busVoltageDividerR3": null
     }
     ]
     },
    
     {
     "name": "TemperatureSensing",
     "type": "TemperatureSensing",
     "hwVariants": [
     {
     "type": "NTCThermistor",
     "help": "",
     "signals": {
     "TEMPERATURE_NTC": [
     {
     "name": "PB0",
     "help": "",
     "cost": 0
     }
     ]
     },
     "v0": 1055,
     "t0": 25,
     "gain": 22.7,
     "maxSensorTemperature": 110
     }
     ]
     },
    
     {
     "name": "ICL",
     "type":"ICL",
     "hwVariants": [
     {
     "type": "InrushCurrentLimiter",
     "signals":{
     "ICL_ENABLE": [
     {
     "name":"PD2",
     "help":"hello",
     "cost": 0
     }
     ]
     },
     "switchPolarity": "Active high",
     "capsDelayCharging": 100
     }
     ]
     }
    
     ]
     }
    
     ],
    
     "features": [
     {
     "name": "SerialPortCommunication",
     "type": "SerialPortCommunication",
     "hwVariants": [
     {
     "type": "Uart2WiresCommunication",
     "help": "",
     "signals": {
     "UART_TX": [
     {
     "name": "PC10",
     "help": "",
     "cost": 0
     }
     ],
     "UART_RX": [
     {
     "name": "PC11",
     "help": "",
     "cost": 0
     }
     ]
     }
     }
     ]
     }
    
    
    
    
     ]
    }

     

    the over current protection is not show on. I don't know why?截屏2024-03-29 17.34.52.jpg

     

     

    Associate
    March 30, 2024

    it's ok now. I changed the oc_trigger pin to PA2(TIMx_BKIN).I hadn't noticed it before.

    the json code is:

     {
     "name": "OverCurrentProtection",
     "type": "OverCurrentProtection",
     "hwVariants": [
     {
     "type": "OnPowerStageOCP",
     "help": "How to enable this variant",
     "signals": {
     "OC_TRIGGER": [
     {
     "name": "PA2",
     "help": "",
     "cost": 0
     }
     ]
     },
     "OCThreshold": 480,
     "OCComparatorThreshold": 0.3,
     "OCNetworkOffset": 0,
     "OCNetworkGain": 0.01,
     "OCSignalPolarity":"Active low"
     }
     ]
     },

     

    and the foc wizard show:截屏2024-03-30 10.28.41.jpg