How to control the Torque of your Brushless AC motor using SOLO and ARDUINO | ESC | FOC | Sensorless

In this tutorial, we will get experience on how to drive and control the torque of brushless AC or Permanent Magnet Synchronous Motor (PMSM) using SOLO alongside ARDUINO as a commanding unit. This control is based on Field Oriented Control principle in closed-loop sensorless mode.

Just to give you a very brief explanation about each of the mentioned terms like PMSM, FOC and Sensorless speed control, firstly we will define them and then we will proceed with the tutorial, you can skip the next 3 topics if you just want to jump into the tutorial itself and these topics are just for those who are interested and are not required to be known before using SOLO.

What is a Brushless AC or PMSM motors?

Brushless AC or Permanent Magnet Synchronous Motors are one kind of Brushless Motors, The expression AC brushless Motor is used to indicate those Motors that utilize a synchronous machine with permanent magnets: the excitation magnetic field, in such machines, is provided by permanent magnets.
The scope of these Motors is mainly limited to low power (typically less than 50 kW) for the limitations imposed by the magnetic materials currently available to the construction of machines: the size and cost of the magnets are very high. However, this is an important field of application and in significant growth, including numerically controlled machine tools, industrial automation, robotics, light traction, heavy traction, wind generation. Furthermore, due to the virtual absence of rotor losses these machines do not require forced ventilation and are therefore suitable for applications like aerospace or contaminated environments.
These Motors consist of a cylindrical stators with symmetrical three phase windings resulting in generation of a sinusoidal magnetomotive force or BEMF, in simple language their BEMF has a sinusoidal shape in contrast to Brushless DC motors with Trapezoidal BEMF shape.

What is Field Oriented Control?

Field Oriented Control is a pretty new approach of driving and controlling various types of electrical motors, in this methodology in a very simple language, the goal is to control the Field and the Torque of the motors separately resulting in a much more robust and reliable results. Using this methodology one could reach higher performances in driving electrical Machines with smoother motions, better performance and higher efficiency. We will cover this topic in depth in our future articles.

What is Sensorless Control?

This term despite looking self-explanatory might be a little bit hard to grasp, so we’ll put it in this way:
The sensorless speed or Torque control refers to those type of controls in which they don’t require the user to use Encoders or other types of position sensors like Hall-Effect or Tactile sensors, so these controllers are able to detect and calculate the position and the speed of the rotor of the motors and subsequently eliminating the need for having any other kinds of sensors, but this is not their biggest advantage, their main advantages could be considered as:

1- Reduction of the components used, like sensors or the electronics used to run and condition the sensors outputs ( like the supplies, level shifters , … ) , which will reduce the probability of failure of the whole system due to having less components involved.

2- Reduction of Wiring in a system, so by using sensors of any kind, you’ll need to wire the sensors all the way from the position of fixation of the electrical motor to the control unit, this will make the assembly of the system harder plus bringing all the issues with wiring like limitation of distance, possibility of failure of the wire, bad junctions and so on.

3- Reduction of the Cost, it’s very apparent from the above mentioned reasons, how one can reduce the final cost of their system by eliminating the whole costs of sensors and wiring.
Of course like any other solutions, there will be pros and cons using sensorless methods, their main drawback can be considered as:

– Having a Minimum Speed restriction, these methods mostly rely on the feedbacks of voltage, current or BEMF coming back from the Motor, so if the motor doesn’t generate sufficient values the sensorless methods will have hard time to start their operation, as a result there’s a limit in minimum rotational speed defied, meaning that the sensorless controls can only start from a certain minimum speed in range of tens of RPM ( like 100 RPM ), so you can’t expect them to be very accurate in low speeds.
But altogether, the sensorless methods are very popular and desired in lots of systems like traction units and all the applications that the extreme precision of speed control is not a matter.

The Steps of Setting Up and Using SOLO Alongside With ARDUINO

Turn Off the System

Make sure you have disconnected the power supply connected to SOLO or any other peripheral which is in contact with SOLO.

Apply the Wiring

To start with SOLO first you need to provide the Wiring of SOLO to ARDUINO as following:

SOLO UNO to Arduino UNO wirings [PWM control]

SOLO MINI to Arduino UNO wirings [PWM control]

SOLO BETA to Arduino UNO wirings [PWM control]

arduino uno and solo beta wiring

– The “DIR” Pin is a 3.3V input, and it’s NOT 5v tolerant, to apply a 5V input you MUST use a resistor with a value between 1kΩ to 2.2kΩ, as can be seen in the diagram above.

As you can see SOLO is also capable of supplying ARDUINO Directly through its 5V output and as a result you will not need to have ARDUINO connected to any other devices like a PC to provide you the power.

s

Warning: make sure you don’t supply the ARDUINO  both from your PC using USB or any other supply and Then the  5V from SOLO at the same time, you should use only one of the supplies especially in ARDUINO  UNO models where they can’t switch the supplies and this might cause issue for the system

 

Select the Motor Type Using Piano Switch

In this tutorial we are using a Brushless Motor with very low inductance ( around 800uH line to line) so in this case we have decided to put the switching frequency of SOLO at 80kHz to have a better current controlling. By putting Switch 1 and 2 of Piano Switch into OFF position (UP) SOLO will be set on Brushless Motors with 80kHz of switching at the output (BLDC or PMSM). As a rule of thumb, for motors having phase inductances below 400uH (Line-to_Line inductance below 800uH) you can put the switching frequency higher than 50kHz up to 80kHz ( depending on the motor and it’s maximum allowable switching frequency to avoid saturating the core)

How to control the Torque of your Brushless AC motor using SOLO and ARDUINO | ESC | FOC | Sensorless 1

Turn On the System

Now you can turn on the main supply connected to SOLO’s power input (8-58V) and SOLO will immediately boot up with a blinking E2 LED while E1 LED is off which is the indication of a safe startup with no errors or malfunctions ( like over current, over voltage, … )

Put SOLO into Closed-loop Mode

since the control type we are using here is among the closed-loop controls, you need to push the Piano switch number 5 into ON position (Down), when you do that, SOLO in less than a second will identify your motor parameters and it will store them on it’s non-volatile memory, during this time if the shaft of the motor is free, you might witness some little vibrations which are totally normal. So as long as the Piano Switch number 5 is down, the last saved parameters will be used, even if you turn off the whole system and turn it back on later.
How to control the Torque of your Brushless AC motor using SOLO and ARDUINO | ESC | FOC | Sensorless 2

Under the following conditions you need to pull up and push down again the piano switch number 5 :

 

  • In case of changing the Motor
  • In case of changing the wiring of the motor ( not mandatory but better to be done )
  • The very first time you run SOLO and you put it into closed-loop ( after receiving the factory made module )

Put SOLO into Torque Control Mode

Just put the piano switch number 4  in OFF position (UP) .

How to control the Torque of your Brushless AC motor using SOLO and ARDUINO | ESC | FOC | Sensorless 2

Send PWM Pulses from ARDUINO to SOLO

one of the methods of commanding SOLO is using pulse width modulation ( PWM) method, in this method you will send some digital pulses in which their high-state is 5V and their low-state is 0V. These pulses should have any frequency above 5kHz ( the higher the frequency the better the resolution). Now by varying the duty cycle of these pulses you can increase or decrease the torque of your motor from No torque ( 0% duty cycle ) to maximum allowable torque ( Max allowable set current in the motors, ,100% duty cycle).
How to control the Torque of your Brushless AC motor using SOLO and ARDUINO | ESC | FOC | Sensorless 4

Limit The amount of current fed into your motor

You can limit the amount of current fed to your motor using the connection shown in the wiring section to “P/F” input of SOLO. Again here, you can use PWM pulses with any frequency above 5kHz, and by changing their duty-cycle the value of the current limit will change based on the following formula:

The current Limit value = ((100 – duty cycle of PWM at P/F input)/100) * 32

For example if we put the duty cycle at 80% on “P/F” input, the maximum current allowed into the motor will become 6.4 Amps: ((100-80)/100)*32

As you see, this input works in reverse, so if you leave it open, the maximum allowed current into your motor will be the default value of 32A and if you apply a 100% duty-cycle PWM into “P/F” input, the current limit will be set at 0 (no current allowed into the motor). If you don’t want to use this feature you can leave this input unconnected.

You can limit the amount of current fed to your motor using the connection shown in the wiring section to “P/F” input of SOLO. Again here, you can use PWM pulses with any frequency above 5kHz, and by changing their duty-cycle the value of the current limit will change based on the following formula:

The current Limit value = ((100 – duty cycle of PWM at P/F input)/100) * 32

For example if we put the duty cycle at 80%, the maximum current allowed into the motor will become 6.4 Amps: ((100-80)/100)*32

As you see, this input works in reverse, so if you leave it open, the maximum allowed current into your motor will be the default value of 32A and if you apply a 100% duty-cycle PWM into “P/F” input, the current limit will be set at 0 (no current allowed into the motor). If you don’t want to use this feature you can leave this input unconnected.

Results

In this tutorial we could achieve the torque control of the shaft of the Brushless motors, which in simple language means controlling how forcefully your motor spins, this is different with controlling the speed of rotation, because as you might know, the rotational speed is a phenomenon cause by generated Torque in electrical motors. In the following video we explain better the “Torque Control” Term in Brushless Motors, but in nutshell, in torque control the goal is to keep the torque of the motors at a desired value and the speed of the rotation of the Motor depends highly on other factors like how much is the mechanical load on the shaft of the motor or the friction components and so on. As can be seen in the image below, the RED plot is representing the fixed torque on the shaft of the motor using SOLO, and the GREEN plot is the rotational speed plot while at certain points there’s an external load applied to the shaft of the motor. As can be seen whenever the load on the shaft has increased the speed decreased but still to the torque remained constant, which shows the dependency of torque control on the load. In the future in other articles we’ll try to expand this discussion.

How to control the Torque of your Brushless AC motor using SOLO and ARDUINO | ESC | FOC | Sensorless 5
Share This

Share This

Share this post with your friends!