Motor comparison spreadsheet

crossbreak said:
looks promising. shunt is a 1% type. the meter is this one: http://www.ebay.de/itm/121505331829?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT
Thanks cb. I'll order one.

I already have one of these: http://www.hirst-magnetics.com/instruments/gm04_p1.shtml
 
so you can measure magnet strength? Is it possible to measure saturation current with such a gauss meter?

BTW i wasnt able to use the calibrate/zeroing feature. it shows 0.00 mOhm to 0.01 mOhm if i connect the probes, so i'm fine with that
 
just checked an AWG8 turnigy silicon cable: 11.56 mohm / 5.30m = 2.18 mOhm/m. I use it for all the high current stuff in my bikes. Almost in spec, that would be 2.13mOhm/m

I measured the MAC 6T upgrade. It has 43.3 mOhm terminal resistance. The cables are 4mm² and 1m in length. so this is 2x 4.45mOhm =8.9 mOhm cable resistance...or in other words 20.6% of the Ri of this motor is cable resistance :shock:
Edit: I measured directly at the motor coils: 29.5 mOhm, 29.2 mOhm and 29.1 mOhm between the three phases. The phase cables are not 4mm² as advertised. but the are longer than 1m, i calced they must be around 3.3 mm²

kV = 62.5kV @ rotor, so km ~= 0.7, the same that full throttle measured for the bafang BPM. i will add the 2 no load currents when i have my $15 laser tachometer shipped :) then i'll also measure the other motors i have laying around, including the BPM

BTW it's easy to measure the shunt of a controller that has the Cycle Analyst DP connector. All bikes I built have one, now i can re-check on CA calibration with this probe. Just have to make sure the EV-battery is disconnected and caps discharged. Otherwise, the magic smoke...
EDIT: Maybe it is not such a good idea to use the black CA-DP lead as return path. Some people who sell controller here do simply solder the black lead to the blue one. It is more precise to connect the black lead to Battery- of the controller
 

Attachments

  • measure_shunt.jpg
    measure_shunt.jpg
    89.6 KB · Views: 2,416
  • MAC 6T phase to phase.jpg
    MAC 6T phase to phase.jpg
    99.8 KB · Views: 2,050
Bafang CST custom 8T poor:
stack thickness: 18.5mm, 0.35mm lamination thickness
stator dia 125mm
kV = ?
8T terminal resistance (without cables) = 94 mOhm (custom wind with poor copperfill)
no load current 1 = ?? A @ ??rpm
no load current 2 = ?? A @ ??rpm

Bafang BPM 13T stock:
stack thickness: ??mm, 0.5mm lamination thickness
stator dia 130 mm
kV = ? must be around 33.5
terminal resistance (incl 1m cable) = 190 mOhm, cables must be ~AWG14, so this should be ~17mOhms
no load current 1 = ?? A @ ??rpm
no load current 2 = ?? A @ ??rpm
wiki: http://endless-sphere.com/w/index.php/EBike_Motors_Hub_BPM

Steel-geared hub motor from zelenavozila
stack thickness: ??mm, 0.5mm lamination thickness
8p
inductance: ~1000µH
stator dia 130 mm
kV = ?
terminal resistance (without cable) = 285 mOhm
no load current 1 = ?? A @ ??rpm
no load current 2 = ?? A @ ??rpm
http://endless-sphere.com/forums/viewtopic.php?f=30&t=53939#p802446
 
Miles,

I've been playing around with the variable inputs and your spreadsheet is quite useful not only in comparing motors, but also in helping fine tune implementation plans. I have 2 questions and 2 requests for addition.

When I increase only rpm in the new input fields the loss breakdown shows a small increase in copper losses. Is that attributable to the additional loss resulting from the increase in no load current required to spin the motor at the new rpm?

We talk about obtaining the 2 no-load current measurements at WOT at 2 different voltages, but is that really necessary? If someone has cruise control, a 3 speed switch or some other means of holding a fixed throttle position for a steady rpm at no-load, won't that work just as well? Switching still occurs at the PWM frequency and the current is so low that I wouldn't think controller losses add up to much more than whatever the controller draws just turning it on.

I think we should include a field for the ambient temperature when the phase-to-phase resistance is measured. BTW for any I've provided or will provide, 25°C is good temperature to enter.

It would be useful to be able to include operating temperature or a % change in resistance, as a variable input. Many run their motors hot enough to increase copper resistance 30-40% higher than our motor measurements taken at ambient temp. That's a pretty significant impact on efficiency, so it would be nice to reflect it in the spreadsheet for much closer to realistic operation.

John
 
we need two no load curents at two different speed at WOT, as there are virtually no switching losses involved spinning a WOT at no load (as there is no PWM involved). this changes for half throttle. You could indeed use two different part trottle no load test though. i am not sure how/why switching should differ much in this situation

as for motor temp, any motor will have 30% more resistance at 76K increased temperature. this is the case as all motors are wound with copper and share the same thermal coefficient of electrical resistance.
for Km² this means it that will decrease by roughly 23%. this makes compression fair in terms of temperature dependence
 
crossbreak said:
we need two no load curents at two different speed at WOT, as there are virtually no switching losses involved spinning a WOT at no load (as there is no PWM involved). this changes for half throttle. You could indeed use two different part trottle no load test though. i am not sure how/why switching should differ much in this situation

as for motor temp, any motor will have 30% more resistance at 76K increased temperature. this is the case as all motors are wound with copper and share the same thermal coefficient of electrical resistance.
for Km² this means it that will decrease by roughly 23%. this makes compression fair in terms of temperature dependence

I believe that Zombiess demonstrated that switching at the PWM frequency still occurs even at WOT. In further support of an easy method to obtain no-load current at 2 rpms needed to complete the spreadsheet data, I've never seen a single instance where no-load current decreased as WOT rpm is approached. Have you?

Regarding temps we'll just have to agree to disagree (edit- about the need for temperature input), but few will understand Km² enough fully utilize it, and the cause of differences get buried in the number. Take Miles' 2 motors as an example. They show the same efficiency at the same rpm, but since at the copper losses are higher in relation to core losses for the 24mm model, at operating temps it will have lower peak efficiency than the 30mm model.
 
John in CR said:
I've never seen a single instance where no-load current decreased as WOT rpm is approached. Have you?
no but this does not mean that this may be insignificant. Just measure it. I need a third multimeter then I got all stuff I need.

John in CR said:
copper losses are higher in relation to core losses for the 24mm model, at operating temps it will have lower peak efficiency than the 30mm model.
can't see why this should be the case as a longer stack means also more core, meaning more core loss.
 
crossbreak said:
John in CR said:
copper losses are higher in relation to core losses for the 24mm model, at operating temps it will have lower peak efficiency than the 30mm model.
can't see why this should be the case as a longer stack means also more core, meaning more core loss.

That's the core side without considering the copper. Once you adjust torque to be the same or different based on weight or stator stack height it becomes a bit more clear, but it doesn't really come into focus without being able to adjust for temperature. Both motors are so efficient that the difference is small, but not trivial. It's buried as part of the difference in Km, but it's not apparent just looking at the raw number for resistance.

Heat is our primary limitation, and I view it as my enemy, so I want as much detail as possible about heat and its effects.
 
the thicker stack has less Ri for its core length due the end turns and thus better sKm²

That's the core side without considering the copper. Once you adjust torque to be the same or different based on weight or stator stack height it becomes a bit more clear, but it doesn't really come into focus without being able to adjust for temperature. Both motors are so efficient that the difference is small, but not trivial. It's buried as part of the difference in Km, but it's not apparent just looking at the raw number for resistance.
if you add like 30% resistance to both motors, both Km² will decrease equally.

miles did enter only 2 digits for the no load current. so there is no point in comparing the 4th digit of efficiency

i do get now what you mean by
John in CR said:
copper losses are higher in relation to core losses for the 24mm model, at operating temps it will have lower peak efficiency than the 30mm model.
you talk about a specific working point (Column AD to AJ). it is clear that they differ in losses and efficiency. But what is compared in the max eta (column Q) is not a specific one for all but a specific one for each.
->Peak Eff for a given rpm remains the same for both motors (almost, as there are the end turn making the bigger one slightly better)
 
John makes a good point about ambient temperature when the phase resistance is measured. Someone in a hot country could take their measurements at 40°C while someone working in a cold workshop could be well below freezing. People only need report the approximate temperature (weather records) as I'd think being within 5 degrees would be acceptable. The spreadsheet value could then be normalised to a standard temperature, like 20°C.
 
crossbreak said:
->Peak Eff for a given rpm remains the same for both motors (almost, as there are the end turn making the bigger one slightly better)

Now that we can vary rpm and torque I don't even pay attention to the peak ETA at that rpm. I was quite pleasantly surprised looking at what's going on with HubMonster at the 111V nominal I've been running with 123A/190A limits on each controller. What I really need is bargain controllers that can handle 150V nominal that can handle the same conservative current limits.
 
Now that we can vary rpm [...] I don't even pay attention to the peak ETA at that rpm
i do. it's one crucial point for finding a good reduction ratio

@ Punxor: It's 0.4% increase per °C. As simple as that. we need a tutorial for measurement
 
crossbreak said:
Now that we can vary rpm [...] I don't even pay attention to the peak ETA at that rpm
i do. it's one crucial point for finding a good reduction ratio

This is a good example of why we need to agree to disagree sometimes, because our equally valid viewpoints come from different ends of the spectrum. I think yours is closer to Miles' who wants the most efficient minimal machine possible, though I think you have some far greater load requirements due to variable terrain, or was your earlier example of 15kph up a long very steep grade just made up?

While I fully appreciate a minimalist design optimized for steady cruising on generally flat terrain at European legal ebike speeds with leg power to supplement the torque requirements of variable load conditions, my ebike life is thankfully in a completely different world. I say "thankfully" because the added time and greatly reduced cooling airflow would literally roast me in the tropical sun despite comfortable ambient temps. The lack of regulation is needed, because there are no bike lanes, paths,
other cycling infrastructure, or even shoulders on the road. That makes significant acceleration and speed a requirement for safe riding, since mixing with traffic is the only choice, and I'll be damned if I'm going to be a slow moving object relying on every cell phone user and text messager to avoid hitting me.

Add mountainous terrain and it means I need good efficiency at 50kph stuck behind traffic on a steep ascent, at typical cruising speed of 70-80kph whether flat or up a steep grade, as well as be capable of 100kph on the highway. My earlier ebikes have had these capabilities, but the limited max efficiency of the hubmotors I used meant I was pushing their power limits to barely achieve them, which meant heat was always a worry. I took a shot that I could figure out how to use 2 controllers for a 6 phase motor that the factory claimed had a crazy high max efficiency of 94.6%. I was right and HubMonster got it's name.

Bear with me, because I'm coming to my point. At high voltage the motor retains unheard of efficiency across a very wide operating range. In the smallest tire that will fit, a 19.25" OD tire, I've hit a ridiculous 172kph on flat road, so it's too steeply geared for my needs, yet my simple ventilation approach makes heat a non-issue. Before Miles' spreadsheet I only had real world results at 74V nominal with a stock motor, and 111V with it ventilated, combined with a lack of heat issues in real world conditions to support the manufacturer's motor test reports. Now I can go mid-drive and the spreadsheet let's me know exactly what to expect, so thank you Miles, and Crossbreak too. Gearing will be only a matter of choosing the top speed I want, and checking the efficiency at the lower rpm end under the significant load of steep mountain roads. The same will apply to an off-road setup, just with a much lower top speed since highway speeds would never be needed.

At the gearing reduction I'm planning the spreadsheet tells me that HubMonster will maintain over 90% efficiency from a top speed in excess of 120kph on the highway in a comfortable fairly upright position, all the way down to 30kph up a 15% grade, which should more than cover any paved road conditions I could encounter. I know of one solid 20% grade climb, experience teaches me to attack it with more speed to prevent heat issues. 30kph is stuck behind a slow truck type of b-o-r-i-n-g. This analysis factors in enough cushion to cover even a 30% increase in copper resistance and still maintaining above 90% efficiency. Also note that I increased my total load to 205kg the hill climbing power requirements to take into account a larger battery pack, but I didn't include the 20kg of weight I've lost in the past couple of months. Do I care about peak efficiency at any given rpm?... not at all.

For off-road I'd gear it down by another 1/3rd, and from 20kph up a 30% grade all the way up to a top speed of 80kph HubMonster will maintain above 90% efficiency at full operating temperatures. Again with peak efficiency at any rpm falling somewhere within those load ranges I don't care about where any point of peak efficiency falls. More important will be setting my temperature alarm quite low to improve throttle tuning as well as help train myself for more effective throttle control, since off-road with electric power will be new to me.

Go ahead and tell me again about those double BPMs. :lol:
 
crossbreak said:
we need a tutorial for measurement

Yes, definitely. Let's make a decision on whether partial throttle works for getting our 2 no-load current numbers, because it would simplify things for many of us. I don't have full confidence in mine, because I didn't like the fact that I had to use 2 different controllers. I did check Kv with both and got very close to identical numbers, which boosted my confidence level.
 
Just got back from holiday. Still catching up.....

John in CR said:
I think we should include a field for the ambient temperature when the phase-to-phase resistance is measured. BTW for any I've provided or will provide, 25°C is good temperature to enter.
Do we need to have yet another column for this? It's easy enough for people to calculate the normalised value from whatever temperature the measurement is done at. Yes, 25 deg. C. is good.

I'll try and find some time to work on the spreadsheet's explanatory text.....
 
haha :D this is the corresponding piece of matlab, i contribute absolutely free
Code:
close all
clc

th = 1;
kte =0.0031415927*60/(2*pi());  % Nm per rpm /60*2pi
r = 0.1; % terminal resistance of motor
n=200; % resolution
v=50; % voltage
kv = 8.8; % back EMV konstant of motor in rpm per Volt
kt = 9.5492966 /kv; % this is 60/2pi /kV
omega0=v/kt;
rpm0 = kv*v;
imax = 100; %max motor current

i = linspace(0,imax,n);
omega = linspace(0,omega0,n);  % rotational speed 
[I,Omega] = meshgrid(i,omega);

loss_cop   = r*I.^2; %copper loss
loss_hyst = th.*Omega; %hysterisis loss
loss_eddy = kte.*Omega.^2; %eddy current loss

pin  = kt.*I.*Omega + loss_cop;
pout = kt.*I.*Omega - loss_hyst - loss_eddy;
Eff = pout./pin;

Eff(Eff<0) = 0;
Eff(1,1) = 0;

fig = figure;

pcolor(Eff);
hold on;
shading interp; 
C=contour(Eff,'LineColor','k')


datacursormode on
grid on
clabel(C)

% dcm_obj = datacursormode(fig);
% pos = get(dcm_obj,'Position');
% txt = {['Time: ',num2str(pos(1))],...
% 	      ['Amplitude: ',num2str(pos(2))]};
 

Attachments

  • 2015-09-15 17_36_22-Figure 1.png
    2015-09-15 17_36_22-Figure 1.png
    17.9 KB · Views: 2,127
Miles said:
Most likely the output from software costing thousands, though.........
crossbreak said:
this is the corresponding piece of matlab
... which costs thousands :)

I took the liberty of translating crossbreak's code into Numpy/Matplotlib, which is free, if not as user-friendly.

Code:
import numpy as np;
import scipy as sp;
import matplotlib.pyplot as plt

th = 1;
kte =0.0031415927*60/(2*np.pi);  # Nm per rpm /60*2pi
r = 0.1; # terminal resistance of motor
n=200; # resolution
v=50.; # voltage
kv = 8.8; # back EMV konstant of motor in rpm per Volt
kt = 9.5492966 /kv; # this is 60/2pi /kV
omega0=v/kt;
rpm0 = kv*v;
imax = 100.; # max motor current

i = np.linspace(0.,imax,n);
omega = np.linspace(0.,omega0,n);  # rotational speed 
I,Omega = np.meshgrid(i,omega);

loss_cop   = r*I**2; # copper loss
loss_hyst = th*Omega; # hysterisis loss
loss_eddy = kte*Omega**2; # eddy current loss

pin  = kt*I*Omega + loss_cop;
pout = kt*I*Omega - loss_hyst - loss_eddy;
Eff = pout/pin;

Eff[Eff<0.] = 0.;
Eff[0,0] = 0.;

fig = plt.figure;

plt.pcolor(i,omega,Eff);
plt.xlabel('Current (A)');
plt.ylabel('Speed (rad/s)');
V = np.linspace(.10,.90,9)
C=plt.contour(i,omega,Eff,V,colors='k')
plt.clabel(C,inline=1)
 
crossbreak said:
looks like this is a python based script interpreter? looks promising, i'll check this out. thanks!
Right. Scipy/Numpy/Matplotlib (often just abbreviated as Scipy) is a set of numerical analysis and plotting libraries for Python. I use the Anaconda distribution, from which I use the Spyder IDE, since it feels sort of like Matlab. Like many open-source tools, Scipy suffers from a proliferation of distributions, and code may require a few tweaks when moving from one to another, so hopefully the code I’ve posted doesn’t throw up a list of errors and warnings when others try to run it. :?
 
Back
Top