How to simulate a BLDC motor under load

T ChapT Chap Posts: 4,014
edited 2019-05-14 - 05:30:52 in General Discussion
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?


  • You can find 200w 100 ohm ceramic wire wound pot on amazon to sub for the motor. That would give you a range of .24A - >7A. Maybe set current for your trip value through the pot and adjust the load resistor at the ina138 to give the volts/amp though the motor at trip point. Assume your software or monitoring will filter surge current to prevent false overcurrent trips? Just a late night idea....
  • Not being there, it's hard to visualise what you have but you have mentioned a PWM'd clutch.... could this somehow be configured as a variable load?
  • No the clutch is a separate driver. The bldc has 3 wires so all three combinations of phases can be on at a time. I’m not sure how complicated this gets as the means maybe 3 loads?
  • T ChapT Chap Posts: 4,014
    edited 2019-05-14 - 13:38:38
    How about 3 Mosfets from each of the 3 motor wires to GND on a special Prop test board. Set PWM to each of the three to have potential from off to full on(never allow full on). This would at least be a way to find a PWM value similar to max motor load for trim pot gain calibration.

    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.
  • I could be way off here but in my mind's eye, there is a clutch between the motor and the load (???).
    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.

  • T ChapT Chap Posts: 4,014
    edited 2019-05-14 - 13:55:01
    That’s not an option. Pretend there is no motor and no clutch and you want to simulate a load on a bench. There are 5 different motors (gear ratios, winding stacks) meaning a clutch slip method won’t work so I need a fixed way to calibrate a trim pot.
  • If the BLDC motor is Y connected I would suggest a load resistor for each motor winding and a variable constant current circuit on the common connection. A 4-5 ohm resistor would limit maximum current, and the constant current circuit would allow you to set/control the current level of the trip point.
  • A similar approach would work for a delta connection motor simulator but the current control circuitry would be more complicated.
  • Y. I’ll look up a variable constant current circuit. Thanks. I also will hack up a method to pwm 3 mosfets to GND for each wire and see if that produces a good result. Then a prop could set a value.
  • Sorry, was thinking two wire, for a load subber. Maybe still work with ganged pots if such can be found or separate pots, set them before each test load value. If you go the FET to ground route, consider load resistors of a value and wattage to simulate but not exceed by to much the max expected current, may save your drive electronics if one of the FETS fail in short mode.
  • You could use a variac with rectifier and load resistor. Now just run that through your current shunt.
  • Keep thinking about this... what am I missing?
    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 motor current...make a dead short and scale it from there?

    I'm wondering about my ability to interpret forum posts...
  • Motor would be near dead short, still have winding resistance though small. If I misunderstood correctly, you are trying to determine an overcurrent trip threshold. Are you monitoring one or all phases, and will the overcurrent event be acted on in hardware or software? The chip doing the monitoring looks interesting. Wish I could readjust the work/play duty cycle !
  • T ChapT Chap Posts: 4,014
    edited 2019-05-16 - 02:07:29
    Let’s say a motor under condition 1 load has a predictable current load as measured on the ADC, not any actual current measurement value just a 16bit number as dialed in with a gain pot. Then at condition 2 there is another predicable current load. 3,4,5 other conditions. All 5 conditions will have a user defined current trip level for that load. I want to be able to simulate various loads and test things out. But all thats irrelevant. The main question is how to create varying loads simulating a motor under load.

    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 an idea, depending on size of motor, space, and cost, you might be able to link a motor to a positive displacement pump with a closed loop of ___________ (water, veg oil, pick any safe) and a gate valve to manage flow rate thereby allowing you to set the loading on an actual motor by restriction in the output making the motor work at the level you want. Admittedly Rube Goldberg, but maybe a solution.
  • Yeah but T Chap wants to simulate the load without actual moving parts.

    Just out of interest; you are also using the Prop for phase commutation?
  • T ChapT Chap Posts: 4,014
    edited 2019-05-16 - 13:05:20
    I use MC33035 bldc controller into a HIP4086 n channel mosfet driver. The goal is a simple bench test without connecting any real load. At different test loads I can create a false overcurrent and monitor the motor response ie reverse. What I have been doing is attaching a 4” Delrin round piece to the motor and grab it by hand.
  • Hi
    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.

  • I would monitor the load with my scope one channel on the shunt and the second channel on the output of the INA138. Run the motor load it with the delrin rod and note the currents and spikes. You can use Tek-bench if you have a tektronic. Or I use a Dataq data logger you can pick those up for $60. Or load the motor with another motor as already been suggested. I've made dyno's before using A/C motors with re-gen VFD's. You can do that same using a stepper, small motor, etc. depends on the inch output of your DC brushless motor.
  • I think a fairly simple constant current circuit mounted on each phase of the bldc driver could work here, but it's hard to be sure without knowing the details of the driver and monitoring circuitry as well as the types of tests to be performed.
  • Kwinn what’s your suggestion for a circuit to handle 5 amps?
  • My suggestion is a variation of a very simple circuit that I used to test 10A 24VDC power supplies. For a maximum of 5A R2 would be 4R8 120W. R1 was 27R 2W in my circuit. You could use a higher value. Worked well as a DC load, but may need some changes for the higher frequencies of PWM currently used.
    374 x 513 - 17K
  • A 120watt resistor ?
  • I^2*R with no margin
  • T Chap wrote: »
    A 120watt resistor ?

    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.
Sign In or Register to comment.