Stap 8: De Code van de Arduino
/ * Brandstof Sensor met Pro Mini aan tank uitgang gefilterd analoog tot 2e uur
D3-output naar Low-pass filter
D5-1Mohm res naar D6
D6 - centrum van cap Sensor
D7-1Mohm res aan D8
D8-tot positieve van referentie condensator
GND
Set potentiometers centrum
Beginnen met een lege tank
Er zijn een aantal fasen in het opzetten van
1. het lezen van de ruwe waarde van "brandstof" om na te gaan van de condensator van de referentie in stap 1
2. het opzetten van "brandstof" voor een lege tank
3. het opzetten van "brandstof" voor een volle tank
De waarden voor Analogwrite variëren van 0 = 0volts naar 255 geschreven = 5volts,
dus we naar een lege tank waarde van "brandstof" nul met geen leds verlicht streven en
de waarde van een volle tank van "brandstof" van 255 zodat we 5 volt krijgen en alle 10 leds verlicht
Zoals ik al zei in de sectie van de sensor de sonde is heel goed gedempt tegen klotsen, maar u kunt altijd een beetje smoothing code toevoegen
Een ander ding dat je zou willen proberen is om enige aandacht grijpen effect wanneer de brandstof erg laag is, u uw verbeelding kunt maar een eenvoudige alle knipperen aan en uit opgenomen, aldus worden kan
als brandstof > 27
{analogWrite(3,fuel)
}
anders
{analogWrite (3,255);
vertraging 250;
analogWrite (3,0)
vertraging 250;
}
*/
#include < CapacitiveSensor.h >
CapacitiveSensor cs_5_6 = CapacitiveSensor(5,6); / / variabele condensator gemaakt van twee concentrische aluminium buizen. Centrum op aangesloten D6 met 1Mohm aangesloten tussen 5 & 6, buitenste op grond
CapacitiveSensor cs_7_8 = CapacitiveSensor(7,8); / / verwijzing condensator gelijk aan variabele GLB op leeg. Aangesloten op D8 met 1Mohm aangesloten tussen 5 & 6, andere aan grond.
int val = 0;
int var = 0;
int trim1 = 0; //trim-waarden zullen variëren van 0-1023 van volledig uit (0v) tot volledig op (5v), trim waarde zal worden 512 voor centrum positie (2.5v)
int trim2 = 0; //trim-waarden zullen variëren van 0-1023 van volledig uit (0v) tot volledig op (5v), trim waarde zal worden 512 voor centrum positie (2.5v)
int analogPin = 3; de uitgang-pins voor spanning weer te geven via low-pass filter
Dit gedeelte van de code is niet getest
Laat die de volgende sectie uitgecommentarieerd tot normaal ingesteld is voltooid
Hebt u een niet-symmetrische tank waar de diepte niet evenredig aan volumeset is, hebben wat betreft de symmetrische tank,
Sluit met seriële monitor en record brandstof voor de opvulling van elke 1/10 van de tank
invoegen die als de waarden voor Q1-9 en uncomment de volgende sectie
/*
int Q1 =??; waarde van de brandstof voor 1/10 capaciteit, vullen met 1/10 brandstof tank brandstof en lezen val op seriële monitor
int Q2 =??; waarde van de brandstof voor 2/10 capaciteit, opvulling met 2/10 brandstof tank brandstof en lezen val op seriële monitor
int Q3 =??; waarde van de brandstof voor 3/10 capaciteit, opvulling met 3/10 brandstof tank brandstof en lezen val op seriële monitor
int Q4 =??; waarde van de brandstof voor 4/10 capaciteit, opvulling met 4/10 brandstof tank brandstof en lezen val op seriële monitor
int Q5 =??; waarde van de brandstof voor 5/10 capaciteit, opvulling met 5/10 brandstof tank brandstof en lezen val op seriële monitor
int Q6 =??; waarde van de brandstof voor 6/10 capaciteit, opvulling met 6/10 brandstof tank brandstof en lezen val op seriële monitor
int Q7 =??; waarde van de brandstof voor 7/10 capaciteit, opvulling met 7/10 brandstof tank brandstof en lezen val op seriële monitor
int Q8 =??; waarde van de brandstof voor 8/10 capaciteit, opvulling met 8/10 brandstof tank brandstof en lezen val op seriële monitor
int Q9 =??; waarde van de brandstof voor 9/10 capaciteit, opvulling met 9/10 brandstof tank brandstof en lezen val op seriële monitor
*/
VOID Setup
{
pinMode (analogPin, INPUT);
Serial.begin(9600);
}
void loop
{trim1 = analogRead (0); / / de spanning uit de potentiometer 1 leest als een waarde 0-1023, naar 5v 0v
trim2 = analogRead (3);
lange brandstof;
lange Ref;
brandstof = cs_5_6. capacitiveSensorRaw (200); //Raw waarde van brandstof
Ref = cs_7_8. capacitiveSensorRaw (200);
Voor stap 1 om te bepalen van de grootte van de referentie-condensator.
Begin met het lezen van brandstof op de seriële monitor voor geen vloeistof op sonde en experimenteren met verschillende condensatoren voor Ref aan, later als //you worden alle geassembleerd en u stap 6 bereikt, uncomment de volgende regel
brandstof = fuel-Ref+920-(512+trim1);
920 in bovenstaande regel aanpassen totdat brandstof nul in de seriële monitor voor tank op leeg leest,
vervolgens vullen van de tank en uncomment de lijn hieronder
brandstof = fuel/(10+(trim2/30)); //start met deze regel uitgecommentarieerd, totdat u hebt aangepast de nul vulling-lezing
Aanpassen van 10 in de regel erboven om brandstof = 255 (of andere aangepast prijs, zie hieronder) met tank vol
vanwege de tolerantie van de weerstanden is het mogelijk dat de LM3914 niet kan worden variërend precies tot 5volts, dus u wilt experimenteren
en na te gaan welke waarde ongeveer 255 geeft gewoon alle 10 leds verlicht
het wellicht eenvoudiger om eerst te verkwanselen (10+(trim2/30) en gewoon experiment om de figuur die u geeft brandstof = 255 (5v)
Pas vervolgens de hele deler vergelijking (10+(trim2/30) om u te geven dat cijfer
herinneren dat trim2 in een waarde tussen 0-1023 zullen variëren, maar zal worden 512 als u hebt ingesteld dat de pot aan het centrum.
ONREGELMATIGE TANK AANVULLENDE CODE
Als u van de code van de onregelmatige tank gebruikmaakt uncomment dit volgende deel, maar u zult moeten commentaar van volgende lijn analogWrite(3,fuel);
/*
{
Val = brandstof;
Als val < Q1
var = 0;
anders als val var = 27;
anders als val var = 60;
anders als val var = 80;
anders als val var = 105;
anders als val var = 130;
anders als val var = 160;
anders als val var = 185;
anders als val var = 210;
anders
var = 255;
}
analogWrite (3, var) ;// als u gebruik te van de onregelmatige tank schets dan commentaar uit de volgende regel maken zijn
*/
analogWrite(3,fuel); de resulterende waarde van brandstof naar digitale pin 3 schrijven.
Deze uitgang moet worden uitgevoerd door een lage RC filter, met behulp van 5kohm en 10uF overgaan.
{
Serial.Print(Fuel);
Serial.println ("brandstof"); //debug brandstof
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");
}
vertraging (100);
}