cancel
Showing results for 
Search instead for 
Did you mean: 

Hall Speed feedback fault management

MFran.3
Associate II

Hello!

I am using a 2 pole 3 hall sensor BLDC motor. I am able to get it to spin at desired RPM using hall fbk as primary sensor. Unfortunately, sometimes the motor won't start: with STMStudio i discovered that if HALL 1 (one of the three hall sensor) is 1, I get instant Speed Feedback on the GUI and the motor won't even try to spin. Sometimes it does the same with HALL 2 and 3 but rarely. If at least two Hall Sensors are "1", the motor starts without problem.

The thing is that it should be 100% sure that the motor starts. What can I do?

I thought maybe there was a possibility to do a Sensorless(Obs+PLL) start (so in theory I can't have a Speed Feedback error) and then switch mid-run to Hall Sensor. Is it possible without modifying the MC framework?

Any other idea?

Thanks!

P.S.: not the main problem but, for get the motor working I had to switch U and W phases, otherwise it won't start, just shake and absorb an indecent amount of current.

9 REPLIES 9
Dario CUCCHI
ST Employee

Hello @Community member​  and welcome to the ST community !

First of all the best way to be confident that a motor starts is to use the Hall Sensors as you did.

In fact, the FOC Sensorless estimates the B-emf of the motor and along with that the position of the rotor (the electrical angle actually).

So, The algorithm needs a start-up where the motor runs in open-loop, gets some speed and estimate the position.

At this point the loop is closed and the FOC is implemented.

If this procedure goes wrong for some reason, you get a speed feedback error as well.

On the other side, the Hall Sensors measure the rotor position so actually is more precise and I suggest to use that, also to have a faster start-up.

Now, let’s investigate why your motor it is not running properly.

About the speed feedback error using hall sensors, it occurs when the signals on the Hall sensors are in an unexpected configuration.

This means for example, using the Hall Sensors with 120° displacement,  you can never have the digital signals  H1, H2, H3 high or low at the same time .

If this configuration occurs for some reason (e.g. hall sensors disconnected), you ahve a speed feedback error.

The second parameter is the Placement electrical angle, which indicates the phase angle between the Hall Sensors and the BEMF

To be simple, it gives an information to the algorithm about the electrical position of the Hall sensor H1 inside the motor.

Setting the right value (it depends on the specific motor used), allows you to run the motor with U and W phases in the right position.

Be sure to configure these two parameters correctly.

Another thing you can check is about the hardware, if the supply of the Hall sensor is ok, if the digital signals are not too noisy.

Also the digital lines of the motor are connected correctly to the digital I/O you have specified in the MCSDK.

Do you have some oscilloscope screenshots about H1, H2 and H3 digital signals ?

It would be also helpful if you can share some more details (e.g schematic, supply voltage, Hall supply, motor information, and so on…) about the hardware you are using.

Let me know if there are some progress with these suggestions.

MFran.3
Associate II

Thank you, I'll give it a try today or on Monday!

Unfortunately I don't have the possibility to attach Oscilloscope screenshots, maybe I can use STM Studio to trace what the MCU reads.

The placement electrical angle is a parameter that my colleagues struggle to give me, how can I calculate it?

If it's useful. now, with the inverted phases, I wrote 60 degrees (works like a charm but I wrote it without basic understanding).

I'm using STEVAL-SPIN3201, the Hall sensor should be supplied with 6V but I'm using VDDusb. The signals are clean (I changed the filter capacitors to 10nF) and it has no problem reading practically at any speed.

For the correct connection between I/O so I guess I couldn't get wrong. Initially I connected the 3 phases in the supposed order (UVW-RST) but it struggled to move no matter what. Maybe I was also configuring wrong hall sensors. With the phases connected as WVU (TSR) it worked. I assumed (and I still assume) the silkscreen of the STEVAL-SPIN3201 is correct, so I don't know why. I'll check the MC WB project.

Thanks, I'll let you know!

Dario CUCCHI
ST Employee

The placement electrical angle depends on how the motor is made.

You cannot calculate it, but you can measure it (if not present on the motor's datasheet).

Check the post linked here below, maybe it can help you:

Is this a 120 or 60 deg displacement angle hall motor?

I have another question about your configuration: in the "sensors electrical angle" field, did you select 120° or 60° ?

MFran.3
Associate II

Hello!

Unfortunately I had other things that came in to do, but I'm back on the project. I chose 60, based what my colleagues said about how the motor was made.

I'll try to do the measures today, my only difficulty is that I don't have access to the rotor to spin it by hand or so. I'll ask.

MFran.3
Associate II

Is this somehow meaningful? Showing U and U hall sensor0693W000005BcmUQAS.jpg

MFran.3
Associate II

I also checked pins in MC workbench and it seems right!

One question: if we were to use 30° hall sensors, would MC Workbench support it somehow? I see the 60/120 options and don't have much hope, but, still asking. Thank you! I'll keep you posted.

MFran.3
Associate II

I could also confirm that the Hall sensor states change every 1/3 of the current hall period, then the physical displacement should be 60°!

Hi @Community member​ 

I’m not sure I got this last sentence: if there is a change each 1/3 of a period, then I expect a 120° displacement.

To make it more clear, I made a diagram about the digital Hall sensors:

0693W000005BsQ0QAK.pngAs you can see the sequence of the Hall sensors is always divided in “slices�? of 60° each.

But it is the phase between signal edges that makes the difference.

The combination the sensors’ digital levels is different each 60° in both cases.

It’s enough to measure two Hall sensors and see which is the displacement about your motor.

Then select the correct configuration in the workbench. Let me know the result !

As far as I know, a 30° displacement in the Hall sensor is not used because it cannot cover the entire range of the electrical angle.

For this reason the MCSDK supports 60° and 120° displacements only.

MFran.3
Associate II

Sorry I wasn't clear and thanks for your patience. The sensor are 60° and I couldn't explain it properly in english...

So, I selected 60° and put 60 in placement electrical angle. I double checked the motor wiring to be sure of RST (UVW) colours and still, if I put the wires in the correct order the motor shakes on itself, no matter what placement electrical angle I write. So, let's assumet the wiring is correct. I also tried to change placement electrical angle on runtime via STMStudio (HALL_M1->PhaseShift) and the only thing that changes is how bad it shakes.

I verified hall sensor order, they give me the correct sequence (000 100 110 111 011 001) and so on. Sometimes the motor still has problem starting. What else can I try to make this solution more reliable?

Now that I have an acceptable condition I'll go back to check PI values, in the meantime.

Thank you!