Go Back   EcoModder Forum > EcoModding > EcoModding Central
Register Now
 Register Now
 

Reply  Post New Thread
 
Submit Tools LinkBack Thread Tools
Old 08-19-2018, 08:58 AM   #141 (permalink)
Master EcoModder
 
Ecky's Avatar
 
Join Date: Dec 2011
Location: New Zealand
Posts: 5,005

ND Miata - '15 Mazda MX-5 Special Package
90 day: 42.54 mpg (US)
Thanks: 2,866
Thanked 2,501 Times in 1,547 Posts
At a local junkyard probably. I'll look around locally first.

  Reply With Quote
Alt Today
Popular topics

Other popular topics in this forum...

   
Old 08-19-2018, 03:24 PM   #142 (permalink)
Master EcoModder
 
Ecky's Avatar
 
Join Date: Dec 2011
Location: New Zealand
Posts: 5,005

ND Miata - '15 Mazda MX-5 Special Package
90 day: 42.54 mpg (US)
Thanks: 2,866
Thanked 2,501 Times in 1,547 Posts
Got a new multimeter today.

Car idling @ 1100rpm (higher idle set by arduino for drivability reasons)

3 phase wires coming from the motor: 45.0v RMS AC measured phase to phase -> works out to ~63.6v peak, I believe (?), 2.00a, ~155w
After diode bridge rectifier: 58.5v DC, 2.50a, ~146w, ~93% efficient rectification
After power supply: 14.25v, 8.40a, ~120w, ~82% efficient at what is approximately 15% load for this unit

Not sure how efficient the 15kw motor is at producing 155w of electricity. :P

Before efficiency losses of the IMA motor, electricity generation is ~0.2HP at idle. No accessories on, just my cameras/screens and the engine.

Last edited by Ecky; 08-19-2018 at 03:36 PM..
  Reply With Quote
Old 08-19-2018, 11:47 PM   #143 (permalink)
Master EcoModder
 
mpg_numbers_guy's Avatar
 
Join Date: Feb 2018
Location: VA
Posts: 1,363

Toby - '13 Toyota Prius C
90 day: 64.01 mpg (US)

Daz - '15 Mazda 3 iTouring w/ Tech Package
90 day: 38.2 mpg (US)
Thanks: 321
Thanked 480 Times in 365 Posts
Quote:
Originally Posted by Ecky View Post
Car idling @ 1100rpm (higher idle set by arduino for drivability reasons)
Tell me more! Why the higher idle for drivability reasons?
__________________
2013 Toyota Prius C 2 (my car)


2015 Mazda 3 iTouring Hatchback w/ Tech Package (wife's car)
  Reply With Quote
Old 08-20-2018, 06:10 AM   #144 (permalink)
Eco Storm Chaser
 
Stacygifford's Avatar
 
Join Date: Nov 2012
Location: Lubbock
Posts: 174

Nemo - '87 Ford Mustang GT
90 day: 27.26 mpg (US)

K-sight - '02 Honda Insight
90 day: 39.24 mpg (US)
Thanks: 20
Thanked 73 Times in 38 Posts
Quote:
Originally Posted by mpg_numbers_guy View Post
Tell me more! Why the higher idle for drivability reasons?
My assumption Is that it's because the 3cyl, 1L engines run super rough, the issue is only compounded with the removal of the hybrid drive.

The system seems to smooth idle quite a bit.
__________________


  Reply With Quote
Old 08-20-2018, 06:29 AM   #145 (permalink)
Master EcoModder
 
Ecky's Avatar
 
Join Date: Dec 2011
Location: New Zealand
Posts: 5,005

ND Miata - '15 Mazda MX-5 Special Package
90 day: 42.54 mpg (US)
Thanks: 2,866
Thanked 2,501 Times in 1,547 Posts
Most 3 cylinders engines have large crankshaft counterweights, an intentionally unbalanced and heavier flywheel, and/or a balance shaft, because 3-pots are far less balanced than 4's. The Insight has neither of these. Normally the IMA motor performs idle smoothing, where it "regens" at the peak of each cylinder's torque and "assists" in each trough, like this:



From wikipedia:

Quote:
Inline 3 with 120° crankshaft is the most common three cylinder engine. They have evenly spaced firing and perfect phase balance on reciprocating mass, with 4., 6., 14. and 16. imbalances. Just like in a crossplane V8, these first order rocking couples can be countered with heavy counterweights, and the secondary balance is comparable to, or better than an ordinary inline 4 because there are no piston pairs that move together.

This secondary balance advantage is beneficial for making the engine compact, for there is not as much need for longer conrods, which is one of the reasons for the popularity of modern and smooth turbo-charged inline 3 cylinder engines on compact cars. However, the crankshaft with heavy counterweights tend to make it difficult for the engine to be made sporty (i.e. quick revving up and down) because of the strong flywheel effect.

Unlike in a crossplane V8, the bank of three cylinders have evenly spaced exhaust pulse 240° (120° if two stroke) crank rotational angle apart, so a simple three-into-one exhaust manifold can be used for uniform scavenging of exhaust (needed for uniform intake filling of cylinders, which is important for uniform amount of torque generated and uniform timing of torque generation), further contributing to the size advantage.
Honda wanted to keep the engine light and quick, so they didn't add anything to it to balance it. Without the IMA system smoothing it out, idling (~900rpm) results in the glove box chattering and a sensation similar to one of those vibrating back massagers.

The first few times I drove the car without the IMA, I stalled it in intersections. Presumably this is because the flywheel is very light as normally there's a pulse of assist when dropping it into 1st gear. I was able to learn around that by slipping the clutch at ~2000rpm for a second or two every time I started off, but it makes the car need more attention to just drive.

To keep the CEL off, a member over on Insight Central figured out you could send the ECU as few as two analog signals (IMA state and battery SoC) and it would think everything is peachy. Tell the car the battery is above ~15% however and the engine shuts off every time you drop below 22mph - a problem in city driving as normally there's also a ~4 second delay before the backup starter motor kicks in when you turn the key - it's expecting the IMA motor to be there.

Setting the battery SoC below 15% prevents autostop, but also results in the ECU thinking the car needs to be charging a flat battery while driving, which results in a slightly higher idle (~1100rpm) and a slightly different timing map which makes it more torquey. This is generally good. However, it also disables lean burn.

My solution? Feed the ECU that the battery is at ~50% charge when going faster than 22mph, and <15% when it's going at or below 22mph.
  Reply With Quote
The Following 3 Users Say Thank You to Ecky For This Useful Post:
Daox (08-21-2018), MetroMPG (12-27-2018), Stacygifford (08-20-2018)
Old 08-20-2018, 07:09 AM   #146 (permalink)
Master EcoModder
 
teoman's Avatar
 
Join Date: Jan 2017
Location: Istanbul
Posts: 1,245

A3 - '12 Audi A3
Thanks: 65
Thanked 225 Times in 186 Posts
That is why you wanted help with the arduino code?
  Reply With Quote
Old 08-20-2018, 07:15 AM   #147 (permalink)
Master EcoModder
 
Ecky's Avatar
 
Join Date: Dec 2011
Location: New Zealand
Posts: 5,005

ND Miata - '15 Mazda MX-5 Special Package
90 day: 42.54 mpg (US)
Thanks: 2,866
Thanked 2,501 Times in 1,547 Posts
Quote:
Originally Posted by teoman View Post
That is why you wanted help with the arduino code?
Yep. Got it figured out though!

  Reply With Quote
Old 08-20-2018, 11:13 AM   #148 (permalink)
Master EcoModder
 
teoman's Avatar
 
Join Date: Jan 2017
Location: Istanbul
Posts: 1,245

A3 - '12 Audi A3
Thanks: 65
Thanked 225 Times in 186 Posts
Just out of curiosity do you mind sharing the code?
  Reply With Quote
Old 08-20-2018, 11:21 AM   #149 (permalink)
Master EcoModder
 
Ecky's Avatar
 
Join Date: Dec 2011
Location: New Zealand
Posts: 5,005

ND Miata - '15 Mazda MX-5 Special Package
90 day: 42.54 mpg (US)
Thanks: 2,866
Thanked 2,501 Times in 1,547 Posts
Adapted from code John Sullivan wrote:

Quote:
/*Version a20180807
Alpha code
ic.net: mudder
a.k.a John Sullivan

note1: you MUST move QBATT (PNK) to arduino pin 6 (previously pin 10), due to a hardware conflict with counter1.
note2a: you must connect VSS (BLU/WHT*) to arduino pin5.
note2b: *there are multiple BLU/WHT leads... VSS is the one on the gray seat connector (pin8).
*/

//things you may want to change:
static char IMAbatteryEMPTY=30; //set QBATT to 12% duty
static char IMAbatteryHALF=128; //set QBATT to 50% duty
//This is an 8 bit counter (values 0 through 255), so you have to remap percentage (0:100%) to pwm(0:255).
//To do this, multiply the desired percentage by 2.56, but only enter the resulting integer (no decimals).

static char leanBurnMinActivationSpeed = 35; //~mph
/*Lean burn is only activated when speed limit exceeds this value.
If this speed is too low, then the engine may auto stop when coasting to a stop.
Note: integer roundoff will cause the actual crossover point to occur at a lower mph;
probably 5 mph less than whatever you type here (e.g. '35' will probably actually equate to 30 mph).
I may rewrite the conversion if and when someone shows that this alpha code works.
*/

static char hysteresisMPH=1; //prevent rapid QBATT SoC changing when near leanBurnMinActivationSpeed














/*You probably shouldn't change anything below this line (unless you know what's up)

...

If you continue, know that this code was initially written for simplicity for new users,
but now it has some more advanced concepts, such as direct counter register writes.
I've thrown caution to the wind by not using functions, so be careful if you change things.

*/

static char QBATTpin=6; //NOTE pin change (was pin 10)
static char ACTTRQpin=11;
static char MOTFSApin=12;
static char MOTFSBpin=13;
static char VSSpin=5; //T1 for timer 1

static char bitBangDelay_ms = 20;

static float convertVSStoMPH = 1.1125;
//VSS outputs 4000 pulses per mile. Adding time to the equation, that's 1.1125 pulses per mph.

int VSScount=0; //Number of pulses received from VSS since last checked.
char leanBurnMinPulses = 0; //minimum pulses which will activate lean burn.

char frameorder[]={"ba"}; //the simplest "IMA ok" pulse train I could find

int numBitBangs = 0; //since there's no hardware clock, need to know loop execution rate
int loopExecutionTime_ms = 0;

bool firstRun=true;
bool leanBurnEnabled=false;

void setup() {
pinMode(MOTFSApin,OUTPUT); //clock
pinMode(MOTFSBpin,OUTPUT); //data
pinMode(QBATTpin,OUTPUT); //2kHz PWM, 10%=empty, 90%=full
pinMode(ACTTRQpin,OUTPUT); //2kHz PWM, assist>50%, regen<50%

analogWrite(ACTTRQpin,127); //50% duty tells ECU "IMA not delivering torque"
analogWrite(QBATTpin,IMAbatteryEMPTY); //tell ECU battery is nearly empty.

leanBurnMinPulses = char(leanBurnMinActivationSpeed * convertVSStoMPH);
//Floating point math is annoying & slow

//configure counter1
TCCR1A = 0;
TCCR1B = 0b00000111; //set clock to T1 rising edge (VSSpin)
TCCR1C = 0;
TCNT1H = 0; //16 bit counter's upper byte (unused)
TCNT1L = 0;
TIMSK1 = 0; //disable counter interrupts
}

void loop()
{
//send "IMA OK" signal
for(int ii=0;ii<sizeof(frameorder);ii++){bitbang_MOTFSB_fr ame(frameorder[ii]);}

if(firstRun){loopExecutionTime_ms = 2 * bitBangDelay_ms * numBitBangs;}
//value never changes, but don't know numBitBangs until runtime

VSScount = TCNT1L; //read counter1, (number of pulses on VSS)
TCNT1L = 0; //reset counter1 to zero

if(leanBurnEnabled) //(you're going above mph setpoint)
{
if(long(leanBurnMinActivationSpeed) * long(loopExecutionTime_ms) >= long(VSScount) * 1000)
{
analogWrite(QBATTpin,IMAbatteryEMPTY);
leanBurnEnabled=false;
}
}
else //lean burn is presently disabled (because you're going under the mph setpoint)
{
if(long(leanBurnMinActivationSpeed) * long(loopExecutionTime_ms) + hysteresisMPH <= long(VSScount) * 1000)
{
analogWrite(QBATTpin,IMAbatteryHALF);
leanBurnEnabled=true;
}
}

if(firstRun){firstRun=false;} //keep looped math to a minimum. Gotta save those joules!
}

void bitbang_MOTFSB_frame(char nn)
{
if(nn=='a')
{
bangbit(1);
bangbit(1);
bangbit(1);
bangbit(1);
bangbit(1);
bangbit(1);
bangbit(1);
bangbit(1);
bangbit(1);
bangbit(0);
}
else if (nn=='b')
{
bangbit(0);
bangbit(0);
bangbit(0);
bangbit(0);
bangbit(0);
bangbit(0);
bangbit(0);
bangbit(0);
bangbit(0);
bangbit(0);
}
}

void bangbit(bool jj)
{
digitalWrite(MOTFSApin,LOW); //clock low
digitalWrite(MOTFSBpin,jj); //set data
delay(bitBangDelay_ms);
digitalWrite(MOTFSApin,HIGH); //clock high
delay(bitBangDelay_ms);
if(firstRun){numBitBangs++;}
}
leanBurnMinActivationSpeed values of 28 cause auto-stop, even after I tweaked some things. 30 very rarely causes it, if stopping quickly. Still hunting for that golden value between 30 and 35, I'd like to keep it as low as possible.
  Reply With Quote
The Following User Says Thank You to Ecky For This Useful Post:
Daox (08-21-2018)
Old 09-03-2018, 11:34 AM   #150 (permalink)
Master EcoModder
 
Ecky's Avatar
 
Join Date: Dec 2011
Location: New Zealand
Posts: 5,005

ND Miata - '15 Mazda MX-5 Special Package
90 day: 42.54 mpg (US)
Thanks: 2,866
Thanked 2,501 Times in 1,547 Posts
Purchased a 50 degree VTC gear and a small cylinder I can stick inside to prevent it from advancing more than 40 degrees (for valve/piston clearance reasons). Need to order a few other bits and pieces, I've been accumulating everything at a shop in NH. Waiting on my final drive before I start assembling.

Drove back and forth to Boston over the weekend. On the way there, I targeted 80mph and averaged 57mpg, with intermittent A/C use. On the way back I was able to approach 80mpg with a target speed of 65mph (cruise control, no P&G) until I started climbing the mountains. Many of the mountains in Vermont require WOT 3rd gear or, in a few rare cases, even 2nd gear to climb with the Insight's 1.0L, and this takes it well outside of its peak BSFC range. Can't wait to see what I can do with the 2.0.


  Reply With Quote
The Following 2 Users Say Thank You to Ecky For This Useful Post:
Daox (09-03-2018), mpg_numbers_guy (09-03-2018)
Reply  Post New Thread


Thread Tools




Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
Content Relevant URLs by vBSEO 3.5.2
All content copyright EcoModder.com