Hi Richard,
No problems I will try to explain
An inverter is basically 6 switches, each can be ON (a current can flow through it) or OFF (no current can flow). I you put a shunt resistor connected between the ground and the low side of the tree branch of the inverter you will get an image of the current flowing through the inverter.
But keep in mind that in each branch of the inverter the lower transistor is always in the opposite state from the upper transistor of the branch. Are you alright with this principle?
Our low side current sensing circuit have a huge drawback: it can get an image of the current only when a low transistor is ON !
When a low side transistor is ON then the current in the coil of the motor pass through the shunt resistor. If we measure the voltage across the shunt we will know the current passing through it.
But what if the low side transistor is OFF? If the low side transistor of the branch is OFF then no current will flow through the resistor because one side of the resistor is connected to the ground and the other side connected to nothing. So if we sample the voltage across the resistor we will know nothing.
If you are confident with this you can deduce the table in my previous message :
For most states of the inverter you will find that the current flowing through the shunt is always the current of one inverter branch at time.
For two state of the inverter (T1 = 0, T2 =0, T3 = 0) or (T1 = 1 T2 = 1 and T3 = 1) you will find that the current flowing through the shunt will be Ia + ib + ic. But if you know Kirchhoff law you already know that in a closed circuit the current entering the circuit is equal to current leaving, so in our BLDC case: i1+i2+i3 = 0 … magic … a lot of current is drawn by the motor but the voltage drop across the resistor is 0… so that why you cannot sample easily the total current with a single low side shunt resistor
But as you point it, STSPIN830 use a low side shunt, and it work well! Next is an overview of how the ST engineer handle it:
If you know that your inverter is in the state for example T1=0, T2 =1 and T3 =1 then according to the table the current flowing through you shunt resistor is ia. If you are rapid enough you can start your MCU ADC and get the value of Ia.
Then you wait some time until your inverter reach the state T1=1, T2=1 and T3 = 0 and you firing again you’re ADC, you can sample ic.
But be careful … sometime if the state duration is too low, for example 20 us, and your ADC need at least 30 us to sample the voltage drop across the shunt you cannot use this state for sampling ic… That why you need a complicated algorithm to select which inverter state will have a duration compatible with you sampling time depending of the motor operating point …
After when you have the 2 currents properly sampled you can deduce i3 because as always i1 + i2 + i3 = 0 BUT be careful, your pain is not about to end … Here you have to use an algorithm for compensate the lagging in your acquisition because you haven’ sampled ia and ic at the same time (you waited for your inverter to be in the appropriate state for sampling the second current…).
When you have the tree current corrected from the lagging and the rotor position you can compute your torque controller, torque limiter, power limiter or whatever you want “easily”
So to conclude, single low side shunt work, but the price to pay is complex algorithm and a MCU with appropriates peripherals adapted to this kind of operation. STSPIN830 is perfect for this, Arduino is definitely not
Don’t hesitat to ask if it’s not clear
Best regards