Hyper car hybrid
Re: Hyper car hybrid
Dale, you've changed the behaviour of the debug mth printout in your tidy-up.
The "|\t" print should not be inside the if(j=0) bracket.Re: Hyper car hybrid
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?
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
MGF lower ball joint
MGF upper ball joint
Complete hub, we can but a used pair for ~£20, ~AUD36
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?
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
MGF lower ball joint
MGF upper ball joint
Complete hub, we can but a used pair for ~£20, ~AUD36
Re: Hyper car hybrid
Thank you, and oops.Dale, you've changed the behaviour of the debug mth printout in your tidy-up.
But I cant see that in the code I have?
I have this in version 3 user, "gs450h_v3_user.ino"
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");
}
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");
}
Re: Hyper car hybrid
Change was in the spreading out of the last quoted line of v3: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"Or this in version 7, "gs450h_v7.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");
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"); }
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");
Re: Hyper car hybrid
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.
With Debug
With CANBUS for BMW gear stick
. . .
This has been compiled and run on the gs450h_vcu but NOT test with the Inverter.
With Debug
With CANBUS for BMW gear stick
. . .
-
- Posts: 242
- Joined: Wed Mar 09, 2022 6:53 am
- Location: Auckland NZ
- Has thanked: 221 times
- Been thanked: 95 times
Re: Hyper car hybrid
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.
Shocks another consideration, as horizontal is abnormal, so perhaps shocks to the lower wishbone to clear driveshaft.
Re: Hyper car hybrid
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
Noble M12
Lamborghini Miura
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
Noble M12
Lamborghini Miura
-
- Posts: 242
- Joined: Wed Mar 09, 2022 6:53 am
- Location: Auckland NZ
- Has thanked: 221 times
- Been thanked: 95 times
Re: Hyper car hybrid
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?
Re: Hyper car hybrid
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. 
-
- Posts: 242
- Joined: Wed Mar 09, 2022 6:53 am
- Location: Auckland NZ
- Has thanked: 221 times
- Been thanked: 95 times
Re: Hyper car hybrid
Very nice, that will go well , 
. what is your target drive weight? front, /rear balance?
Re: Hyper car hybrid
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.
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.
Re: Hyper car hybrid
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 amWell, 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.
Re: Hyper car hybrid
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.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 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?
-
- Posts: 242
- Joined: Wed Mar 09, 2022 6:53 am
- Location: Auckland NZ
- Has thanked: 221 times
- Been thanked: 95 times
Re: Hyper car hybrid
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.
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.
Re: Hyper car hybrid
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?
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?
-
- Posts: 242
- Joined: Wed Mar 09, 2022 6:53 am
- Location: Auckland NZ
- Has thanked: 221 times
- Been thanked: 95 times
Re: Hyper car hybrid
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.
+ 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.
Re: Hyper car hybrid
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
Re: Hyper car hybrid
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?My first attempt to extract the data is here:
https://github.com/evbuilder/SnifferParser
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?
Re: Hyper car hybrid
If you don't give the disconnected motor a torque request it might go quiet.disconnect of one of the resolver plugs, recall a higher pitch whine
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...