Paramotor bränslegivare och spårvidd (8 / 8 steg)
Steg 8: Arduino koden
/ * Bränslegivare med Pro Mini på tank utdata filtreras analog till 2 PM
D3-utgång till lågpassfilter
D5-1Mohm res till D6
D6 - centrum av cap Sensor
D7-1Mohm res till D8
D8-till positiva av referens kondensator
GND
Ställ in potentiometrar till centrum
Börja med Tom tank
Det finns ett antal generationer att upprätta
1. läsa Raw värdet av "bränsle" för att fastställa referens kondensatorn i steg 1
2. Ställ in "bränsle" för en tom tank
3. Ställ in "bränsle" för en full tank
Skrivet värden för Analogwrite spänner från 0 = 0volts till 255 = 5volts,
så vi siktar på en tom tank värdet av "bränsle" noll med inga lysdioder lyser och
en full tank värdet av "bränsle" 255 så vi får 5 volt och alla 10 lysdioder lyser
Som sagt i avsnittet sensor sonden är ganska väl dämpad mot skvalpar, men du kan alltid lägga lite avmoothing kod
En annan sak du kanske vill prova är att ha några uppmärksamhet högintressant effekt när bränslet är mycket låg, kan du använda din fantasi men en enkel alla blinka på och av skulle kunna ingå, således
om bränsle > 27
{analogWrite(3,fuel)
}
annat
{analogWrite (3,255);
dröjsmål 250;
analogWrite (3,0)
dröjsmål 250;
}
*/
#include < CapacitiveSensor.h >
CapacitiveSensor cs_5_6 = CapacitiveSensor(5,6); / / variabel kondensator som gjorts av två koncentriska aluminiumrör. Centrum är ansluten till D6 med 1Mohm ansluten mellan 5 & 6, yttre till marken.
CapacitiveSensor cs_7_8 = CapacitiveSensor(7,8); / / referens kondensator lika med variabel cap på tom. Ansluten till D8 med 1Mohm ansluten mellan 5 & 6, andra till marken.
int val = 0;
int var = 0;
int trim1 = 0; //trim värdena kommer att variera från 0-1023 från helt av (0v) till full på (5v), trim värdet kommer att vara 512 för mittläge (2.5V)
int trim2 = 0; //trim värdena kommer att variera från 0-1023 från helt av (0v) till full på (5v), trim värdet kommer att vara 512 för mittläge (2.5V)
int analogPin = 3; utgångsstiftet för spänning till visning via lågpassfilter
Denna del av koden har inte testats
Lämna i nästa avsnitt kommenteras ut tills normal ställa in är komplett
Om du har en icke symmetrisk tank där djupet inte är proportionerlig till volym, att ha inställt för symmetrisk tank,
ansluta till seriell övervaka och spela in bränsle för 1/10 fyllning av tanken
Infoga de som värdena för Q1-9 och avkommentera nästa avsnitt
/*
int Q1 =??; värdet av bränsle för 1/10 bränsletank, fyll tanken med 1/10 bränsle och läsa val på serial monitor
int Q2 =??; värdet av bränsle för 2/10 bränsletank, fyll tanken med 2/10 bränsle och läsa val på serial monitor
int Q3 =??; värdet av bränsle för 3/10 bränsletank, fyll tanken med 3/10 bränsle och läsa val på serial monitor
int Q4 =??; värdet av bränsle för 4/10 bränsletank, fyll tanken med 4/10 bränsle och läsa val på serial monitor
int Q5 =??; värdet av bränsle för 5/10 bränsletank, fyll tanken med 5/10 bränsle och läsa val på serial monitor
int Q6 =??; värdet av bränsle för 6/10 bränsletank, fyll tanken med 6/10 bränsle och läsa val på serial monitor
int Q7 =??; värdet av bränsle för 7/10 bränsletank, fyll tanken med 7/10 bränsle och läsa val på serial monitor
int Q8 =??; värdet av bränsle för 8/10 bränsletank, fyll tanken med 8/10 bränsle och läsa val på serial monitor
int Q9 =??; värdet av bränsle för 9/10 bränsletank, fyll tanken med 9/10 bränsle och läsa val på serial monitor
*/
void setup()
{
pinMode (analogPin, ingång);
Serial.BEGIN(9600);
}
void loop()
{trim1 = analogRead (0); / / läser spänningen av potentiometer 1 som ett värde 0-1023, 0v till 5v
trim2 = analogRead (3).
långa bränsle.
långa Ref;
bränsle = cs_5_6. capacitiveSensorRaw (200), //Raw värde av bränsle
Ref = cs_7_8. capacitiveSensorRaw (200);
I steg 1 att bestämma storleken på kondensatorn referens.
Börja med att läsa bränsle på den seriella monitorn för inte vätska på sonden och experimentera med olika kondensatorer för Ref att matcha, senare när //you är alla samlade och du når steg 6, avkommentera nästa rad
bränsle = fuel-Ref+920-(512+trim1);
Justera 920 i raden ovan tills bränsle står noll i följetong monitor för tank på tomma,
sedan på behållaren och avkommentera linjen nedan
bränsle = fuel/(10+(trim2/30)), //start med detta kommenteras ut, tills du har justerat den nolla fyllning behandlingen
Justera 10 i raden ovan att ge bränsle = 255 (eller annan justerat värde, se nedan) med Tankat fullt
på grund av toleransen av motstånd det är möjligt att LM3914 inte får allt exakt till 5volts, så du kanske vill experimentera
och ta reda på vilket värde ca 255 bara ger alla 10 lysdioder lyser
kan det vara lättare först att undvara (10+(trim2/30) och bara experiment för att få den figur som ger dig bränsle = 255 (5v)
Justera sedan hela divisor ekvationen (10+(trim2/30) att ge dig den siffran
att komma ihåg att trim2 kommer att variera i värde från 0-1023, men kommer att 512 om du har angett potten till centrum.
OREGELBUNDEN TANK YTTERLIGARE KOD
Om du använder oregelbundna tank koden avkommentera den här nästa avsnitt, men du kommer att behöva kommentera ut följande linje analogWrite(3,fuel);
/*
{
Val = bränsle.
om val < Q1
var = 0;
annars om val var = 27.
annars om val var = 60.
annars om val var = 80.
annars om val var = 105;
annars om val var = 130;
annars om val var = 160;
annars om val var = 185;
annars om val var = 210;
annat
var = 255;
}
analogWrite (3, var) ;// om du utnyttjar den oregelbundna tank skiss så kommentera bort nästa rad
*/
analogWrite(3,fuel); skriva det resulterande värdet av bränsle till digital stift 3.
Denna utgång ska förmedlas genom en låg passera RC-filter med hjälp av 5kohm och 10uF.
{
Serial.Print(Fuel);
Serial.println ("bränsle"); //debug bränsle
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");
}
fördröjning (100);
}