Hyper car hybrid

Topics concerning the Toyota and Lexus inverter drop in boards
evbuilder
Posts: 16
Joined: Mon Feb 21, 2022 4:42 am
Location: New Zealand

Re: Hyper car hybrid

Post by evbuilder »

Dale, you've changed the behaviour of the debug mth printout in your tidy-up.
Screen Shot 2022-03-12 at 10.10.00 PM.png
The "|\t" print should not be inside the if(j=0) bracket.
User avatar
daleread
Posts: 49
Joined: Sat Mar 05, 2022 3:59 pm
Location: UK
Contact:

Re: Hyper car hybrid

Post by daleread »

The classic MGF has an upper and lower load bearing ball joint.
You will need to take the ball joints out of your upper and lower arms.
Then weld on thick washers on their on the top arm place to make ~10mm then use a taper reamer to take the MGF/MGTF upper ball joint.
The lower ball joint is a bolt on 17mm pinch bolt so should be easier
Should be strong as f... , and cheap parts.
You can use a space saver tyre at the front?
P1000901.JPG
With Ford 4x108 (4.25") Hub
Use a Ford Mondeo Mk3> 5x108 and drill new 5x4.50" for your PCD between the studs
The Mondeo hub is 40mm in diameter, you will need a machine shop to take it to 39mm
s-l1600 (1).jpg
MGF lower ball joint
s-l1600.jpg
MGF upper ball joint
s-l1600 (2).jpg
Complete hub, we can but a used pair for ~£20, ~AUD36
User avatar
daleread
Posts: 49
Joined: Sat Mar 05, 2022 3:59 pm
Location: UK
Contact:

Re: Hyper car hybrid

Post by daleread »

Dale, you've changed the behaviour of the debug mth printout in your tidy-up.
Thank you, and oops.

But I cant see that in the code I have?

I have this in version 3 user, "gs450h_v3_user.ino"
gs450h_v3_user.ino
(23.65 KiB) Downloaded 233 times

Code: Select all

void diag_mth()
{
  ///mask just hides any MTH data byte which is represented here with a 0. Useful for debug/discovering.
  bool mth_mask[100] = {
    0,0,0,0,0,0,0,0,1,1,
    1,1,0,0,1,1,1,1,1,1,
    1,1,1,1,1,1,1,1,1,1,
    1,0,0,1,1,1,1,0,0,1,
    1,1,0,0,1,1,1,1,1,1,
    1,1,1,1,1,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,
    1,1,0,0,1,1,0,0,1,1,
    1,1,1,1,1,1,1,1,0,0,};

  SerialDEBUG.print("\n");
  SerialDEBUG.println("\t0\t1\t2\t3\t4\t5\t6\t7\t8\t9");
  SerialDEBUG.println("   ------------------------------------------------------------------------------");
  for (int j=0;j<10;j++)
  {
    SerialDEBUG.print(j*10);if(j==0)SerialDEBUG.print("0");SerialDEBUG.print(" |\t");
    for (int k=0;k<10;k++)
    {
      if(mth_mask[j*10+k])SerialDEBUG.print(mth_data[j*10+k]);else SerialDEBUG.print (" ");
      SerialDEBUG.print("\t");
    }
    SerialDEBUG.print("\n");
  }
  SerialDEBUG.print("\n");

  SerialDEBUG.print("MTH Valid: ");if(mth_good)SerialDEBUG.print("Yes"); else SerialDEBUG.print("No");SerialDEBUG.print("\tChecksum: ");SerialDEBUG.print(mth_checksum);
  SerialDEBUG.print("\n");

  SerialDEBUG.print("DC Bus: ");if(dc_bus_voltage>=0)SerialDEBUG.print(dc_bus_voltage);else SerialDEBUG.print("----");
  SerialDEBUG.print("v\n");

  SerialDEBUG.print("MG1 - Speed: ");SerialDEBUG.print(mg1_speed);
  SerialDEBUG.print("rpm\tPosition: ");SerialDEBUG.print(mth_data[12]|mth_data[13]<<8);
  SerialDEBUG.print("\n");

  SerialDEBUG.print("MG2 - Speed: ");SerialDEBUG.print(mg2_speed);
  SerialDEBUG.print("rpm\tPosition: ");SerialDEBUG.print(mth_data[37]|mth_data[38]<<8);
  SerialDEBUG.print("\n");

  SerialDEBUG.print("Water Temp:\t");SerialDEBUG.print(temp_inv_water);
  SerialDEBUG.print("c\nInductor Temp:\t" );SerialDEBUG.print(temp_inv_inductor);
  SerialDEBUG.print("c\nAnother Temp:\t");SerialDEBUG.print(mth_data[88]|mth_data[89]<<8);
  SerialDEBUG.print("c\nAnother Temp:\t");SerialDEBUG.print(mth_data[41]|mth_data[40]<<8);
  SerialDEBUG.print("c\n");

  SerialDEBUG.print("\n");
  SerialDEBUG.print("\n");
  SerialDEBUG.print("\n");
  SerialDEBUG.print("\n");
  SerialDEBUG.print("\n");
  SerialDEBUG.print("\n");
  SerialDEBUG.print("\n");
  SerialDEBUG.print("\n");
  SerialDEBUG.print("\n");
  SerialDEBUG.print("\n");
}
Or this in version 7, "gs450h_v7.D.R.ino"
gs450h_v7a_D.R.ino
(21.54 KiB) Downloaded 226 times

Code: Select all

// Serial Port Debug Print String
void diag_mth()
{
  ///mask just hides any MTH data byte which is represented here with a 0. Useful for debug/discovering.
  bool mth_mask[100] = {
    0,0,0,0,0,0,0,0,1,1,
    1,1,0,0,1,1,1,1,1,1,
    1,1,1,1,1,1,1,1,1,1,
    1,0,0,1,1,1,1,0,0,1,
    1,1,0,0,1,1,1,1,1,1,
    1,1,1,1,1,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,
    1,1,0,0,1,1,0,0,1,1,
    1,1,1,1,1,1,1,1,0,0,};
    
  SerialDEBUG.print("\n");
  SerialDEBUG.println("\t0\t1\t2\t3\t4\t5\t6\t7\t8\t9");
  SerialDEBUG.println("   ------------------------------------------------------------------------------");  
  for (int j=0;j<10;j++)
  {
    SerialDEBUG.print(j*10);
    if(j==0)
    {  
      SerialDEBUG.print("0");
      SerialDEBUG.print(" |\t");
    }
    for (int k=0;k<10;k++)
    {
      if(mth_mask[j*10+k])
      {
        SerialDEBUG.print(mth_data[j*10+k]);
      }
      else SerialDEBUG.print (" ");
      {
        SerialDEBUG.print("\t");
      }
    }
    SerialDEBUG.print("\n");
  }
  SerialDEBUG.print("\n");
    
  SerialDEBUG.print("MTH Valid: ");
  if(mth_good)
  {
    SerialDEBUG.print("Yes"); 
  }
  else 
  {
    SerialDEBUG.print("No");SerialDEBUG.print("\tChecksum: ");
  }
  SerialDEBUG.print(mth_checksum);
  SerialDEBUG.print("\n");
  
  SerialDEBUG.print("DC Bus: ");
  if(dc_bus_voltage>=0)
  {
    SerialDEBUG.print(dc_bus_voltage);
  }
  else 
  {
    SerialDEBUG.print("----");
  }
  SerialDEBUG.print("v\n");
 
  SerialDEBUG.print("MG1 - Speed: ");
  SerialDEBUG.print(mg1_speed);
  SerialDEBUG.print("rpm\tPosition: ");
  SerialDEBUG.print(mth_data[12]|mth_data[13]<<8);
  SerialDEBUG.print("\n");
  
  SerialDEBUG.print("MG2 - Speed: ");
  SerialDEBUG.print(mg2_speed);
  SerialDEBUG.print("rpm\tPosition: ");
  SerialDEBUG.print(mth_data[37]|mth_data[38]<<8);
  SerialDEBUG.print("\n");
  
  SerialDEBUG.print("Water Temp:\t");
  SerialDEBUG.print(temp_inv_water);
  SerialDEBUG.print("c\nInductor Temp:\t" );
  SerialDEBUG.print(temp_inv_inductor);
  SerialDEBUG.print("c\nAnother Temp:\t");
  SerialDEBUG.print(mth_data[88]|mth_data[89]<<8);
  SerialDEBUG.print("c\nAnother Temp:\t");
  SerialDEBUG.print(mth_data[41]|mth_data[40]<<8);
  SerialDEBUG.print("c\n");
  
  SerialDEBUG.print("\n");
  SerialDEBUG.print("\n");
  SerialDEBUG.print("\n");
  SerialDEBUG.print("\n");
  SerialDEBUG.print("\n");
  SerialDEBUG.print("\n");
  SerialDEBUG.print("\n");
  SerialDEBUG.print("\n");
  SerialDEBUG.print("\n");
  SerialDEBUG.print("\n");
}
User avatar
daleread
Posts: 49
Joined: Sat Mar 05, 2022 3:59 pm
Location: UK
Contact:

Re: Hyper car hybrid

Post by daleread »

A doc showing how to convert the MGF/MGTF to 5x4.5"
1a. How To - MGF Front Knuckles to Ford Mondeo.pdf
(8.59 MiB) Downloaded 140 times
User avatar
daleread
Posts: 49
Joined: Sat Mar 05, 2022 3:59 pm
Location: UK
Contact:

Re: Hyper car hybrid

Post by daleread »

.xls file for data byte relocation Lexus to Prius (WIP)
GS450h and Prius Sync Serial Data Map v1.0.xls
(22.5 KiB) Downloaded 143 times
Woodfie
Posts: 164
Joined: Wed Mar 09, 2022 6:53 am
Location: Auckland NZ
Has thanked: 116 times
Been thanked: 61 times

Re: Hyper car hybrid

Post by Woodfie »

Thanks Daleread, very helpful info to work with..
evbuilder
Posts: 16
Joined: Mon Feb 21, 2022 4:42 am
Location: New Zealand

Re: Hyper car hybrid

Post by evbuilder »

daleread wrote: Sat Mar 12, 2022 1:25 pm
Thank you, and oops.

But I cant see that in the code I have?

I have this in version 3 user, "gs450h_v3_user.ino"

Code: Select all

  SerialDEBUG.println("\t0\t1\t2\t3\t4\t5\t6\t7\t8\t9");
  SerialDEBUG.println("   ------------------------------------------------------------------------------");
  for (int j=0;j<10;j++)
  {
    SerialDEBUG.print(j*10);if(j==0)SerialDEBUG.print("0");SerialDEBUG.print(" |\t");
Or this in version 7, "gs450h_v7.D.R.ino"
gs450h_v7a_D.R.ino

Code: Select all

  SerialDEBUG.println("\t0\t1\t2\t3\t4\t5\t6\t7\t8\t9");
  SerialDEBUG.println("   ------------------------------------------------------------------------------");  
  for (int j=0;j<10;j++)
  {
    SerialDEBUG.print(j*10);
    if(j==0)
    {  
      SerialDEBUG.print("0");
      SerialDEBUG.print(" |\t");
    }
Change was in the spreading out of the last quoted line of v3:
print(j*10) is the Row heading.
if(j==0)print("0"); is to line up Row Zero with 10,20,30 that follow, because the previous line would just output "0" not "00"
print(" |\t") is drawing the column separator vertical line. By putting it into the if(j==0) statement (in the v7 code) it does not print as intended.
I've modified mine to the following because I'm printing more than 100 characters:

Code: Select all

  SerialDEBUG.println("\t0\t1\t2\t3\t4\t5\t6\t7\t8\t9");
  SerialDEBUG.println("   ------------------------------------------------------------------------------");  
  for (int j=0;j<12;j++)
  {
    if(j<10)SerialDEBUG.print(" ");
    if(j==0)SerialDEBUG.print(" ");
    SerialDEBUG.print(j*10);
    SerialDEBUG.print(" |\t");
User avatar
daleread
Posts: 49
Joined: Sat Mar 05, 2022 3:59 pm
Location: UK
Contact:

Re: Hyper car hybrid

Post by daleread »

Zombie Inverter code, ported to gs450h_vcu to run Prius Gen 3 Inverter over Sync Serial Connection
This has been compiled and run on the gs450h_vcu but NOT test with the Inverter.

gs450h_Prius_Gen3_v3_user.ino
(27.11 KiB) Downloaded 218 times
With Debug

gs450h_Prius_Gen3_v7.ino
(23.28 KiB) Downloaded 206 times
With CANBUS for BMW gear stick

. . .
User avatar
daleread
Posts: 49
Joined: Sat Mar 05, 2022 3:59 pm
Location: UK
Contact:

Re: Hyper car hybrid

Post by daleread »

Front Hub Changes

Front Hub Changes.jpg
Woodfie
Posts: 164
Joined: Wed Mar 09, 2022 6:53 am
Location: Auckland NZ
Has thanked: 116 times
Been thanked: 61 times

Re: Hyper car hybrid

Post by Woodfie »

Yes, that looks a good guide plan..may 90 deg belcrank the top wishbone to allow for horizontal coil spring, or transverse leaf spring , center mounted, linked to top wishbone. Both options keep the height acceptable.
Shocks another consideration, as horizontal is abnormal, so perhaps shocks to the lower wishbone to clear driveshaft.
User avatar
daleread
Posts: 49
Joined: Sat Mar 05, 2022 3:59 pm
Location: UK
Contact:

Re: Hyper car hybrid

Post by daleread »

A leaf single spring is a no, no as one wheel will effect the other side giving weird handling, the last thing you need in a powerful car.
For Horizontal shocks they must be mono shocks and not the regular type.
These are often double the price.
Regular shocks have to stand upright because the valves are at the bottom.
Coil overs can be as short as 7"-9", 180mm to 230mm, that would bring the top tower down by (380mm-230mm) 150mm
See;
https://www.rallydesign.co.uk/product_i ... ts_id=5237
https://www.rallydesign.co.uk/index.php ... rers_id=53
You could, as you mentioned in an earlier post, use twin shocks lower down, but would steering clear them on full lock?
Bell cranks are good, but unneeded complexity, you need special shocks and where do you put the coil overs to not to crash with the electric motor?
Noble and Lamborghini both use a single lower shock that is not on the centre line of the wheel.
They know what they are doing...
BTW, there is no big weight in the front, the Motor is ~35kg

1107689565lk.jpg
Noble M12
82519rg8.jpg
Lamborghini Miura
82519rg9.jpg
82519rg10.jpg
Woodfie
Posts: 164
Joined: Wed Mar 09, 2022 6:53 am
Location: Auckland NZ
Has thanked: 116 times
Been thanked: 61 times

Re: Hyper car hybrid

Post by Woodfie »

daleread wrote: Sun Mar 13, 2022 9:26 am
coil overs to not to crash with the electric motor?
The part of the Q211 over the axel center is abour 250mm high, so maybe sufficient clearance, all depends on the thickness of cross member , and I guess important to keep level, for the splash internal lubrication drip points.

Thanks for the Suspension of the Noble and Lamb pics, are they your collection?
User avatar
daleread
Posts: 49
Joined: Sat Mar 05, 2022 3:59 pm
Location: UK
Contact:

Re: Hyper car hybrid

Post by daleread »

Lambo, yes. Noble, not any more. But I am using a Noble M600 V8 4.4l twin turbo 6530bhp in the back of the RS200 EV build. 😊
Woodfie
Posts: 164
Joined: Wed Mar 09, 2022 6:53 am
Location: Auckland NZ
Has thanked: 116 times
Been thanked: 61 times

Re: Hyper car hybrid

Post by Woodfie »

Very nice, that will go well , 😃🤗 . what is your target drive weight? front, /rear balance?
User avatar
daleread
Posts: 49
Joined: Sat Mar 05, 2022 3:59 pm
Location: UK
Contact:

Re: Hyper car hybrid

Post by daleread »

1150kg and 50:50.
Maybe use a carbon bodyshell.
I am only using the 35kg Prius 200v battery pack as a booster for the Q211 front wheels, also around 35kg.
The 200's I build before are 1000kg, fully trimmed, and 55 rear, 45 front.
The V8 is heavier and the EV also adds weight so it would +170kg over the usual 200, but less trim and heaps more power.
HawkHP+
Posts: 8
Joined: Wed Nov 13, 2019 8:35 pm

Re: Hyper car hybrid

Post by HawkHP+ »

Very nice build you have there. I hope you don't mind me asking the question of the regenerative recovery in detail. Given that both front and rear wheel in 100% traction, rear driven by ICE and front attached to a PM motor, ICE is doing the work and PM will also be rotating, will there always be kinetic energy convert to potential energy due to EMF even the inverter set the regen very low? of course the frequency of utilizing the potential energy into work will be greater than the regenerative recovery, if so , the system have to make sure the battery never fully charge?
arber333 wrote: Sun Mar 06, 2022 11:04 am
daleread wrote: Sun Mar 06, 2022 10:34 am My biggest ask is "how do I get the regen to charge the batteries" how is this done?"
Where do I need to look to find previous working examples.
Well, regen operates in reverse of the propulsion torque. It is native to PMSM motors. You need a mass with velocity to stop and you apply certain settings in your inverter so it provides negative torque to the wheels. This then is converted to current to the batteries.
In OEM cars the motors are connected with the engine by elaborate gearing or belts or CVT connections.
In your case you will allways have the connection between motor and engine. Ground will provide traction and torque translation. In example if you drive your engine and select regen front motor will fight the rear motor + mass. Also you can have front axle add its torque for starting from standstill or you can just frewheel the engine clutch and drive on electric only...

My logic would be a bit different though... I would install a smaller engine on Lexus gs450h transmission which would operate simillary to OEM and maybe search for another motor like MGR or larger to put in front to have a true sport 4wd.
Sorry didnt notice this car was mid engine...

EDIT: Observe that you can connect motor to smaller battery and it will still provide regen current but it will not be able to accelerate your car to higher speed. This is why MGR is limited in power.
User avatar
daleread
Posts: 49
Joined: Sat Mar 05, 2022 3:59 pm
Location: UK
Contact:

Re: Hyper car hybrid

Post by daleread »

of course the frequency of utilizing the potential energy into work will be greater than the regenerative recovery, if so , the system have to make sure the battery never fully charge?
The idea is that for 95% of the time the car will be driven only through the rear wheels. Therefore the front wheels will be available for regen.
The front wheels will only operate the PM at the drivers discretion, during launch control or for 4wd mode when the front yaw mismatches the steering angle.
When the power demand is below 75% or under braking the front wheels will switch back to regen mode.
Do you think this will work out?
User avatar
daleread
Posts: 49
Joined: Sat Mar 05, 2022 3:59 pm
Location: UK
Contact:

Re: Hyper car hybrid

Post by daleread »

Morning evbuilder and Woodfie,
any progress on your builds?
Woodfie
Posts: 164
Joined: Wed Mar 09, 2022 6:53 am
Location: Auckland NZ
Has thanked: 116 times
Been thanked: 61 times

Re: Hyper car hybrid

Post by Woodfie »

Hi Daleread, have procured plugs and rescued a socket from an inverter, to produce an extension lead adapter to allow MTH and HTM real car info to fill in some if the unknown gaps....Delivered to evbuilder last evening.

Have been severely distracted by some poor behaving Chinese trucks that are used locally, and have suffered from lockdown self discharge or somesuch.
Also Have Lexus gs450h transmission now aligned and bolted up to a Test Bed ic engine , for some impending charge and starting trials.
Woodfie
Posts: 164
Joined: Wed Mar 09, 2022 6:53 am
Location: Auckland NZ
Has thanked: 116 times
Been thanked: 61 times

Re: Hyper car hybrid

Post by Woodfie »

20220318_211722.jpg
User avatar
daleread
Posts: 49
Joined: Sat Mar 05, 2022 3:59 pm
Location: UK
Contact:

Re: Hyper car hybrid

Post by daleread »

Hi Woodfie, finding those two plugs is not so easy, the Inverter to car and the Inverter to the resolvers that piggy backs onto it.
Looks like you are on the right track there.
I am just about ready to power up my Inverter, it only needs 12v to get sync serial communications, is that right?
200v is for spinning the motor, evbuilder?
Woodfie
Posts: 164
Joined: Wed Mar 09, 2022 6:53 am
Location: Auckland NZ
Has thanked: 116 times
Been thanked: 61 times

Re: Hyper car hybrid

Post by Woodfie »

Yes, 12v in, ground and the 4 sync serial lines is required.
+ resolver(s) connections

Still to re visit the effect of disconnect of one of the resolver plugs, recall a higher pitch whine, not sure if that inhibits the other motor from running........and the resolver pinout/ phase order for 211. Hopefully in next few days.after the Chinese Truck whispering.

Have had it turning on 30v, HV.
evbuilder
Posts: 16
Joined: Mon Feb 21, 2022 4:42 am
Location: New Zealand

Re: Hyper car hybrid

Post by evbuilder »

daleread wrote: Mon Mar 21, 2022 6:40 pm I am just about ready to power up my Inverter, it only needs 12v to get sync serial communications, is that right?
200v is for spinning the motor, evbuilder?
30V is enough on the HV to turn things. 12V, about 1.5A on the Prius block I have been testing with. Woodfie has the experience with the gs450h_vcu. You'll need a throttle pedal probably!

I have put together the Sniffer on a ESP32-S2, sending direct to WiFi. Code is here:
https://github.com/evbuilder/ToyotaSniffer
My first attempt to extract the data is here:
https://github.com/evbuilder/SnifferParser

Tested only on an Arduino Due running gs450h_vcu code, modified for longer message length.

Will put in an unmodified Prius probably later this week so will let you know how it goes.

EvB
User avatar
daleread
Posts: 49
Joined: Sat Mar 05, 2022 3:59 pm
Location: UK
Contact:

Re: Hyper car hybrid

Post by daleread »

My first attempt to extract the data is here:
https://github.com/evbuilder/SnifferParser
The out3.csv data is looking really good, do you plan to tabulate it as live data and maybe highlight in red/yellow/green as the data bytes change?
You have done some great work there, it will be a very powerful tool for in depth hacking.
Which C compiler tool change do you use?
First look, the data looks very good. Does it align with what we have unravelled so far?
User avatar
daleread
Posts: 49
Joined: Sat Mar 05, 2022 3:59 pm
Location: UK
Contact:

Re: Hyper car hybrid

Post by daleread »

disconnect of one of the resolver plugs, recall a higher pitch whine
If you don't give the disconnected motor a torque request it might go quiet.
MG2 is used for multiple tasks including starting the engine, so the 2 motors should be able to operate entirely independently.
The other option is 2 Q211 motors in the front, double the torque and they are not so big...
Post Reply