How to simulate a BLDC motor under load
T Chap
Posts: 4,223
I want to find a method to calibrate the gain trimpot off the current sense IC ina138 which feeds an ADC to allow setting a current trip level. Instead of having to grab the motor shaft to simulate loads I want to turn a pot or something to various positions and observe the ADC values. 24vdc power to a brushless motor. The motor driver has a 7amp sloblow fuse that doesn’t blow so I know it’s under 7A max.
Any suggestions?
Any suggestions?
Comments
In the real world where I set the gain trim pot before the ADC 9 - 10 o’clock is the approximate setting to be correct for max motor load. So finding a mosfet tester method I can find a PWM value that simulates the motor load that would in turn allow to dial the trimpot to a precise calibration point to achieve X value on the ADC. This way each ADC is set very consistent and precise per board.
The load could be locked and the amount of torque applied to the load could be varied with the clutch....
I suspect that this is not the configuration though because the position feedback is on the other end of the motor.
I guess I don't understand why you can't lock the rotor, apply various levels of motor command, measure the actual current draw and calibrate the ADC accordingly.
I can see the need for a simulator if we were banging a motor DOL (direct on line) but aren't we talking about current scaling? A stalled motor is virtually a dead short. Our motor current, here, is dictated by the motor command...zero command=zero motor current...make a dead short and scale it from there?
I'm wondering about my ability to interpret forum posts...
Now the next issue is a bldc with 3 phases at 120 per phase will only have two drives on for two of the three top drive mosfets and one of the low side mosfets on. This means you can create a load on two of the three motor wires and one of the motor wires is your path to ground. Y. Take a motor and park it so it’s hall sensors output 010. That gives 101 on the hot side and 100 on the low side per the drawing. Don’t spin the motor. Just crank up the input to the controller to run speed and then crank up the fake load circuit to simulate various loads. This requires 2 load circuits. With a motor that is set to a phase but no power connected to make it spin. Just use the motor to generate sensor outputs. Set the trim pot for the ADC gain to a value and then all boards are very consistent with how they will display loads.
Overcurrent trip levels are dynamic set by position ranges for different loads. Prop knows the trip levels per encoder value ranges and applies trip levels per range.
I have a ton of gain with a 500k trim pot off the ina138 that feeds an opamp into the ADS1115 ADC. With the large gain I can run a motor under load and the trimpot range will see a voltage from 0-32767. So I have been setting the lower range of load to 10000 on the ADC by adjusting the trim pot. The larger loads will then fall around 20000. Giving a good headroom up to 32767 before the ADC is maxed out. The goal is to find a load that is similar in field to 10000. Then set all motor drivers precisely to 10000 under the same test load. Hopefully this makes sense.
Just out of interest; you are also using the Prop for phase commutation?
What about attach another motor- (brushed dc even)- to the shaft and treat it as if it were a generator and load the generator output with semiconductor loads- to220 darlingtons/fets etc.
Dave
Yes, 120W, 5A at 24V volts is 120W, and the power/heat has to go somewhere. It can be spread over multiple resistors in series or parallel. Normally I recommend at least a 50% margin, so 180W, but in this case the power is spread between the transistor and the resistor so it may not be necessary. It depends on your testing regimen. You may even get away with using 100W resistors since there will be 3 of them and each one is on for 2/3 of the time.
The 10A supply testers I built had four 0.5 ohm 100W resistors on a big heat-sink with a fan mounted on it because part of the testing was done at 10A for a long period of time.