Control BLDC motor via arduino and N-mosfets

Hi
I am trying to control BLDC, but always torque ON.
As I searched, common BLDC controllers restrict power of BLDC motor proportional to speed.(torque increases as speed up, almost 0 torque at initial state)
I want to control BLDC like servo motor, almost constant torque and just rotation of vector(sum of U, V, W).

First, I bought common BLDC controller. JYQD V7.3E2. Then I recognized situation I mentioned upper.
So I tried this thing follows. I removed jy01(main pwm generate chip), and I put PWM directly to IR2101.
but output voltage was not as I expected. That was half-side trapezoidal shape(000000555543 like level voltage), not both-side trapezoidal shape(000034555543).
1. So I ask for how to make these voltage output goes both-side trapezoidal.

Then, I attempted to make BLDC controller just itself.
I studied about ‘high and low side driver’ and ‘bootstrap voltage’ etc.
So I used arduino UNO and IRFZ44N(N-mosfet)s to control motor, but It wasn’t work. I think It is because of bootstrap voltage.
2. If I use two N-mosfet(one has low Vth and the other has high) apply them to voltage and current gradually increase, enough to make BLDC move.

All I want is just 1) holding torque at 0 speed, 2) simultaneous and direct speed control(do not wait stop until inertia doesn’t affect when break on).
My idea is set voltage of each pole of BLDC motor, U, V, W as sum of three vector has constant length(maybe power or torque to some direction) and control just direction of them by shift phase.
3. If someone knows how to control BLDC as I mentioned with low cost and simply, please share to me.

Thanks.

Hii,

May be this will be helpful as the starting point for developing the code for BLDC motor operation.

First you need to provide datasheet for the particular BLDC you are thinking about, in particular whether
it has Hall switches and whether they are wired 60 or 120 electrical degrees apart.

You need three half bridges to control power to a BLDC motor.

If you do not limit the current at low speed your motor will try to increase its speed, as torque provided by the current is more than needed to run at that speed.

I want to control BLDC like servo motor, almost constant torque and just rotation of vector(sum of U, V, W).

I don't think a servo motor is constant torque, since torque is a function of current and servo motor controllers are
not constant current. You can have a torque mode or a position mode or a torque limit mode in position mode but
if you limit the torque to 20% in position mode and command a position, if the load requires more that 20% at
any point between A and Z, it would just stop at that point because you've told it not to exceed that torque but
the load is such that it would require more than 20% to continue to the target. The result is it would start moving
and stop at whatever point where the load requires more than 20% to continue moving. Constant torque mode
is not position mode. You can't give it a target position. You give it a torque and a GO command and that's it.
Position mode allows you to set some parameters but the current and torque will always vary while it is maintaining
the acceleration , deceleration, and velocity you gave it.
These are the four parameters:
Acceleration
Decel;eration
Velocity
Position
Enable (T/F)
You give it these parameters and then you make Enable TRUE and it moves from A to Z following the set parameters (which can be changed on the fly based on position (If POS = XXXX, change DECEL to YYYY etc.)

Can you post a vendor link for the motor ?

As I searched, common BLDC controllers restrict power of BLDC motor proportional to speed.(torque increases as speed up, almost 0 torque at initial state)
I want to control BLDC like servo motor, almost constant torque and just rotation of vector(sum of U, V, W).

A brushless motor controller is not a servo motor controller. The design is very different.
A servo motor controller uses feedback. (encoder ). Unlike a stepper motor where you can count steps, a brushless motor has no way to know where it is. In addition, a constant current servo motor controller is an oxymoron.
A servo motor controller cannot be constant current because the current is a function of position. The only time
the current is constant is when it is not moving.
You can make a servo motor controller (easier to just buy one), or you can make a brushless speed controller, but
you can't have your cake and eat it too....

raschemmel:
Unlike a stepper motor where you can count steps, a brushless motor has no way to know where it is.

The structures of a stepper motor and a brushless motor are actually not that different - a brushless motor is quite similar to a stepper with very few steps. Even the control itself is very similar: you activate magnetic coils one after the other making it rotate in the process. It should even be possible to drive a brushless DC motor as if it were a stepper motor. Torque no doubt would be pretty poor, and steps 60° or 120° each... the intended use is of course totally different.

Now a servo, that's a totally different animal. Arguably "servo" refers specifically to the method of control (the PWM signal giving either speed/direction or position to the motor) rather than the motor itself, as internally it could be brushed or brushless type motors, both capable of doing the essentially same thing with the output shaft. Servos all have control electronics on board; BLDC motors may or may not have this (two vs. three wire motors). OP's motor is probably the second type, as they're talking about building the controller for it.

Ok, what's the takeaway here as far as what the OP wants to do ? Servo motors are feedback control systems. AFAIK their not PWMed.

raschemmel:
I don't think a servo motor is constant torque, since torque is a function of current and servo motor controllers are
not constant current.

The basis of standard servomotor systems is an inner current-control loop, used directly for
torque control, or else programmed by an outer position or velocity control loop.

Current control loops may be recalculated as rapidly as every 100µs or so, typically at the same
rate as the PWM. Other control loops can be somewhat slower as the time constants involved
for mechanical changes are longer than for current changes.

Servomotor systems are not to be confused with small hobby servos, BTW.

"Servomotor systems are not to be confused with small hobby servos, BTW."

Yes, I forgot to mention that ...
bit it becomes more evident when you look at
the price:
"https://www.servotechusa.com/product/fanuc-ac-servo-motor-a06b-0227-b000/?gclid=EAIaIQobChMIhuOjirb67QIVACGtBh0eVwzGEAsYBCABEgI0d_D_BwE"

When I worked in the semiconductor industry
I remember seeing prices for small wafer handling
servomotors and DeviceNet smart drives of
$5000+ for either.

Here you can see the encoder:
"Servo Motor Technology"

Hi,
Welcome to the forum.

What is the application, is there a specific reason you want to make something like a servo?

What I think you are describing is called Vector Control, especially if you want "inertia less" stops and starts.
This will involve some feedback from the motor shaft to not only indicate speed but position.
You will also need a Brake load resistor to take the "inertia" energy.

I service and repair these motors/controllers used in the packaging and CNC industry.
(Think about them when you eat a Twix, Bounty or Mars Bar, their wrapping machines have up to 10 of these motors/controllers to regulate paper tension and bar feeding.)
Tom.. :slight_smile:

Expensive , right ?

raschemmel:
Expensive , right ?

Yes, they start at about $2000, depends on how many you need, my customer was upgrading from older obsolete model.
So 10 per wrapper times 5 wrappers over a time frame of 6 months.
The supplier stock piled so they could respond to 24hour notice of orders.
Tom... :slight_smile:

M700.jpg

M700.jpg