Buongiorno a tutti,
vi scrivo per un aiuto relativo a questo sensore di livello:
Sensore di livello
se lo collego alla Mega2560 con resistenza PullUp (vedi allegato) funziona tutto alla grande.
Ma se lo integro il tutto nel mio programma, i rilevamenti sono tutti reeati.... ovvero scatta senza alcuna variazione fisica dello stato.
Il programma in questione dovrà gestire un acquario marino con sensori di temperatura, relè e shield ethernet per il monitoraggio a distanza.
Qualcuno mi saprebbe dare una mano please?
Anticipatamente grazie a tutti.
Gestione_acquario_tastiera_e_eth.ino (14.6 KB)
Esempio_PullUp.ino (665 Bytes)
... non e' che hai semplicemente dimenticato la resistenza di pull-up ? ... (o che non fa contatto bene ? )
E' da considerare pressochè alla pari di un pulsante, quindi deve funzionare (a meno di probabili malfunzionamenti intrinsechi dell'oggetto come, ad esempio, il reed con le lamelle cotte).
Tuttavia io non mi sentirei sicuro a gestirlo come un pulsante (ovvero con pull-up) poichè è a stretto contatto con l'acqua e sarebbe sempre presente la 5V su un capo.
Per una applicazione simile io ho optato per un pull down esterno e fornitura della 5V a richiesta da un pin digitale di arduino gestito da software (attivo il pin digitale -> faccio 2 letture analogiche* di stato e tengo l'ultima -> disattivo il pin digitale).
*: uso un pin analogico per leggere lo stato del contatto (impostando da me le soglie di zero e uno in funzione della discretizzazione 1023 che ottengo dall'ADC) perchè l'umidità potrebbe alterare la superficie del contatto e quindi variare le caratteristiche elettriche, ma io ho un interruttore esterno e nudo, non un reed in ampolla stagna.
Etemenanki:
... non e' che hai semplicemente dimenticato la resistenza di pull-up ? ... (o che non fa contatto bene ? )
Mi fai sorgere un dubbio... il negoziante che me lo ha venduto mi detto che la resistenza in questione è solo sofware (PullUp), o c'è un errore?
gualandd:
E' da considerare pressochè alla pari di un pulsante, quindi deve funzionare (a meno di probabili malfunzionamenti intrinsechi dell'oggetto come, ad esempio, il reed con le lamelle cotte).
Onestamente mi è stato consigliato questo modello specifico in quanto resistente alla salsedine ed attivazione in base ad un contatto magnetico.
Dal link presente al post principale mi pare che sia così.
999danny:
Onestamente mi è stato consigliato questo modello specifico in quanto resistente alla salsedine ed attivazione in base ad un contatto magnetico.
Dal link presente al post principale mi pare che sia così.
Tranquillo, il prodotto è giusto.
Il mio dubbio era legato alle connessioni (per la presenza della tensione).
Da software puoi attivare le pull-up, le pull-down sono da implementare hardware.
Se non ti funziona prova "alla vecchia" con un tester:
imposti il tester su continuità e vedi come e se si chiudono le lamelle (potrebbe essere NC o NA)...
se non cambia stato potrebbe avere un problema di magnete o c'è troppo gioco tra parte fissa e mobile ed il magnete non influenza correttamente il reed all'interno della parte fissa.
Anzitutto scusami se rispondo solo ora, ma tra lavoro e impegni di casa non ho avuto molto tempo a disposizione.
Il prodotto funziona perfettamente sia collegandolo ad un altro arduino mega (ma con solo il software relativo al controllo di livello, senza shield eth e implementazioni varie), sia con il tester.
Onestamente pensavo che il problema fosse dovuto ad alimentazione insufficiente (alimentazione tramite usb pc) ma alimentando il tutto con un alimentatore a 12V 5A (l'alimentatore alimentata anche 16 relè a 12V) il problema persiste.
A questo punto suppongo che ci siamo problemi SW nella programmazione, ma non riesco a capire dove.
999danny:
Onestamente pensavo che il problema fosse dovuto ad alimentazione insufficiente (alimentazione tramite usb pc) ma alimentando il tutto con un alimentatore a 12V 5A (l'alimentatore alimentata anche 16 relè a 12V) il problema persiste.
A questo punto suppongo che ci siamo problemi SW nella programmazione, ma non riesco a capire dove.
L'alimentazione non può essere la causa essendo banalmente due lamelle che chiudono un circuito quando eccitate dal magnete, a meno di aver fatto corti (non hai collegato un filo al + ed uno al - vero?).
BTW, prova con uno sketch semplice per la gestione di un pulsante sulla scheda arduino dove vuoi utilizzarlo e controlla che non ci siano falsi contatti (se stai usando una breadboard).
Lato software guarda che ad esempio non ci siano delay strani che ne inibiscono il funzionamento e che i cicli (tipo for o if) si chiudano correttamente, altrimenti salti parti di codice!
Ho appena risolto, effettivamente era come diceva Gualandd, la breadbord faceva falso contatto e i segnali arrivavano in maniera alternata...
Grazieeeeee