Cuprins:

Contor de capacitate al rezervorului de apă de ploaie cu ultrasunete: 10 pași (cu imagini)
Contor de capacitate al rezervorului de apă de ploaie cu ultrasunete: 10 pași (cu imagini)
Anonim
Contor de capacitate cu rezervor de apă de ploaie cu ultrasunete
Contor de capacitate cu rezervor de apă de ploaie cu ultrasunete

Dacă sunteți la fel ca mine și aveți un pic de conștiință a mediului (sau sunteți doar flori dornici să economisiți câțiva dolari - care sunt și eu …), este posibil să aveți un rezervor de apă de ploaie. Am un rezervor pentru a culege ploaia destul de rară pe care o primim în Australia - dar băiete, băiete, când plouă aici, chiar plouă! Rezervorul meu are o înălțime de aproximativ 1,5 m și se află pe un soclu, ceea ce înseamnă că trebuie să fac pași pentru a verifica nivelul apei (sau - pentru că sunt atât de leneș, echilibrează precar deasupra unei sticle vechi de gaz de la grătar pe care a luat-o acum reședință permanentă ca „pas” lângă rezervor).

Mi-am dorit o modalitate de a putea verifica nivelul apei din rezervor, fără ca toate să urce și să atârne de țeava de scurgere cu o singură mână (în timp ce îmi fac griji cu privire la ce păianjeni ar putea fi în spatele ei - ați auzit despre păianjeni australieni - nu?) … Așadar, cu un interes reînnoit în viața electronică și clone Arduino ieftine din China pe eBay, am decis să încerc să construiesc un „widget” pentru a face treaba pentru mine.

Acum, widget-ul meu „vis” era să fie instalat permanent în rezervor, să folosesc o sursă de energie încărcată cu energie solară, cu o citire de la distanță în garajul meu, sau poate un transmițător wireless folosind Bluetooth pe care să-l pot verifica de pe telefonul meu, sau poate chiar un Dispozitiv de tip ESP care găzduiește o pagină web actualizată automat, astfel încât să pot verifica nivelul de apă din rezervorul meu de oriunde din lume pe internet … dar într-adevăr - de ce am nevoie de toate acestea? Așa că mi-am format puțin marile mele idealuri (bine, destul de considerabil) și am eliminat fără fir soluția, instalarea permanentă, încărcarea solară și capacitatea de a verifica nivelul rezervorului meu din capătul din spate (întotdeauna presupunând că partea de dincolo de dincolo are WiFi disponibil, adică …)

Proiectul rezultat a fost retrogradat în unitatea portabilă văzută mai sus, care poate fi pur și simplu ținută peste deschiderea rezervorului și activată printr-un buton, cu o citire digitală, care poate fi citită de la nivelul solului - mult mai practic.

Pasul 1: Matematica …

După ce am jucat mai multe idei despre cum să determin nivelul apei - m-am decis cu un transmițător / receptor cu ultrasunete ca bază pentru widget-ul meu și folosind un Arduino pentru a lua citirile și pentru a face toate calculele. Citirile returnate de la senzor sunt (indirect) sub forma unei distanțe - de la senzorul cu ultrasunete la suprafața pe care a sărit (suprafața apei - sau partea inferioară a rezervorului, dacă este goală) și înapoi, așa că avem nevoie să faci câteva lucruri cu asta, pentru a ajunge la un procent rămas în rezervor.

NB - de fapt, valoarea returnată de la senzor este într-adevăr doar timpul necesar semnalului pentru a părăsi partea emițătorului și a reveni la receptor. Aceasta este în microsecunde - dar cunoașterea vitezei sunetului este de 29 microsecunde pe cm (Ce? Nu știați asta? Pfft …) face o conversie ușoară de la o perioadă de timp la o măsurare a distanței.

Imagine
Imagine

Mai întâi - desigur, trebuie să împărțim distanța la 2 pentru a obține senzorul la distanță de suprafață. Apoi, scade distanța constantă de la senzor la adâncimea de apă „maximă”. Valoarea rămasă este adâncimea de apă care a fost utilizată. Apoi, scădeți acea valoare din adâncimea maximă a apei, pentru a găsi adâncimea de apă rămasă în rezervor.

Această valoare este baza pentru orice alte calcule, cum ar fi calcularea acestei adâncimi de apă ca procent din adâncimea maximă sau multiplicarea adâncimii cu „suprafața” constantă, pentru a obține un volum de apă care poate fi afișat în litri (sau galoane sau orice altă unitate - atâta timp cât știți matematica pentru ao face - mă țin de un procent pentru simplitate).

Pasul 2: Aspecte practice

Unitatea ar putea fi ținută manual, dar acest lucru introduce o mică posibilitate de inexactități minore dacă unitatea nu este ținută în același loc și la același unghi de fiecare dată. Deși ar fi doar o eroare foarte mică și probabil că nici măcar una care s-ar înregistra, ar fi genul de lucruri care m-au smuls.

Cu toate acestea, faptul că este ținut de mână introduce posibilitatea mult mai mare ca blestematul să fie scăpat în rezervor și să nu se mai vadă niciodată. Deci, pentru a atenua ambele posibilități, acesta va fi fixat pe o lungime de lemn, care este apoi plasată peste deschiderea rezervorului - astfel încât măsurarea să fie luată exact de la aceeași înălțime și unghi de fiecare dată (și dacă este scăzută în rezervor, cel puțin lemnul va pluti).

Un buton activează unitatea (eliminând astfel necesitatea unui comutator de pornire / oprire și posibilitatea unei baterii aplatizate accidental) și declanșează schița în Arduino. Acest lucru ia o serie de citiri de la HC-SR04 și ia media acestora (pentru a atenua orice lecturi neregulate).

De asemenea, am inclus un pic de cod pentru a verifica dacă sunt mari sau mici pe unul dintre pinii I / O digitale Arduino și îl folosesc pentru a pune unitatea în ceea ce am numit modul „Calibrare”. În acest mod, afișajul arată pur și simplu distanța reală (împărțită la 2) returnată de senzor, așa că aș putea verifica acuratețea acestuia cu o bandă măsurătoare.

Pasul 3: Ingredientele

Unitatea este formată din trei componente principale …

Imagine
Imagine
  1. Un modul transmițător / receptor cu ultrasunete HC-SR04
  2. Un microcontroler Arduino Pro Mini
  3. Un afișaj LED cu 4 cifre din 7 segmente sau un „modul” de afișare, cum ar fi un TM1637

Toate cele de mai sus pot fi găsite cu ușurință pe eBay, prin simpla căutare a termenilor arătați cu caractere aldine.

În această aplicație, afișajul folosește pur și simplu 3 cifre pentru a afișa o valoare% de 0-100 sau 4 cifre pentru a arăta numărul de litri (maximum 2000 în cazul meu), deci orice afișaj de 4 cifre va face - nu trebuie să vă faceți griji dacă modulul are puncte zecimale sau puncte. Un „modul” de afișare (LED montat pe o placă de breakout, cu un cip de interfață) este mai ușor, deoarece folosește mai puține conexiuni cu pini, dar un afișaj LED brut cu 12 pini ar putea fi găzduit de Arduino cu unele mici modificări ale codului (de fapt, designul meu original s-a bazat pe această configurare). Rețineți totuși că utilizarea unui afișaj LED brut necesită și 7 rezistențe pentru a limita curentul tras de fiecare segment. Mi s-a întâmplat să am disponibil un modul de afișare a ceasului TM1637, așa că am decis să îl folosesc.

Biții și boburile suplimentare includ o clemă pentru baterie de 9V (și bateria, evident), un comutator momentan „apăsat pentru a face”, o cutie de proiect, știfturi pentru antet, fire de conectare și o lungime de lemn de 2 "x4" care depășește diametrul deschiderii rezervorului.

Bucățile și boburile suplimentare (în afară de bucățile de lemn) au fost achiziționate de la lanțul meu local de priză electronică pentru hobby - care este Jaycar în Australia. Îmi imaginez că Maplin în Marea Britanie ar fi o alternativă viabilă și cred că există câteva în SUA, precum Digikey și Mouser. Pentru alte țări, mi-e teamă că nu știu, dar sunt sigur că dacă nu aveți un punct de vânzare adecvat sau un furnizor online în țara dvs., atunci vor veni vânzătorii chinezi de eBay, dacă nu minte să aștepți câteva săptămâni pentru livrare (în mod ironic, deși este unul dintre vecinii noștri cei mai apropiați, 6 săptămâni sau mai mult nu este neobișnuit pentru livrarea în Australia din China!).

Asigurați-vă că obțineți o cutie de proiect care este suficient de mare - am ghicit la a mea înainte de a avea componentele disponibile și este o strângere foarte strânsă - s-ar putea să trebuiască să obțin un buton diferit care folosește mai puțin spațiu.

O, și apropo, lungimea de cherestea tocmai a venit de la niște tăieturi restante pe care le țin în colțul garajului meu (ca casă pentru mai mulți dintre acei păianjeni minunați).

Odată ce înțelegeți funcționalitatea și scenariul, puteți decide să vă adaptați versiunea și să includeți un comutator de pornire / oprire sau să utilizați o sursă de alimentare Li-Ion 18650, cu panou solar și controler de încărcare, pentru ao menține constant completată și gata de utilizare, sau schimbați afișajul LED simplu pentru un LCD multi-linie sau OLED grafic cu mai multe opțiuni de afișare a informațiilor, cum ar fi afișarea procentului ȘI litri rămași în același timp. Sau puteți opta pentru unitatea IoT fără fir, care cântă și care dansează permanent, instalată permanent în rezervor, cu încărcare solară. Mi-ar plăcea să aud de variantele și modificările dvs.

Pasul 4: Testarea prototipului (și a codului)

După ce am cumpărat HC-SR04 de la o sursă chineză ieftină de pe eBay, nu mă așteptam să primesc o unitate extrem de precisă, așa că am vrut să o testez mai întâi pe panoul de testare, în cazul în care trebuia să adaug un cod de corectare a distanței în schița mea.

În acest moment, căutam informații de bază despre cum să mă conectez și să folosesc HC-SR04 și trebuie să recunosc „exemplul Arduino simplu și HC-SR04” al instructorului jsvester. Exemplul și experiența sa au fost un punct de plecare excelent pentru mine de la care am început să codez.

Am găsit biblioteca de funcții NewPing pentru HC-SR04, care include funcționalitate încorporată pentru a lua media de citiri multiple, făcând astfel codul meu mult mai simplu.

Am găsit și o bibliotecă pentru modulul de afișare a ceasului TM1637, ceea ce a făcut afișarea numerelor mult mai simplă. În codul meu original (pentru afișajul cu 4 cifre cu 7 segmente), trebuia să împart numărul în cifre individuale, apoi să construiesc fiecare cifră individuală pe afișaj știind ce segmente să luminez și apoi să trec prin fiecare cifră din număr, și construirea acelui număr pe cifra de afișare corespunzătoare. Această metodă se numește multiplexare și afișează efectiv doar o singură cifră la un moment dat, dar trece prin ele de la o cifră la alta atât de repede, încât ochiul uman nu observă și te păcălește să crezi că toate cifrele sunt aprinse în același timp. La fel ca în cazul bibliotecii HC-SR04 care facilitează operațiunile de măsurare, această bibliotecă de afișare are grijă de toate multiplexările și manipularea cifrelor. Paginile de referință Arduino legate mai sus, oferă câteva exemple și, desigur, fiecare bibliotecă vine cu un exemplu de cod care poate fi de mare ajutor.

Imagine
Imagine
Imagine
Imagine

n

Deci, imaginile de mai sus arată platforma mea de testare - o testez pe Arduino Uno pentru simplitate, deoarece aceasta este deja configurată pentru conexiuni reutilizabile temporare pentru prototipare. Unitatea funcționează aici în modul „Calibrare” (observați că pinul digital 10 - firul alb - este conectat la masă) și citește cu precizie 39 cm la cutia pe care o așezasem în mod aleatoriu în fața ei, așa cum se arată prin banda de măsurare. În acest mod, afișez micul „c” înainte de măsurare, doar pentru a indica că nu este măsurarea normală.

Pe lângă Vcc (5v) și la sol, HC-SR04 are nevoie de alte 2 conexiuni - declanșatorul (galben la pinul 6) și ecou (verde la pinul 7). Afișajul are nevoie, de asemenea, de Vcc (5v) și la sol și încă 2 conexiuni - ceas (albastru la pinul 8) și DIO (violet la pinul 9). Așa cum am menționat deja, modul de funcționare este controlat de un înalt sau scăzut pe pinul 10 (alb). Conexiunile vor utiliza aceiași pini pe Arduino Pro Mini, dar vor fi lipite permanent. Modul de funcționare va putea fi selectat folosind un jumper pe doi din trei pini antet, conectați la Vcc, pinul 10 și respectiv la masă.

Specificațiile oficiale pentru HC-SR04 susțin ceva de genul unei erori maxime de doar 3 milimetri până la distanța maximă de funcționare proiectată de 4 metri, așa că imaginați-vă surpriza mea de a descoperi că unitatea mea era cu siguranță exactă până la 2 metri - care depășește cu mult ceea ce am nevoie. Datorită spațiului limitat pentru o configurare rapidă și murdară a testului, rezultatele testului meu dincolo de acea distanță au fost corupte de reflexiile de pe alte suprafețe decât ținta mea de testare, pe măsură ce fasciculul transmițătorului s-a extins și a luat o zonă mai largă. Dar atâta timp cât este bine la 1,5 metri - asta mă va face frumos, vă mulțumesc foarte mult:-)

Pasul 5: Ino Sketch pentru gabaritul apei de ploaie

Codul complet este atașat, dar voi include câteva extrase mai jos pentru a explica câțiva pași.

În primul rând, configurarea …

#include

#include #include // pini pentru HC-SR04 #define pinTrig 6 #define pinEcho 7 NewPing sonar (pinTrig, pinEcho, 155); // 400cms este maxim pentru HC-SR04, 155cms este maxim pentru rezervor // Pinii de conectare a modulului LED (Pinii digitali) #define CLK 8 #define DIO 9 TM1637Display display (CLK, DIO); // Alte pini #define opMode 10

Pe lângă bibliotecile TM1637 și NewPing, am inclus și o bibliotecă Math, care îmi oferă acces la funcția „rotunjire”. Folosesc acest lucru în unele dintre matematici pentru a-mi permite să afișez procentajul la cel mai apropiat 5%, de exemplu.

Apoi, pinii pentru cele două dispozitive sunt definite și dispozitivele sunt inițiate.

În cele din urmă, definesc pinul 10 pentru modul de funcționare.

// setați toate segmentele pentru toate cifrele

uint8_t bytes = {0x00, 0x00, 0x00, 0x00}; display.setSegments (octeți);

Această secțiune de cod demonstrează o modalitate de a controla modulul de afișare, permițând controlul individual al fiecărui segment din fiecare cifră. Am setat cele 4 elemente din tabloul numit octeți, pentru a fi toate zero. Asta înseamnă că fiecare bit al fiecărui octet este zero. Cei 8 biți sunt utilizați pentru a controla fiecare dintre cele 7 segmente și punctul zecimal (sau colonul într-un afișaj de tip ceas). Deci, dacă toți biții sunt zero, atunci niciunul dintre segmente nu va fi aprins. Operațiunea setSegments trimite conținutul tabloului pe afișaj și nu arată (în acest caz) nimic. Toate segmentele sunt dezactivate.

Imagine
Imagine

Cel mai semnificativ bit dintr-un octet controlează DP, iar apoi restul de 7 biți controlează cele 7 segmente de la G la A în ordine inversă. Deci, pentru a afișa numărul 1, de exemplu, necesită segmentele B și C, deci reprezentarea binară ar fi „0b00000110”. (Mulțumesc CircuitsToday.com pentru imaginea de mai sus).

// Faceți 10 citiri și utilizați durata medie.

int durata = sonar.ping_median (10); // durata este în microsecunde dacă (durata == 0) // Eroare de măsurare - neconcludentă sau fără ecou {uint8_t bytes = {0x00, 0b01111001, 0b01010000, 0b01010000}; // Segmente pentru a scrie "Err" display.setSegments (octeți); }

Aici, îi spun HC-SR04 să ia 10 citiri și să-mi dea rezultatul mediu. Dacă nu se returnează nicio valoare, atunci unitatea este în afara intervalului. Apoi folosesc aceeași tehnică ca mai sus pentru a controla anumite segmente pe cele 4 cifre, pentru a delimita literele (necompletate), E, r și r. Utilizarea notației binare face un pic mai ușoară relaționarea biților individuali cu segmentele.

Pasul 6: Încărcarea codului pe un Arduino Pro Mini (fără USB)

Așa cum am spus mai devreme, articolele de la vânzătorii chinezi eBay durează adesea 6 săptămâni sau mai multe pentru a ajunge, iar o mulțime de prototipuri și scrierea codurilor mele au fost făcute în așteptarea sosirii unor componente - Arduino Pro Mini fiind unul dintre ele.

Un lucru pe care nu l-am observat despre Pro Mini, până nu l-am comandat deja, este că nu are un port USB pentru descărcarea schiței. Așadar, după câteva googlinguri frenetice, am constatat că există două moduri de a încărca o schiță în acest caz - una necesită un cablu special care merge de la USB-ul computerului dvs. la 6 pini specifici de pe Pro Mini. Acest grup de 6 pini este cunoscut sub numele de pini ISP (programator în sistem) și puteți utiliza de fapt această metodă pe orice Arduino dacă doriți - dar întrucât interfața USB este disponibilă pe aproape toate celelalte variante Arduino (I think), utilizarea acestei opțiuni este mult mai simplă. Cealaltă metodă necesită să aveți un alt Arduino cu o interfață USB, pentru a acționa ca un „intermediar”.

Din fericire, a avea Arduino Uno însemna că aș putea folosi a doua metodă, pe care o voi prezenta mai jos. Se numește „Arduino ca ISP”. Pe scurt, încărcați o schiță specială pe Arduino „intermediar”, care îl transformă într-o interfață serială. Apoi încărcați schița dvs. reală, dar în loc de opțiunea normală de încărcare, utilizați o opțiune din meniul IDE care încarcă „folosind Arduino ca ISP”. Arduino „intermediar” preia apoi schița dvs. reală din IDE și o transmite pinilor ISP ai Pro Mini, mai degrabă decât să o încărcați în propria sa memorie. Nu este dificil odată ce îți dai seama cum funcționează, dar este un strat suplimentar de complexitate pe care ai putea să-l eviți. Dacă acesta este cazul sau dacă nu aveți un alt Arduino pe care îl puteți folosi ca „intermediar”, atunci este posibil să doriți să cumpărați un Arduino Nano sau unul dintre celelalte modele de factor de formă mici, care include interfața USB și face ca programarea să fie o perspectivă mai simplă.

Iată câteva resurse pe care le-ați putea găsi utile pentru înțelegerea procesului. Referința Arduino se referă în mod specific la arderea unui nou bootloader pe dispozitivul țintă, dar puteți încărca la fel de ușor o schiță în același mod. Am găsit că videoclipul lui Julian Ilett face conceptul mult mai clar, deși omite partea din referința Arduino care explică cum să conectezi cele două Arduino împreună și programează un cip gol pe o placă de calcul.

  • Manualul de referință Arduino - Utilizarea Arduino ca ISP
  • Videoclipul YouTube al lui Julian Ilett - Folosirea unui Arduino ca ISP

Deoarece Pro Mini nu are cei 6 pini ISP grupați convenabil împreună, trebuie să decodificați care dintre pinii digitali se referă la cei 4 pini de programare (celelalte două conexiuni sunt doar Vcc și Gnd - deci sunt destul de simple). Din fericire pentru voi, am trecut deja prin asta - și sunt dispus să vă împărtășesc cunoștințele - ce persoană generoasă sunt!

Arduino Uno și mulți alții din familia Arduino au cei 6 pini dispuși manual într-un bloc de 3x2, așa (imagine de pe www.arduino.cc).

Imagine
Imagine

Din păcate, Pro Mini nu. După cum puteți vedea mai jos, acestea sunt de fapt destul de ușor de identificat și sunt încă aranjate în 2 blocuri de 3 pini. MOSI, MISO și SCK sunt aceleași ca pinii digitali 11, 12 și respectiv 13 atât pe Pro Mini, cât și pe Arduino Uno, iar pentru programarea ISP, pur și simplu conectați 11-11, 12-12 și 13-13. Pinul de resetare Mini ar trebui să fie conectat la pinul Uno 10, iar Vcc-ul Pro Mini (5v) / masă ar trebui să fie conectat la Arduino + 5v / masă. (Imagine de pe www.arduino.cc)

Imagine
Imagine

Pasul 7: Asamblare

Asamblare
Asamblare

După cum am menționat, am luat un punct asupra cazului și am regretat-o. A încadra toate componentele a fost o adevărată strângere. De fapt, a trebuit să îndoiți contactele butonului în lateral și să pun niște ambalaje în exterior pentru a-l ridica puțin mai departe, astfel încât să se încadreze în adâncimea cutiei și a trebuit să mănânc 2-3 mm de fiecare parte a placa modulului de afișare pentru a se potrivi și ea.

Am forat 2 găuri în carcasă pentru ca senzorii cu ultrasunete să pătrundă. Am forat găurile puțin prea mici și apoi le-am mărit treptat folosind o râșniță rotativă mică, așa că le-am putut face să fie un „push fit” frumos. Din păcate, erau prea aproape de laturi pentru a putea folosi râșnița din interiorul cutiei, iar acest lucru trebuia făcut din exterior, rezultând multe zgârieturi și urme de skate pe care aluneca râșnița - oh, bine, asta e tot pe partea de jos oricum - cui îi pasă..?

Apoi am tăiat un slot într-un capăt care este de dimensiunea potrivită pentru ca afișajul să poată trece. Din nou - presupunerea mea despre dimensiunea cutiei m-a mușcat pe spate, deoarece slotul m-a lăsat cu o piesă foarte subțire deasupra ecranului, care s-a rupt inevitabil în timp ce o depuneam netedă. Ei bine, pentru asta a fost inventat super-lipiciul …

În cele din urmă, cu toate componentele poziționate aproximativ în cutie, am măsurat unde să pun gaura în capac, astfel încât corpul butonului să cadă în spațiul disponibil final. DOAR!!!

Apoi, am lipit toate componentele împreună pentru a testa că toate funcționau încă după îndoire, șlefuire și tăiere, înainte de a le asambla pe toate în carcasă. Puteți vedea conexiunea jumper chiar sub modulul afișajului, cu pinul 10 de pe Arduino (cablu alb) conectat la Gnd, punând astfel unitatea în modul de calibrare. Afișajul citește 122 cm de pe banca mea - trebuie să fi preluat un semnal reflectat înapoi din partea de sus a ramei ferestrei (este prea jos pentru a fi tavanul).

Imagine
Imagine

Apoi a fost un caz de izbucnire a pistolului de adeziv fierbinte și de încălzire a pantofilor toate componentele la locul lor. După ce am făcut acest lucru, am constatat că jocul mic dintre partea de sus a modulului de afișare și capac, odată ce modulul a fost lipit la locul său, a lăsat un pic de umflătură în care capacul nu se va potrivi la fel de bine cum aș vrea. Aș putea încerca să fac ceva despre asta într-o zi - sau mai probabil, nu voi …

Imagine
Imagine

Pasul 8: articolul finalizat

După câteva teste post-asamblare și o corecție a codului meu pentru a ține cont de adâncimea bucății de lemn la care am înșurubat dispozitivul (lucru pe care l-am trecut cu vederea în calculele mele - oh!), Totul este gata.. In cele din urma!

Testare asamblată

Cu unitatea așezată cu fața în jos pe banca mea, evident că nu va exista semnal reflectat, astfel încât unitatea arată corect o stare de eroare. Același lucru ar fi adevărat dacă suprafața reflectorizantă cea mai apropiată este dincolo de raza de acțiune a unității.

Imagine
Imagine

Se pare că de pe bancheta mea până la podea este 76 cm (bine, 72 cm, plus adâncimea de 4 cm a bucății de lemn).

Imagine
Imagine

Partea inferioară a unității, care arată transmițătorul și receptorul care depășesc bucățele de lemn - ar trebui să nu mai numesc o bucată de lemn - va fi denumită de acum înainte platforma de stabilizare a gabaritului și de plasare de precizie! Din fericire, probabil este ultima dată când o voi menționa;-)

Ooh - puteți vedea toate acele zgârieturi urâte și urme de skate în aceasta …

Imagine
Imagine

… Și iată articolul terminat, plasat în modul normal de funcționare, măsurând efectiv capacitatea rezervorului meu la cel mai apropiat 5%. A fost o după-amiază de duminică (foarte) ploioasă care m-a văzut că am terminat acest proiect, de aici picăturile de ploaie de pe unitate și citirea foarte plăcută de 90%.

Imagine
Imagine

Sper că v-a plăcut să citiți acest lucru instructiv și că ați învățat puțin despre programarea Arduino, fizica și utilizarea reflexiei sonare / ultrasonice, capcanele utilizării presupunerilor în planificarea proiectului și că ați fost inspirați să vă deține un gabarit al rezervorului de apă de ploaie - și apoi instalează un rezervor de apă de ploaie pe care să-l folosești, ajutând în același timp mediul înconjurător și economisind factura de apă.

Vă rugăm să citiți mai departe - pentru ce s-a întâmplat a doua zi …!

Pasul 9: Postscript - Sută (și cinci) procente?

Așadar, în ziua de luni după duminica ploioasă, rezervorul era absolut cât se putea de plin. Deoarece este una dintre puținele ori când am văzut-o complet completă, m-am gândit că ar fi momentul ideal pentru a evalua indicatorul, dar ghiciți ce - s-a înregistrat ca 105%, deci, evident, a fost ceva în neregulă.

Mi-am scos joja și am constatat că ipotezele mele inițiale de 140 cm ca adâncime maximă a apei și 16 cm de spațiu pentru cap (pe baza estimărilor vizuale realizate din exteriorul rezervorului) erau ambele puțin în afara măsurătorilor reale. Deci, înarmat cu datele reale pentru criteriul meu de referință 100%, am reușit să-mi modific codul și să reîncărc Arduino.

Adâncimea maximă a apei se dovedește a fi de 147 cm, cu punctul de măsurare așezat la 160 cm, oferind 13 cm spațiu liber (suma spațiului liber din rezervor, înălțimea gâtului rezervorului și adâncimea bucății de … whoa, nu, ce ?! Mă refer la adâncimea platformei de stabilizare a gabaritului și a plasării de precizie!).

După corectarea variabilelor maxDepth și headroom în mod corespunzător, precum și resetarea intervalului maxim al obiectului sonar la 160 cm, o reîncercare rapidă a arătat 100% care a scăzut la 95% pe măsură ce am ridicat puțin indicatorul (pentru a simula o cantitate mică din apa fiind utilizată).

Treaba făcuta!

PS - aceasta este prima mea încercare de instruire. Dacă îți place stilul meu, simțul umorului, onestitatea față de admiterea greșelilor (hei - chiar și eu nu sunt perfectă …) etc.

Pasul 10: Gânduri

Capacitate utilizabilă

Așadar, au trecut câteva săptămâni acum de când am publicat acest Instructable și am primit multe comentarii ca răspuns, dintre care unele au sugerat câteva mecanisme alternative - atât electronice, cât și manuale. Dar acest lucru m-a pus pe gânduri și există ceva ce probabil ar fi trebuit să subliniez la început.

  • Rezervorul meu are o pompă, care este instalată la nivelul solului - doar puțin sub baza rezervorului. Deoarece pompa este punctul cel mai de jos al sistemului, iar apa din pompă este sub presiune, pot folosi capacitatea maximă a rezervorului meu.
  • Oricum - dacă rezervorul dvs. nu are pompă și se bazează pe alimentarea gravitațională, atunci capacitatea efectivă a rezervorului este limitată de înălțimea robinetului. Odată ce apa rămasă în rezervor este mai mică decât robinetul, atunci nu va curge apă.

Deci, indiferent dacă utilizați un manometru electronic, sau o vizor manual, sau un sistem de tip plutitor și steag, trebuie doar să rețineți că, fără pompă, „baza” efectivă a rezervorului dvs. este de fapt înălțimea orificiului de ieșire al rezervorului sau Atingeți.

Recomandat: