Arduino Progetto Flussometro e altro [pag. 45]

Tenente di Vascello
efisio
Mi piace
- 441/466
Ciao,
il sensore OF05ZAT che hai adocchiato sembra buono! Chiaramente fuori dai limiti indicati potrebbe non girare o dare numeri farlocchi.
Considerando il costo contenuto potresti provare. Wink
Se il consumo a minimo è costante potresti impostare un valore fisso a SW da considerare nella condizione di motore acceso e consumi sotto una certa soglia.

Ho preso il sensore FS3400 molti anni fa, infatti è a turbinetta e lo danno per 0,05 l/min fino a 0,5 l/min. Sotto i 0,05 l/min tende a fermarsi.

Tra sensore, Arduino UNO fake e display sarai sui 30 euro... poi però lo devi rendere stagno il tutto.
In alternativa ho visto che ci sono contalitri digitali già pronti a 25 euro + sensore.
Capitano di Corvetta
rio640
Mi piace
- 442/466
Ciao Efisio

grazie mille per la tua disponibilità! fondamentalmente mi interesserebbe avere uno strumento che mi dica il consumo istantaneo del mio Suzuki DF 225 del 2004! non so se possibile collegarsi (tipo al connettore della diagnostica) per estrapolare in qualche modo i dati del consumo. ma il mio utilizzo finale sarebbe questo! che flussometro già pronto hai trovato con una spesa bassa? altrimenti visto l'inverno in arrivo posso "giocare" (anche grazie al tuo aiuto!) e ordinare il tutto su aliexpress (ps il sensore flusso non l'ho torvato in cina ma in Italia a 190 euro UT)
PS il mio Suzuki da libretto porta 72 l/h.
Grazie di tutto
North Star 220 CD + Suzuki DF225 cv
Tenente di Vascello
efisio
Mi piace
- 443/466
Ciao,
negli ultimi giorni ho provato in acqua sia il misuratore di portata fatto con arduino, sia un contalitri digitale comprato su Aliexpress (modello ZJ-LCD-M a 29 euro).
Entrambi hanno funzionato bene.

Diverso il discorso per il sensore FS-3400AH che sotto i 7 km/h non ha rilevato flusso.

Andamento Consumi
re: Arduino Progetto Flussometro e altro


@rio640, se hai un buon sensore conviene prendere un display già pronto tipo quello sotto.
Per provarlo ho sostituito il pacco batterie con un regolatore di tensione e collegato il display all'impianto.

modello ZJ-LCD-M Contalitri front
re: Arduino Progetto Flussometro e altro

modello ZJ-LCD-M Contalitri back
re: Arduino Progetto Flussometro e altro
Sottocapo di 1° Classe Scelto
gsnautica
Mi piace
- 444/466
Ciao a tutti, sto utilizzando l'ultimo sketch postato da Marcop, su un LCD 20x4, siccome ho qlc riga in piu' volevo sfruttare questo spazio per inserire i valori letti dalla 2 batterie dei motori e servizi, con la funzione analogRead, ma quando compilo e carico, il risultato del serial monitor, si ferma ad una lettura, nonostante la porzione di codice e' inserita nel "Void loop", non capisco perche' non esegue il loop del codice,
Va percaso ad interferire con l'Interrupt?
Questo e' il codice che sto utilizzando, ho levato i litri totali perche' non mi servivano, ho tenuto Parziali e Istantanei, ed ho aggiunto un messaggio di benvenuto ( il monitor della lettura dei Volts e' al momento solo su serial per prova)


#include <Wire.h>

#include <LiquidCrystal.h>

//#include <LiquidCrystal_I2C.h>

//LiquidCrystal_I2C lcd(0x27, 16, 2);
LiquidCrystal lcd(8, 9, 7, 6, 5, 4);
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>

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

void setup()

{
//pinMode(analogInput, INPUT);

attachInterrupt(0, interrupt, FALLING); //Pin 2 interrupt 0 impostato come ingrsso digitale interrupt (Arduino UNO/MEGA)
digitalWrite(2, HIGH); // abilito una resistenza di pull up sul pin 2 (Arduino UNO/MEGA)

// attachInterrupt(1, interrupt, FALLING); //Pin 3 interrupt 1 impostato come ingrsso digitale interrupt (Arduino UNO/MEGA)
// digitalWrite(3, HIGH); // abilito una resistenza di pull up sul pin 3 (Arduino UNO/MEGA)

// attachInterrupt(5, interrupt, FALLING); //Pin 18 interrupt 5 impostato come ingrsso digitale interrupt arduino mega (Arduino MEGA)
// digitalWrite(18, HIGH); // abilito una resistenza di pull up sul pin 18 arduino mega (Arduino MEGA)

// attachInterrupt(4, interrupt, FALLING); //Pin 19 interrupt 4 impostato come ingrsso digitale interrupt arduino mega (Arduino MEGA)
// digitalWrite(19, HIGH); // abilito una resistenza di pull up sul pin 19 arduino mega (Arduino MEGA)

// attachInterrupt(3, interrupt, FALLING); //Pin 20 interrupt 3 impostato come ingrsso digitale interrupt arduino mega (Arduino MEGA)
// digitalWrite(20, HIGH); // abilito una resistenza di pull up sul pin 20 arduino mega (Arduino MEGA)

// attachInterrupt(2, interrupt, FALLING); //Pin 21 interrupt 2 impostato come ingrsso digitale interrupt arduino mega (Arduino MEGA)
// digitalWrite(21, HIGH); // abilito una resistenza di pull up sul pin 21 arduino mega (Arduino MEGA)

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


//lcd.setCursor(0, 0);
//lcd.print("LT.tot=");
lcd.setCursor(1, 0);
lcd.print("BENVENUTO A BORDO!");
lcd.setCursor(4, 2);
lcd.print("by OPEN510");
delay(5000);
lcd.clear();

lcd.setCursor(0, 3);
lcd.print("LT.P=");

lcd.setCursor(11, 3);
lcd.print("LT.H=");
}

//Main Loop
void loop() {

float VR1 = analogRead(A3) * 5 / 1024.;
Serial.print("VR1=");
Serial.print(VR1, 2);
Serial.println("(v)");
delay(1000);


//float f = 0; //Variabile dove è memorizzata il dato float nella EEPROM.
//int eeAddress = 0; //Indirizzo della EEPROM dove inizia il dato float
//EEPROM.get(eeAddress, f); //Leggo dalla EEPROM e assegno il valore ad una variabile


while (1) {

if (digitalRead(2)) {
time = 0;
}

//Tempo di aggiornamento LCD
delay(200);


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

//Visualizzo su LCD i litri parziali consumati
lcd.setCursor(5, 3);
lcd.print(litri_parziali);

//Visualizzo su LCD i litri totali consumati
//lcd.setCursor(7, 0);
//lcd.print(f + litri_parziali, 2);

//Visualizzo su LCD il consumo istantaneo
lcd.setCursor(16, 3);
lcd.print(" ");
lcd.setCursor(16, 3);
lcd.print(consumo_istantaneo);


//Aggiorno il consumo_istantaneo
{
//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] = 10 * (60 * (2500 / time));

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


//Aggiorno il consumo_istantaneo
if (consumo_istantaneo == 0) {
delay(500);
//if (consumo_istantaneo == 0) {
//float somma = (f + litri_parziali); //max 32767

//EEPROM.put(eeAddress, somma); //Scrivo la somma dei litri nella EEPROM
//lcd.setCursor(9, 1); //temp da eliminare
//lcd.print(somma); //temp da eliminare
}
}
//else {
//lcd.setCursor(20, 3);
//lcd.print("");
}


//Lettura degli interrupt
void interrupt() {
impulsi = ++impulsi;
time = (micros() - time_last);
time_last = micros();
}
pesca a traina
Tenente di Vascello
efisio
2 Mi piace
- 445/466
Ciao,
credo la comunicazione seriale I2C non vada molto d'accordo con quel delay(1000) che hai aggiunto.
L'interrupt non dovrebbe bloccare niente finchè lo stato del DI non cambia.
Prova a scrivere VR1 insieme al consumo e togli il delay.

Comunque avevo iniziato anche io con un display LCD a 4 righe ma non riuscivo a vedere niente a causa della luce del sole e del movimento della barca. Laughing
Lo strumento deve essere ben fissato e visibile dal posto di manovra.

Ultimamente sto giocando con un display da 3,5 pollici con l'idea di piazzarlo a fianco del eco-gps.
Sotto qualche immagine se qualcuno ha suggerimenti sono ben accetti Felice

Strumento carburante Pagina 1
re: Arduino Progetto Flussometro e altro


Strumento carburante Pagina 1b
re: Arduino Progetto Flussometro e altro


Strumento carburante Pagina 2
re: Arduino Progetto Flussometro e altro


Strumento carburante Pagina 2b
re: Arduino Progetto Flussometro e altro


Strumento carburante Pagina 3
re: Arduino Progetto Flussometro e altro


Strumento carburante Pagina 4
re: Arduino Progetto Flussometro e altro
Sottocapo di 1° Classe Scelto
gsnautica
Mi piace
- 446/466
Ciao Efisio, grazie per il tuo prezioso suggerimento, ora funziona tutto, cmq, non uso il display I2C, ma un banale display 20x4 collegato con con RS-E-D1-D2-D3-D4, ho erroneamente postato il codice che usavo con l'altro diplay 16x6, cmq adesso va, a chi puo' servire questo e' il codice del Flussometro con messaggio di benvenuto e 2 letture dei volt batterie:
P.S Bello quel display a colori, l'hai gia fatto funzionare?, ma quali librerie usa? e' uno SPI?
#include <Wire.h>

#include <LiquidCrystal.h>

//#include <LiquidCrystal_I2C.h>

//LiquidCrystal_I2C lcd(0x27, 16, 2);
LiquidCrystal lcd(8, 9, 7, 6, 5, 4);


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>


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


void setup()

{
//pinMode(analogInput, INPUT);

attachInterrupt(0, interrupt, FALLING); //Pin 2 interrupt 0 impostato come ingrsso digitale interrupt (Arduino UNO/MEGA)
digitalWrite(2, HIGH); // abilito una resistenza di pull up sul pin 2 (Arduino UNO/MEGA)

// attachInterrupt(1, interrupt, FALLING); //Pin 3 interrupt 1 impostato come ingrsso digitale interrupt (Arduino UNO/MEGA)
// digitalWrite(3, HIGH); // abilito una resistenza di pull up sul pin 3 (Arduino UNO/MEGA)

// attachInterrupt(5, interrupt, FALLING); //Pin 18 interrupt 5 impostato come ingrsso digitale interrupt arduino mega (Arduino MEGA)
// digitalWrite(18, HIGH); // abilito una resistenza di pull up sul pin 18 arduino mega (Arduino MEGA)

// attachInterrupt(4, interrupt, FALLING); //Pin 19 interrupt 4 impostato come ingrsso digitale interrupt arduino mega (Arduino MEGA)
// digitalWrite(19, HIGH); // abilito una resistenza di pull up sul pin 19 arduino mega (Arduino MEGA)

// attachInterrupt(3, interrupt, FALLING); //Pin 20 interrupt 3 impostato come ingrsso digitale interrupt arduino mega (Arduino MEGA)
// digitalWrite(20, HIGH); // abilito una resistenza di pull up sul pin 20 arduino mega (Arduino MEGA)

// attachInterrupt(2, interrupt, FALLING); //Pin 21 interrupt 2 impostato come ingrsso digitale interrupt arduino mega (Arduino MEGA)
// digitalWrite(21, HIGH); // abilito una resistenza di pull up sul pin 21 arduino mega (Arduino MEGA)





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


//lcd.setCursor(0, 0);
//lcd.print("LT.tot=");
lcd.setCursor(1, 0);
lcd.print("BENVENUTI A BORDO!");
lcd.setCursor(4, 2);
lcd.print("by OPEN510");
delay(3000);
lcd.clear();

lcd.setCursor(0, 3);
lcd.print("LT.T=");

lcd.setCursor(11, 3);
lcd.print("LT.H=");
}



//Main Loop
void loop() {



//float f = 0; //Variabile dove è memorizzata il dato float nella EEPROM.
//int eeAddress = 0; //Indirizzo della EEPROM dove inizia il dato float
//EEPROM.get(eeAddress, f); //Leggo dalla EEPROM e assegno il valore ad una variabile


while (1) {

if (digitalRead(2)) {
time = 0;
}

//Tempo di aggiornamento LCD
delay(200);


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

//Visualizzo su LCD i litri parziali consumati
lcd.setCursor(5, 3);
lcd.print(litri_parziali);

//Visualizzo su LCD i litri totali consumati
//lcd.setCursor(7, 0);
//lcd.print(f + litri_parziali, 2);

//Visualizzo su LCD il consumo istantaneo
lcd.setCursor(16, 3);
lcd.print(" ");
lcd.setCursor(16, 3);
lcd.print(consumo_istantaneo);


//Aggiorno il consumo_istantaneo
{
float Batt_Mot = analogRead(A3) * 5 / 1024.; // A questo va aggiunto il calcolo delle resistenze del partitore di tensione
lcd.setCursor(0, 0);
lcd.print("Batt.Mot=");
lcd.setCursor(9, 0);
lcd.print(Batt_Mot, 2);
delay(500);
float Batt_Serv = analogRead(A4) * 5 / 1024.; // A questo va aggiunto il calcolo delle resistenze del partitore di tensione
lcd.setCursor(0, 1);
lcd.print("Batt.Serv=");
lcd.setCursor(10, 1);
lcd.print(Batt_Serv, 2);
delay(500);
//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] = 10 * (60 * (2500 / time));

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


//Aggiorno il consumo_istantaneo
if (consumo_istantaneo == 0) {
delay(500);
//if (consumo_istantaneo == 0) {
//float somma = (f + litri_parziali); //max 32767

//EEPROM.put(eeAddress, somma); //Scrivo la somma dei litri nella EEPROM
//lcd.setCursor(9, 1); //temp da eliminare
//lcd.print(somma); //temp da eliminare
}
}
//else {
//lcd.setCursor(20, 3);
//lcd.print("");
}


//Lettura degli interrupt
void interrupt() {
impulsi = ++impulsi;
time = (micros() - time_last);
time_last = micros();
}
pesca a traina
Tenente di Vascello
efisio
Mi piace
- 447/466
Ciao GS,


Citazione:
e' uno SPI?

Il processore è un ARM7, ma ci sono vari produttori per tutti i gusti e i portafogli a seconda di quanta grafica si vuole gestire. Ho preso un Nextion 3,5 pollici con processore intermedio. Ha parecchi limiti sulla sovrapposizione degli oggetti/immagini

Citazione:
l'hai gia fatto funzionare?

Non l'ho ancora acceso, ho solo familiarizzato con l'editor. Ma caricare le schermate è abbastanza veloce.

Citazione:
ma quali librerie usa?

Nessuna libreria in scrittura sullo schermo e richiede la nextion.h per la lettura di comandi e valori.

Prossimi passi per tenermi impegnato Laughing
- Prove con sensore di livello carburante perché non mi fido più del solo flusso. Quindi devo rivedere completamente lo sketch di Arduino.
- Risolvere dei problemi sulla tensione di riferimento nella lettura degli angoli...che avrei evitato con i sensori I2C Mad.
- Miglioramento meccanico del sensore di flusso per leggere meglio le portate piccole.
- Stampa del case IP68 per il display nello stesso stile del mio vecchio CUDA350. A parte devo stampare i box per Arduino e i relativi connettori (quelli commerciali costano troppo)
Sottocapo di 1° Classe Scelto
gsnautica
Mi piace
- 448/466
Ciao Efisio, quando lo completi fammi sapere sarei interessato.
Nel frattempo mi aiuteresti a trovare l'inghippo su questo codice, stracopiazzato Wink
Display LCD
re: Arduino Progetto Flussometro e altro

Sensore Amperometrico
re: Arduino Progetto Flussometro e altro


Ho implementato un Amperometro per il consumo dei servizi
N°2 Voltometri per le Batt. Motore+Servizi
Consumo Parziale e Consumo Istantaneo/H
Ci entravano nelle 4 righe del Diplay...e mi sono detto perchè no Razz
Funziona tutto a banco, ad eccezione della misura amperometrica, fatta con un sensore non invasivo a nucleo richiudibile, sensore HSTS016L a 5V, da 150A
Ovvero, quando partono gli impulsi del contalitri del consumo, la lettura passa ad un altra piu' alta, es. .sto misurando 3,75A su LCD, e confrontati con il tester > ok
appena aziono il contalitri la misura và a 5.00, per poi dopo qlc secondo ritornare a 3,75 e cosi' via si altalena 3.75/5.00
questo il codice:

#include <Wire.h>

//#include <LiquidCrystal.h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 20, 4);
//LiquidCrystal lcd(8, 9, 7, 6, 5, 4);

//Variabili Amperometro
#define HSTS016L_pin A0
float current = 0;
float currentraw = 0;
float sensitivity = 4;

//Variabili Voltometri
int analogInput = A2;
float vout = 0.0;
float vin = 0.0;
float R1 = 30000.0;
float R2 = 7500.0;
int value = 0;

int analogInput1 = A3;
float vout1 = 0.0;
float vin1 = 0.0;
float R3 = 30000.0;
float R4 = 7500.0;
int value1 = 0;
//int decimalPrecision = 2; // decimal places for all values shown in LED Display & Serial Monitor

//Variabili Flussometro
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>


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


void setup()

{
pinMode(HSTS016L_pin, INPUT);

attachInterrupt(0, interrupt, FALLING); //Pin 2 interrupt 0 impostato come ingrsso digitale interrupt (Arduino UNO/MEGA)
digitalWrite(2, HIGH); // abilito una resistenza di pull up sul pin 2 (Arduino UNO/MEGA)

// attachInterrupt(1, interrupt, FALLING); //Pin 3 interrupt 1 impostato come ingrsso digitale interrupt (Arduino UNO/MEGA)
// digitalWrite(3, HIGH); // abilito una resistenza di pull up sul pin 3 (Arduino UNO/MEGA)

// attachInterrupt(5, interrupt, FALLING); //Pin 18 interrupt 5 impostato come ingrsso digitale interrupt arduino mega (Arduino MEGA)
// digitalWrite(18, HIGH); // abilito una resistenza di pull up sul pin 18 arduino mega (Arduino MEGA)

// attachInterrupt(4, interrupt, FALLING); //Pin 19 interrupt 4 impostato come ingrsso digitale interrupt arduino mega (Arduino MEGA)
// digitalWrite(19, HIGH); // abilito una resistenza di pull up sul pin 19 arduino mega (Arduino MEGA)

// attachInterrupt(3, interrupt, FALLING); //Pin 20 interrupt 3 impostato come ingrsso digitale interrupt arduino mega (Arduino MEGA)
// digitalWrite(20, HIGH); // abilito una resistenza di pull up sul pin 20 arduino mega (Arduino MEGA)

// attachInterrupt(2, interrupt, FALLING); //Pin 21 interrupt 2 impostato come ingrsso digitale interrupt arduino mega (Arduino MEGA)
// digitalWrite(21, HIGH); // abilito una resistenza di pull up sul pin 21 arduino mega (Arduino MEGA)





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


//lcd.setCursor(0, 0);
//lcd.print("LT.tot=");
lcd.setCursor(1, 0);
lcd.print("BENVENUTI A BORDO!");
lcd.setCursor(4, 2);
lcd.print("by GSNAUTICA");
delay(5000);
lcd.clear();

lcd.setCursor(0, 3);
lcd.print("LT.T=");

lcd.setCursor(11, 3);
lcd.print("LT.H=");
}



//Main Loop
void loop() {



//float f = 0; //Variabile dove è memorizzata il dato float nella EEPROM.
//int eeAddress = 0; //Indirizzo della EEPROM dove inizia il dato float
//EEPROM.get(eeAddress, f); //Leggo dalla EEPROM e assegno il valore ad una variabile


while (1) {

if (digitalRead(2)) {
time = 0;
}

//Tempo di aggiornamento LCD
delay(200);


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

//Visualizzo su LCD i litri parziali consumati
lcd.setCursor(5, 3);
lcd.print(litri_parziali);

//Visualizzo su LCD i litri totali consumati
//lcd.setCursor(7, 0);
//lcd.print(f + litri_parziali, 2);

//Visualizzo su LCD il consumo istantaneo
lcd.setCursor(16, 3);
lcd.print(" ");
lcd.setCursor(16, 3);
lcd.print(consumo_istantaneo);


//Aggiorno il consumo_istantaneo
{
currentraw = analogRead(HSTS016L_pin);
current = ((currentraw - 507) * 5 / sensitivity);
delay(500);

value = analogRead(analogInput); // Batteria Motore
vout = (value * 5.02) / 1023.0;
vin = vout / (R2 / (R1 + R2));
delay(400);
value = analogRead(analogInput1); //Batteria Servizi
vout1 = (value * 5.02) / 1023.0;
vin1 = vout1 / (R2 / (R1 + R2));
delay(400);
lcd.setCursor(1, 0);
lcd.print("I=");
lcd.print(current);
lcd.setCursor(0, 1);
lcd.print("Batt.Mot=");
lcd.setCursor(9, 1);
lcd.print(vin, 2);
lcd.print("V ");
lcd.setCursor(0, 2);
lcd.print("Batt.Serv=");
lcd.setCursor(10, 2);
lcd.print(vin1, 2);
lcd.print("V");

currentraw = analogRead(HSTS016L_pin);
current = ((currentraw - 507) * 5 / sensitivity);
delay(300);

//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] = 10 * (60 * (2300 / time));

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


//Aggiorno il consumo_istantaneo
if (consumo_istantaneo == 0) {
delay(500);
//if (consumo_istantaneo == 0) {
//float somma = (f + litri_parziali); //max 32767

//EEPROM.put(eeAddress, somma); //Scrivo la somma dei litri nella EEPROM
//lcd.setCursor(9, 1); //temp da eliminare
//lcd.print(somma); //temp da eliminare
}
}
//else {
//lcd.setCursor(20, 3);
//lcd.print("");
}


//Lettura degli interrupt
void interrupt() {
impulsi = ++impulsi;
time = (micros() - time_last);
time_last = micros();
}
pesca a traina
Tenente di Vascello
efisio
Mi piace
- 449/466
Hey ciao GS Nautica,

Difficile darti una risposta certa leggendo qui il codice sul cellulare; se non lo stai già facendo, posso consigliarti di usure il serial monitor del PC e inserire dei con dei flag per capire il momento in cui cambia. A video stamperei anche currentraw, in modo da vedere se è solo la visualizzazione oppure la lettura sbagliata.
Potresti anche isolare il codice per la corrente e farlo girare da solo per capire.

Ho notato che leggi la corrente in due punti con questo blocco.... Sarà questo il problema?
currentraw = analogRead(HSTS016L_pin);
current = ((currentraw - 507) * 5 / sensitivity);
delay(500); e poi con delay (300)...

Bella idea monitorare i consumi di corrente e la tensione .... Non ho batteria per servizi ma ci faccio un pensierino lo stesso. Thumb Up
Tenente di Vascello
efisio
1 Mi piace
- 450/466
Sto mandando in stampa ... non mi convince molto perchè poteva essere più piccolo, ci sono anche astucci già pronti per questo display.
Ho preferito cimentarmi nell'estetica ... ci sono volute quasi 10 ore perchè sono arrugginito con il cad Laughing

Strumento fissaggio
re: Arduino Progetto Flussometro e altro


Strumenti frontale
re: Arduino Progetto Flussometro e altro


Strumento sezione
re: Arduino Progetto Flussometro e altro


... nel frattempo ho scoperto di avere il sensore di livello carburante rotto e per smontarlo devo tirare giù il serbatoio Crying or Very sad ...
Sailornet

Argomenti correlati