Searching \ for '[EE:] Brushless motor fun' in subject line. ()
Make payments with PayPal - it's fast, free and secure! Help us get a faster server
FAQ page: piclist.org/techref/io/motors.htm?key=motor
Search entire site for: 'Brushless motor fun'.

Exact match. Not showing close matches.
PICList Thread
'[EE:] Brushless motor fun'
2012\04\18@001842 by Denny Esterline

picon face
Ok, I've got dents in my wall and lumps on my forehead. It's time to tap
the collective wisdom of the list.

I'm building a system to control a sensored NEMA23 size brushless motor
based on a dsPIC33F128MC804.
I've got the motor spinning and I'm working out my control loops (speed and
position).
Earlier, when I was doing simple bench testing, the motor
was noticeably smoother in one direction
than the other. Now that I have the gearbox and a load connected to it,
it's _much_ worse.
Clockwise, it's smooth as silk and moves my load at about 1.5 Amps.
Counter-clockwise it's noticeably
noisier and draws upwards of 7 Amps. The load is very close to the same in
both directions.

I'm completely at a loss for why it would behave differently depending on
direction of rotation.

I'm using brand new, Electrocraft motors, (two different motors,
from different production batches have been tried with the same results)

The board is our design. I've run several tests on it and I'm confident
that the FET drivers and FETs are operating correctly.
I've got a small logic analyzer and I've looked at the halls (clean, well
sequenced, uniform widths - both directions) and the control lines to the
FET drivers (exactly the expected sequence).
I've scoped the gates of the FETs and I don't see anything odd.

The Hall sensors and commutation is managed with the CN interrupt.
Assembled into a three bit value and used as lookup in a sector table.
The sector value is then incremented or decremented (CW vs CCW) and used to
lookup the OVDCON value. This is all very much strait out of the appnotes.

I'm fresh out of ideas. Any good suggestions?

-Denny




Here's some snips of the relevant code sections:

//globals
char SectorTable[] = {0,6,2,1,4,5,3,0};
unsigned int StateLoTable[] = { 0x0000,  /* All off, guards from bad hall
data*/
                               0x0204,  /* PWM2L -> 1, PWM1H -> PWM */
                               0x0210,  /* PWM3L -> 1, PWM1H -> PWM */
                               0x0810,  /* PWM3L -> 1, PWM2H -> PWM */
                               0x0801,  /* PWM1L -> 1, PWM2H -> PWM */
                               0x2001,  /* PWM1L -> 1, PWM3H -> PWM */
                               0x2004,  /* PWM2L -> 1, PWM3H -> PWM */
                               0x0000}; /* All off, guards from bad hall
data*/





//and in the CN interrupt

tempC = PORTC;                                  //grab the pins as quick as
possible
tempB = PORTB;                                  //according to stopwatch,
assembly takes 15 cycles
HallValue = (0x0007 & (((tempC & 0x0040) >> 4) | ((tempB & 0x0200) >> 8) |
((tempB & 0x0100) >> 8)));

CurrentHallSector = SectorTable[HallValue];     //linearize hall reading to
sector number

if (MotorDirection == CW)                       //Calculate the next sector
based on current sector and direction
   {
   NextHallSector = CurrentHallSector + 1;
   if (NextHallSector == 7)                    //the numbers wrap around...
       NextHallSector = 1;
   }
else
   {
   NextHallSector = CurrentHallSector - 1;
   if (NextHallSector == 0)
       NextHallSector = 6;
   }

P1OVDCON = StateLoTable[NextHallSector];        //Load a value into OVDCOn
based on next positio

2012\04\18@011614 by Dave

picon face
Hang a current probe on the motor leads and the supply.  Something is not right.


Denny Esterline <spam_OUTdesterlineTakeThisOuTspamgmail.com> wrote:

{Quote hidden}

>

2012\04\18@014451 by Sean Breheny

face picon face
The behavior you describe may be possible if the commutation sequence
is wrong (e.g., if you have phases swapped on the motor). There are a
number of possible relationships between hall sensor outputs and
appropriate phase drive. Some combinations will not run at all. Some
will run with a different back-EMF constant. Some will run but only if
you give the motor a push to start and then they will have very little
torque. It may be that your commutation sequence is offset by 60
degrees in one direction so that, for one direction of motion you are
60 degrees off but for the other direction you are 120 degrees off.

Sean


On Wed, Apr 18, 2012 at 12:18 AM, Denny Esterline <.....desterlineKILLspamspam@spam@gmail.com> wrote:
{Quote hidden}

>

2012\04\18@032918 by Robert Rolf

picon face
On Tue, Apr 17, 2012 at 11:44 PM, Sean Breheny <shb7spamKILLspamcornell.edu> wrote:

> The behavior you describe may be possible if the commutation sequence
> is wrong (e.g., if you have phases swapped on the motor). There are a
> number of possible relationships between hall sensor outputs and
> appropriate phase drive. Some combinations will not run at all. Some
> will run with a different back-EMF constant. Some will run but only if
> you give the motor a push to start and then they will have very little
> torque. It may be that your commutation sequence is offset by 60
> degrees in one direction so that, for one direction of motion you are
> 60 degrees off but for the other direction you are 120 degrees off.
>
> Sean


I agree with Sean. Check that your sensor and phase drive is correct.
Trigger off each of your three sensors in turn, and with your scope in chop
mode,
fixed channel triggering, look at the drive signals. All three sets should
look identical.
If you have a mismatched phase, the 3 sets will look different.

2012\04\18@075622 by YES NOPE9

flavicon
face
If OP is still having problem, please supply schematic of FET drivers.
Have you physically moved the driver input signals to reverse the direction of motion ?
Does the motor then run smoothly in the reverse direction and poorly in the original direction ?
What other tests of the FET driver have you made ?
Gus

2012\04\18@090815 by Justin Richards

face picon face
i assume it is not a  NEMA23 stepper (just used as a size reference)
and if not is there a model number.

Is there an inbuilt gearbox or worm drive perhaps

2012\04\18@103505 by M.L.

flavicon
face
On Wed, Apr 18, 2012 at 12:18 AM, Denny Esterline <.....desterlineKILLspamspam.....gmail.com> wrote:
> Ok, I've got dents in my wall and lumps on my forehead. It's time to tap
> the collective wisdom of the list.
>
> I'm building a system to control a sensored NEMA23 size brushless motor
> based on a dsPIC33F128MC804.
> I've got the motor spinning and I'm working out my control loops (speed and
> position).
> Earlier, when I was doing simple bench testing, the motor
> was noticeably smoother in one direction
> than the other. Now that I have the gearbox and a load connected to it,
> it's _much_ worse.
> Clockwise, it's smooth as silk and moves my load at about 1.5 Amps.
> Counter-clockwise it's noticeably
> noisier and draws upwards of 7 Amps. The load is very close to the same in
> both directions.
>
> I'm completely at a loss for why it would behave differently depending on
> direction of rotation.


It sounds like your hall sensors are out of phase (rotated) with
respect to the magnetic fields. Another way of saying this is that
your hall sensors are lagging in one direction and leading in the
other.

The same symptoms occur if you try to run a brushed DC motor with
advanced timing, in the opposite direction.

-- Martin K

2012\04\18@111139 by Denny Esterline

picon face
part 1 1550 bytes content-type:text/plain; charset="iso-8859-1" (decoded quoted-printable)

Here's the schematic of the C channel FET Driver. If you can't read it, the
FET driver chip is a Fairchild FAN7382 (
http://www.fairchildsemi.com/pf/FA/FAN7382.html ) It's pretty standard
stuff.

Swapping the phasing and re-doing the sector table is an interesting
suggestion... Reverse the effective motor direction and see if the problem
reverses as well -  Should be able to isolate the issue between the motor
or the electronics/software.

As to other tests to the FETs & drivers. The one that convinced me they're
operating properly was to remove the motor, set up a large resistive load
(about 4 amps) bypass the MCPWM module and just toggle between high and low
on one phase (with some dead time, of course) Then scope the output. Got a
clean high-middle-low-middle step signal exactly as expected. I also slowed
this down (a lot) until I could see the high side rounding off (discharge
of bootstrap capacitors/highside FETs out of stauration) This happens
at around 60mS of on time for the high side.
I did this for each phase and had identical results.


On Wed, Apr 18, 2012 at 4:56 AM, YES NOPE9 <EraseMEyesspam_OUTspamTakeThisOuTnope9.com> wrote:

> If OP is still having problem, please supply schematic of FET drivers.
> Have you physically moved the driver input signals to reverse the
> direction of motion ?
> Does the motor then run smoothly in the reverse direction and poorly in
> the original direction ?
> What other tests of the FET driver have you made ?
> Gus
>
>
> -

2012\04\18@111958 by Denny Esterline

picon face
Uhmm.... yes, NEMA 23 is a standard industrial size designation and has
nothing to do with the type of motor. It specifies a mounting flange just
under 2.3 inches square. I've had brushed, brushless and stepper motors in
this size class. This one is definitely a brushless.

Specifically it's an Electrocraft RP23-73V24-100-X
At this point, I've tried two of these motors and they were purchased about
6 months apart, so they're from different manufacturing lots.

There is not an "inbuilt" gearbox. I am attaching it to a custom 48:1 three
stage planetary reduction gearbox, hence my comment of "Now that I have the
gearbox and a load connected to it" in the original post.

-Denny

On Wed, Apr 18, 2012 at 6:08 AM, Justin Richards
<justin.richardsspamspam_OUTgmail.com>wrote:

> i assume it is not a  NEMA23 stepper (just used as a size reference)
> and if not is there a model number.
>
> Is there an inbuilt gearbox or worm drive perhaps.
>

2012\04\18@112732 by Denny Esterline

picon face
>
>
>
> It sounds like your hall sensors are out of phase (rotated) with
> respect to the magnetic fields. Another way of saying this is that
> your hall sensors are lagging in one direction and leading in the
> other.
>
> The same symptoms occur if you try to run a brushed DC motor with
> advanced timing, in the opposite direction.
>
>
This is my leading theory at the moment. But, nothing from the manufacturer
suggests an intentional timing advancement and if it was a missasembled
motor, I wouldn't have expected it to affect two different motors from
different assembly lots.

Even so, I'm looking for a good way to confirm or deny this. My thought at
the moment is to mount a paper protractor to the motor and a pointer on the
shaft. Excite each winding and measure the resultant shaft positions. Then
monitor the halls and measure where each one changes state (probably both
directions to see if there's significant hysteresis) . I would expect the
hall transitions to be spaced halfway between the excited winding
locations. Yes?

-Denn

2012\04\18@120620 by Dwayne Reid

flavicon
face
At 09:27 AM 4/18/2012, Denny Esterline wrote:
> >
> > It sounds like your hall sensors are out of phase (rotated) with
> > respect to the magnetic fields. Another way of saying this is that
> > your hall sensors are lagging in one direction and leading in the
> > other.
> >
>This is my leading theory at the moment. But, nothing from the manufacturer
>suggests an intentional timing advancement and if it was a missasembled
>motor, I wouldn't have expected it to affect two different motors from
>different assembly lots.

I don't know anywhere near enough about BLDC (yet) but I do know that I run into documentation that talks about two different amounts of hall-effect phase shift - I *think* the numbers mentioned are 60 degrees and 120 degrees.  This comes up when looking at BLDC motor driver circuits (and chips).  My recollection is hazy - I was looking at this a couple of years ago.

I suspect that you are expecting one of these and the motor manufacturer is using the other.

dwayne


PS - if what you are working on can be shared, I'd love to hear about it.  I purchased a quantity of decently-sized BLDC servo motors several years ago and I very much want to do my own drivers for them.  My fall-back position will to simply purchase pre-programmed PIC chips from JRKERR (his PIC-SERVO series) - but I'd *really* like to get into the nuts and bolts of how its done myself.

dwayne

-- Dwayne Reid   <@spam@dwaynerKILLspamspamplanet.eon.net>
Trinity Electronics Systems Ltd    Edmonton, AB, CANADA
(780) 489-3199 voice          (780) 487-6397 fax
http://www.trinity-electronics.com
Custom Electronics Design and Manufacturing

2012\04\18@121555 by Denny Esterline
picon face
On Tue, Apr 17, 2012 at 10:44 PM, Sean Breheny <KILLspamshb7KILLspamspamcornell.edu> wrote:

> The behavior you describe may be possible if the commutation sequence
> is wrong (e.g., if you have phases swapped on the motor). There are a
> number of possible relationships between hall sensor outputs and
> appropriate phase drive. Some combinations will not run at all. Some
> will run with a different back-EMF constant. Some will run but only if
> you give the motor a push to start and then they will have very little
> torque. It may be that your commutation sequence is offset by 60
> degrees in one direction so that, for one direction of motion you are
> 60 degrees off but for the other direction you are 120 degrees off.
>
> Sean
>
>
Hmmmm... Possible I suppose. So I guess my next question is, How would one
go about creating the hall table?

My procedure was to excite a winding pair at lowish current (by loading one
of my commutation states into OVDCON and setting 10% DC), waiting for the
rotor to stabilize and reading out the current hall data.

So, P1OVDCON = StateLoTable[1]; and the hall sensors read 011. Thus the
third position in my sector table is set to one.
P1OVDCON = StateLoTable[2]; and the hall sensors read 010. Thus the second
position in my sector table is set to two.
and so on...


-Denn

2012\04\18@125107 by Sean Breheny

face picon face
Hi Denny,

The manufacturer should provide a commutation table - sadly, they
often do not provide them, but it is definitely worth asking for one.
If they don't know the commutation table, ask them for a particular
drive that is compatible with this motor and then look at the
datasheet for that drive.

You can determine the table by the method that you describe, but the
result is not as simple as "apply phase combination X, record Hall
output Y, and then whenever you see hall combination Y, apply X to the
phases". This is because the goal of commutation is to achieve the
minimum torque ripple and the maximum torque amplitude. If you lock
the rotor by applying DC to a phase pair (winding), you have
positioned the rotor at one of the zero torque positions for that
particular phase pair. The hall to phase voltage mapping has to
provide max torque, not zero torque, so for each given hall sensor
output, you need to drive the phases in the combination which causes
max torque for that rotor position, not zero torque.

For most BLDC motors, the hall signals (call them A, B, and C) will
each be in phase with the voltage between one pair of motor leads. If
you can spin the motor externally while using a scope to look at both
hall signals and back-EMF waveform, then you should be able to
re-construct the commutation table. Your commutation should apply
voltage which is in-phase with the back-EMF voltage.

I know I am not being all that clear here on the exact procedure but
that's because it is difficult to explain without showing someone in a
hands-on way and I don't have time at the moment to write out a whole
procedure here for you :)

Some motors will have a phase offset between hall signals and the
phase pairs but those type of motors will usually be ones that are
designed to run in one direction only and at high speed, like hobby
brushless motors for airplanes. The motivation here is that the phase
shift in the winding current versus winding voltage due to inductance
becomes significant at higher speeds and so the optimum commutation
switch points change with speed. Servomotors like the one you are
using operate at a wide range of speed and direction and so therefore
cannot simply shift their hall sensors to optimize for one particular
speed but rather they optimize around zero speed which gives good
overall performance. Hobby motors optimize for the speed range where
they will be generating the most output power and operating most
frequently.

Sean


On Wed, Apr 18, 2012 at 12:15 PM, Denny Esterline <RemoveMEdesterlineTakeThisOuTspamgmail.com> wrote:
{Quote hidden}

>

2012\04\18@130121 by John Gardner

picon face
Sean, you're a gold mine - Thanks...

Jac

2012\04\18@143124 by Sergey Dryga

flavicon
face
Denny Esterline <desterline <at> gmail.com> writes:

>  Hmmmm... Possible I suppose. So I guess my next question is, How would one
> go about creating the hall table?
>
> My procedure was to excite a winding pair at lowish current (by loading one
> of my commutation states into OVDCON and setting 10% DC), waiting for the
> rotor to stabilize and reading out the current hall data.
>
Just curious, is the connection diagram mfg provides not sufficient?  http://www.electrocraft.com/products/bldc/RP23/

I will probably use similar type motor in near future, this thread is great to
find out potential problems <before> they happen to me.
Best,

Sergey Dryga
http://beaglerobotics.com

2012\04\18@153010 by Denny Esterline

picon face
On Wed, Apr 18, 2012 at 11:31 AM, Sergey Dryga <spamBeGonesergeyspamBeGonespamdryga.us> wrote:

> Denny Esterline <desterline <at> gmail.com> writes:
>
> >  Hmmmm... Possible I suppose. So I guess my next question is, How would
> one
> > go about creating the hall table?
> >
> > My procedure was to excite a winding pair at lowish current (by loading
> one
> > of my commutation states into OVDCON and setting 10% DC), waiting for the
> > rotor to stabilize and reading out the current hall data.
> >
>
> Just curious, is the connection diagram mfg provides not sufficient?
> http://www.electrocraft.com/products/bldc/RP23/
>
> I will probably use similar type motor in near future, this thread is
> great to
> find out potential problems <before> they happen to me.
>
>
No, that diagram shows a _ drive sequence_, but neglects to identify which
wires connect to which phase and also completely lacks any phase data about
the sensors. A different PDF I beat out of the rep has a bit more data.
(not sure if I can share it though, it's not on their web site)

I think I have this fixed.

It's gonna take a bit more time than I have at the moment for a reasonable
write up, but it seems that my sector table -> math -> commutation table
was energizing coils about 45 degrees ahead in one direction and only about
20 degrees ahead in the other direction. And in the bad direction, it
wasn't changing state until a few degrees past the zero torque point. So in
essence, it was pulling backwards for some part of the cycle.

Setting up a "protractor" and finding the coil points and the hall
transition points was very enlightening. The hall sensors have _way_
more hysteresis than I suspected (over 15 degrees in some places) and the
sensed points were far less symmetrical than I expected.

-Denn

2012\04\18@171739 by Ruben Jönsson

flavicon
face
Here is a paper that describes how to find the sensor configuration for a motor: <http://www.pmdcorp.com/downloads/app_notes/BrushlessSensorConfig.pdf>

/Ruben

{Quote hidden}

==============================
Ruben Jönsson
AB Liros Electronic
Box 9124, 200 39 Malmö, Sweden
TEL INT +46 40142078
FAX INT +46 40947388
TakeThisOuTrubenEraseMEspamspam_OUTpp.sbbs.se
==============================

2012\04\18@224710 by Sergey Dryga

flavicon
face
Denny Esterline <desterline <at> gmail.com> writes:

> It's gonna take a bit more time than I have at the moment for a reasonable
> write up, but it seems that my sector table -> math -> commutation table
> was energizing coils about 45 degrees ahead in one direction and only about
> 20 degrees ahead in the other direction. And in the bad direction, it
> wasn't changing state until a few degrees past the zero torque point. So in
> essence, it was pulling backwards for some part of the cycle.


Thanks Denny, I would be interested to read your write up when you have time to
do it.  Sergey http://beaglerobotics.com

2012\04\19@085056 by RussellMc

face picon face
On 19 April 2012 04:51, Sean Breheny <RemoveMEshb7spamTakeThisOuTcornell.edu> wrote:
>
> Hi Denny,
>
> The manufacturer should provide a commutation table - sadly, they
> often do not provide them, but it is definitely worth asking for one.
> If they don't know the commutation table, ask them for a particular
> drive that is compatible with this motor and then look at the
> datasheet for that drive.

Visualisation can be good.

A light (LED probably) that turns on when a sensor was active and that
was used to "strobe" the spinning  motor would allow comparison of  3
sensors in action and forward/ backward comparisons. An oscilloscope
display does only part of this.

Could be illuminating :-)


               Russell McMaho

More... (looser matching)
- Last day of these posts
- In 2012 , 2013 only
- Today
- New search...