Magnet coverage and hall sensors

Mihai_F

100 W
Joined
Oct 11, 2021
Messages
125
Hy there, as you might know my 20kw motor (see photos here https://endless-sphere.com/forums/viewtopic.php?f=30&t=113852), it has 40 magnets 10x5x40mm N45 and the space between them is about 5.25mm, and that gives a magnetic coverage of about 65% (a bit to low for my opinion).
Now at low load under 2kw-ish (at any RPM be it at 300 or at 2500) the hall sensor read the correct sequence, every thing works nice, halls U, V, W, they go 001 101 100 and so on. Once the load gets over a certain point (2kw-ish) there is a wired behavior, as follows: halls U, V, W, they go, one period (500us) stays 001 then next period goes 101 a few tens of microseconds earlier that it should, then goes back to 001 for a few tens of microseconds then back to 101 for the rest of the period, and so on on every fourth hall change sequence, why every fourth? i sure don't know... .
I scoped halls and it showed this behavior. I made my SW to ignore hall changes, if the change lasts less than half of an average commutation time (period), and it kinda works but it sometime messes my timing by a few degrees and motor does not run smooth, this glitches from time to time create vibration.
I believe that this behavior is due to having to big of a gap between magnets, and once load increases the magnetic field of the coils interfere with halls reading the correct sequence, and this is because the slope of the changing magnetic field between magnets is to shallow and any extra magnetic field when is around the switching treshold can make it trigger early or later than it should.

The halls are mounted on CNC cut slots in the midle of the top of the stator teeth, so they're position is very precise +/-0.005mm tolerance.
Stator laminations ware laser cut.

The magnets have all 5.25mm +/- 0.02mm between them (measured), they ware installed with a CNC cut slotted jig.

What do you think about this low 65% magnetic coverage? and this interference with the halls?

I plan to put two 5x5x20mm magnets end to end in those 5.25mm gaps between magnets, and that will give 98% magnetic coverage.

What do you think about magnetic coverage such close to 100%?
 
With other motors that have had hall signal problems, a cause (in the cases where that has been determined) is placement of the sensors vs the stator tooth field vs the rotor fields. Other causes like those of Revolt motors where they don't consistently place sensors likely don't apply to yours.

If the sensors are placed in the tooth somewhere that the tooth field can be detected by the hall either instead of the rotor field, or during interaction with the rotor field, you could get incorrect signalling under high enough currents--low enough and the interaction wouldn't happen, and the rotor field would be strong enough to not allow it, vs the stator field. High enough, and the stator field is strong enough to overcome or interact thru the sensor overriding the rotor field during the moments when incorrect signalling is detected. Additionally, the higher the current the longer the field is on, so the timing of transitions is different than when current is lower and the field is on for less time.

I suspect that the "every fourth" interaction timing is from the field switching in the phases vs the timing of the rotor magnet passes.

Ensuring the hall sensors are as close to the rotor magnets as possible should ensure the strongest possible rotor field interaction (Neo magnets' fields fall off quickly, much closer than ceramics, for instance, with distance from the magnet). Making sure the sensors all have their beveled face toward the rotor is also helpful, as that is the sensor side for all the ones I've worked with. I looked thru your linked thread but don't see any pics that show the halls installed or how they are mounted, so I don't know if you are already doing these things. :)

I can imagine (but don't know) that the large gap between magnets may also affect this, allowing the stator field a longer time between rotor field passes to interact with the sensors, but if that was happening, it probably would be worse at lower RPMs than higher ones (this might not be the case, but it "feels" right).

I don't know what effect the smaller magnet size vs rotor surface area has, or if the proposed fix will do what you want (no experience in that area).

Mihai_F said:
Hy there, as you might know my 20kw motor (see photos here https://endless-sphere.com/forums/viewtopic.php?f=30&t=113852), it has 40 magnets 10x5x40mm N45 and the space between them is about 5.25mm, and that gives a magnetic coverage of about 65% (a bit to low for my opinion).
Now at low load under 2kw-ish (at any RPM be it at 300 or at 2500) the hall sensor read the correct sequence, every thing works nice, halls U, V, W, they go 001 101 100 and so on. Once the load gets over a certain point (2kw-ish) there is a wired behavior, as follows: halls U, V, W, they go, one period (500us) stays 001 then next period goes 101 a few tens of microseconds earlier that it should, then goes back to 001 for a few tens of microseconds then back to 101 for the rest of the period, and so on on every fourth hall change sequence, why every fourth? i sure don't know... .
I scoped halls and it showed this behavior. I made my SW to ignore hall changes, if the change lasts less than half of an average commutation time (period), and it kinda works but it sometime messes my timing by a few degrees and motor does not run smooth, this glitches from time to time create vibration.
I believe that this behavior is due to having to big of a gap between magnets, and once load increases the magnetic field of the coils interfere with halls reading the correct sequence, and this is because the slope of the changing magnetic field between magnets is to shallow and any extra magnetic field when is around the switching treshold can make it trigger early or later than it should.

The halls are mounted on CNC cut slots in the midle of the top of the stator teeth, so they're position is very precise +/-0.005mm tolerance.
Stator laminations ware laser cut.

The magnets have all 5.25mm +/- 0.02mm between them (measured), they ware installed with a CNC cut slotted jig.

What do you think about this low 65% magnetic coverage? and this interference with the halls?

I plan to put two 5x5x20mm magnets end to end in those 5.25mm gaps between magnets, and that will give 98% magnetic coverage.

What do you think about magnetic coverage such close to 100%?
 
amberwolf said:
Ensuring the hall sensors are as close to the rotor magnets as possible should ensure the strongest possible rotor field interaction (Neo magnets' fields fall off quickly, much closer than ceramics, for instance, with distance from the magnet). Making sure the sensors all have their beveled face toward the rotor is also helpful, as that is the sensor side for all the ones I've worked with. I looked thru your linked thread but don't see any pics that show the halls installed or how they are mounted, so I don't know if you are already doing these things. :)

I can imagine (but don't know) that the large gap between magnets may also affect this, allowing the stator field a longer time between rotor field passes to interact with the sensors, but if that was happening, it probably would be worse at lower RPMs than higher ones (this might not be the case, but it "feels" right).

Hy, the halls are SS411A and mounted with the beveled side up (toward magnets).
As you said, it is worse at lower rpm, when motor is loaded with the prop, the simptome starts every now and then at about 500RPM at about 700RPM it is present continously every fourth commutation (worst vibrations), and the time of early triggering gets shorter as RPM goes up, and by the time it gets to 1500RPM the vibrations are lesser, at 2000RPM are even lesser.
At 1000RPM the commutation time is 500us and halls trigger early by 20us every fourth commutation, that is an 2.5deg of advance, at 2000RPM the commutation time is 250us and halls trigger early by 10us every fourth commutation, the same 2.5deg of advance, and i think that at high RPM motor likes 2.5deg of advance, but at low RPM that same timing makes it a bit jerky.
This motor with no load and 2,5deg of advance in software (SW timing advance, use hall signal to get the commutation timing, then turn on outputs at a certain time earlier to get the advance timing), it makes 3300RPM at 92v, and with 5 deg of advance it makes 4100RPM at 92V, so with no load is quite sensitive to timing changes. When loaded there is no difference in max RPM between 2.5 and 5 deg advance (a bit baffeling why so...).
And i even got completely wrong hall output like 111 and 000 for a few microseconds (controller logs false hall input), and those combinations are not valid for 120deg hall spacing (all degrees here are electrical degrees).
All this misinformation from halls i managed to filter it out to some degree in SW, but still get the vibrations, because the filtering is not 100% acurate all the time.
So i need to fix the root cause of this problem, the one that causes these halls to get wrong triggering...
The more i look at it, it makes me believe that those gaps between the magnets are way to big.
Here is a picture of the installed halls.
IMG_20220810_090826.jpg
 
Hey Mihai, nice job on making this motor from scratch. :thumb: Amberwolf is right and I’ve had this issue before with similar motors, it's the tooth flux going through the halls at higher phase currents triggering errors and is nearly guaranteed when heading towards saturation. Your magnet gaps may be playing a small part but I doubt are the true cause.
It happened with a Joby motor right after cooking the magnets a little -ie the magnetic signal weakened (kv rose nearly 10%) and the noise was then enough for the exact same issue you speak of, I had to make another magnet ring and halls elsewhere. That change solved the issue and would be documented here 5ish years back with pics.
Another fix that I've used is extending the magnet length by 5 to 10mm and placing halls under there, away from the main flux path.
 
I believe you're just doing 6 step commutation with your custom controller right? If you have/add some phase voltage sensors, you could go sensorless and just wait for the zero crossing of the bemf on the undriven phase like cheap RC controllers do. You could keep the hall sensors at low rpms or just implement some sort of sensorless starting algorithm since you just have a propeller load.

Otherwise you'll probably need to make some timing device with optical sensors or a separate magnet ring so that you can get the sensors away from the stator flux.
 
+1 for sensorless. I experienced the same thing with a smaller motor, and actually found the distortion of the magnetic flux caused hall sensor phase shift. Since I programmed sensorless I've never wanted to go back.

Another option is an encoder, which is a bit more off the shelf and makes accurate phase advance etc very easy.

Another easy option is to put the hall sensors outside the bell if you have flux leakage. I think the flux leaking outside the bell doesn't change too much (at least in the motors I've played with).
 
Thank you guys for your thoughts, i've been thinking to for a while about sensorless, and use halls only at startup up to 100RPM, as some of you mentioned, but my main concern is that my motor has delta terminated winding, and i read that (and experimented a bit) sensorless controller does not play well with delta terminated motors. Rewinding the motor in wye termination for same Kv is not pratical, 2.63turns with 114 strands of 0,5mm.
Sensors on the out side of the bell, might not work at all, i have closed field, nothing ferrous sticks to the bell, not even a 0.5mm nedle.
In the past (2 or 3 years ago) i talked with some guys (a company) that make big motors like mine, with similar configuration and size, and the interesting thing is that they run these motors with sensors and did not have problems, or at least they said that. And at some point in discution they expressed they'r concern about the to big gaps between magnets, but at that point i was focused on the controller and did not investigate any further.

toolman2 said the same simptome apeared on his joby motor after losing some of the magnetic strength, so my thought now is, will the reverse of that, ie increase the strenght of magnets (bigger magnets) eliminate the simptome? I mean i have 65% magnet coverage, if i add more magnets in the gaps and go to 98% coverage, there will be an big increase in magnetic field. And that makes me think is that why some bike hub sensored motors have magnets with no gaps in between (one of the reasons)?

While i made my throttle lever that is linear hall based, basically 2 magnets and a linear hall in between, i found out that the distance between magnets affects a lot the slope of field and the the slope of the output of the linear hall, ie with magnets 20mm apart i had to move the sensor 15mm end to end to get output to swing rail to rail, but with magnets 10mm apart, only a few milimeters i could move the sensor and get rail to rail output, at 5mm apart i could move the sensor just half a milimeter and would swing from one rail to the other.
So this is why i'm that much concerned about magnet gaps, and i totally agree with you that stator flux is messing with my halls triggering false.

I'l give it a try with more magnets and see what happens, if not, i'l go sensorless but i'm a bit reluctant to go in that way, even though i do know the beefits of sensorless, i have an RC sensorles ESC(3S 30A, Atmega8 uC) made by GWS (cheap china) that has 18 years of flawless service, and i abused the hack out of it over the time.
 
Fair enough, the magnet gaps you have are larger than usual but 100% (or near) is not ideal either.
Any big increase in magnetic strength will also give that amount lower kv and will likely change the shape of your Bemf and change the motors behaviour/efficiency but unknown if that's for better or worse.
One other thing is that in my experience with a well developed/preped bike, is that hall sensors are for some reason THE most failure prone single item I've come across. So it could come in handy to have the option to switch to sensorless above x rpm.
 
Hy, i made an update and i posted it in my 20Kw motor topic for continuity. https://endless-sphere.com/forums/viewtopic.php?f=30&t=113852&p=1730688#p1730688
 
Back
Top