Exact match. Not showing close matches.
PICList
Thread
'[EE:] Brushless motor fun'
2012\04\18@001842
by
Denny Esterline
|
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
|
Hang a current probe on the motor leads and the supply. Something is not right.
Denny Esterline <spam_OUTdesterlineTakeThisOuT
gmail.com> wrote:
{Quote hidden}>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 position
>
2012\04\18@014451
by
Sean Breheny
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 <.....desterlineKILLspam
@spam@gmail.com> wrote:
{Quote hidden}> 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 position
>
2012\04\18@032918
by
Robert Rolf
|
On Tue, Apr 17, 2012 at 11:44 PM, Sean Breheny <shb7
KILLspamcornell.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
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
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.
|
On Wed, Apr 18, 2012 at 12:18 AM, Denny Esterline <.....desterlineKILLspam
.....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
|
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_OUT
TakeThisOuTnope9.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
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.richards
spam_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
|
>
>
>
> 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
|
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@dwaynerKILLspam
planet.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
|
On Tue, Apr 17, 2012 at 10:44 PM, Sean Breheny <KILLspamshb7KILLspam
cornell.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
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 <RemoveMEdesterlineTakeThisOuT
gmail.com> wrote:
{Quote hidden}> 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...
>
>
> -Denny
>
2012\04\18@130121
by
John Gardner
Sean, you're a gold mine - Thanks...
Jac
2012\04\18@143124
by
Sergey Dryga
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
|
On Wed, Apr 18, 2012 at 11:31 AM, Sergey Dryga <spamBeGonesergeyspamBeGone
dryga.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
|
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}> 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
==============================
Ruben Jönsson
AB Liros Electronic
Box 9124, 200 39 Malmö, Sweden
TEL INT +46 40142078
FAX INT +46 40947388
TakeThisOuTrubenEraseME
spam_OUTpp.sbbs.se
==============================
2012\04\18@224710
by
Sergey Dryga
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
On 19 April 2012 04:51, Sean Breheny <RemoveMEshb7
TakeThisOuTcornell.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...