Jump to content
Bullnose Forums

EFI For Big Blue


Recommended Posts

That is 100% clear!

Of course, there is a lot about fuel systems yet to cover, but the focus of this project is EFI for Big Blue.

I recently sent my 86 EFI wiring harness to Steve and I am pursuing later model wiring for my Frankentruck, but the actual routing of the tank wiring seems to be included in the body and chassis wiring. I think the 86 wiring is still on the chassis of my truck and the cab wiring is intact minus the EFI harness. I recall the fuel pump relay was mounted low on the driver's side firewall on the engine side and I can't recall where the inertia switch was located on the 86, but I know it's on the firewall inside the cab, just above and to the right of the transmission hump.

I'm finding a lot of the reasons I chose 87 and up components for my Frankentruck are echoed in Bill's write up on Darth. I really should start my own white paper. The fuel tank wiring on the later trucks runs in and out of the cab through the firewall connector. Relay and tanks of course are on the outside and selector and inertia switches are on the inside. The 86 has a similar layout, but wires are run through grommets in the firewall rather than a connector like the later models. I know the later model integrates the wiring into the dash wiring harness, but I think the bullnose trucks may have a separate harness because of all the variants? I will see if I can find some clues in my old cab if this weather ever warms up.

...and by the way, that harness is set to arrive today. Looking forward to getting it.

Link to comment
Share on other sites

  • Replies 260
  • Created
  • Last Reply

Top Posters In This Topic

...and by the way, that harness is set to arrive today. Looking forward to getting it.

Steve - Ray is a wonderful help, isn't he!

Ok, now that it appears that we have the wiring sorted, sorta, I've spent some time thinking through the interface from the 1990ish FDM sending units to the Bullnose fuel gauge. And, I think I have a plan that will work. It is based on an Arduino microcontroller, and probably an Uno since it only needs a source of power to work and has a USB connector for setup via a computer.

The resistance for the sending unit in the fuel delivery module will be 22.5 ohms when the tank is empty and 145 ohms full. One end of the resistor is tied to ground, so there will have to be a resistor from the 5v supply on the Arduino to the potentiometer/sending unit, meaning the circuit will go from the 5v supply through a resistor and connect there to both the analog input of the Arduino as well as to the potentiometer.

My calcs say that a 220 ohm pull up resistor will give .46v at empty and 1.99v at full, with a current flow of 21 and 14 milliamps respectively.

The resistance of the heating coil in the gauge is 12 ohms, and the Bullnose sending unit runs from 10 ohms at full to 73 ohms at empty. That means with the 5.4v source we would have 250 milliamps of current at Full and 60 mills at Empty. But if the digital output of the Arduino is turned on as a replacement for the sending unit it would be sinking 5.4 volts through 12 ohms, giving 460 milliamps. So we need 60/450 or 14% duty cycle to generate enough heat to register Empty, and 250/450, or 55% to give Full.

But that current is too much for the outputs of an Arduino, so we need another board (shield) to sink the current. Circuitar makes one called the MOSFET Nanoshield and it is $9.90. However, the Nano board probably doesn't fit the Uno, so I'll just need to find another one. In any event, shields plug into the Arduino (stack, actually) so no wiring is needed. Just connect the wire from the gauge to the screw terminal, connect the wire from the sending unit to an input pin, provide power, program it, and go.

Now we need to create an equation that gives 14% at .46v input, and 55% at 1.99vv input. Assuming a straight line then we need y=mx+b, and an online calculator gives y = .27X +.02. Plugging .464v into that equation gives 14.5%, and plugging 4.984v in gives 55.6%. Plenty close enough since none of the components we are playing with are that precise. Further, the transistor used to sink the current won't take the voltage fully to zero. But we now have an equation and can tune the "m" and "b" parts of it as this is implemented.

Thoughts? Drawings/schematics to make this clearer are in the works.

Link to comment
Share on other sites

Steve - Ray is a wonderful help, isn't he!

Ok, now that it appears that we have the wiring sorted, sorta, I've spent some time thinking through the interface from the 1990ish FDM sending units to the Bullnose fuel gauge. And, I think I have a plan that will work. It is based on an Arduino microcontroller, and probably an Uno since it only needs a source of power to work and has a USB connector for setup via a computer.

The resistance for the sending unit in the fuel delivery module will be 22.5 ohms when the tank is empty and 145 ohms full. One end of the resistor is tied to ground, so there will have to be a resistor from the 5v supply on the Arduino to the potentiometer/sending unit, meaning the circuit will go from the 5v supply through a resistor and connect there to both the analog input of the Arduino as well as to the potentiometer.

My calcs say that a 220 ohm pull up resistor will give .46v at empty and 1.99v at full, with a current flow of 21 and 14 milliamps respectively.

The resistance of the heating coil in the gauge is 12 ohms, and the Bullnose sending unit runs from 10 ohms at full to 73 ohms at empty. That means with the 5.4v source we would have 250 milliamps of current at Full and 60 mills at Empty. But if the digital output of the Arduino is turned on as a replacement for the sending unit it would be sinking 5.4 volts through 12 ohms, giving 460 milliamps. So we need 60/450 or 14% duty cycle to generate enough heat to register Empty, and 250/450, or 55% to give Full.

But that current is too much for the outputs of an Arduino, so we need another board (shield) to sink the current. Circuitar makes one called the MOSFET Nanoshield and it is $9.90. However, the Nano board probably doesn't fit the Uno, so I'll just need to find another one. In any event, shields plug into the Arduino (stack, actually) so no wiring is needed. Just connect the wire from the gauge to the screw terminal, connect the wire from the sending unit to an input pin, provide power, program it, and go.

Now we need to create an equation that gives 14% at .46v input, and 55% at 1.99vv input. Assuming a straight line then we need y=mx+b, and an online calculator gives y = .27X +.02. Plugging .464v into that equation gives 14.5%, and plugging 4.984v in gives 55.6%. Plenty close enough since none of the components we are playing with are that precise. Further, the transistor used to sink the current won't take the voltage fully to zero. But we now have an equation and can tune the "m" and "b" parts of it as this is implemented.

Thoughts? Drawings/schematics to make this clearer are in the works.

Bill - If you say so...:nabble_anim_crazy:

I confess that what you've written is well beyond my understanding of electronics and so I'd be of no use to you at this time as far as sharing my ideas. However, I will take time trying to understand what you've written.

By the way, Ray's harness just arrived. It is beautiful! What a gift!!!

Steve

Link to comment
Share on other sites

Bill - If you say so...:nabble_anim_crazy:

I confess that what you've written is well beyond my understanding of electronics and so I'd be of no use to you at this time as far as sharing my ideas. However, I will take time trying to understand what you've written.

By the way, Ray's harness just arrived. It is beautiful! What a gift!!!

Steve

Not that it will educate you on electronics, but here's what I'm talking about in a drawing format. The stuff in red is what I'd be adding.

Fuel_System_Interface_Capture.thumb.jpg.fcfd56789bcc5bd49c64c838f93772ff.jpg

 

Link to comment
Share on other sites

Not that it will educate you on electronics, but here's what I'm talking about in a drawing format. The stuff in red is what I'd be adding.

OK. I understand the drawing. You're creating a digital input and output so you can get tank level readings. Did your truck originally come with digital readings, or are you configuring the Arduino to do analog readings? Or did you upgrade to digital gauges? If you performed an upgrade, what brand did you use?

Very cool in any case!

Link to comment
Share on other sites

OK. I understand the drawing. You're creating a digital input and output so you can get tank level readings. Did your truck originally come with digital readings, or are you configuring the Arduino to do analog readings? Or did you upgrade to digital gauges? If you performed an upgrade, what brand did you use?

Very cool in any case!

Do you understand slang German? Jein. Yes and no. :nabble_smiley_whistling:

Actually, no Bullnose came with digital tank readouts. And that's not what I'm after. I'm just interfacing the later 1987+ sending unit with the Bullnose gauge. No one will ever know the Arduino is there as it'll tucked up under the dash where it can't be seen. (Unless I really do find other uses for it, as my nephew suggested.)

The Bullnose gauges are really thermometers. Yes, really. There's a 12 ohm heating element in them and a bi-metal spring that moves the hand. As current flows through the heating element the spring unwinds and the hand moves up in the scale. And, since that is a slow process we can pulse the current to the resistor thousands of times a second and the gauge won't know it is getting hit with a pulsing signal. (In mathematics terms, the heat gets "integrated".) All of the pulses will be 5v in "height", but the trick is to control their width, meaning how long the pulse is. Or, in the parlance "Pulse Width Modulation" - PWM.

So, that's what I'm going to do - control the width of the pulses so that the heat is exactly right to get the reading that reflects the amount of fuel in the tank. The Arduino will read the level by monitoring the voltage on the sending unit. Then it will calculate the correct duty cycle, meaning the "on" vs "off" time of the pulse, and send the pulses to the gauge's resistor.

From my calculations the right duty cycle for Empty, which is different than no reading, is 14% on. And the duty cycle for Full is 55% on. But since I can plug a computer into the Arduino I can modify the equation, which is for a straight line: Y = MX + B. So, if I need to tweak either M or B I can so and see the results immediately.

I'm sure that is "as clear as mud" as Dad would have said, but I'm pretty sure it will work. And, it gives us Bullnosers a way forward on the fuel systems. I'll happily share the code that I write, which will be very small, and the parts for the Arduino. Should be plug and play.

Link to comment
Share on other sites

Do you understand slang German? Jein. Yes and no. :nabble_smiley_whistling:

Actually, no Bullnose came with digital tank readouts. And that's not what I'm after. I'm just interfacing the later 1987+ sending unit with the Bullnose gauge. No one will ever know the Arduino is there as it'll tucked up under the dash where it can't be seen. (Unless I really do find other uses for it, as my nephew suggested.)

The Bullnose gauges are really thermometers. Yes, really. There's a 12 ohm heating element in them and a bi-metal spring that moves the hand. As current flows through the heating element the spring unwinds and the hand moves up in the scale. And, since that is a slow process we can pulse the current to the resistor thousands of times a second and the gauge won't know it is getting hit with a pulsing signal. (In mathematics terms, the heat gets "integrated".) All of the pulses will be 5v in "height", but the trick is to control their width, meaning how long the pulse is. Or, in the parlance "Pulse Width Modulation" - PWM.

So, that's what I'm going to do - control the width of the pulses so that the heat is exactly right to get the reading that reflects the amount of fuel in the tank. The Arduino will read the level by monitoring the voltage on the sending unit. Then it will calculate the correct duty cycle, meaning the "on" vs "off" time of the pulse, and send the pulses to the gauge's resistor.

From my calculations the right duty cycle for Empty, which is different than no reading, is 14% on. And the duty cycle for Full is 55% on. But since I can plug a computer into the Arduino I can modify the equation, which is for a straight line: Y = MX + B. So, if I need to tweak either M or B I can so and see the results immediately.

I'm sure that is "as clear as mud" as Dad would have said, but I'm pretty sure it will work. And, it gives us Bullnosers a way forward on the fuel systems. I'll happily share the code that I write, which will be very small, and the parts for the Arduino. Should be plug and play.

Gary,

Is there some way to implement this in reverse?

So that I can use my older senders with the gauge in the bricknose dash.

BTW, my old senders read 16.5 -160 ish.

The fact that the ohms are inverted had me scratching my head, along with the fact that due to the arc of the float arm the readings were non-linear.

I guess this could work with a controller board rather than a processor.

But my programming skills are nonexistent (IFTTT)

Link to comment
Share on other sites

Gary,

Is there some way to implement this in reverse?

So that I can use my older senders with the gauge in the bricknose dash.

BTW, my old senders read 16.5 -160 ish.

The fact that the ohms are inverted had me scratching my head, along with the fact that due to the arc of the float arm the readings were non-linear.

I guess this could work with a controller board rather than a processor.

But my programming skills are nonexistent (IFTTT)

Jim - I think the short answer is "Yes".

The 1987 EVTM shows your gauges are fed battery voltage and the sender just changes the resistance and, therefore, the current to ground. But an Arduino could be programmed to sink the same current, thereby playing like a resistor, depending on the input voltage from the Bullnose sender.

However, it will still have to be PWM, but I think it can be so fast that the inertia of the movement will do the integration.

The key will be in determining the equation. But do you really care to have "accuracy" in the middle of the range? We should be able to nail it at Full and Empty, but the easiest equation will be a straight line. However, if you could somehow measure the resistance as a function of the tank level then maybe we could come up with the equation.

But, let's see if this works for me and then move on to yours? Do you like the approach?

Link to comment
Share on other sites

Jim - I think the short answer is "Yes".

The 1987 EVTM shows your gauges are fed battery voltage and the sender just changes the resistance and, therefore, the current to ground. But an Arduino could be programmed to sink the same current, thereby playing like a resistor, depending on the input voltage from the Bullnose sender.

However, it will still have to be PWM, but I think it can be so fast that the inertia of the movement will do the integration.

The key will be in determining the equation. But do you really care to have "accuracy" in the middle of the range? We should be able to nail it at Full and Empty, but the easiest equation will be a straight line. However, if you could somehow measure the resistance as a function of the tank level then maybe we could come up with the equation.

But, let's see if this works for me and then move on to yours? Do you like the approach?

"MY" sender's are from '85-'86 bullnose, because they are the only two wire (non-pump) senders available with the bigger bung.

Just having the top and bottom quarter close to reality would be a vast improvement over below E when full and running empty at around 7/16.

I zero the odometer and try to switch or refill when I get to 150 miles.

The gauges seem almost like a stepper motor.

I'm not sure how they are damped, or what kind of magnet returns them to zero.

Maybe I could use a pot for the sink resistor and 'calibrate' the instrument that way?

 

Link to comment
Share on other sites

"MY" sender's are from '85-'86 bullnose, because they are the only two wire (non-pump) senders available with the bigger bung.

Just having the top and bottom quarter close to reality would be a vast improvement over below E when full and running empty at around 7/16.

I zero the odometer and try to switch or refill when I get to 150 miles.

The gauges seem almost like a stepper motor.

I'm not sure how they are damped, or what kind of magnet returns them to zero.

Maybe I could use a pot for the sink resistor and 'calibrate' the instrument that way?

We can put a capacitor on the output of the Arduino/ground side of the meter. An electrolytic would damp it handily.

And we should be able to nail any two points on the scale. Maybe Empty and Full would work well enough for the area just above/below. But, if not, you could plug into the Arduino and change the M and B parameters.

However, I'm not sure that I understand the "sink resistor". Do you mean what I've called the "pull up resistor" below? If so, you could put a pot there, but my concern is that it would confuse things. I think it is easier to play with M & B as it is easy and precise.

Basically it would be the same system as I'm planning but w/o the ICVR, and since resistance values of the sender are different the pull up resistor would be different as well.

Fuel_System_Interface_Capture.thumb.jpg.4ca460d1eaaccaa02c0369042f22e156.jpg

Link to comment
Share on other sites


×
×
  • Create New...