Introduction: Paramotor Fuel Sensor and Gauge

Here is a home built capacitive fuel sensor for a paramotor. It is based on a sensor made from an aluminium tube and rod, and arduino Microcontroller , an LM3914 bargraph chip and 10 superbright LEDs. It has been built for a Parajet Macro and the display in the Parajet throttle handle, specifically, but will modify for different makes.

You will need to be averagely handy, be able to solder some small electronic components and be familiar with the Arduino platform.


I must from the outset acknowledge that this Instructable is a developement of "Building a Capacitive Liquid Sensor" by VadimS
Thanks Vadim!

Please note that if you decide to build this fuel sensor you do so entirely  at your own risk. The author accepts no liability whatsoever for any injury or loss  suffered by you or any third party
if you don't think you are competent to undertake the build or understand the risks posed you should not proceed to build.

 

Step 1: Making the Sensor

The sensor is basically a variable capacitor whose capacitance changes as the liquid fills the gap between  the tube and the rod. Because it is a little temperature sensitive a reference capacitor of similar size is used to help negate the effect of temperature, the principle being that both capacitors will be affected similarly and by reading the difference we rule out the temperature effect
They are quite resilient to "tank slosh" by virtue of the fuel only getting  between the tubes via a 2mm hole, so its inherently damped.

Follow the attached drawing which should be self explanatory.

Once made you need to mock up the sensor . Jump forward to the Microcontroller section and set the Pro Mini up with the sensor input circuit ( you dont need the output circuit) so you can do all this on a breadboard.
1. Get the sensor to the correct length it will need to be in the tank
2. Load the sketch and connect the board to the Serial Monitor.
3. Follow the instructions in the sketch notes and ascertain the "raw" capacitance value of the empty , ie dry probe , dont be touching any part of it.
4. Use this raw value to choose the value of the "Ref" capacitor by trial and error.
5. Finish off the probe by fitting the Ref capacitor

Step 2: Making the Handle Display

Dismantle the Parajet throttle handle. The fake carbon face plates are simply push fit out of the anodised aluminium body.
Check there is space in the base of the handle to fit the LM3914 chip. You may need to tidy up the way the throttle cable terminates.
If you are going to do a proper job of the installation you are going to have to do a full dismantle of the cable, including removing and desoldering the push buttons so you can run the display cable up the throttle sleeving.
If you don't want to do that you can simply run the 3 core flat servo type cable up the outside, but you may have doctor the faceplate to get it to exit. The hole where the throttle cable comes in is too tight to get anything else through
You will need to remove about 0.5mm depth of material off the top of the cable end receiver to give space for the wires to pass across. See the bright area of bare metal in the photo where I have dremelled the ally away

Step 3: Soldering the LM3914

This is a fiddly bit of work, which needs to be kept neat and tight so it will fit in the handle. It will need you to solder direct to the chip tabs.
LM3914 Data Sheet

1 Start by snipping off the legs of the chip right down to base tabs
2 Tin all the tabs
3 Now solder the links,resistors and wires according to the Throttle part of the appended diagram . Keep the resistors tight to the back of the chip and ensure there are no shorts. It's all got to fit in that slot next to where the throttle cable comes in as marked by the green arrow.
4 Now drill a nice arc of evenly spaced holes in the face plate for the leds. You need to keep them fairly tight to the top edge but be careful not to foul the overhang of the plate into the rebate in the handle. Keep the holes tight so the leds are a tight fit. Glue them in place with a little hot glue. I wouldn't use cyano, it would be a devil to remove them if you have to.
5 Now also snip the the tails of the leds right back to within 2mm of the lamp. Arrange the anode tails towards the outside and solder them all together with a linking wire, which you connect to live +5v.
6 Now solder all the wires from the chip to the cathode rail of each led being careful to observe the correct order
7 The important thing in this section is to keep everything within a couple of mm of the back of the plate and clear of the throttle pivot point so none of the wiring fouls the throttle action. It will all fit!
8 You should test your work here. If you connect the chip to a 5v supply and connect the signal wire via a trim potentiometer 0-5v you can test the lights they should light and stay on  sequentially as you vary the signal voltage from 0 to 5volt
9.If it all works fine hot glue the chip onto the face plate in just the right place so it goes into the handle recess, arrange all the cables nice and flat on the back of the face plate and tape down. Assemble and check everything is clear of the throttle acton.
10. If you want to use this display with some other sensor arrangement you just need to get your sensor to output 0-5volts, the 10 leds will light progressively as the voltage ranges. It is, effectively a 0-5v volt meter!

Step 4: The Microcontroller

This is what converts the signal from the sensor into 0-5v output that is sent to the display. 
Arduino Pro Mini board

This where you need to be familiar with Arduino. If you're not you will need to stop altogether or stop and find out about it. That's how I came to it , I came across it in some instructable or other and just started to use it, it's incredibly versatile and actually pretty straight forward. There are millions of sketches ( programmes) written for all sorts of systems and all my projects start with some code somebody has written, which I then adapt . It's all open source, so that's OK, it's just good practice to acknowledge your source.
My sketch for this application is in the end step, copy and paste it into the Arduino application 

The hardware for this section is an
Arduino Pro Mini
a couple of 1Mohm resistors,
a resistor and capacitor for a low pass filter to convert the PWM output from the Arduino to a 0-5v signal,
and 2 10kohm trim potentiometers that are used for fine adjustment.

The capacitive sensor connects to D6
The Reference sensor connects to D8
D5 to D6 and D7 to D8 are bridged with 1Mohm resistors
The output PWM will come from D3 to the low pass filter 
2No 10kohm Potentiometers are connected to A0 and A3 for the trimmers.

Probably best to solder pins to the board and put it all on a small piece of Proto-board.
Follow the circuit diagram for Arduino Pro Mini 5v and house it all in a little enclosure on top of the fuel tank as close as possible to the sensor. Try to run the shielded coaxes right into the enclosure and keep their length as short as possible. These are carrying very small signals that will be susceptible to interference.

Step 5: The Power Supply

You will need a regulated 5v power source for this project I chose a 2A one (L78S05CV)

because I have other stuff to power, but if all you are feeding is this display, then the 1A version will be fine. Follow the diagram for the voltage regulator, tantallum bead capacitors will be best for this application.
This wants to be up near the battery with all the rest of the other paramotor electrics, tap the input into the appropriate battery supplies in the electrics panel. You will probably have a LIPO 3S turning out 11.8 v, but the regulator will deal with anything from about 7v to more then 18 v. Make sure you fuse it appropriately.
If you want to use this on a machine with no onboard electrics use a 2S Lipo  7.4v a small 800mah one will give you more than 2 hrs running time and will weigh only about 50g

Step 6: Getting It Working

I used 22g good quality silicone Futaba type  3- core flat flex to join all the pieces together

For Commissioning you will need to follow the Arduino sketch notes quite carefully.
Go back to Step 1 and recheck the parameters on the Serial monitor, you may need to re-run that procedure.
If all OK, with the tank empty use Trim 1 to just turn the first LED off. 
Then fill the tank with fuel and  adjust trim 2 to just turn on the  tenth led.

That should be it! Happy Flying.

If you have an odd shaped tank where depth is not proportional to  capacity, I have inserted some code into sketch that will write a specific analog output  ( voltage) for given depths on the sensor, but commented it out so it would need to be activated. The notes say what to do.

Step 7: Parts

12mm aluminium tube, 6mm aluminium rod, 12mm compression connector from B&Q

From eBay and elsewhere
 Arduino Pro Mini 5v 
LM 3914 bargraph chip 
L78S05C voltage regulator
.33uF, 0.1 uF, 10uF capacitors
2x1Mohm, 5kohm,620ohm, 1.8kohm, resistors
10kohm pots. 
10No Superbright Red Leds or any other colour you fancy( other colours may need slightly different  resistors
Futaba 3 core.  
Fine multi strand alarm cable, stripped for wiring
You will also need a means of uploading sketches to your Pro Mini, which if this not your first foray into Arduino you will most likely have
if not you need this FTDI Breakout board

Step 8: The Arduino Code


/*Fuel Sensor with Pro Mini at tank output filtered analog to 2nd PM
D3-output to Low pass filter
D5-1Mohm res to D6
D6- Centre of cap Sensor
D7-1Mohm res to D8
D8-to positive of Reference capacitor
GND
Set potentiometers to centre
Start with empty tank

There are a number of stages in setting up
1. Reading the Raw value of "fuel" to ascertain the reference capacitor in Step 1
2. Setting "fuel" for an empty tank
3. Setting "fuel" for a full tank
Written values for Analogwrite range from 0=0volts to 255 =5volts,
so we are aiming for an empty tank value of "fuel" of zero with no leds lit and 
a full tank value of "fuel" of 255 so we get 5 volts and all 10 leds lit
As I said in the sensor section the probe is quite well damped against sloshing, but you could always add a bit of smoothing code
Another thing you might like to try is to have some attention grabbing effect when the fuel is very low, you can use your imagination but a simple all flashing on and off could be included, thus

if fuel>27
{analogWrite(3,fuel)
}
else 
{analogWrite (3,255);
delay 250;
analogWrite (3,0)
delay 250;
}

*/


#include <CapacitiveSensor.h>

CapacitiveSensor   cs_5_6 = CapacitiveSensor(5,6);// variable capacitor made of two concentric aluminium tubes. Centre connected to D6 with 1Mohm connected between 5&6, outer to ground.

CapacitiveSensor   cs_7_8= CapacitiveSensor(7,8);// Reference capacitor equal to variable cap on empty.Connected to D8 with 1Mohm connected between 5&6, other to ground.

int val=0;
int var=0;
int trim1=0;//trim values will range from 0-1023 from full off (0v) to full on (5v), trim value will be 512 for centre position (2.5v)
int trim2=0;//trim values will range from 0-1023 from full off (0v) to full on (5v), trim value will be 512 for centre position (2.5v)
int analogPin=3; // the output pin for voltage to Display via low pass filter

//This section of code has not been tested
//Leave the next section commented out till normal set up is complete
//If you have a non symetrical tank where depth is not proportional to volume, having set as for symetrical tank,
//connect to Serial monitor and record fuel for each 1/10 fill of the tank
// insert those as the values for Q1-9 and uncomment the next section
/*
int Q1=??; //value of fuel for 1/10 fuel capacity, fill tank with 1/10 fuel and read val on serial monitor
int Q2=??; //value of fuel for 2/10 fuel capacity, fill tank with 2/10 fuel and read val on serial monitor
int Q3=??; //value of fuel for 3/10 fuel capacity, fill tank with 3/10 fuel and read val on serial monitor
int Q4=??; //value of fuel for 4/10 fuel capacity, fill tank with 4/10 fuel and read val on serial monitor
int Q5=??; //value of fuel for 5/10 fuel capacity, fill tank with 5/10 fuel and read val on serial monitor
int Q6=??; //value of fuel for 6/10 fuel capacity, fill tank with 6/10 fuel and read val on serial monitor
int Q7=??; //value of fuel for 7/10 fuel capacity, fill tank with 7/10 fuel and read val on serial monitor
int Q8=??; //value of fuel for 8/10 fuel capacity, fill tank with 8/10 fuel and read val on serial monitor
int Q9=??; //value of fuel for 9/10 fuel capacity, fill tank with 9/10 fuel and read val on serial monitor

*/



void setup()
{
  pinMode(analogPin, INPUT);
Serial.begin(9600);
}
void loop()
{ trim1=analogRead (0);// reads the voltage off the potentiometer 1 as a value 0-1023, 0v to 5v
trim2=analogRead (3);



  long fuel;
   long Ref;
  fuel = cs_5_6.  capacitiveSensorRaw (200);//Raw value of fuel
  Ref = cs_7_8.  capacitiveSensorRaw (200);
 
 
// For  Step 1 to determine the size of the reference capacitor.
//Start by reading fuel on the serial monitor for no liquid on probe and experiment with different capacitors for Ref to match, later when //you are all assembled and you reach Step 6, uncomment the next line


//fuel = fuel-Ref+920-(512+trim1);

//Adjust 920 in line above until fuel reads zero in the serial monitor for tank on empty,
//then fill the tank and uncomment the line below
 
//fuel = fuel/(10+(trim2/30));//start with this line commented out, until you have adjusted the zero fill reading

//Adjust 10 in line above to give fuel =  255 ( or other adjusted value , see below) with tank full
// because of tolerance of resistors it is possible that the LM3914 may not be ranging exactly to 5volts, so you may wish to experiment
//and ascertain what value around 255 just gives all 10 leds lit
//it may be easier first to dispense with (10+(trim2/30) and just experiment to get the figure that gives you fuel=255 (5v)
// Then adjust the whole divisor equation (10+(trim2/30) to give you that figure
// remembering that trim2 will range in value from 0-1023, but will be 512 if you have set the pot to centre.
 
  //IRREGULAR TANK ADDITIONAL CODE
// if you are using the irregular tank code uncomment this next section, but you will need to comment out  following line analogWrite(3,fuel);
/*
  {
    val=fuel;
if val< Q1
var=0;
else if val var=27;
else if val   var=60;
else if val   var=80;
else if val   var=105;
else if val   var=130;
else if val   var=160;
else if val   var=185;
else if val   var=210;
else
  var=255;

}

analogWrite (3,var);// if you are utilising the irregular tank sketch then comment out the next line
*/ 
 
  analogWrite(3,fuel); // write the resulting value of fuel to digital pin 3 .
 
  //This output to be run through a low pass RC filter, using 5kohm and 10uF.
{
Serial.print(fuel);
Serial.println("Fuel");//debug fuel
Serial.print(Ref);
Serial.println("Ref");//debug Ref
Serial.print(var);
Serial.println("Var");//debug Var
Serial.print(trim1);
Serial.println("T1");
Serial.print(trim2);
Serial.println("T2");
}

  delay (100);
}


Comments

author
Poobala krishnan (author)2017-03-15

I have constructed this sensor..

but i can't get that RG58 coax cable...any other alternative?

and another question is ..

will this work on kerosene?..

author
antoninopanella (author)2016-01-16

hello, great instructable

I built the sensor exactly like yours, both steel and aluminum. The only difference is that non-use shielded cables.

I run the test in a water bottle.

My problem is that if I apply a resistance 1mhom, the instruction capacitivesensorraw () always returns -2

Only if I apply a very low resistance between the two pins or even directly connect the two pins without resistance values I get very, very low: if the sensor is filled with water I get about 50, but as soon as the water level is 3/4 I get the l value 0.

I happen to know why?

Sorry for my English and thanks

author
cclvirtual (author)2015-02-26

Hellow.
I.m trying to made it for my paramotor, but can't understand the connection for the "reference" capacitance.
Can you explain.me this a little?
Maybe you have a picture of it?
As I understood, really only need the "inner" connection to have a level value, but uses the outer one to compensate temp. differences, is'it?
In that point is where I don't see the "outer" connection.
Thousends thanks!

author
Ppuxley (author)cclvirtual2015-02-27

Just fix the reference capacitor to brass fitting at the top of the sensor on the outside of the tank. It just needs to be somewhere where it is at the sam temperature as the sensor
https://www.dropbox.com/sc/eh97o7xezfkowt9/AAC64oqmAE1vcxCjMHLsLDuea

It's under the heat shrink at the top of the probe

author
PeterG20 (author)2015-01-30

This is a beautiful 'ible, but one thing stands out to me: You've got the output of the 7805 going to the "raw" input of the Arduino, rather than the Vcc in. The onboard regulator of the Arduino is therefore causing a voltage drop so the 'duino isn't getting a full 5V in. Are you sure that's what you intended?

author
Ppuxley (author)PeterG202015-01-30

It's some time ago so I've rather forgotten, but looking at it again I think it's just that the diagram is a bit unclear, the output from the LC doesn't connect to the Raw, it goes straight to the two pots.

author
ilyatous (author)2014-11-12

why the arduino is used here ?
the LM3914 has its own comparators, i guess ne need for the arduino.

good job though.

author
epicali (author)2014-07-05

can the capp be replaced with a potentio meter ? that would measure the resistance based on the level then the arduino will receive the signal and turn it on the led ?

author
Ppuxley (author)epicali2014-07-07

Yes, you could use something like the Milone e-tape
http://www.adafruit.com/products/464
The arduino sketch would obviously need re-writing

author
pastle (author)Ppuxley2014-08-12

Would that work on a paramotor or would you have to code some dampening into the readings due to the fuel moving around? I have heard that petrol companies tend to change the content of ethanol in their fuel which gives a big variance in capacitance meaning a re-calibration is required. I have also looked at inline sensors but my engine has a return to the fuel tank to would also miss-read.

author
jimsims (author)2014-03-20

Excellent structable. I am interested in measuring and logging the tide level in a saltwater canal. Do you think your concept would work for that? I would use stainless steel for the probe. I had planned to use pressure differential but I think I like the capacitance idea better.

author
Ppuxley (author)jimsims2014-03-20

I think your problem will be that the saline solution will conduct and therefore the two tubes will not act as a capacitor.
Same reason it is important in my model that you ensure the tubes are thoroughly free of metal swarf.
If you were to coat the immersed probe surfaces with an insulator it would then work as a capacitor again
But you could look at a floating magnet in a tube with halleffect sensors fixed along its length. You would of course get discreet readings for a range of heights between sensors, rather than the continuous output from a capacitive sensor, but if your display uses the bargraph chip then you get that anyway.

author
jimsims (author)Ppuxley2014-03-20

Thanks for the reply. There can be as much as a 2 foot difference between low tide and high tide, more if storm surge. There aren't enough arduino pins to use hall effect or even float switches to get the resolution I want. I may experiment with insulated rods or go the pressure sensor route. Differential pressure sensor MPX2010DP outputs anolog signal and can handle fresh water up to 1+ meters deep (thanks to the book Practical Arduino by Jonathan Oxer and Hugh Blemings). Any other ideas out there in the community?

author
Alderin (author)jimsims2014-03-24

My old VW fuel level sensor uses a twisted square rod and a float (that is held non-rotating) with a square hole. As the float rises or falls (float pressure is countered with a spring), the square rod is forced to rotate. In the VW this rotates a cable to the needle in the dash, but a newly built version could rotate a POT or even a slotted wheel for optical reading. This has the advantage of no submerged electronics (original intent, I'm sure), but a more complex and moving-parts physical setup.

author
jknickel (author)2014-03-19

Actual fuel sensors on aircraft have an insulated probe, so there is no exposed metal going into the tank. It might be wise to have the probe coated with a polyurethane or epoxy paint to prevent any exposed metal in the tank. The reason for this if there is a fault, there is no risk of ignition of the fuel. Particularly with volatile gasoline. Jet fuel has a much lower risk, but they still have this probes insulated. The one issue though with this is that the capacitance change is much smaller.

Another idea which I have been playing with is to stick conductive tape (copper or aluminium) on the outside of the tank and use that as the sensor. This has the advantage of not requiring any plumbing or drilling holes into the tank. This will obviously only work with plastic tanks.

author
Ppuxley (author)jknickel2014-03-19

Thanks for the comments. I did think about the ignition risk but having read a number of articles and seen what is available commercially, considered the risk negligible.
See this article, which also influenced my design
http://www.rst-engr.com/rst/articles/KP89SEP.pdf
This is a commercially available probe for PPG
http://www.flyhenry.cz/images/stories/100_1859_1.JPG
Your idea on conductive tape sounds interesting. I experimented with both IR and LDR sensors as a non intrusive solution, fixed outside the tank and although they worked on the bench, they were too unstable in use.
Another possible idea would be to use the pressure tape, but I didn't want to purchase and I could see how to effectively place inside the tank.
http://www.milonetech.com/Purchase_eTape.html

author
jknickel (author)Ppuxley2014-03-19

I think the ignition risk is only there in certain fault conditions. Working from 5V does almost remove that risk. I have used this principle on model aircraft, and I work in the aviation industry, including vehicle monitoring systems, one of the sensors is the fuel level sensor. Thanks the for instructable.

author
ChefLamont (author)2014-03-19

Very nice idea and design. I would think about using different color LEDs related to how full the tank is. Green for the top half, yellow from half to quarter, and red from quarter to empty, or something like that. Then there is an even stronger visual indicator.

Great build!

author
Ppuxley (author)ChefLamont2014-03-19

Yes, I was going to do that but decided not to I the end, for no particular reason. The other thing I will do, though, is include some code that sequences or flashes all the leds when les than 1/10th full.
Thanks for your comments

author
tkim1962 (author)2014-03-18

agree with Orkekum,,, for external semi clear tank use mirrors to view fuel tank

author
Ppuxley (author)tkim19622014-03-18

Yep. That's what I use at the moment

author
Orkekum (author)2014-03-18

Hmm, similar could be used for other places, needing fuel gauge, example pimped mopeds, boats or such fun!

author
throwapot (author)2014-03-17

very very cool.

author
Ppuxley (author)throwapot2014-03-17

Thanks, Throwapot. Born out of very very nearly running out of fuel on my third flight. If you're not a paramotor pilot you may not know that you cannot see your fuel tank!

About This Instructable

49,726views

174favorites

License:

More by Ppuxley:Simple CHT/EGT Readout for ParamotorParamotor Fuel Sensor and Gauge
Add instructable to: