Lebowski's motor controller IC, schematic & setup, new v2.A1

Lebowski said:
The controller IC basically runs a PLL, which in practise does what you say:"able internally to generate a sinusoidal frequency that is synchronized with the pulses from the Halls".

The PLL is basically a filter for the hall info. It smoothes out the hall steps. Looking at the in and output signals it performs this interpolation you mention.

If you look at the phase info, at extremely low speed you will see a staircase with 6 steps (as the motor slowly rotates and triggers new hall combos). As the speed goes
up the steps will more and more become a smooth ramp.

The controller IC does not (ever) drive the motor with a squarewave. Lets say the hall steps are at 20, 80, etc (each time plus 60) degrees.
When the hall combo says 20 degrees, phase A is driven with Amplitude*sin(20), phase B with Amplitude*sin(140), phase C with Amplitude*sin(260). So a 120 degree
shift for each phase. Since in this example sin(20) is 0.34, phase A is driven with 34% of Amplitude. At extremely slow speed the output signals will go in 6 steps through a
sine wave. And it always drives all 3 phases, not like a China controller where only 2 out of 3 are driven.
I think I understand correctly. The first CYCLE is a square cycle then after that the controller starts its RPM tracking so it can gradually change from Square waves to sine waves... Right?
 
Arlo, it's not just the first cycle, the controller issues a 6-step sequence until the RPMs have risen enough so it can generate the proper sinewave current shape. The transfer is done progressively.

Bas, about my question of yesterday, on the way to calculate the commutation frequency, I think I was wrong. After some reflection while I was sleeping, I came to the conclusion that the frequency is much higher than what I initially thought, because of the "electronic gearing". But I haven't been able to figure out the formula yet. :oops:
I have this nice program that shows you the winding scheme for any combination of number of slots and poles, and it also gives the number of "cogging steps" per rev of the motor. I believe that the cogging steps are the same thing as the number of cycles necessary to make the motor rotate one revolution. (But is that number for one phase only, or the total for the 3 phases?)
So it might be that the correct formula for the commutation frequency is:
# cogging steps X motor RPM , divided by 60
A search on the web didn't produce any conclusive answer on this.
 
Altair said:
Arlo, it's not just the first cycle, the controller issues a 6-step sequence until the RPMs have risen enough so it can generate the proper sinewave current shape. The transfer is done progressively.
But in lebowskis explanation he said it is NOT EVER A SQUARE WAVE. I think the first cycle has to be a square wave because the controller needs soem rpm info to know approximately what part of the cycle its in to start the sine wave current control
 
I think it has no choice but to start by giving some steady (DC) voltage to the phase whose Hall is presently triggered.
Then it is waiting for the next Hall sensor to give its signal, which will trigger the powering of the next phase.
From then on, the controller will issue phase voltages according to the state of the Halls, but until there have been quite a few regularly spaced pulses coming from the Halls, and the PLL has been able to synchronize itself, the output will be the 6-step sequence as in a squarewave drive.
But during this sequence, the controller is probably able to determine more exactly where the rotor is by checking all the 3 Halls and determining the instant when a particular phase is at a point sufficiently advanced in its cycle to be able to accept full phase current.

But anyway, this doesn't last much, the PLL will soon take over and the current in the phase will follow a sine shape.
BTW, squarewave is not a good name for this, as the waveform is a series of :
Positive voltage
Dwell time
Negative voltage
Dwell time
and repeat.
 
not even the first cycles is a square wave.
slow_6_stepping.jpg
this picture shows the phase information in hall running mode for very low motor speed. On the y-axis is the phase (-180 to +180 degrees), there are 6 steps per cycles corresponding to the 6 indications from the halls. The controller output will be the sine of the phase, so not a square wave but it will go through a sine in 6 steps. On the x-axis is time, 3500 steps per second.
lower_pll_freq.jpg
if you lower the pll frequency in the controller it will start smoothing out the 6 steps at lower rpm than for high pll frequency (but disadvantage: delay so phase error)
faster.jpg
same low pll frequency but with higher motor speed (still in hall mode): the phase increase is almost perfectly linear increasing, the output of the controller will by this time look like a perfect sine.

In sensorless all hints of steps in the phase are gone, phase is linearly increasing.
 
Altair said:
Arlo, it's not just the first cycle, the controller issues a 6-step sequence until the RPMs have risen enough so it can generate the proper sinewave current shape. The transfer is done progressively.

Bas, about my question of yesterday, on the way to calculate the commutation frequency, I think I was wrong. After some reflection while I was sleeping, I came to the conclusion that the frequency is much higher than what I initially thought, because of the "electronic gearing". But I haven't been able to figure out the formula yet. :oops:
I have this nice program that shows you the winding scheme for any combination of number of slots and poles, and it also gives the number of "cogging steps" per rev of the motor. I believe that the cogging steps are the same thing as the number of cycles necessary to make the motor rotate one revolution. (But is that number for one phase only, or the total for the 3 phases?)
So it might be that the correct formula for the commutation frequency is:
# cogging steps X motor RPM , divided by 60
A search on the web didn't produce any conclusive answer on this.

There is probably a relation with cogging, but not a direct one.

If you alternate the magnetic field from positive to negative and back to positive you will get 1 sinewave of backemf voltage. For most motors for the field to change like this the rotor needs to move by 2 magnets (from Northpole to Southpole back to Northpole). Then for one rotation you will get the number of magnets divided by 2 amount of sinewaves.... Some motors have 2 northpoles, then 2 southpoles etc, then you need to divide by 4 magents, etc etc.
 
OK now I understand what you meant when you mentionned the staircase.
Then from that ramp, you can determine the corresponding position in the sine. Wow.
This is an impressive controller you have there.
All my respects.
 
Lebowski said:
Altair said:
Arlo, it's not just the first cycle, the controller issues a 6-step sequence until the RPMs have risen enough so it can generate the proper sinewave current shape. The transfer is done progressively.

Bas, about my question of yesterday, on the way to calculate the commutation frequency, I think I was wrong. After some reflection while I was sleeping, I came to the conclusion that the frequency is much higher than what I initially thought, because of the "electronic gearing". But I haven't been able to figure out the formula yet. :oops:
I have this nice program that shows you the winding scheme for any combination of number of slots and poles, and it also gives the number of "cogging steps" per rev of the motor. I believe that the cogging steps are the same thing as the number of cycles necessary to make the motor rotate one revolution. (But is that number for one phase only, or the total for the 3 phases?)
So it might be that the correct formula for the commutation frequency is:
# cogging steps X motor RPM , divided by 60
A search on the web didn't produce any conclusive answer on this.

There is probably a relation with cogging, but not a direct one.

If you alternate the magnetic field from positive to negative and back to positive you will get 1 sinewave of backemf voltage. For most motors for the field to change like this the rotor needs to move by 2 magnets (from Northpole to Southpole back to Northpole). Then for one rotation you will get the number of magnets divided by 2 amount of sinewaves.... Some motors have 2 northpoles, then 2 southpoles etc, then you need to divide by 4 magents, etc etc.

Maybe counter-intuitive, but cogging has no electro-magnetic or drive significance. Exclusively means how it feels to turn unpowered, and can be designed out to sub 1% through balancing the teeth head/ and static rotor magnet fields to always be symmetrically attracting and repelling in balance through-out rotation.
 
Not sure I agree with this. Cogging means torque ripple and in certain apps torque ripple needs to be minimized. You can "smooth" the torque ripple of a motor that cogs at steady speed with a custom motor controller but not while the speed is changing. You can also mechanically smooth torque ripple by layout but only a ironless motor has near zero (almost unmeasurable) torque ripple (only a homopolar has absolutely zero torque ripple)

Cogging also means varying inductance. This is "seen" by the drive (meaning motor controller) and also creates harmonics
 
I knew a researcher who'd made a big 20-odd pole motor for some weirdo application. His cogging torques were so big that occasionally it would stop working as an induction motor and work instead as a switched reluctance (stepper) motor, rotating very slowly backwards with LOTS of torque. (and heat and noise.....)
In the smooth airgap machines I normally work with cogging is mostly reduced by skewing rotor or stator laminations wrt each other. This gets rid of most of the issue with a (very) minor efficiency hit.
 
Dear Bas and friends,

just wanted to say thanks a lot for the great contoller, tipps and hints to get my scooter running :D

Finaly I solved my two problems (weak power on start and "rumpling" on regen) by pushing up the phase current to 200A (maximum of current sensors).
Then I put the regen-battery current up to 300A (I don't think they will be reached, because the main fuse is only 80A but it's not breaking). And finaly the erpm regen ramp from 400 to 9999 (seems to be the maximum the controller accepts).

Best,
Arne

This is my final setup
Code:
0x01DC  0xFFFF  0xFFFF  0x07BF  0x03DF  0x014A  0x0149  0x003B                  
0x0046  0xFFCA  0xFFCA  0xCFBC  0xD8C4  0x0358  0x1DD5  0x7FBC                  
0x7D2E  0x0030  0x010E  0x0A6A  0x028C  0x009D  0x000E  0x11C6                  
0x001E  0x2AF8  0x795E  0x0040  0x9D64  0x000A  0x0000  0x07AE                  
0x0018  0x0000  0x01E0  0xFFFF  0xF852  0xFFE8  0x0000  0xFE20                  
0x0000  0x4CCD  0x0018  0x0000  0x01E0  0xFFFF  0xB333  0xFFE8                  
0x0000  0xFE20  0x045F  0x021D  0x001E  0x0017  0x1582  0xFF00                  
0xC23D  0x6C3B  0x963D  0x183B  0xED3B  0x433B  0xFF00  0x0000                  
0x0514  0x0D3C  0x00DC  0x0443  0x0C79  0x0094  0x0063  0x0002                  
0x01EF  0x0000  0x0999  0x04CC  0x03F2  0x03FB  0x03ED  0x0752                  
0x0883  0x000F  0x0AA4  0x0003  0xCCFA  0xFFF8  0x0357  0x1800                  
0x0000  0x0000  0xF4CC  0x0000  0x0000  0x00CA  0x0212  0x0054                  
0x03AB  0x2A3B  0x01EB  0x0F5B  0x3996  0x0224  0x0258  0x00CC                  
0xFFFF  0xFFFF  0xFFFF  0xFFFF  0x0003  0x0000  0x0078  0x0000                  
0x0000  0xFFFD  0x0000  0xFF88  0x0000  0x0000  0x0005  0x0000                  
0x0064  0xFFFB  0x0000  0xFF9C  0x000C  0x0000  0x00F0  0xFFF4                  
0x0000  0xFF10  0x0A00  0x06F1  0x0061  0x04A6  0x0F5B  0x00C6                  
0x0353  0x04A6  0x0027  0x003B  0x0000  0x03E8  0x03B6  0x6000                  
0x0B84  0x0129  0x4000  0xFFFF  0xFFFF  0xFFFF  0xFFFF  0xFFFF                  
0xFFFF  0xFFFF  0xFFFF  0xFFFF  0xFFFF  0xFFFF  0xFFFF  0xFFFF                  
0xFFFF  0xFFFF  0xFFFF  0xFFFF  0xFFFF  0xFFFF  0xFFFF  0xFFFF                  
0xFFFF  0xFFFF  0xFFFF  0xFFFF  0xFFFF  0xFFFF  0xFFFF  0xFFFF                  
0xFFFF  0xFFFF  0xFFFF  0xFFFF  0xFFFF  0xFFFF  0xFFFF  0xFFFF                  
0xFFFF  0xFFFF  0xFFFF  0xFFFF  0xFFFF  0xFFFF  0xFFFF  0xFFFF                  
0xFFFF  0xFFFF  0xFFFF  0x0000  0x4CCD  0x0000  0x0005  0x9000                  
0x03E9  0x0000  0x7F80  0x0000  0x0000  0x0000  0x0000  0x0000                  
0x0000  0x0000  0x0000  0x0000  0x0000  0x0000  0x0000  0x8000                  
0x0235  0x0000  0x0000  0x0000  0x0000  0x0000  0x0000  0x0000                  
0x0000  0x0000  0x0000  0x0000  0x0000  0x0000  0x0000  0x0000                  
0x0000  0x0000  0x0000  0x0000  0x0000  0x0000  0x0000  0x0000                  
0x0000  0x0000  0x0000  0x0000  0x0000  0x0000  0x0000  0x0000                  
0x0000  0x0000  0x0000  0x0000  0x0000  0x0000  0x0000  0x0000                  
0x0000  0x0000  0x0000  0x0000  0x0000  0x0000  0x0000  0xFFFF                  
0xAAAA  0x6666  0x4924  0x38E3  0x2E8B  0x2762  0x2222  0x1E1E                  
0x1AF2  0x1861  0x1642  0x147A  0x12F6  0x11A7  0x1084  0x0F83                  
0x0EA0  0x0DD6  0x0D20  0x0C7C  0x0BE8  0x0B60  0x0AE4  0x0A72                  
0x0A0A  0x09A9  0x094F  0x08FB  0x08AD  0x0864  0x0820  *
 
kywalda said:
Then I put the regen-battery current up to 300A (I don't think they will be reached, because the main fuse is only 80A but it's not breaking)


I strongly suggest you lower this.

The battery regen limit will not be reached until higher speeds.

Say you have the regen at -.5 throttle and you use 200 phase amps thats -100 phase amps for full regen.
And say you have 50km/h top speed with no field weakening.
At 10km/h you will only have about -20 battery amps of regen But at 50km/h you will have up to -100 battery amps
Now if you add field weakening it will let you travel faster then the normal max of the back emf would allow and say you are going 70km/h or something you can easily get -150+ battery amps and blow the fuse but when you blow the fuse you will blow the controller as well!!!

Don't set your battery regen limit higher then your fuse!
 
izeman said:
Arlo1 said:
Don't set your battery regen limit higher then your fuse!
and don't set it higher than your current sensors can measure!!!
I don't think that is as important. With lots of Feild weakening you can get DC amps well above the AC amps.
 
Arlo1 said:
izeman said:
Arlo1 said:
Don't set your battery regen limit higher then your fuse!
and don't set it higher than your current sensors can measure!!!
I don't think that is as important. With lots of Feild weakening you can get DC amps well above the AC amps.
it's just what lebowski mentioned once, as i have 150A current sensors and wanted to raise phase amps above that. and he said that's a no-go. but maybe he will comment on that, as only he knows how the cpu handles this situation.
 
bobc said:
With a sinewave inverter your battery DC amps would max out about 20% bigger than motor phase rms amps.
That's with 0 field weakening


Once you add field weakening you can get the battery amps well above the rms phase amps even above the peak phase amps.
 
izeman said:
it's just what lebowski mentioned once, as i have 150A current sensors and wanted to raise phase amps above that. and he said that's a no-go. but maybe he will comment on that, as only he knows how the cpu handles this situation.

Yes you can not raise "phase amps" above the sensor limit but above you said "Battery amps".
 
Arlo1 said:
izeman said:
it's just what lebowski mentioned once, as i have 150A current sensors and wanted to raise phase amps above that. and he said that's a no-go. but maybe he will comment on that, as only he knows how the cpu handles this situation.

Yes you can not raise "phase amps" above the sensor limit but above you said "Battery amps".

classic misunderstanding. sure you can, and you should :)
 
Arlo1 said:
bobc said:
With a sinewave inverter your battery DC amps would max out about 20% bigger than motor phase rms amps.
That's with 0 field weakening


Once you add field weakening you can get the battery amps well above the rms phase amps even above the peak phase amps.

nope :) field weakening is a control thing not a power thing. You'd get a tad more amps by dropping the sinewave & "overmodulating" towards quasi- square. But only a few more %
PM me if you want & I'll show you the sums, its straightforward.
 
bobc said:
Arlo1 said:
bobc said:
With a sinewave inverter your battery DC amps would max out about 20% bigger than motor phase rms amps.
That's with 0 field weakening


Once you add field weakening you can get the battery amps well above the rms phase amps even above the peak phase amps.

nope :) field weakening is a control thing not a power thing. You'd get a tad more amps by dropping the sinewave & "overmodulating" towards quasi- square. But only a few more %
PM me if you want & I'll show you the sums, its straightforward.

Yup it is a control thing that takes the system from a buck converter and turns it into a boost converter.
 
Arlo1 said:
Now if you add field weakening it will let you travel faster then the normal max of the back emf would allow and say you are going 70km/h or something you can easily get -150+ battery amps and blow the fuse but when you blow the fuse you will blow the controller as well!!!

Don't set your battery regen limit higher then your fuse!

Hey Arlo,
you're scaring me! My emax is running so fine and the regen is working so smooth. Even from braking down with regen from 80 km/h...

Maybe it's a good idea to put a strong diode anti-parallel to my fuse. So regen will pass through but a short cut will break the fuse.
 
bobc said:
Arlo1 said:
bobc said:
With a sinewave inverter your battery DC amps would max out about 20% bigger than motor phase rms amps.
That's with 0 field weakening


Once you add field weakening you can get the battery amps well above the rms phase amps even above the peak phase amps.

nope :) field weakening is a control thing not a power thing. You'd get a tad more amps by dropping the sinewave & "overmodulating" towards quasi- square. But only a few more %
PM me if you want & I'll show you the sums, its straightforward.
This is not fieldweakening... Look for y fieldweakening booster coil thread where i explain what happens with fieldweakening (typing this on a tablet where i cannot link etc)
 
kywalda said:
Arlo1 said:
Now if you add field weakening it will let you travel faster then the normal max of the back emf would allow and say you are going 70km/h or something you can easily get -150+ battery amps and blow the fuse but when you blow the fuse you will blow the controller as well!!!

Don't set your battery regen limit higher then your fuse!

Hey Arlo,
you're scaring me! My emax is running so fine and the regen is working so smooth. Even from braking down with regen from 80 km/h...

Maybe it's a good idea to put a strong diode anti-parallel to my fuse. So regen will pass through but a short cut will break the fuse.
Or just set the battery regen amps to something the fuse and battery can handle?

There is no reason to need to set it really high... Maybe the current sensors are not set properly?
 
Back
Top