Arduino Progetto Flussometro e altro [pag. 26]

Guardiamarina
nabucodor
Mi piace
- 251/470
Allora per quanto riguarda la perdita dei dati è trascurabile la potri anche misurare.... Ma tenendo conto che deve fare due calcoli e l'invio.... tenendo conto che il clock e 16 mhz nel fare tutto impieghera qualche centesimo di secondo.... considerando la frequenza massima del flussometro in quel tempo che intercorre tra lo stop dellarrey e la riattivazione non sarà perso neanche un impulso anche ad avere un motore che consumi 100lt ora...
Tenente di Vascello
efisio
Mi piace
- 252/470
Ciao avevo visto questo topic qualche anno fa mentre mi cimentavo sullo stesso argomento.

Riguardo alla perdita di impulsi nel mio caso ho 16 impulsi al secondo a manetta, sono proprio pochi in confronto al clock; certo "delay" sarebbe da evitare perché per quei 1000ms non viene letto nessun impulso. Io leggo continuamente e ogni secondo faccio la media e scrivo sul display. Comunque, esiste una libreria frequency che fa proprio a questo caso.

Per rimanere più sul pratico, come avete fatto la verifica in mare per calibrazione? Io pensavo di riempire il serbatoio fino al bocchettone, consumarlo quasi tutto, rifornire nuovamente e vedere la differenza tra flussometro e litri sulla pompa del benzinaio. Il problema è che regolarmente non riesco a capire quando il serbatoio è pieno sia per lo sciabordio che per travaso tra un serbatoio e l'altro. Qualche idea furba?
Tenente di Vascello
masvini
Mi piace
- 253/470
Potresti far vuotare completamente il serbatoio, poi lo riempi con una quantità predefinita es. 10 litri e vai fino a che lo consumi completamente e poi confronti con quanto ti ha segnato il flussometro. Ricordati però di portarti una tanica per poter poi rientrare Razz
Guardiamarina
biko
Mi piace
- 254/470
Ciao a tutti.... dopo una lunga pausa sono tornato a scrivere....
vorrei auto costruire un flussometro con arduino.... non richiedo funzioni particolari o interfacce nmea ecc mi basta un semplice flussometro che indichi consumo istantaneo e consumo parziale con la possibilità di di inserire i litri imbarcati al momento del rifornimento. Pensate sia cosa semplice e fattibile?
Chi può darmi una mano? Grazie a tutti!
Sergente
it9ozs
Mi piace
- 256/470
Salve ragazzi, ho letto con grande interesse tutti i post.
Sono anche io uno smanettone, ma con arduino, purtroppo, poca esperienza...molto poca (ma imparo presto).

Ho provato i codici che sono stati postati, mi riferisco a quelli di marcop20, che ho poi provato a modificare per adattare il mio materiale.

Nello specifico, impiego un display 20x4, arduino uno e non ho un sensore di flusso che però acquisterò a breve.

Avendo un po' di strumentazione nel mio laboratorio, al posto del sensore, ho utilizzato un generatore di funzioni ad onda quadra, per iniettare il segnale.

Il risultato è che il consumo istantaneo lo misura tranquillamente, ma non ho alcuna variazione degli altri parametri (che penso debbano conteggiare).

Adesso posto lo shetch che ho utilizzato, sicuramente saprete venirmi in aiuto:

//includo la libreria per le funzionalità dell'LCD
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
volatile float time = 0;
volatile float time_last = 0;
volatile int impulsi_array[5] = {0,0,0,0,0};

//includo la libreria per le impostazioni dell'eeprom
#include <EEPROM.h>
int litri_tot = EEPROM.read(0);

//All'accensione imposto a 0 le variabili
int impulsi = 0;
int litri_parziali = 0;
int consumo_istantaneo = 0;

void setup()
{
//Pin 2 impostato come ingrsso digitale interrupt
attachInterrupt(0, interrupt, FALLING);

//Impostazione LCD
lcd.begin(20, 4);

lcd.setCursor(0, 0);
lcd.print("PARAMETRI DI CONSUMO");

lcd.setCursor(0, 3);
lcd.print("Totale");

lcd.setCursor(0, 2);
lcd.print("Parziale");

lcd.setCursor(0, 1);
lcd.print("Istantaneo");

// abilito una resistenza di pull up sul pin 2
digitalWrite(2, HIGH);
}

//Main Loop
void loop()

{
while(1){
//Tempo di aggiornamento LCD
delay(100);

//Visualizza litri parziali con due cifre decimali
float litri_parziali;
litri_parziali = ((float)impulsi/2500);

//Visualizza litri totali
litri_tot = (impulsi/2500);

//Visualizzo su LCD i litri totali consumati
lcd.setCursor(15, 3);
lcd.print("Litri");
lcd.setCursor(11, 3);
lcd.print(litri_tot);

//Visualizzo su LCD i litri parziali consumati
lcd.setCursor(17, 2);
lcd.print("L/H");
lcd.setCursor(11, 2);
lcd.print(litri_parziali);

//Visualizzo su LCD il consumo istantaneo
lcd.setCursor(17, 1);
lcd.print("L/H");
lcd.setCursor(11, 1);
lcd.print(consumo_istantaneo);

//Aggiorno il consumo_istantaneo

if (time > 0)
{
//5 array per calcolare la media sulle letture del cosumo istantaneo
impulsi_array[0] = impulsi_array[1];
impulsi_array[1] = impulsi_array[2];
impulsi_array[2] = impulsi_array[3];
impulsi_array[3] = impulsi_array[4];
impulsi_array[4] = 60*(2500/(time));

consumo_istantaneo = (impulsi_array[0] + impulsi_array[1] + impulsi_array[2] + impulsi_array[3] + impulsi_array[4]) / 5;
}


} //chiusura while
}

//Lettuara degli interrupt
void interrupt()
{
impulsi = impulsi ++;
time = (micros() - time_last);
time_last = micros();
}


Attendo lumi....grazie e buona domenica

siete fantastici
Ranieri Stargate Limited Edition, mercruiser 4.3 L 190 cv
Tenente di Vascello
efisio
Mi piace
- 257/470
Ciao, provato ieri per la prima volta in acqua con il motore e sembra funzionare bene. Appena acceso segnava a minimo 44 litri/h forse perché avevo appena acceso dopo internalizzazione. Poi si è stabilizzato perfettamente a 5 litri/h con una velocità di 7 nodi. E' abbastanza sensibile alle accelerate. Ora devo provare con un pieno e vedere quanto e se è da tarare il rapporto impulsi/litri
.

Comunque il mio sketch è molto semplice, sul display ho messo solo litri/min e litri tot, aggiornamenti ogni secondo.

Il problema di questa applicazione non è la parte elettronica ma la qualità del sensore, il range di funzionamento, come è installato ect.

Peccato per il ventaccio...avrei già provato meglio
Tenente di Vascello
efisio
Mi piace
- 258/470
Se non mi è sfuggito, mi sa che ti manca la scrittura in EEPROM che per tenere memoria dei litri usati o nel serbatoio. Se non usi come base di calcolo un campione più ampio (mezzo secondo o un secondo di acquisizioni) sul display farai fatica a leggere il valore istantaneo, almeno credo...devi provare Wink.
Sergente
it9ozs
Mi piace
- 259/470
efisio ha scritto:
Comunque il mio sketch è molto semplice, sul display ho messo solo litri/min e litri tot, aggiornamenti ogni secondo.


Ti spiacerebbe postare lo sketch?
Vorrei fare delle prove
Ranieri Stargate Limited Edition, mercruiser 4.3 L 190 cv
Capitano di Vascello
Jack64
Mi piace
- 260/470
Questi sensori sono in grado di leggere "piccoli" consumi nell'ordine dei 10/12 litri ora a tutto gas e pochi litri ora al minimo (motore Yamaha 25J portato a 30cv) ?

Qualcuno, ovviamente remunerando materiali,tempo es eventuale spedizione sarebbe disposto a farne uno per me semplice semplice?
Sono una capra totale con queste cose.. Sad


Grazie Embarassed
Sailornet