Sommario:
- Passaggio 1: la matematica…
- Fase 2: Praticità
- Passaggio 3: gli ingredienti
- Passaggio 4: test del prototipo (e del codice)
- Passaggio 5: indicatore dell'acqua piovana Ino Sketch
- Passaggio 6: caricamento del codice su un Arduino Pro Mini (senza USB)
- Passaggio 7: assemblaggio
- Passaggio 8: l'articolo finito
- Passaggio 9: Postscript - Cento (cinque) percento?
- Passaggio 10: ripensamenti
Video: Misuratore di capacità del serbatoio dell'acqua piovana ad ultrasuoni: 10 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
Se sei come me e hai un po' di coscienza ambientale (o sei solo spilorcio desideroso di risparmiare qualche soldo - che sono anche io …), potresti avere un serbatoio di acqua piovana. Ho un serbatoio per raccogliere la pioggia piuttosto rara che arriva in Australia - ma ragazzi oh ragazzi, quando piove qui, piove DAVVERO! Il mio serbatoio è alto circa 1,5 m ed è su un piedistallo, il che significa che devo scendere dei gradini per controllare il livello dell'acqua (o - perché sono così pigro, bilanciare in modo precario sopra una vecchia bombola del gas dal barbecue che ora ha preso residenza permanente come un "passo" accanto al serbatoio).
Volevo un modo per poter controllare il livello dell'acqua nel serbatoio, senza dover arrampicarmi e aggrapparmi al tubo di scarico con una mano (preoccupandomi di cosa potrebbero esserci dietro i ragni - hai sentito parlare dei ragni australiani - giusto?) … Quindi, con un rinnovato interesse in tarda età per l'elettronica e cloni Arduino economici dalla Cina su ebay, ho deciso di provare a costruire un 'widget' per fare il lavoro per me.
Ora, il mio widget "da sogno" doveva essere installato permanentemente nel serbatoio, utilizzare una fonte di energia solare, con una lettura remota nel mio garage, o forse un trasmettitore wireless tramite Bluetooth che potevo controllare dal mio telefono, o forse anche un Dispositivo di tipo ESP che ospita una pagina Web aggiornata automaticamente, in modo da poter controllare il livello dell'acqua nel mio serbatoio da qualsiasi parte del mondo su Internet… ma in realtà, perché ho bisogno di tutto questo? Quindi ho ricomposto un po' i miei grandi ideali (beh, abbastanza considerevolmente), e ho eliminato il wireless della soluzione, l'installazione permanente, la ricarica solare e la capacità di controllare il livello del mio serbatoio dall'estremità posteriore dell'aldilà (sempre supponendo che il back-end di Beyond abbia Wi-Fi disponibile, cioè…)
Il progetto risultante è stato declassato all'unità portatile vista sopra, che può essere semplicemente tenuta sopra l'apertura del serbatoio e attivata da un pulsante, con una lettura digitale, che può essere letta da terra - molto più pratica.
Passaggio 1: la matematica…
Dopo aver giocato con diverse idee su come determinare il livello dell'acqua, ho deciso di utilizzare un trasmettitore/ricevitore a ultrasuoni come base per il mio widget e di utilizzare un Arduino per prendere le letture e fare tutti i calcoli. Le letture restituite dal sensore sono (indirettamente) sotto forma di distanza - dal sensore a ultrasuoni alla superficie su cui è rimbalzato (la superficie dell'acqua - o il fondo del serbatoio, se vuoto), e viceversa, quindi abbiamo bisogno fare alcune cose con questo, per arrivare a una percentuale rimanente nel serbatoio.
NB - in realtà il valore restituito dal sensore è in realtà solo il tempo impiegato dal segnale per lasciare il lato emettitore e tornare al ricevitore. Questo è in microsecondi, ma sapere che la velocità del suono è di 29 microsecondi per cm (Cosa? Non lo sapevi? Pfft…) rende una facile conversione da un periodo di tempo a una misurazione della distanza.
Innanzitutto, ovviamente, dobbiamo dividere la distanza per 2 per portare il sensore alla distanza dalla superficie. Quindi, sottrarre la distanza costante dal sensore alla profondità massima dell'acqua. Il valore rimanente è la profondità dell'acqua che è stata utilizzata. Quindi, sottrarre quel valore dalla profondità massima dell'acqua, per trovare la profondità dell'acqua rimasta nel serbatoio.
Questo valore poi, è la base per qualsiasi altro calcolo, come calcolare questa profondità d'acqua come percentuale della profondità massima, o moltiplicare la profondità per la costante 'superficie', per ottenere un volume d'acqua che può essere visualizzato in litri (o galloni, o qualsiasi altra unità - purché tu conosca la matematica per farlo - mi attengo a una percentuale per semplicità).
Fase 2: Praticità
L'unità potrebbe essere tenuta in mano, ma ciò introduce una piccola possibilità di piccole imprecisioni se l'unità non viene tenuta nello stesso posto e con la stessa angolazione ogni volta. Anche se sarebbe solo un errore molto minore, e probabilmente nemmeno uno che si registrerebbe, sarebbe il tipo di cosa che mi tormenta.
Tuttavia, essere tenuto in mano introduce la possibilità molto più grande che la dannata cosa venga lasciata cadere nel serbatoio e mai più vista. Quindi, per mitigare ENTRAMBE queste possibilità, sarà fissato su un pezzo di legno, che viene poi posizionato sopra l'apertura del serbatoio, in modo che la misurazione venga presa ogni volta dalla stessa altezza e angolazione identiche (e se è caduta nel serbatoio, almeno il legno galleggerà).
Un pulsante attiva l'unità (eliminando così la necessità di un interruttore on/off e la possibilità di una batteria scarica accidentalmente) e avvia lo sketch nell'Arduino. Questo richiede un numero di letture dall'HC-SR04 e ne fa la media (per mitigare eventuali letture irregolari).
Ho anche incluso un po' di codice per verificare l'alto o il basso su uno dei pin I/O digitali di Arduino e usarlo per mettere l'unità in quella che ho chiamato modalità "Calibrazione". In questa modalità, il display mostra semplicemente la distanza effettiva (divisa per 2) restituita dal sensore, così ho potuto verificarne la precisione con un metro a nastro.
Passaggio 3: gli ingredienti
L'unità è composta da tre componenti principali…
- Un modulo trasmettitore/ricevitore a ultrasuoni HC-SR04
- Un microcontrollore Arduino Pro Mini
- Un display LED a 4 cifre a 7 segmenti o un "modulo" di visualizzazione come un TM1637
Tutto quanto sopra può essere facilmente trovato su ebay, semplicemente cercando i termini mostrati in grassetto.
In questa applicazione, il display utilizza semplicemente 3 cifre per visualizzare un valore % di 0-100 o 4 cifre per mostrare il numero di litri (max 2000 nel mio caso), quindi qualsiasi display a 4 cifre andrà bene - non è necessario preoccuparti se il modulo ha punti decimali o due punti. Un "modulo" di visualizzazione (LED montato su una scheda breakout, con un chip di interfaccia) è più semplice, in quanto utilizza meno connessioni pin, ma Arduino potrebbe ospitare un display LED grezzo con 12 pin con alcune piccole modifiche al codice (infatti il mio progetto originale era basato su questa configurazione). Si noti tuttavia che l'utilizzo di un display a LED grezzo richiede anche 7 resistori per limitare la corrente assorbita da ciascun segmento. Mi è capitato di avere a disposizione un modulo di visualizzazione dell'orologio TM1637, quindi ho deciso di usarlo.
I bit e i bob supplementari includono una clip per batteria da 9 V (e batteria, ovviamente), un interruttore a pulsante momentaneo "push-to-make", una scatola di progetto, pin di intestazione, cavi di collegamento e una lunghezza di 2"x4" in legno che supera il diametro dell'apertura del serbatoio.
I pezzi supplementari (a parte il pezzo di legno) sono stati acquistati dalla mia catena di negozi di elettronica per hobby locale, che è Jaycar in Australia. Immagino che Maplin nel Regno Unito sarebbe una valida alternativa, e penso che ce ne siano alcuni negli Stati Uniti, come Digikey e Mouser. Per altri paesi, temo di non saperlo, ma sono sicuro che se ti manca un outlet o un fornitore online adatto nel tuo paese, allora i venditori ebay cinesi arriveranno per te, se non lo fai attenzione ad aspettare qualche settimana per la consegna (ironicamente, nonostante sia uno dei nostri vicini più vicini, 6 settimane o più non sono insolite per la consegna in Australia dalla Cina!).
Assicurati di ottenere una scatola del progetto abbastanza grande - ho indovinato il mio prima di avere i componenti disponibili, ed è davvero una stretta stretta - potrei aver bisogno di procurarmi un pulsante diverso che usi meno spazio.
Oh, e a proposito, la lunghezza del legname è appena arrivata da alcuni ritagli di scarto che tengo nell'angolo del mio garage (come casa per altri di quei adorabili ragni).
Una volta compreso lo schema e le funzionalità, puoi decidere di adattare la tua versione, e includere un interruttore on/off, oppure utilizzare una fonte di alimentazione agli ioni di litio 18650, con pannello solare e regolatore di carica per mantenerlo costantemente ricaricato e pronto all'uso, o cambia il semplice display a LED per un LCD multilinea o un OLED grafico con più opzioni di visualizzazione delle informazioni, come mostrare la percentuale E i litri rimanenti allo stesso tempo. Oppure puoi optare per l'unità IoT wireless che canta e balla tutto, installata permanentemente nel serbatoio CON ricarica solare. Mi piacerebbe conoscere le tue variazioni e modifiche.
Passaggio 4: test del prototipo (e del codice)
Avendo acquistato l'HC-SR04 da una fonte cinese a basso costo su ebay, non mi aspettavo davvero di ricevere un'unità estremamente accurata, quindi ho voluto testarlo prima sulla breadboard, nel caso avessi bisogno di aggiungere un codice di correzione della distanza in il mio schizzo.
A questo punto, stavo cercando informazioni di base su come connettere e utilizzare l'HC-SR04 e devo riconoscere l'istruzione di jsvester "Esempio Arduino semplice e HC-SR04". Il suo esempio e la sua esperienza sono stati per me un ottimo punto di partenza da cui iniziare a programmare.
Ho trovato la libreria di funzioni NewPing per l'HC-SR04, che include funzionalità integrate per prendere la media di più letture, rendendo così il mio codice molto più semplice.
Ho trovato anche una libreria per il modulo di visualizzazione dell'orologio TM1637, che ha reso la visualizzazione dei numeri molto più semplice. Nel mio codice originale (per il display a 7 segmenti a 4 cifre), dovevo dividere il numero in singole cifre, quindi costruire ogni singola cifra sul display sapendo quali segmenti illuminare e quindi scorrere ogni cifra nel numero e costruendo quel numero sulla cifra del display appropriata. Questo metodo è chiamato multiplexing e mostra effettivamente solo una singola cifra alla volta, ma le scorre da una cifra all'altra così rapidamente che l'occhio umano non se ne accorge e ti fa credere che tutte le cifre siano su allo stesso tempo. Come con la libreria HC-SR04 che semplifica le operazioni di misurazione, questa libreria di visualizzazione si occupa di tutto il multiplexing e della gestione delle cifre. Le pagine di riferimento di Arduino collegate sopra forniscono alcuni esempi e, naturalmente, ogni libreria viene fornita con un codice di esempio che può essere di grande aiuto.
n
Quindi, le immagini sopra mostrano il mio banco di prova: lo sto testando sul mio Arduino Uno per semplicità, poiché è già configurato per connessioni temporanee riutilizzabili per la prototipazione. L'unità sta funzionando in modalità "Calibrazione" qui (notare che il pin digitale 10 - il filo bianco - è collegato a terra) e legge accuratamente 39 cm sulla scatola che avevo posizionato casualmente di fronte ad essa, come mostrato dal metro a nastro. In questa modalità, visualizzo la piccola 'c' davanti alla misurazione, solo per indicare che non è la misurazione normale.
Oltre a Vcc (5v) e Ground, l'HC-SR04 necessita di altre 2 connessioni: il trigger (giallo al pin 6) e l'eco (verde al pin 7). Il display necessita anche di Vcc (5v) e Ground e di altre 2 connessioni: clock (blu al pin 8) e DIO (viola al pin 9). Come già accennato, la modalità di funzionamento è controllata da un alto o basso sul pin 10 (bianco). Le connessioni utilizzeranno gli stessi pin su Arduino Pro Mini, ma saranno saldate in modo permanente. La modalità operativa sarà selezionabile utilizzando un ponticello su due dei tre pin dell'intestazione, collegati rispettivamente a Vcc, pin 10 e massa.
Le specifiche ufficiali per l'HC-SR04 affermano qualcosa come un errore massimo di soli 3 millimetri fino alla distanza operativa massima progettata di 4 metri, quindi immagina la mia sorpresa nello scoprire che la mia unità era certamente precisa fino a quel grado fino a 2 metri - che è ben al di sopra di ciò di cui ho bisogno. A causa dello spazio limitato per una configurazione di test rapida e sporca, i risultati del mio test oltre quella distanza venivano corrotti da riflessi da superfici diverse dal mio obiettivo di test, poiché il raggio del trasmettitore si diffondeva e assorbiva un'area più ampia. Ma fintanto che è buono fino a 1,5 metri, mi andrà bene, grazie mille:-)
Passaggio 5: indicatore dell'acqua piovana Ino Sketch
Il codice completo è allegato, ma includerò alcuni estratti di seguito per spiegare alcuni passaggi.
Prima di tutto, la configurazione…
#includere
#include #include // pin per HC-SR04 #define pinTrig 6 #define pinEcho 7 NewPing sonar(pinTrig, pinEcho, 155); // 400 cm è massimo per HC-SR04, 155 cm è massimo per il serbatoio // Pin di connessione del modulo LED (pin digitali) #define CLK 8 #define DIO 9 TM1637Display display (CLK, DIO); // Altri pin #define opMode 10
Oltre alle librerie TM1637 e NewPing, ho incluso anche una libreria Math, che mi dà accesso alla funzione di "arrotondamento". Lo uso in alcuni dei calcoli matematici per permettermi di visualizzare la percentuale al 5% più vicino, ad esempio.
Successivamente vengono definiti i pin per i due dispositivi e avviati i dispositivi.
Infine, definisco il pin 10 per la modalità operativa.
// disattiva tutti i segmenti per tutte le cifre
uint8_t byte = { 0x00, 0x00, 0x00, 0x00 }; display.setSegments(byte);
Questa sezione di codice mostra un modo per controllare il modulo display, consentendo il controllo individuale di ogni segmento in ogni cifra. Ho impostato i 4 elementi nell'array chiamato byte, tutti uguali a zero. Ciò significa che ogni bit di ogni byte è zero. Gli 8 bit vengono utilizzati per controllare ciascuno dei 7 segmenti e il punto decimale (o i due punti in un display di tipo orologio). Quindi, se tutti i bit sono zero, nessuno dei segmenti sarà acceso. L'operazione setSegments invia il contenuto dell'array al display e non mostra (in questo caso) nulla. Tutti i segmenti sono disattivati.
Il bit più significativo in un byte controlla il DP, quindi i restanti 7 bit controllano i 7 segmenti da G ad A in ordine inverso. Quindi, per visualizzare il numero 1, ad esempio, sono necessari i segmenti B e C, quindi la rappresentazione binaria sarebbe '0b00000110'. (Grazie a CircuitsToday.com per l'immagine sopra).
// Prendi 10 letture e usa la durata media.
int durata = sonar.ping_median(10); // la durata è in microsecondi if(duration == 0) // Errore di misurazione - inconcludente o nessun echo { uint8_t bytes = { 0x00, 0b01111001, 0b01010000, 0b01010000 }; // Segmenti per scrivere "Err" display.setSegments(bytes); }
Qui, sto dicendo all'HC-SR04 di prendere 10 letture e di darmi il risultato medio. Se non viene restituito alcun valore, l'unità è fuori intervallo. Quindi uso la stessa tecnica di sopra per controllare segmenti specifici sulle 4 cifre, per precisare le lettere (vuote), E, r e r. L'uso della notazione binaria rende un po' più semplice mettere in relazione i singoli bit con i segmenti.
Passaggio 6: caricamento del codice su un Arduino Pro Mini (senza USB)
Come ho detto prima, gli articoli dei venditori ebay cinesi spesso impiegano 6 settimane o più per arrivare, e gran parte della mia prototipazione e scrittura del codice è stata eseguita in attesa dell'arrivo di alcuni componenti: Arduino Pro Mini è uno di questi.
Una cosa che non ho notato del Pro Mini, fino a quando non l'ho già ordinato, è che non ha una porta USB per scaricare lo schizzo. Quindi, dopo aver cercato freneticamente su Google, ho scoperto che ci sono due modi per caricare uno schizzo in questo caso: uno richiede un cavo speciale che va dall'USB sul PC, a 6 pin specifici sul Pro Mini. Questo gruppo di 6 pin è noto come pin ISP (in-system programmer) e puoi effettivamente utilizzare questo metodo su qualsiasi Arduino se lo desideri, ma poiché l'interfaccia USB è disponibile su praticamente tutte le altre varianti di Arduino (I pensa), usare questa opzione è molto più semplice. L'altro metodo richiede di avere un altro Arduino con un'interfaccia USB su di esso, per fungere da "intermediario".
Fortunatamente, avere il mio Arduino Uno significava che potevo usare il secondo metodo, che ti illustrerò di seguito. Si chiama utilizzando "Arduino come ISP". In poche parole, carichi uno schizzo speciale sul tuo Arduino "intermediario", che lo trasforma in un'interfaccia seriale. Quindi carica il tuo schizzo effettivo, ma invece della normale opzione di caricamento, usi un'opzione dal menu IDE che carica "usando Arduino come ISP". L'Arduino "intermediario" prende quindi il tuo schizzo effettivo dall'IDE e lo passa ai pin ISP del Pro Mini, invece di caricarlo nella propria memoria. Non è difficile una volta capito come funziona, ma è un ulteriore livello di complessità che potresti voler evitare. Se è così, o non hai un altro Arduino che puoi usare come "intermediario", allora potresti voler acquistare un Arduino Nano, o uno degli altri modelli con fattore di forma ridotto, che include l'interfaccia USB e rende la programmazione una prospettiva più semplice.
Ecco un paio di risorse che potresti trovare utili per comprendere il processo. Il riferimento Arduino si riferisce specificamente alla masterizzazione di un nuovo bootloader sul dispositivo di destinazione, ma puoi altrettanto facilmente caricare uno schizzo allo stesso modo. Ho scoperto che il video di Julian Ilett rende il concetto molto più chiaro, anche se salta la parte nel riferimento Arduino che spiega come collegare i due Arduino insieme e programma invece un chip nudo su una breadboard.
- Il Manuale di riferimento di Arduino - Utilizzo di Arduino come ISP
- Video YouTube di Julian Ilett - Utilizzo di un Arduino come ISP
Poiché il Pro Mini non ha i 6 pin ISP opportunamente raggruppati, è necessario decodificare quale dei pin digitali si riferisce ai 4 pin di programmazione (le altre due connessioni sono solo Vcc e Gnd, quindi sono piuttosto semplici). Fortunatamente per te, ci sono già passato - e sono disposto a condividere la conoscenza con te - che persona generosa che sono!!
L'Arduino Uno, e molti altri nella famiglia Arduino, hanno i 6 pin comodamente disposti in un blocco 3x2, come questo (immagine da www.arduino.cc).
Sfortunatamente, il Pro Mini no. Come puoi vedere di seguito, sono in realtà abbastanza facili da identificare e sono ancora disposti in 2 blocchi di 3 pin. MOSI, MISO e SCK sono gli stessi dei pin digitali 11, 12 e 13 rispettivamente su Pro Mini e Arduino Uno, e per la programmazione ISP, collega semplicemente 11 a 11, 12 a 12 e 13 a 13. Il Pro Il pin di reset di Mini deve essere collegato al pin 10 di Uno e il Vcc (5v)/Ground di Pro Mini deve essere collegato all'Arduino +5v/Ground. (Immagine da www.arduino.cc)
Passaggio 7: assemblaggio
Come ho detto, ho scommesso sul caso e me ne sono pentito. Montare tutti i componenti è stata una vera impresa. In effetti ho dovuto piegare i contatti del pulsante lateralmente e mettere un po' di imballaggio all'esterno per sollevarlo un po' di più in modo che si adattasse alla profondità della scatola, e ho dovuto molare 2-3 mm da ciascun lato di anche la scheda del modulo display.
Ho praticato 2 fori nella custodia per far passare i sensori a ultrasuoni. Ho praticato i fori un po' troppo piccoli e poi li ho aumentati gradualmente usando una piccola smerigliatrice rotante, in modo da poterli ottenere un bel 'push fit'. Sfortunatamente, erano troppo vicini ai lati per poter usare il grinder dall'interno della scatola, e questo doveva essere fatto dall'esterno, causando molti graffi e segni di skate dove il grinder è scivolato - vabbè, questo è tutto sul fondo comunque - chi se ne frega..?
Quindi ho tagliato una fessura in un'estremità della dimensione giusta per far passare il display. Ancora una volta, la mia ipotesi sulle dimensioni della scatola mi ha morso sul retro poiché lo slot mi ha lasciato con un pezzo molto sottile sopra il display, che inevitabilmente si è rotto mentre lo stavo archiviando. Vabbè, è per questo che è stata inventata la super colla…
Infine, con tutti i componenti posizionati approssimativamente nella scatola, ho misurato dove inserire il foro nel coperchio, in modo che il corpo del pulsante cadesse nell'ultimo spazio disponibile. APPENA!!!
Successivamente, ho saldato tutti i componenti insieme per testare che funzionassero ancora dopo la mia piegatura, rettifica e rifilatura, prima di assemblarli tutti nella custodia. È possibile vedere la connessione del jumper appena sotto il modulo display, con il pin 10 sull'Arduino (cavo bianco) collegato a Gnd, mettendo così l'unità in modalità calibrazione. Il display legge 122 cm dal mio banco - deve aver raccolto un segnale riflesso dalla parte superiore del telaio della finestra (è troppo basso per essere il soffitto).
Quindi si trattava di far scoppiare la pistola per colla a caldo e di mettere a posto tutti i componenti. Fatto ciò, ho scoperto che il piccolo spazio tra la parte superiore del modulo display e il coperchio, una volta che il modulo è stato incollato in posizione, ha lasciato un po' di rigonfiamento in cui il coperchio non si adatta perfettamente come vorrei. Potrei provare a fare qualcosa al riguardo un giorno - o più probabilmente, non lo farò…
Passaggio 8: l'articolo finito
Dopo alcuni test post-assemblaggio e una correzione al mio codice per tenere conto della profondità del pezzo di legno a cui avevo avvitato il dispositivo (cosa che ho completamente trascurato nei miei calcoli - d'oh!!), è tutto fatto. Finalmente!
Prove assemblate
Con l'unità appena seduta a faccia in giù sul mio banco, ovviamente non ci sarà alcun segnale riflesso, quindi l'unità mostra correttamente una condizione di errore. Lo stesso sarebbe vero se la superficie riflettente più vicina fosse al di fuori della portata dell'unità.
Sembra che dalla mia panca al pavimento sia 76 cm (beh, 72 cm più la profondità di 4 cm del pezzo di legno).
La parte inferiore dell'unità, che mostra il trasmettitore e il ricevitore che sporgono dal pezzo di legno - dovrei davvero smettere di chiamarlo un pezzo di legno - d'ora in poi sarà indicato come la stabilizzazione del calibro e la piattaforma di posizionamento di precisione! Per fortuna, questa è probabilmente l'ultima volta che lo menzionerò;-)
Ooh, puoi vedere tutti quei brutti graffi e segni di pattinaggio in questo …
… ed ecco l'articolo finito, posto in modalità operativa normale, misurando effettivamente la capacità del mio serbatoio con l'approssimazione del 5%. È stata una domenica pomeriggio (molto) piovosa che mi ha visto finire questo progetto, da qui le gocce di pioggia sull'unità e la lettura molto piacevole del 90%.
Spero che ti sia piaciuto leggere questo tutorial e che tu abbia imparato un po' sulla programmazione Arduino, sulla fisica e sull'uso del sonar/riflessione ultrasonica, le insidie dell'uso di congetture nella pianificazione del progetto e che tu sia stato ispirato a realizzare il tuo proprio indicatore del serbatoio dell'acqua piovana - e poi installare un serbatoio dell'acqua piovana su cui usarlo, aiutando un po' l'ambiente e risparmiando sulla bolletta dell'acqua.
Per favore continua a leggere - per quello che è successo il giorno dopo…!
Passaggio 9: Postscript - Cento (cinque) percento?
Quindi, il lunedì dopo la piovosa domenica, il serbatoio era assolutamente pieno come avrebbe potuto essere. Dato che è una delle pochissime volte in cui l'ho visto completamente pieno, ho pensato che sarebbe stato il momento ideale per confrontare l'indicatore, ma indovina un po': è stato registrato come 105%, quindi c'era ovviamente qualcosa che non andava.
Ho tirato fuori la mia astina di livello e ho scoperto che le mie ipotesi originali di 140 cm come profondità massima dell'acqua e 16 cm di altezza libera (basate su stime visive fatte dall'esterno del serbatoio), erano entrambe un po' fuori dalle misurazioni effettive. Così armato dei dati reali per il mio benchmark al 100%, sono stato in grado di modificare il mio codice e ricaricare Arduino.
La profondità massima dell'acqua risulta essere 147 cm, con il punto di misurazione seduto a 160 cm, dando 13 cm di altezza libera (la somma dell'altezza libera all'interno del serbatoio, l'altezza del collo del serbatoio e la profondità del pezzo di … whoa, no, cosa?! Intendo la profondità della piattaforma di stabilizzazione del calibro e posizionamento di precisione!).
Dopo aver corretto di conseguenza le variabili maxDepth e headroom, oltre a reimpostare la portata massima dell'oggetto sonar a 160 cm, un nuovo test rapido ha mostrato che il 100% è sceso al 95% mentre alzavo leggermente l'indicatore (per simulare una piccola quantità di l'acqua è stata utilizzata).
Lavoro fatto!
PS: questo è il mio primo tentativo di istruibile. Se ti piace il mio stile, il senso dell'umorismo, l'onestà nell'ammettere gli errori (ehi - anche io non sono perfetto…), ecc. - fammi sapere e potrebbe darmi la spinta per farne un altro.
Passaggio 10: ripensamenti
Capacità utilizzabile
Quindi sono passate alcune settimane da quando ho pubblicato questo Instructable, e ho ricevuto molti commenti in risposta, alcuni dei quali hanno suggerito alcuni meccanismi alternativi, sia elettronici che manuali. Ma questo mi ha fatto pensare, e c'è qualcosa che probabilmente avrei dovuto sottolineare all'inizio.
- Il mio serbatoio ha una pompa, che è installata a livello del suolo, appena leggermente al di sotto della base del serbatoio. Poiché la pompa è il punto più basso del sistema e l'acqua della pompa è sotto pressione, posso utilizzare l'intera capacità del mio serbatoio.
- TUTTAVIA - se il tuo serbatoio non ha una pompa e si basa sull'alimentazione a gravità, la capacità effettiva del serbatoio è limitata dall'altezza del tuo rubinetto. Una volta che l'acqua rimanente nel serbatoio è inferiore a quella del rubinetto, l'acqua non scorrerà.
Quindi, indipendentemente dal fatto che tu stia utilizzando un manometro elettronico, o un vetro spia manuale, o un sistema di tipo a galleggiante e bandiera, tieni presente che senza una pompa, la "base" effettiva del tuo serbatoio è in realtà l'altezza dell'uscita del serbatoio o rubinetto.
Consigliato:
Indicatore del livello dell'acqua del serbatoio: 11 passaggi
Indicatore del livello dell'acqua del serbatoio: Ciao amico, oggi farò un indicatore del livello dell'acqua del serbatoio usando il transistor BC547. Questo circuito mostrerà il livello dell'acqua. Cominciamo
Misuratore di livello del serbatoio ad ultrasuoni: 5 passaggi (con immagini)
Misuratore di livello del serbatoio ad ultrasuoni: è necessario monitorare il livello del fluido in un pozzo di grande diametro, un serbatoio o un contenitore aperto? Questa guida ti mostrerà come realizzare un misuratore di livello del fluido senza contatto sonar utilizzando un'elettronica economica! Lo schizzo sopra mostra una panoramica di ciò a cui miravamo con t
Utilizzo di sensori di temperatura, acqua piovana e vibrazioni su un Arduino per proteggere le ferrovie: 8 passaggi (con immagini)
Utilizzo di sensori di temperatura, acqua piovana e vibrazioni su un Arduino per proteggere le ferrovie: nella società moderna, un aumento dei passeggeri ferroviari significa che le compagnie ferroviarie devono fare di più per ottimizzare le reti per stare al passo con la domanda. In questo progetto mostreremo su piccola scala come i sensori di temperatura, acqua piovana e vibrazioni o
Metodi di rilevamento del livello dell'acqua Arduino utilizzando il sensore a ultrasuoni e il sensore dell'acqua Funduino: 4 passaggi
Metodi per rilevare il livello dell'acqua Arduino utilizzando il sensore ad ultrasuoni e il sensore dell'acqua Funduino: in questo progetto, ti mostrerò come creare un rilevatore d'acqua economico utilizzando due metodi: 1. Sensore a ultrasuoni (HC-SR04).2. Sensore acqua Funduino
Chiusa dell'acqua piovana: 11 passaggi (con immagini)
Chiusa dell'acqua piovana: un forte temporale può causare un trabocco sui nostri: marciapiedi, pozzi di acqua piovana, polder e le nostre dighe. Per evitare che ciò accada, abbiamo inventato uno sluce di acqua piovana! La chiusa per l'acqua piovana calcola digitalmente la distanza tra l'acqua piovana