Add Hall Sensor to 2 pole slotless brushless motor

Hello,

I have used the circuit and software published here

to control a brushless sensored motor.

The sensored motor with the arduino software turn well :D.

At the max of pwm the current absorbed is about 5 A.

Then i tried to apply 3 hall sensor (SS411A) externally to another motor (2 pole slotless sensorless brushless) to make it sensored.

I used the formula of the phase shift 120° to postion the sensors.

The motor turn.

But from the half to the max of pwm the motor not change rpm.

It turn very slow 3000rpm (20% of overall rpm) and current absorbed is < 1A =(.

Any suggestion to resolve the problem?

Thank you very much :slight_smile:

Luca

Which motor? Which power supply? What speed PWM? Are you sure you have
the correct phase to hall-sensor mapping (there are 12 possibilities, only one works properly).

MarkT:
Which motor? Which power supply? What speed PWM? Are you sure you have
the correct phase to hall-sensor mapping (there are 12 possibilities, only one works properly).

12-40 Volt Inrunner 700kv 2 pole slotless

Power supply 1°st test 12 Volt 2°nd test 24 Volt.

Pwm 255 Frequency 32khz

Hall sensor placed to 120° externally to motor.
Trying to turn the outer ring to the motor where the hall sensor are attached, there are the following states:

1_ The motor turn slow
2_ The motor stop
3_ The motor invert direction

Connecting the motor to a traditional sensorless controller the motor turn high.

What motor as in "where is the datasheet for the motor" if at all possible.

Power supply - current?

There are 6 commutation states, you need to get the phasing right (6 possibilities) and the
rotation sense right (2 possibilities).

The hall states are different if the sensors are 120 degrees apart electrically than if they are
60 degrees apart electrically, so thats another 2 possibilities (sounds like you have 120 degrees).

If you can rotate the hall sensor enough then the six states are covered but not the direction - this
can be changed by swapping two of the windings of course.

The precise position for the hall's depends on whether a delta or star connection for the windings is
used.

When set correctly the motor should drive equally well in both directions.

For full performance at speed you can advance the timing in software to compensate for the
time for current to change (limited by winding inductance). This will matter more for a higher
resistance winding run at lower voltage, but shouldn't matter too much.

MarkT:
What motor as in "where is the datasheet for the motor" if at all possible.

Power supply - current?

There are 6 commutation states, you need to get the phasing right (6 possibilities) and the
rotation sense right (2 possibilities).

The hall states are different if the sensors are 120 degrees apart electrically than if they are
60 degrees apart electrically, so thats another 2 possibilities (sounds like you have 120 degrees).

If you can rotate the hall sensor enough then the six states are covered but not the direction - this
can be changed by swapping two of the windings of course.

The precise position for the hall's depends on whether a delta or star connection for the windings is
used.

When set correctly the motor should drive equally well in both directions.

For full performance at speed you can advance the timing in software to compensate for the
time for current to change (limited by winding inductance). This will matter more for a higher
resistance winding run at lower voltage, but shouldn't matter too much.

Hi Mark :slight_smile:

i don't have the datasheet of this motor.

Some information are available here:

the model of motor is: B45-77-17XL.

I followed this six state table of commutation:

and my hall sensors follow that table.

This is the log generated by the arduino software (serial port) where A is Hall1, B is Hall2, C is Hall3 and State is the binary state:

A B C State
0 1 1 6
A B C State
0 1 0 2
A B C State
1 1 0 3
A B C State
1 0 0 1
A B C State
1 0 1 5
A B C State
0 0 1 4
....
When motor turn this state are repeated in sequence.

I noticed increasing the pwm throttle to the half of pwm, the motor turn than shake and finally stop.

Perhaps the external hall sensor at high rpm don't work?? Frequency noise ??

One thing you can do is write a sketch to activate each of the 6 phases in turn for a few seconds whilst
reading and printing the hall-effect sensors. While this happens you can apply a little twists to the shaft
to see if the motor is on the boundary between two hall states (it should be roughly). That should
enable you to see the sense of rotation against the hall sensors. Now you add or substract 90 electrical degrees to
determine the correct phase for each hall-state (forwards or backwards).

If your hall sequence was 1 3 2 6 4 5 ... and you found your first winding phase moved the motor to a
point roughly on the boundary of 3 and 2, the second phase to the boundary 2 and 6, then you'd set the
mapping:

phase forwards backwards
first 6 1
second 4 3
etc

You'll find if the hall sensors are not accurately laid out, or too far from the magnets you'll get erratic
results at low speeds - high speed operation ought to average most of this out and give reasonable
response.

MarkT:
One thing you can do is write a sketch to activate each of the 6 phases in turn for a few seconds whilst
reading and printing the hall-effect sensors. While this happens you can apply a little twists to the shaft
to see if the motor is on the boundary between two hall states (it should be roughly). That should
enable you to see the sense of rotation against the hall sensors. Now you add or substract 90 electrical degrees to
determine the correct phase for each hall-state (forwards or backwards).

If your hall sequence was 1 3 2 6 4 5 ... and you found your first winding phase moved the motor to a
point roughly on the boundary of 3 and 2, the second phase to the boundary 2 and 6, then you'd set the
mapping:

phase forwards backwards
first 6 1
second 4 3
etc

You'll find if the hall sensors are not accurately laid out, or too far from the magnets you'll get erratic
results at low speeds - high speed operation ought to average most of this out and give reasonable
response.

Hello Mark!

Before trying to check the hall sensors of sensorless motor i did a further test with a sensored motor Leopard (3s, 25A, 1800kv).

The motor by potentiometer connected to arduino start soft and go to high rpm.

If you brake the motor at low rpm the motor first stop than automatically start and go to right rpm value.

I noticed that a high rpm the green led of arduino (pin 13) first flash, than power off. :cold_sweat:

After the motor power off and if you can't manual rotate the shaft because is energized.

If you reset arduino by pressing the reset button the motor power on and turn right.

Is there a problem in the sketch? Is the frequency too high for arduino?

Thanks for reply Luca :slight_smile: