UART Communication and Control

One of the ways of commanding and getting feedbacks from SOLO in a complete digital mode is using the UART communication protocol, which is accessible through the “Communication Port” of SOLO as can be seen below, by using UART communication in digital mode, you can control SOLO in a complete digital fashion with all the commands and feedbacks sent and received without the need to send any forms of analog commands like PWMs , Analogue voltages and so on.

UART 1

s

As can be seen, inside the communication port, Pins 17 and 19 are in the TX and RX pins of UART respectively and they are 3.3V level signals. Please notice that these pins are NOT 5 volts tolerant and in case you want to send/receive signals in 5V range you need to use a level shifter module or IC, so that they will shift the 5V leveled signals into 3.3V level suitable for SOLO. in case of connection of 5V to these pins, the permanent damage to the board in imminent.
The main settings for UART communication between SOLO and a secondary Modules/PC will be as following:

UART 2

* – SOLO can be commanded in both of these baud-rates, the standard baud-rate is used when the external system supports only standard baud-rates, but for those systems in which the baud-rate can be set manually, it’s better to use the exact baud-rate value due to higher accuracy of data transmission.

Packets formation – Commanding and Feedbacks

To send or receive a command from SOLO in UART mode, you need to form a data packet combined out of 10 bytes, based on the following format:

UART 3

A data packet to be sent/received to/from SOLO is divided into 6 different sections and each of these sections are as below:

INITIATOR: This is a constant two bytes code which indicates the start of a packet, the value is fixed at “0xFFFF ” in Hex format or “65535” in decimal format.

DEVICE ADDRESS: This is a single byte which stands for the address of the device, as a matter of fact, each SOLO can have an address from 0 to 254, this device addressing is useful when you want to put lots of SOLO’s in a network, so each of them can be assigned to a unique address. The default value of the address is 0.

COMMAND: This is a single byte, which is a fixed code that defines the type of the command/feedback we are sending/receiving To/from SOLO.

DATA: This is a 4 bytes space to put the possible data of a command or read the feedback data of a specific phenomenon from SOLO, like the value of the speed of the motor and etc.

CRC: This is the CRC byte to control the integrity of the data sent through UART, this functionality is inactive in BETA models ( just put 0 instead of it)

ENDING: Similar to the packet initiator, this is again a constant single byte valued at “0xFE” in HEX format, which stands for the end of a packet sent or received.

After sending a data packet to SOLO, three scenarios will happen:
1. If the packet is correctly formed and acceptable, SOLO will echo-back the exact same packet that it received as a sign of acknowledgement of a correct receipt and settings.

2. If the packet is correctly formed, but the value inside the “DATA” part is out of range or there is an issue with it, SOLO will send back the following packet which is an indication of an Error.

Error Packet:

UART 4

3. If the packet is wrongly formed in terms of bytes, initiators and endings, there will be no response coming back from SOLO, until you send a correct packet.

In General, to communicate with SOLO, there are two types of commands:

1- Commands to Write or Set something, these commands as their name suggests, will allow the user to tune a parameter inside of SOLO or set a value for the controllers like the desired speed or torque and so on.

2- Commands to Read a value from SOLO, using these types of commands, you’ll be able to read various types of parameters and feedback from SOLO, in real-time or in Monitoring Mode which will be explained later in this chapter.

WRITE commands table

UART 5

READ commands table

UART 6

– In the tables as you see, each command has a unique code which is mentioned both in decimal and HEX format inside the brackets.
– There are two different data types used to fill the DATA with:
    1. Uint32 which stands for standard unsigned integer with 32 bits
    2. Sfxt(32-17) which stands for signed fixed point data type with 32 bits combined as :
        – 1 Sign bit
        – 14 integer bits
        – 17 floating point bits

Convert Fixed-point data read from SOLO into real world floating point data type

As mentioned before, the data that comes as a feedback or sent to SOLO as a command can have the fixed-point format, which is a replication of floating point format for digital systems. Here we want to convert the data read from SOLO in case they are from the fixed-point format to their real world floating point format as following steps:

– If the data read from SOLO  is less than or equal to 0x7FFE0000 (Hex) or 2147352576 (decimal), This means the data is positive, so follow the following steps

1) Convert the hex data read from SOLO into Decimal format
2) The float number = data read from SOLO (in Decimal format) / 131072

– If the data read from SOLO  is greater than 0x7FFE0000 (Hex) or 2147352576 (decimal), This means the data is negative, so the conversion will be as :

1) Subtract the data from 0xFFFFFFFF and then add a 0x1 to it (add 1 to it)
2) Convert the result of step “1” into Decimal format
3) The float number = (data in Decimal format taken from step “2” /131072 ) * -1

Example: Positive Numbers Conversion (the data read from SOLO is less than or equal to 0x7FFE0000)

Data read from SOLO : 0x00030000

Since the data is less than 0x7FFE0000 Conversion:
1) Decimal (0x00030000) = 196608
2) 196608 / (131072) = 1.5

Example: Negative Numbers Conversion (the data read from SOLO is greater than 0x7FFE0000)

Data read from SOLO : 0xFFFCCDD2

Since the data is greater than 0x7FFE0000
1) (0xFFFFFFFF – 0xFFFCCDD2 ) + 0x1 = 0x0003322E
2) Decimal ( 0x0003322E ) = 209454
3) (209454 / (131072) )* -1 = -1.598

Convert float data to fixed-point for SOLO to be sent in a data packet

some times you need to send a float number in a data packet to SOLO, for example for setting the current limit value or the Kp, Ki gains and so on, here you need to convert your float number into a fixed-point format data type as below: 

If the float number is Positive
1) Multiply the float number into 131072
2) Round down the result into the nearest integer value
3) Convert this value to HEX

If the float number is Negative
1) Multiply the float number into 131072
2) Round up the result into the nearest integer value
3) Ignore the sign of the integer and convert this value to HEX
4) Subtract data from “0xFFFFFFFF”

Example: Positive Float number conversion into Fixed-Point data type

Data to convert : 4.2

Conversion:
1) 4.2 * 131072 = 550,502.4
2) Round(550502.4) = 550502
3) Hex (550502) = 0x0086666

Example: Negative Float number conversion into Fixed-Point data type

Data to convert : -14.36

Conversion:
1) -14.36 * 131072 = -1,882,193.92
2) Round(-1,882,193.92) = -1,882,193
3) Hex (abs (-1,882,193) )= 0x001CB851
4) 0xFFFFFFFF – 0x001CB851 = 0xFFE347AE

If you’d like to learn more about fixed point data types, you can read the following articles.

   – Introduction to Fixed-Point Numbers
   – Fixed_point Data types and their conversions to floating points
   – Fixed-Point Data Types

– The “DATA” part of a packet must always contain 4 bytes (32 bits) even if you are not sending anything special as data. So in general the size of a packet must always be strictly 10 bytes with initiator and ending bytes and a correct command code as well as a correct device address.

s

– There are two types of parameters in “WRITING” mode:
      – Volatile parameters: They are shown with “V” inside the Storage section of the writing table, these are the parameters that you should write in them whenever you want to change them or after power recycling ( turn ON/OFF), they will not be stored in a long-term memory and after a power rest they will be reverted back to their default values.

      – Memory stored Parameters: These parameters are shown with “M” inside their storage section of the writing table, after writing in them, their final values will be stored in a non-volatile long term memory and they will be remembered after power recycling, The memory used to store these values is a precious resource and the number of Writings are limited to a couple of Million times ( 1,000,000 times guaranteed). So for these types of values which are basically one time settings for a long period ( as long as the Motor is the same ), the users should avoid to write in them every-time if their values has not been changed with respect to the past. In the example sections down below you’ll see in some of the examples how to propperly treat them.

“The Monitor Mode” enables you to keep monitoring the top 10 variables continuously without the need to send a read command every time, so by enabling the Monitor mode you will receive continuously the sampled values for:
    1. VA: 3 phase Motors phase A voltage (BLDC, PMSM, ACIM)
    2. VB: 3 phase Motors phase B voltage (BLDC, PMSM, ACIM)
    3. IA: 3 phase Motors phase A Current (BLDC, PMSM, ACIM)
    4. IB: 3 phase Motors phase B Current (BLDC, PMSM, ACIM)
    5. VBUS : The power supply voltage ( BUS / Battery voltage )
    6. IM: The DC motor Current
    7. VM: The DC motor Voltage
    8. Iq: The quadrature Current in 3 phase motors ( current acting in torque generation)
    9. Id: The direct Current in 3 phase motors
  10. Speed: The speed measured or estimated by SOLO both in Sensorless and in Sensor-based methods

These values are sampled all at the same time instant, and the Monitoring will continue until you disable it. This is a very interesting feature for those of applications in which keeping track of all the vital parameters is necessary.

Connection to PC 

You can directly send your commands from your PC to SOLO in case of using UART communication, the only thing you will need is a “UART to USB convertor with 3.3V logic level” which are commercially available in various types and usually very cheap, their action will be to convert the USB (COM port) signals to TTL signals for UART communication, in general their configuration to be used with SOLO can be done as below:

UART 7

– The UART_TX  of SOLO which is the UART output should get connected to the RX of the module which is the UART input of the module
– The UART_RX  of SOLO which is the UART input should get connected to the TX of the module which is the UART output of the module
– There must be a connection between the grounds of SOLO and the ground of your module through the GND pins which can be taken from either of pins 3,4 or 20 of the communication port of SOLO, you can also use the GND of the Analogue port which are basically the same.
– SOLO also provides +3.3V or +5V outputs at the “Communication Port” which you can use to supply your modules if needed.

Here there are some sample modules which you can use, just keep in mind the TTL voltage level of these modules must be 3.3V, you can use any other modules with the same functionality as you like:

Form RS:
TTL to USB 3.3V wire
module 1
module 2

From Mouser:
TTL to USB 3.3V wire
module 1
module 2

Examples

In below, you find a number of examples on how to form packets for different purposes for sending to SOLO or receiving feedback from it.

s

NOTE : The SPACE in between the bytes below, is just for readability purposes and you shouldn’t send the ASCII code of SPACE, all the bytes (characters) should be sent to SOLO one after another with nothing in between, so in the examples below please ignore the SPACE in between each byte.

NOTE: The device address in all the packets below is considered as “0”, since this is the default device address. If you change the device address you must also change the device address value in these packets as well.

Changing the Direction of Rotation

Change the direction of rotation CCW
FF FF 00 0C 00 00 00 01 00 FE

Change the direction of rotation CW
FF FF 00 0C 00 00 00 00 00 FE

Stop the Motor [Emergency]

Emergency stopping the Motor, After sending this packet the power recycle is required
FF FF 00 08 00 00 00 00 00 FE

Set the Motor Number of Poles

Note: in SOLO you set the Number of Poles of the motor, and this is a parameter useful for 3 phase Motors and their accurate speed calculation. Notice that this is different with the number of pole-pairs and the relation is as below:

Motor Number of Poles = Number of Pole-pairs * 2

Set the Number of Poles at 8:
FF FF 00 0F 00 00 00 08 00 FE

To check the written value:

Read the number of Poles:
FF FF 00 8F 00 00 00 00 00 FE

Enable/Disable Monitoring Mode

By enabling the Monitor mode you will receive continuously the sampled values for:

1. VA: 3phase Motors phase A voltage (BLDC, PMSM, ACIM)
2. VB: 3phase Motors phase B voltage (BLDC, PMSM, ACIM)
3. IA: 3phase Motors phase A Current (BLDC, PMSM, ACIM)
4. IB: 3phase Motors phase B Current (BLDC, PMSM, ACIM)
5. VBUS : The power supply voltage ( BUS / Battery voltage )
6. IM: The DC motor Current
7. VM: The DC motor Voltage
8. Iq: The quadrature Current in 3 phase motors ( current acting in torque generation)
9. Id: The direct Current in 3 phase motors
10. Speed: The speed measured or estimated by SOLO both in Sensorless and in Sensor-based methods

These values are sampled all at the same time, and the Monitoring will continue until you disable it. This is a very interesting feature for those of applications in which keeping track of all the vital parameters is vital.

Start Monitoring:
FF FF 00 19 00 00 00 01 00 FE

If you want to stop the monitoring, use:
FF FF 00 19 00 00 00 00 00 FE

SET the PWM Frequency

On SOLO you can have any switching frequency from 8kHz to 80kHz at the output depending on your need and the inductance of your motor, in general the Motors with low inductance need higher switching frequencies to be able to keep their current stabilized and controlled by SOLO.

NOTE: By default there are two types of PWM frequencies available on SOLO before you overwrite them, 20kHz and 80kHz ( look at the piano switch settings), but if you overwrite the PWM frequency by using the following method, , it will make it the same for all the motor types as long as you haven’t done the “Reset factory”, so after doing the reset factory, you’ll go back to the initial setting with two different switching frequencies.

Set switching frequency on 30Khz
FF FF 00 09 00 00 00 1E 00 FE

To check the written value and read the switching frequency
FF FF 00 8B 00 00 00 00 00 FE

Reset the Device to Factory Mode

This is a packet to reset the device into factory default mode; after this action, all the parameters saved in the memory will be reset into their default values. After this action, a power recycle is recommended.

FF FF 00 14 00 00 00 01 00 FE

Change or Set/Reset the Device address

The default device address on each SOLO upon delivery is 0, but you can change this value to anything in between 0 to 254 or [0xFE]. For example in below you can see an example of how to change the device address from 0 to 1, and then for reading it, as you see inside the packet to read the device address after setting it, instead of zero, we put 1, because now our device address is set at 1 .

Set Device Address to 1
FF FF 00 01 00 00 00 01 00 FE

Read Device Address
FF FF 01 81 00 00 00 00 00 FE

By putting “0xFF” inside the device address using the command code “0x12” you can reset any device address back to ZERO whenever you want

Reset the Device Address to ZERO
FF FF FF 12 00 00 00 00 00 FE

To check the correct reset, read the Device Address
FF FF 00 81 00 00 00 00 00 FE

Digital sensorless Torque Control of a BLDC motor

Before sending the following commands you must do the following steps at least once:
1. Turn ON SOLO
2. Put SOLO in closed-loop by pushing Pian switch number 5 Down
3. Make sure the motor Identification is done.

As long as the piano switch number 5 is DOWN, you can send the following commands in order to control the torque of your brushless Motor. Also after power recycling you don’t need to repeat this part again, just keep the Piano switch Number 5 Down as long as your motor and the system is the same.

1. Set the Motor Type (Normal Brushless, type 1)
FF FF 00 15 00 00 00 01 00 FE

2. Set control Mode on Torque
FF FF 00 16 00 00 00 01 00 FE

3. Go to digital Mode
FF FF 00 02 00 00 00 01 00 FE

4. Set the Torque ref at 1.8A [Sfxt(32-17)]
FF FF 00 04 00 03 99 99 00 FE

All commands together:
FF FF 00 15 00 00 00 01 00 FE
FF FF 00 16 00 00 00 01 00 FE
FF FF 00 04 00 03 99 99 00 FE
FF FF 00 02 00 00 00 01 00 FE

Note : the steps 1 to 3 are needed to be done only once since you don’t want to change them, so for varying the torque you can keep sending different values only by using the step number 4 from now on. Remember, after power recycling, you need to send all the first 3 commands to set back the parameters which are Volatile and will be forgotten after power recycling or reset.

Digital sensorless Speed Control of a Brushless motor

Before sending the following commands you must do the following steps at least once:
1. Turn ON SOLO
2. Put SOLO in closed-loop by pushing Pian switch number 5 Down
3. Make sure the motor Identification is done.

As long as the piano switch number 5 is DOWN, you can send the following commands in order to control the speed of your brushless Motor. Also after power recycling you don’t need to repeat this part again, just keep the Piano switch Number 5 Down as long as your motor and the system is the same.

First Time settings:

1. Set Motor Type (Normal Brushless)
FF FF 00 15 00 00 00 01 00 FE

2. Set control Mode on SPEED
FF FF 00 16 00 00 00 00 00 FE

3. set the speed Kp gain on 0.003 [Sfxt(32-17)]
FF FF 00 0A 00 00 01 89 00 FE

4. Set the speed ki gain on 0.001 [Sfxt(32-17)]
FF FF 00 0B 00 00 00 83 00 FE

5. Set the Motor No of Poles at 8 (Uint32)
FF FF 00 0F 00 00 00 08 00 FE

6. Set the Speed Control Mode on Sensor-less
FF FF 00 13 00 00 00 00 00 FE

7. Set the speed ref at 1000 rpm (Uint32)
FF FF 00 05 00 00 03 E8 00 FE

8. Go to digital Mode
FF FF 00 02 00 00 00 01 00 FE

For the First time settings, All the above commands together:
FF FF 00 15 00 00 00 01 00 FE
FF FF 00 16 00 00 00 00 00 FE
FF FF 00 0A 00 00 01 89 00 FE
FF FF 00 0B 00 00 00 83 00 FE
FF FF 00 0F 00 00 00 08 00 FE
FF FF 00 13 00 00 00 00 00 FE
FF FF 00 05 00 00 03 E8 00 FE
FF FF 00 02 00 00 00 01 00 FE

After the first time setting is done, now even after power-recycling you can only send those parameters which are volatile and didn’t change, like Ki, Kp, Motor poles, etc as below:

Second Time settings after power recycle and having the same system:
FF FF 00 15 00 00 00 01 00 FE
FF FF 00 13 00 00 00 00 00 FE
FF FF 00 05 00 00 03 E8 00 FE
FF FF 00 02 00 00 00 01 00 FE

Now by using step number 7 only, you can keep changing the speed of your motor to any arbitrary value.

Digital sensor-based Speed Control of a Brushless motor using Encoders

Before sending the following commands you must do the following steps at least once:
1. Turn ON SOLO
2. Put SOLO in closed-loop by pushing Pian switch number 5 Down
3. Make sure the motor Identification is done.

As long as the piano switch number 5 is DOWN, you can send the following commands in order to control the speed of your brushless Motor. Also after power recycling you don’t need to repeat this part again, just keep the Piano switch Number 5 Down as long as your motor and the system is the same.

First Time settings:
1- Set Motor Type (Normal Brushless, Type 1)
FF FF 00 15 00 00 00 01 00 FE

2- Set control Mode on SPEED
FF FF 00 16 00 00 00 00 00 FE

3- set the speed Kp gain on 0.001 [Sfxt(32-17)]
FF FF 00 0A 00 00 00 83 00 FE

4- Set the speed ki gain on 0.0008 [Sfxt(32-17)]
FF FF 00 0B 00 00 00 68 00 FE

5- Set the Motor No of Poles at 8 (Uint32)
FF FF 00 0F 00 00 00 08 00 FE

6- Set the Speed Control Mode on Encoder
FF FF 00 13 00 00 00 01 00 FE

7- Set the Number of Encoder Lines on 1000 lines (Uint32)
FF FF 00 10 00 00 03 E8 00 FE

8- Set the speed ref at 1000 rpm (Uint32)
FF FF 00 05 00 00 03 E8 00 FE

9- Go to digital Mode
FF FF 00 02 00 00 00 01 00 FE

Notes:
– Better to put the “Go to Digital Mode” as the last command, when all the settings are done before, so the motor doesn’t get unstable during the settings.
– The Encoder lines are just the physical number of slots of your quadrature encoder for each line.

For the First time setting All the commands together:
FF FF 00 15 00 00 00 01 00 FE
FF FF 00 16 00 00 00 00 00 FE
FF FF 00 0A 00 00 00 83 00 FE
FF FF 00 0B 00 00 00 68 00 FE
FF FF 00 0F 00 00 00 08 00 FE
FF FF 00 13 00 00 00 01 00 FE
FF FF 00 10 00 00 03 E8 00 FE
FF FF 00 05 00 00 03 E8 00 FE
FF FF 00 02 00 00 00 01 00 FE

For The next runs after power recycling, as long as the values of kp, ki, poles, encoder lines and control type have not been changed you can only send the following commands for the same example.
FF FF 00 15 00 00 00 01 00 FE
FF FF 00 16 00 00 00 00 00 FE
FF FF 00 13 00 00 00 01 00 FE
FF FF 00 05 00 00 03 E8 00 FE
FF FF 00 02 00 00 00 01 00 FE

– In any of the conditions above, after sending once the setting commands, by only sending the speed command ( step number 8) you can alter the value of the speed in real-time

Digital sensorless Speed Control of a DC Brushed motor

Before sending the following commands you must do the following steps at least once:
1. Turn ON SOLO
2. Put SOLO in closed-loop by pushing Pian switch number 5 Down
3. Make sure the motor Identification is done.

As long as the piano switch number 5 is DOWN, you can send the following commands in order to control the speed of your DC brushed Motor. Also after power recycling you don’t need to repeat this part again, just keep the Piano switch Number 5 Down as long as your motor and the system is the same.

First Time settings:

1. Set Motor Type (Brushed DC)
FF FF 00 15 00 00 00 00 00 FE

2. Set control Mode on SPEED
FF FF 00 16 00 00 00 00 00 FE

3. set the speed Kp gain on 0.003 [Sfxt(32-17)]
FF FF 00 0A 00 00 05 1E 00 FE

4. Set the speed ki gain on 0.04 [Sfxt(32-17)]
FF FF 00 0B 00 00 14 7A 00 FE

5. Set the Speed Control Mode on sensor-less
FF FF 00 13 00 00 00 00 00 FE

6. Set the speed ref at 200 * (read below)
FF FF 00 05 00 00 00 C8 00 FE

7. Go to digital Mode
FF FF 00 02 00 00 00 01 00 FE

Notes:
– Better to put the “Go to Digital Mode” as the last command, when all the settings are done before, so the motor doesn’t get unstable during the settings.
– * The speed reference in Sensorless DC control here is not in RPM, but it’s a quantitative value depending on the BEMF constant of your DC motor, you need to send different values and find out the best numbers for you specific motor, in future we will publish more information on how to exactly calculate the speed of your brushed DC motor using this method. In General values from 0 to 500 for most of the motors are the range from 0 speed to max speed.

For the First time setting All the above commands together:
FF FF 00 15 00 00 00 00 00 FE
FF FF 00 16 00 00 00 00 00 FE
FF FF 00 0A 00 00 05 1E 00 FE
FF FF 00 0B 00 00 14 7A 00 FE
FF FF 00 13 00 00 00 01 00 FE
FF FF 00 05 00 00 00 C8 00 FE
FF FF 00 02 00 00 00 01 00 FE

For The next runs, as long as the values of kp, ki and control type have not been changed you can only send the following commands after power recycle.
FF FF 00 0C 00 00 00 00 00 FE
FF FF 00 13 00 00 00 01 00 FE
FF FF 00 05 00 00 00 C8 00 FE
FF FF 00 02 00 00 00 01 00 FE

Digital sensored Speed Control of a DC Brushed motor using Encoder

Before sending the following commands you must do the following steps at least once:
1. Turn ON SOLO
2. Put SOLO in closed-loop by pushing Pian switch number 5 Down
3. Make sure the motor Identification is done.

As long as the piano switch number 5 is DOWN, you can send the following commands in order to control the speed of your DC brushed Motor. Also after power recycling you don’t need to repeat this part again, just keep the Piano switch Number 5 Down as long as your motor and the system is the same.

1- Set Motor Type (Brushed DC)
FF FF 00 15 00 00 00 00 00 FE

2- Set control Mode on SPEED
FF FF 00 16 00 00 00 00 00 FE

3- set the speed Kp gain on 0.003 [Sfxt(32-17)]
FF FF 00 0A 00 00 01 89 00 FE

4- Set the speed ki gain on 0.001 [Sfxt(32-17)]
FF FF 00 0B 00 00 00 83 00 FE

5- Set the Number of Encoder Lines on 500 lines(Uint32)
FF FF 00 10 00 00 01 F4 00 FE

6- Set the Speed Control Mode on Sensored using Encoder
FF FF 00 13 00 00 00 01 00 FE

7- Set the speed ref at 1000 rpm (Uint32)
FF FF 00 05 00 00 03 E8 00 FE

8- Go to digital Mode
FF FF 00 02 00 00 00 01 00 FE

Notes:
Better to put the “Go to Digital Mode” as the last command, when all the settings are done before, so the motor doesn’t get unstable during the settings.

For the First time setting All together:
FF FF 00 15 00 00 00 00 00 FE
FF FF 00 16 00 00 00 00 00 FE
FF FF 00 0A 00 00 01 89 00 FE
FF FF 00 0B 00 00 00 83 00 FE
FF FF 00 10 00 00 01 F4 00 FE
FF FF 00 13 00 00 00 01 00 FE
FF FF 00 05 00 00 03 E8 00 FE
FF FF 00 02 00 00 00 01 00 FE

For The next runs, as long as the values of kp, ki, poles, encoder lines and control type have not been changed you can only send the following commands after power recycle.
FF FF 00 15 00 00 00 00 00 FE
FF FF 00 13 00 00 00 01 00 FE
FF FF 00 05 00 00 03 E8 00 FE
FF FF 00 02 00 00 00 01 00 FE

Digital Open-loop Control of a Brushless motor

Before sending the following commands you must do the following steps at least once:
1. Turn ON SOLO
2. Put SOLO in open-loop by pushing Piano switch number 5 in UP position

As long as the piano switch number 5 is UP, you can send the following commands in order to control the speed of your brushless motor in open-loop mode.

1. Set Motor Type (Normal Brushless)
FF FF 00 15 00 00 00 01 00 FE

2. Set the Motor No of Poles at 8 (Uint32)
FF FF 00 0F 00 00 00 08 00 FE

3. Set the speed ref at 1000 rpm (Uint32)
FF FF 00 05 00 00 03 E8 00 FE

4. Set the power ref at 30.5 (similar to analog PWM duty cycle percentage) [Sfxt(32-17)]
FF FF 00 06 00 3D 00 00 00 FE

5. Set the Speed Control Mode on sensor-less
FF FF 00 13 00 00 00 00 00 FE

6. Go to digital Mode
FF FF 00 02 00 00 00 01 00 FE

Notes:
-Better to put the “Go to Digital Mode” as the last command, when all the settings are done before, so the motor doesn’t get unstable during the settings.

For the First time setting All the above commands together:
FF FF 00 15 00 00 00 01 00 FE
FF FF 00 0F 00 00 00 08 00 FE
FF FF 00 05 00 00 03 E8 00 FE
FF FF 00 06 00 3D 00 00 00 FE
FF FF 00 13 00 00 00 00 00 FE
FF FF 00 02 00 00 00 01 00 FE

For The next runs, as long as the number of Poles has not been changed you can only send the following commands after power recycle.
FF FF 00 15 00 00 00 01 00 FE
FF FF 00 05 00 00 03 E8 00 FE
FF FF 00 06 00 3D 00 00 00 FE
FF FF 00 13 00 00 00 00 00 FE
FF FF 00 02 00 00 00 01 00 FE