Arduino Progetto Flussometro e altro [pag. 27]

Capitano di Vascello
SparusAurata
Mi piace
- 261/466
it9ozs ha scritto:

//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");

*********

//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);



Ciao,
sono almeno un anno e mezzo che non tocco questo progetto, purtroppo arenato per problemi di tempo e lavoro.

Osservando il codice che hai postato, il fatto che utilizzi un display 20x4, penso che dovresti lavorare sul posizionamento dei dati sul display.
Nella parte sopra, dove ho riportato parte del tuo messaggio, ci sono solo le parti nelle quali dovresti verificare il codice.

Se non sarà così, ti chiedo di esplicitare meglio il problema oppure di seguire la variabile che no ti cambia nel monitor seriale di arduino.

A presto.
Chi ama il mare sarà sempre libero!

Fatti un regalo!
https://www.gommonauti.it/donazione.php
Capitano di Vascello
Jack64
Mi piace
- 262/466
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.. Razz


Grazie Embarassed
Tenente di Vascello
efisio
Mi piace
- 263/466
Scusa it9ozs, lo posterei ma sono in vacanza senza PC.

Io ho un display a due righe per i due dati flusso e litri; un solo tasto per resettare il contalitri al momento del pieno.

Al momento il calcolo sta sovrastimando i consumi, stasera mi diceva 17 litri per 10nm Rolling Eyes

...ma alla fine se la misurazione è ripetitiva la taratura non è importante.[/quote]
Tenente di Vascello
efisio
Mi piace
- 264/466
Ciao Jack64, nessun problema ad assemblarne un altro, ma prima vorrei vedere se funziona bene durante questi 10 giorni di ferie.
Capitano di Vascello
Jack64
Mi piace
- 265/466
Grazie !! 😁

Quanto costano all'incirca i materiali? Embarassed
Sergente
it9ozs
Mi piace
- 266/466
Ciao, si, quello che penso prenderò io, ha un range che va da 0,05 a 3 litri/min (da 3 a 180 litri/h), con porta gomma di diametro interno 6,2 mm

Credo che con portata minore non ci sia molto.

Da tenere anche in considerazione il diametro interno del porta gomma, perchè se troppo piccolo, rischia di far rovinare la pompa della benzina.
Ranieri Stargate Limited Edition, mercruiser 4.3 L 190 cv
Sergente
it9ozs
Mi piace
- 267/466
Ciao efisio...scusa per la risposta tardiva...tranquillo...fai le ferie e poi se ne parla...rimaniamo comunque in attesa di sviluppi del progetto alla quale stanno studiando.

E' scontato che se in qualche modo ce ne sarà bisogno, sarei felice di dare il mio contributo.....anche se il mio campo specifico sono le telecomunicazioni....

Continuo sempre a lavorare al mio progettino....è molto semplice, ma con la programmazione devo ancora imparare parecchio.
Per fortuna parto dalla base buona che ha postato marcop20...Smile
Ranieri Stargate Limited Edition, mercruiser 4.3 L 190 cv
Sergente
it9ozs
Mi piace
- 268/466
[/quote]

Ciao,
sono almeno un anno e mezzo che non tocco questo progetto, purtroppo arenato per problemi di tempo e lavoro.

Osservando il codice che hai postato, il fatto che utilizzi un display 20x4, penso che dovresti lavorare sul posizionamento dei dati sul display.
Nella parte sopra, dove ho riportato parte del tuo messaggio, ci sono solo le parti nelle quali dovresti verificare il codice.

Se non sarà così, ti chiedo di esplicitare meglio il problema oppure di seguire la variabile che no ti cambia nel monitor seriale di arduino.

A presto.[/quote]

Ciao e grazie per il tuo supporto...in effetti, dopo aver postato quello sketch, ho apportato una piccola modifica...nulla di che...
Adesso posto il nuovo sketch (differisce veramente poco e devo ancora implementare la funzione per memorizzare i dati) e una foto del display.

Quello che non capisco è perchè facendo funzionare il sistema con un generatore di impulsi al posto del sensore di flusso, segna il consumo istantaneo, ma non variano gli altri parametri:


//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, 1);
lcd.print("Istantaneo");

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

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

// 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 istantaneo

//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
}

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

re: Arduino Progetto Flussometro e altro
Ranieri Stargate Limited Edition, mercruiser 4.3 L 190 cv
Capitano di Vascello
SparusAurata
Mi piace
- 269/466
Ciao.
Prova con questo.

//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, 1);
lcd.print("Istantaneo");

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

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

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

//Main Loop
void loop() {

//Tempo di aggiornamento LCD
delay(100);

//Visualizzo istantaneo
//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;

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

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

}

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


Rispondo per il sensore di flusso. Ho comprato un sensore dal sito Conrad a circa 25,00 euro adatto per benzina e fa da 0,05 a 3 l/min, ovvero da 3 litri/ora a 180litri/ora. Quindi più che sufficiente.

Ciao
Chi ama il mare sarà sempre libero!

Fatti un regalo!
https://www.gommonauti.it/donazione.php
Sergente
it9ozs
Mi piace
- 270/466
Ciao e grazie per la risposta.
Ho provato, ma non ancora col sensore....quello arriverà fra un paio di giorni.
Ho usato sempre il generatore di impulsi.

Il conteggio del parziale e del totale non partono...stranamente, il totale dei litri inizia, anzichè da 0, da 255
Ranieri Stargate Limited Edition, mercruiser 4.3 L 190 cv
Sailornet

Argomenti correlati