Datman:
Mi ricorda il serbatoio del Boeing 747...
Si, anche a me
Ma non è esploso per quello
Anche sì era uno dei primi, mi sembra il secondo costruito
Datman:
Mi ricorda il serbatoio del Boeing 747...
Si, anche a me
Ma non è esploso per quello
Anche sì era uno dei primi, mi sembra il secondo costruito
Mi riferivo alla tecnica di misurazione: 4 coppie di cilindri concentrici ai 4 angoli del serbatoio collegati in parallelo, di cui viene misurata la capacità complessiva. Anche se il carburante si muove notevolmente, la capacità complessiva rimane quasi costante.
Datman:
Qui c'è una bella trattazione sugli ADC:
https://www.analog.com/media/en/training-seminars/design-handbooks/Data-Conversion-Handbook/Chapter2.pdf
... bella, ma ... credo tu abbia sbagliato thread
![]()
Guglielmo
Modificato.
P.s.: questo è il mio 3000° messaggio! Il Signor Monk si rifiuterebbe di pubblicarne altri!
![]()
Datman:
Mi ricorda il serbatoio del Boeing 747...
Il primo che avevo progettato usava una piattina da antenna TV (chi e' cosi vecchio da ricordarsele ? :P) avvolta a spirale su una stecca di vetroresina, ed un'oscillatore Hartley fatto con un piccolo triodo, in RF ... preistoria ...
Pero' non era per i Boeing
![]()
Ok, se e' solo una questione di corrosione degli elettrodi, bisogna valutare alcune variabili, come ad esempio in che tipo di liquido devono essere immersi, se nel tempo cambiarli non costa nulla, ecc... ecc... Chiaro che non tutto e' fatto per durare in eterno, quindi le variabili esposte non sono da sottovalutare se semplificano notevolmente il progetto.
Pasquale
La corrente continua non va bene
Non sarebbe possibile discriminare tra una tensione continua 'indotta' dal sistema di misura e una dovuta a fenomeni elettrochimici
Si usa segnale alternato proprio perché i fenomeni elettrochimici sono continui
Ma non e' necessario discriminare, in quanto se non c'e' il liquido c'e' aria, mentre se c'e' conduzione e quindi acqua puo' generare tutti i fenomeni elettrochimici che vuole, a lui interessa solo avere conduzione. Io stesso ho realizzato una sonda che mi controllava il riempimento di una tramoggia con calcestruzzo 26 anni fa' ed ha funzionato per ben 10 anni senza cambiare sonda e senza alcun tipo di problema. Per stabilire la fluidita' del calcestruzzo mi sono invece affidato alla corrente assorbita dal motore, tramite TA su una fase e opportuno circuito di controllo che fungeva da amperometro, quindi senza usare nessun tipo di apparecchiatura digitale, tutto in analogico...
Pasquale
La questione non e' "discriminare", ma solo avere un'indicazione affidabile ed un sistema che funzioni sempre nello stesso modo ... poi certo ci sono anche altri sistemi, usare elettrodi in acciaio inox ad esempio e' uno, ma non saranno mai affidabili come gli altri migliori ... ![]()
E poi ci sono altri fattori che possono influire ...
Per fare un'esempio prendendo a modello proprio quello che hai costruito tu, dovendo lavorare con calcestruzzo avrai (presumo) usato elettrodi belli robusti, non fili o placchette sottili ... ed il semplice fatto di lavorare con un'elemento abrasivo come il calcestruzzo mantiene gli elettrodi liberi da sali ed ossidi per azione meccanica ... probabilmente sono i motivi principali per cui ancora ti funziona dopo tutto quel tempo ![]()
Buongiorno a tutti, e buona Pasquetta a tutti :).
ho provato a simulare con tinkercad il circuitino, ovviamente non funziona :D.
Probabilmente il mio approccio con il codice è completamente sbagliato. Non credo che il mio ingresso analogico riesca a rilevarmi il segnale che deriva dall'uscita PWM. Non ho potuto aggiungere il condensatore perchè mi aumenta la tensione, e mi diventa continua. il led accende con un intensità molto bassa, ma a me servirebbe un uscita costante, perchè il segnale sull ingresso analogico è sempre presente. Vi allego le immagini e il listato. Perdonate un principiante, please
.
int ricevitore= A0;
int soglia = 100;
int led =2;
int emet=6;
void setup()
{
pinMode(led, OUTPUT); // LED
pinMode(emet,OUTPUT); // EMETTITORE
}
void loop()
{
int ricevitore = analogRead(ricevitore);
analogWrite(6, 127);
millis();
if(ricevitore <= soglia){
digitalWrite(led, HIGH);
}else {
digitalWrite(led, LOW);
}
delay(200);
}
Vi ringrazio in anticipo.
Non capisco nulla di quasi tutto quello che avete detto fin qua... Ma chiamare una variabile locale al loop con lo stesso nome di una globale porta sicuramente a dei problemi.
Cambia nome a uno dei due ricevitore.
pascal69:
puo' generare tutti i fenomeni elettrochimici che vuole
Tutto ciò al calcestruzzo non gliene può di meno, ma...
christian3280:
Non credo che il mio ingresso analogico riesca a rilevarmi il segnale che deriva dall'uscita PWM. Non ho potuto aggiungere il condensatore perchè mi aumenta la tensione, e mi diventa continua
Il problema è volere a tutti i costi una soluzione "digitale semplice" per un problema che invece riguarda l'elettronica analogica (amplificatori audio, circuiti lineari, conversione e condizionamento dei segnali ecc).
Semplicemente non si può.
Il compromesso più semplice l'ho già postato al post #9, dove per rilevare il segnale (a onda quadra con duty cycle 50%) viene usata una porta logica (con funzione di ingresso ad alta impedenza e squadratore) seguita da un raddrizzatore, da un ulteriore squadratore, e solo a quel punto si ritorna nel mondo digitale fatto di "certezze binarie" leggibili in modo semplice da Arduino.
E questo per rilevare solo una condizione on/off, non valori intermedi (che richiederebbero ben altra gestione, ad esempio convertitori tensione→frequenza→tensione, o vere e proprie modulazioni).
Claudio_FF:
...
4) metti che sia un contenitore chiuso e l'elettrolisi crea una miscela idrogeno/ossigeno in perfette percentuali stechiometriche...
Il famoso "effetto KABOOM" ... ![]()
fratt:
Ma chiamare una variabile locale al loop con lo stesso nome di una globale porta sicuramente a dei problemi.
Cambia nome a uno dei due ricevitore.
Errore mio, l'ho semplicemente scritta 2 volte. L'ho tolta dal void loop. In effetti adesso il led accende. Il problema è che accende sempre, a prescindere se l'ingresso analogico riceve o meno ![]()
Claudio_FF:
Il problema è volere a tutti i costi una soluzione "digitale semplice" per un problema che invece riguarda l'elettronica analogica (amplificatori audio, circuiti lineari, conversione e condizionamento dei segnali ecc).Semplicemente non si può.
E questo per rilevare solo una condizione on/off, non valori intermedi (che richiederebbero ben altra gestione, ad esempio convertitori tensione→frequenza→tensione, o vere e proprie modulazioni).
Ciao Claudio, non ho mai detto che la soluzione fosse "semplice", altrimenti avrei evitato di chiederlo se fossi stato in grado di farlo da me.
Chiedo consigli a voi, che, soprattutto nel campo di Arduino ne sapete molto di più di me. Tempo fa chiesi ad un ingegnere elettronico con conoscenze di programmazione se Arduino fosse in grado di farlo e mi disse di si, spiegandomi soltanto la parte hardware( che in realtà conoscevo già). Però non mi diede suggerimenti di come realizzare il codice. Non avrei mai pensato che per rilevare la "semplice" presenza/assenza di un segnale fosse così complicato. D'altro canto vedo che con Arduino si possono fare cose molto complesse, per cui non riesco a capire come una cosa così "semplice" possa risultare difficilmente applicabile. Ho visto diversi modi per rilevare la presenza di liquidi nelle cisterne con Arduino, voglio evitare galleggianti, ultrasuoni e roba varia, usando degli elettrodi. Quindi, mettiamo il caso usi una porta logica per ottenere questo segnale, come posso far leggerne la presenza ad Arduino?
Non è questione di complicato, è che si è troppo abituati ad avere a che fare con semplificazioni e astrazioni (come la parola "segnale" che vuol dire tutto e niente) da dimenticare che appena fuori dalla realtà virtuale dei bit e dei significati umani, ci sono solo gli atomi e le leggi della fisica, che non fanno quello che vogliamo noi, e meno che meno quello che ci sembra più semplice o comodo.
Pertanto dimentica la parola segnale. Vuoi iniettare in un fluido una tensione elettrica, e riceverla in un altro punto. La fisica dice che per evitare tutti i problemi precedentemente elencati, dalle corrosioni, alle contaminazioni, alle esplosioni serve una tensione alternata non polarizzata. E questa si propagherà nel fluido a una certa velocità perdendo di intensità mano a mano che si allontana dalla sorgente. A questo punto quella grandezza elettrica non è più riconoscibile dagli ingressi di un normale circuito logico (che sempre per le leggi della fisica accettano/riconoscono una tensione solo se il valore rientra in un range ben definito), quindi occorre qualcosa che la capti, e ne riporti le grandezze elettriche ai valori necessari.
Il circuito estrapolato dal post #9 (che non è detto funzioni al 100%, servirebbe un oscilloscopio) potrebbe essere questo (i valori sono al link indicato):
Grazie Claudio, sei stato Mooolto chiaro! Proverò questo circuito su tinkercad ( non ho un oscilloscopio sfortunatamente), se posso farò anche un prototipo su una millefori. Speriamo che riesca a funzionare!
Vi aggiornerò!
Grazie
Io proverei a collegare l'elettrodo emittente un pin pwm con dutycicle impostato al 50%, e l'altro elettrodo ricevente ad un ingresso analogico.
Tale ingresso deve essere connesso verso massa tramite una resistenza da 1k.
Quando c'è liquido sul pin analogico leggerai un valore di tensione, quando non c'è liquido leggerai zero o giù di li.
GianlucaB:
Io proverei a collegare l'elettrodo emittente un pin pwm con dutycicle impostato al 50%, e l'altro elettrodo ricevente ad un ingresso analogico.
Tale ingresso deve essere connesso verso massa tramite una resistenza da 1k.
Quando c'è liquido sul pin analogico leggerai un valore di tensione, quando non c'è liquido leggerai zero o giù di li.
Buongiorno Gianluca, ho già provato in questo modo, ma non riesco a farlo funzionare. Non so se è il codice sbagliato oppure perchè non può funzionare questo sistema. Ti allego il circuito con tinkercad e il codice, magari sai darmi dei suggerimenti.
int ricevitore= A0;
int soglia = 100;
int led =2;
int emet=6;
void setup()
{
pinMode(led, OUTPUT); // LED
pinMode(emet,OUTPUT); // EMETTITORE
}
void loop()
{
analogWrite(6, 127);
millis();
if(ricevitore <= soglia){
digitalWrite(led, HIGH);
millis();
}else {
digitalWrite(led, LOW);
millis();
}
}
>christian3280: per evitare un fastidioso "bug" del forum ti prego di leggere e di tenere conto, per il futuro, di quanto scritto QUI. Grazie ![]()
Guglielmo
P.S.: L'ho fatto io nei post precedenti
No ho capito a cosa servono tutti questi componenti che ci hai infilato.
Comunque come fai a dire non funziona?
Se leggi direttamente la tensione che esce dal pwm ovvio che il led sarà sempre acceso, praticamente stai leggendo la tensione media del pwm.
La tensione che esce dal pwm deve attraversare un liquido, ed essere letta dall'altro elettrodo posto a distanza di qualche centimetro.