Help math dummy with BLDC motor voltage at stall - Page 1
Forum section: electronics / projects

author: Conrad Hoffman
author_rank: Super Contributor
timestamp: July 31, 2020, 11:41:26 pm
content: First, I have no problem with sine wave drive math at any reasonable frequency where I can make differential scope measurements. The rub is when the motor is stalled and I have three essentially DC voltages across the phases. To define the problem, I have access to the three terminal voltages but nothing else. They do, in fact, sum to zero as they should. I do know the phase impedances. What I want to know is how to get the individual phase voltages and currents from those three measurements, each across a pair of windings, and the power. The motor is a conventional wye winding. Though I could get access to other points and even measure currents, I'm purposely avoiding those things because I'm cross-checking other methods/work.

author: Siwastaja
author_rank: Super Contributor
timestamp: August 01, 2020, 09:19:15 am
content: Current measurement is the key to motor control. Actually, voltage measurement is often irrelevant. (Another key is rotor position measurement or estimation. Thiscanbe estimated (for which youmayneed phase voltage measurements, after all!), but direct position measurement, using hall sensors or even better, higher resolution encoders, is so much easier and better at low speeds.)There is no magical way to calculate the current. You could try to approximate it, but being key parameter, it is always just sensed. If you want to cheap out on this, just measure the DC bus current, although the savings compared to sensing two phase currents properly isn't that big.I'm not aware of any well-knownpropersolution without current sensing delivering good results. Current sensing would be crucial for protection in corner cases anyway, so it is added to the BOM regardless.At complete stall, you need to output currents to the coils so that they produce a magnetic field directed 90 degrees forward from the current rotor position, so that it's generating forward torque. Because it's in stall, the motor is generating no back-EMF, and the current is solely defined by the PWM duty cycle, and the resistance of the windings. Note that resistance is poorly controlled, and varies with temperature. Hence, feedback! Current sense -> current control PI loop -> PWM setpoint.Now you step the rotor a tiny bit forward, recalculate the "90 degrees forward" current vector. No problem, your PI loops adjust the PWMs to direct the torque.But, as you start increasing speed, your current setpoints rotating as sine waves start to spin so fast that your current control PI loops add too much delay. At this point, you add FOC, basically just rotating the current measurement values in sync with the rotor, so that they appear stationary, then PI loop these rotated values, then rotate back the results (PWM setpoints). Conversion into 2-phase and back into 3-phase are typically added to make the math easier to handle.

author: Conrad Hoffman
author_rank: Super Contributor
timestamp: August 01, 2020, 11:43:21 am
content: Yes, we have all that! Current is sensed and the motor has a decent resolution encoder so the phase lead/lag is properly controlled. These motors also have stable, or at least predictable, resistance. My desire is to confirm that the system is working correctly using only the three terminals I presently have access to. It should be a simple matter to calculate the phase voltages and currents from the terminal-to-terminal voltages, but I just can't seem to see it. In the AC case where you know the amplitude of the driving waveform, and the phase difference, it's easy. I'm just having an issue with the stall condition and three DC difference values.Edit- Of course, duh! All I needed was wye-delta conversion to solve the thing. Knew about it but never needed it before.