Jump to content
Bullnose Forums

EFI For Big Blue


Recommended Posts

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.

Sorry, I didn't mean to hijack your thread.

Fixing my gauges is the least of my problems right now.

Link to comment
Share on other sites

  • Replies 260
  • Created
  • Last Reply

Top Posters In This Topic

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.

Gary, do you know the reason for Ford's 5.4V gauge circuit voltage? FWIW, the change to 12V was during the 1956 model year and it was obviously easier to add the ICVR then change all the gauges from chassis #xxxx on, since it worked fine, they used if for the next 31 years (1956-1986). The newer gauges are more like GM and Chrysler's older ones which would swing wildly on a partial tank, unlike Ford's which would gradually climb the longer they were on. If I had known there was a good solution to weird gauges, I might have kept my Tokyo by night instrument cluster in the convertible.

Link to comment
Share on other sites

Gary, do you know the reason for Ford's 5.4V gauge circuit voltage? FWIW, the change to 12V was during the 1956 model year and it was obviously easier to add the ICVR then change all the gauges from chassis #xxxx on, since it worked fine, they used if for the next 31 years (1956-1986). The newer gauges are more like GM and Chrysler's older ones which would swing wildly on a partial tank, unlike Ford's which would gradually climb the longer they were on. If I had known there was a good solution to weird gauges, I might have kept my Tokyo by night instrument cluster in the convertible.

Jim - You aren't hijacking anything. Happy to think about other uses for the interface. In fact, I was just wondering about using it to drive the ammeter - as an ammeter. One issue we have with our ammeters is that the shunt doesn't know outflow from inflow, so the discharge scale has to be the same as the charge scale. But if we put a 3G alternator in then the capacity to charge has gone up to 90 to 160 amps while the discharge stays roughly the same. So, if we size the shunt to go full scale on the ammeter when charging you'll never see the ammeter move should the alternator fail.

What if we used an Arduino to move the ammeter and it monitored two different shunts? We could set the charge scale to fit the alternator, and the discharge scale could be set so that failure of the ammeter would get your attention. (And, we could light a warning light somewhere.)

Bill - I was aware of why Ford did it. However, I'm not sure it is fair to say 5.4V. That's my number based on what it took to make three different Bullnose gauge setups work properly. You may remember, but I used the resistors that Ford recommended for calibrating gauges to come up with the voltage needed to make the gauges work correctly. And, 5.4 was it.

Link to comment
Share on other sites

Gary, do you know the reason for Ford's 5.4V gauge circuit voltage? FWIW, the change to 12V was during the 1956 model year and it was obviously easier to add the ICVR then change all the gauges from chassis #xxxx on, since it worked fine, they used if for the next 31 years (1956-1986). The newer gauges are more like GM and Chrysler's older ones which would swing wildly on a partial tank, unlike Ford's which would gradually climb the longer they were on. If I had known there was a good solution to weird gauges, I might have kept my Tokyo by night instrument cluster in the convertible.

Of course I'm going to throw my monkey wrench into the works and I apologize in advance for my technobabble.

The IVR in the early Ford trucks up to 1986 is not really a 5 volt regulator. It would be more accurately described as a pulse width power regulator. More simply, it is a flasher. It runs at approximately 1hz rate with about a 30 to 40% duty cycle. If you care to do a power calculation, 5 VDC contains about 42% of the power that 12VDC contains. The gauges are a movement that move the needle proportional to the current pulses flowing through the gauge. They react quite slowly, so you do not see the 1hz pulses on the needle.

So, the gauge sender presents a variable current sink ranging from 70 ohms empty to 10 ohms full. The meter movement itself represents about 13 ohms by my measurement. When you do the math, the current through the meter becomes about 150 ma for empty to 500 ma for full. It is quite difficult to measure with an ammeter because of the pulsing supply voltage, (which has a peak voltage = to battery voltage). The later Ford FDM's have a resistance range from 16 ohms empty to 165 ohms full.

I did a napkin sketch of what I feel would be a simple solution. Basically, I figured on using an NPN transistor as a current sink for the gauge. A 10 ohm resistor provides a limit to the current sink equal to the original 10 ohm reading from the 86 down sender. A 0.1 mf capacitor filters any noise out of the transistor. The 92 and up FDM sender is used as a variable voltage divider which will range from about 1V empty to about 5 volts full. This signal is applied to a resistor which drives the transistor B/E junction. The transistor will increase C/E current proportional to B/E current and I will assume a gain of 1000. This value may change depending on the actual gain of the transistor and must be of a value that allows the transistor to work in it's linear range. I figure 25K will be close, but I have not yet built a prototype. The best method to pick the value would be to select it for an accurate reading at "Full".

An Arduino would be an interesting solution, but I think a single transistor would be far simpler.

So, sorry if I bored anyone to tears, but this is what I used to do back in the previous millenium.

Bullnose_gauge.jpg.56b4f27a6dc620aa6030d47332b991ca.jpg

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

Glad to help Steve.

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,

Same circuit would work for bullnose senders with newer gauges. Would have to rework a few resistor values, but the circuit effectively reverses the slope of the sender resistance.

By the way, resistance seems to be pretty linear to fuel tank float position.

Link to comment
Share on other sites

Of course I'm going to throw my monkey wrench into the works and I apologize in advance for my technobabble.

The IVR in the early Ford trucks up to 1986 is not really a 5 volt regulator. It would be more accurately described as a pulse width power regulator. More simply, it is a flasher. It runs at approximately 1hz rate with about a 30 to 40% duty cycle. If you care to do a power calculation, 5 VDC contains about 42% of the power that 12VDC contains. The gauges are a movement that move the needle proportional to the current pulses flowing through the gauge. They react quite slowly, so you do not see the 1hz pulses on the needle.

So, the gauge sender presents a variable current sink ranging from 70 ohms empty to 10 ohms full. The meter movement itself represents about 13 ohms by my measurement. When you do the math, the current through the meter becomes about 150 ma for empty to 500 ma for full. It is quite difficult to measure with an ammeter because of the pulsing supply voltage, (which has a peak voltage = to battery voltage). The later Ford FDM's have a resistance range from 16 ohms empty to 165 ohms full.

I did a napkin sketch of what I feel would be a simple solution. Basically, I figured on using an NPN transistor as a current sink for the gauge. A 10 ohm resistor provides a limit to the current sink equal to the original 10 ohm reading from the 86 down sender. A 0.1 mf capacitor filters any noise out of the transistor. The 92 and up FDM sender is used as a variable voltage divider which will range from about 1V empty to about 5 volts full. This signal is applied to a resistor which drives the transistor B/E junction. The transistor will increase C/E current proportional to B/E current and I will assume a gain of 1000. This value may change depending on the actual gain of the transistor and must be of a value that allows the transistor to work in it's linear range. I figure 25K will be close, but I have not yet built a prototype. The best method to pick the value would be to select it for an accurate reading at "Full".

An Arduino would be an interesting solution, but I think a single transistor would be far simpler.

So, sorry if I bored anyone to tears, but this is what I used to do back in the previous millenium.

Ray - That isn't a monkey wrench. It is an alternative. A monkey wrench would say my approach won't work. You didn't say that at all.

On the ICVR, do you remember my thread on FTE re ICVR Thoughts & Observations? I was able to measure things with a DVM as I installed a true voltage regulator in place of the "flasher" - and that is exactly the right term. So I had steady state and could measure it.

Anyway, your solution will probably work great. I know how transistors work, but I don't understand the math so will have to assume you can nail it.

However, I see the flexibility of the Arduino and, given my programming and math background, I am sure it'll be plenty accurate. And, changing parameters will be a piece of cake - as opposed to soldering in new resistors. :nabble_smiley_wink:

Link to comment
Share on other sites

Ray - That isn't a monkey wrench. It is an alternative. A monkey wrench would say my approach won't work. You didn't say that at all.

On the ICVR, do you remember my thread on FTE re ICVR Thoughts & Observations? I was able to measure things with a DVM as I installed a true voltage regulator in place of the "flasher" - and that is exactly the right term. So I had steady state and could measure it.

Anyway, your solution will probably work great. I know how transistors work, but I don't understand the math so will have to assume you can nail it.

However, I see the flexibility of the Arduino and, given my programming and math background, I am sure it'll be plenty accurate. And, changing parameters will be a piece of cake - as opposed to soldering in new resistors. :nabble_smiley_wink:

Yup, that FTE thread sure nails the IVR. Before my time at FTE though, thanks for the link.

Possibly the best way to illustrate how that IVR works is with a test light.

I do intend to breadboard my idea at some point. Problem is my component level days are way back there and a lot of my junkbox parts have disappeared over the years. Electronic component stores have gone the way of the dinosaur and I'm living in a small center. Nearest store is a 1 1/2 hour ride away and they don't stock much. Looks like Digikey or Mouser are the way to go today.

Still, I think I could adapt a couple variable resistors to set full and empty scale. Becomes something of a balancing act using analog circuits like this, but they should be stable. Could have gone whole hog old school here and used vacuum tubes! Nah, bad idea. (German slang, "dumkopf")

Link to comment
Share on other sites

Yup, that FTE thread sure nails the IVR. Before my time at FTE though, thanks for the link.

Possibly the best way to illustrate how that IVR works is with a test light.

I do intend to breadboard my idea at some point. Problem is my component level days are way back there and a lot of my junkbox parts have disappeared over the years. Electronic component stores have gone the way of the dinosaur and I'm living in a small center. Nearest store is a 1 1/2 hour ride away and they don't stock much. Looks like Digikey or Mouser are the way to go today.

Still, I think I could adapt a couple variable resistors to set full and empty scale. Becomes something of a balancing act using analog circuits like this, but they should be stable. Could have gone whole hog old school here and used vacuum tubes! Nah, bad idea. (German slang, "dumkopf")

I like the 'scope trace of the ICVR. Gross!

As for the light, I'm not sure that it wouldn't just be a blur if it is an incandescent light. Perhaps an LED would show something.

I used to have a Heathkit powered breadboard and an open account at Digikey, but I gave the breadboard and all of my stock to my nephew - the one that I'm sure will mentor me on Arduinos. :nabble_smiley_wink: I'm all for buying it in, assembled, and getting on with things - although not for many months to come. But, if you can do it then GREAT!

Link to comment
Share on other sites

I like the 'scope trace of the ICVR. Gross!

As for the light, I'm not sure that it wouldn't just be a blur if it is an incandescent light. Perhaps an LED would show something.

I used to have a Heathkit powered breadboard and an open account at Digikey, but I gave the breadboard and all of my stock to my nephew - the one that I'm sure will mentor me on Arduinos. :nabble_smiley_wink: I'm all for buying it in, assembled, and getting on with things - although not for many months to come. But, if you can do it then GREAT!

I already had the book Programming Arduino - Getting Started with Sketches and read again a large part of it last night. So today I wrote this "sketch", which is Arduino for "program". I am not saying it is perfect, but I think it is close, and it is all the programming that is needed to do the interface. I think it really is that simple.

Having said that, I'll put I/O to a USB-attached computer into the sketch to output the voltage reading taken in from the sending unit and the duty cycle to be written via PWM. That way it'll be easy to check to see what is going on. But I wanted you to see the simplicity of the sketch w/o the I/O, the base calculations.

Anything after the two slashes (//) is a comment that will be ignored by the computer (compiler). But they are there for our edification. And note the two variables of "m" and "b". These are our knobs to twist in order to dial in the equation.

int outputPin = 3; //Establishes an integer variable that is used for the output pin #

int analogPin = 0; //Establishes an integer variable that is used for the input pin #

float m=.09; //Establishes “m” as a floating point variable and sets its value

float b=.1; //Establishes “b” as a floating point variable and sets its value

void setup() //Starts the setup section

{

pinMode (outputPin, OUTPUT) ; //Sets the pin called outputPin as an output

}

void loop() //Starts the loop section. This gets run continuously.

{

int reading = analogRead (analogPin); //Reads the sending unit & returns a value between 0 & 1023, with 1023 = 5v

float voltage = reading / 204.6; //Converts the reading to the actual voltage of the input

float dutyCycle = voltage * m + b; // Calculates the duty cycle needed to power the gauge

int result = dutyCycle * 255; //Converts the duty cycle to the output range of 0 – 255

analogWrite (outputPin, result); //Starts pulsing the output at the calculated duty cycle

}

Link to comment
Share on other sites


×
×
  • Create New...