In this tutorial we will explain how to control the speed of a brushless DC (BLDC) or a permanent magnet synchronous motor (PMSM) in standalone mode using SOLO without using any extra modules and totally in manual mode. Here the only thing you will need is a pair of potentiometers and a simple switch if you want to utilize all the possibilities and features of SOLO in this mode.
The steps of setting up and using SOLO in Standalone mode
0. Turn off the system and Reset the Piano switch
Make sure you have disconnected the power supply connected to SOLO or any other peripheral which is in contact with SOLO, after that you need to push UP all the pins of the piano switch which is their default position.
1. Apply the Wirings
To start with SOLO first you need to provide the Wiring of SOLO as following:
– The “DIR” 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 here.
– The use of current limit Potentiometer is not mandatory and if you leave the “P/F” input of SOLO unconnected, the default value of current limit which is 32A will be used.
– By connecting or disconnecting the “DIR” input to the “GND” or the ground of the system, the direction of the rotation of the motor will change from C.W to C.C.W or vice versa. You can do the same by connecting DIR to +3.3V or to a +5V input using a 1kΩ resistor mentioned above.
2. Select the Motor type using the Piano Switch
In This tutorial we are using a BLDC motor, and as you can see here, in the piano switch we should put the pin number 1 Down and pin number 2 Up to select the first type brushless motor with 20kHz of switching frequency at the output, this switching frequency is satisfactory for a wide range of Brushless and PMSM motors, but if your Brushless motor has a very low inductance ( below 400uH of phase inductance usually) you can select the ultrafast Brushless motor type and the switching frequency in that case will 80kHz.
You can also set any arbitrary switching frequency from 8kHz to 80kHz using digital commanding methods which SOLO provides through UART, CAN and USB for you.
3. Reset the Kp and Ki potentiometers
Just rotate the two blue potentiometers shown below all the way in Clockwise direction into the blocking point ( please treat them gently! ) , so their value becomes zero.
4. Turn On the system
Now you can turn ON the main supply connected to SOLO’s power input 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, … )
5. 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 Down while the system is ON, 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.
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 )
6. Put SOLO into Speed control Mode
Just put the piano switch number 4 Down, by doing this, SOLO will understand it has to control the Speed of your motor .
7. Tune The Kp and Ki gains
Turn a little bit Kp ( like 5 degrees in counter clockwise direction ) and for a very small amount Ki ( much less than Kp, around 1 or 2 degrees), the best is you watch the video up there to master this. In general these two potentiometer are like some gains and in a very simple language:
Kp : defines for you how fast your motor should react and reach the speed you asked, so if you increase this value, your motor will be more reactive, but too much of this gain might make vibrations, so you need to tune it enough. Also another effect of this gain will be how “harshly” the controller ( here SOLO ) should react to the variation of the load on the shaft of the motor to keep the speed constant, so in case of using this functionality in a mobile robot as an instance, if you increase Kp of SOLO, and the robot reaches to some ramps, it will adjust it’s speed faster but also it might make your robot too fast. So it’s not always good to increase this gain, it totally depends on your system.
Ki: defines how good your motor during time should reach the goal, so by increasing this value your motor might reach the goal slower but more consistent. Also by increasing this gain too much your motor might get unstable. So you need to tune this similar to Kp with patience and accuracy.
In general the first time you tune these two gains, as long as you are using the same Motor in the same system you won’t need to touch them, it’s only the matter of the first time.
8. Turn the Speed/Torque potentiometer to increase or decrease the speed
The Speed/Torque potentiometer here, is actually in charge of increasing or decreasing the voltage on the “S/T” in an analogue manner from 0V to 5V, so when you put the potentiometer on its maximum value (here 10kΩ) the voltage level at “S/T” input of SOLO will be around zero and subsequently the Motor will be stopped, and while you keep increasing the voltage on the “S/T” input by turing the same potentiometer, you are actually increasing the value of the voltage on “S/T” up to +5V which indicates the maximum achievable speed. The maximum speed depends on the nominal speed of your motor and the type of the motor you choose, look here for more information..
9. Limit The 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 using the Current Limit potentiometer. This input works in reverse, meaning that if you apply 0V on it ( or unconnected), SOLO will allow up to 32A continuously flow into your motor if needed, and if you apply +5V to thing input, SOLO will put the current limit at 0 Amps, meaning that it will not allow no current into your motor ( the motor will stop ). So the formula to find the maximum allowed current into your motor will be as following:
The current Limit value = ((5.0 – Analogue Voltage applied at P/F input)/5.0) * 32
So as an example, if you apply 3V at the “P/F” input the value of current limit becomes 12.8A : ((5-3)/5)*32
The image below is a real time plot of Torque-Speed of a brushless motor controlled Manually by SOLO in closed-loop sensorless speed mode, as can be seen the direction of the rotation of the motor has been changed abruptly during time from one direction to the other direction with different values of Speed in each direction just to show the stability and reaction of SOLO (the positive speeds are for C.W rotation and the negative speeds are for C.C.W rotation).
How to control the speed of a 3 phase motor Manually using SOLO in Open-loop mode |OpenLoop|Standalone
In this tutorial, we are showing the steps of driving a 3 phase motor and varying their speed in Open-Loop Mode using SOLO without using any extra modules and totally in manual mode. The motor here can be a Brushless DC, PMSM or an Induction AC motor. In This tutorial...
How to control the speed of BLDC motor using Arduino and SOLO in Closed-loop sensorless mode |FOC|BLDC|Sensorless
In this tutorial we are going to see SOLO controlling the speed of a BLDC motor using ARDUINO UNO as the commanding unit. SOLO, here, controls the speed of this brushless DC motor which is rated for 150W in closed-loop sensorless mode using FOC ( field oriented...
In this tutorial we are going to have our hands on SOLO controlling the speed of a DC motor using ARDUINO as the commanding unit. SOLO, here, controls the speed of the DC brushed motor in a closed-loop sensorless manner with nested Torque-Speed loops. If you are not...