Ultrasone regenwatertank capaciteitsmeter - Ajarnpa
Ultrasone regenwatertank capaciteitsmeter - Ajarnpa
Anonim
Ultrasone regenwatertank capaciteitsmeter
Ultrasone regenwatertank capaciteitsmeter

Als je net als ik bent en een beetje milieubewust bent (of gewoon skinflints bent die graag een paar dollar wil besparen - en dat ben ik ook …), heb je misschien een regenwatertank. Ik heb een tank om de vrij zeldzame regen te oogsten die we in Australië krijgen - maar boy oh boy, als het hier regent, regent het ECHT! Mijn tank staat ongeveer 1,5 m hoog en staat op een sokkel, wat betekent dat ik een trapje moet uitstappen om het waterniveau te controleren (of - omdat ik zo lui ben, gevaarlijk balanceren op een oude gasfles van de BBQ die nu permanente bewoning als een 'stap' naast de tank).

Ik wilde een manier om het waterniveau in de tank te kunnen controleren, zonder al het klimmen en hangen aan de regenpijp met één hand (terwijl ik me zorgen maakte over welke spinnen erachter zouden kunnen zitten - je hebt gehoord over Australische spinnen - toch?) … Dus met een hernieuwde interesse in elektronica op latere leeftijd en goedkope Arduino-klonen uit China op ebay, besloot ik een 'widget' te bouwen om het werk voor mij te doen.

Nu moest mijn 'droom'-widget permanent in de tank worden geïnstalleerd, een stroombron op zonne-energie gebruiken, met een uitlezing op afstand in mijn garage, of misschien een draadloze zender met Bluetooth die ik vanaf mijn telefoon kon controleren, of misschien zelfs een ESP-type apparaat dat een automatisch bijgewerkte webpagina host, zodat ik het waterniveau in mijn tank overal ter wereld via internet kan controleren … maar echt - waarom heb ik dat allemaal nodig? Dus ik draaide mijn grootse idealen een beetje terug (nou ja, behoorlijk aanzienlijk), en deed afstand van de draadloosheid van de oplossing, de permanent geïnstalleerdheid, het opladen op zonne-energie en de mogelijkheid om het niveau van mijn tank vanaf de achterkant of daarbuiten te controleren (altijd ervan uitgaande dat de achterkant van Beyond WiFi beschikbaar heeft, dat wil zeggen …)

Het resulterende project werd gedegradeerd tot de draagbare eenheid die hierboven te zien is, die eenvoudig boven de opening van de tank kan worden gehouden en kan worden geactiveerd door een drukknop, met een digitale uitlezing, die vanaf de grond kan worden afgelezen - veel praktischer.

Stap 1: De wiskunde…

Nadat ik met verschillende ideeën had gespeeld om het waterniveau te bepalen, besloot ik een ultrasone zender/ontvanger als basis voor mijn widget te gebruiken en een Arduino te gebruiken om de metingen te doen en alle wiskunde te doen. De meetwaarden die door de sensor worden geretourneerd, zijn (indirect) in de vorm van een afstand - van de ultrasone sensor tot het oppervlak waarop het is teruggekaatst (het wateroppervlak - of de bodem van de tank, indien leeg), en weer terug, dus we moeten om hier het een en ander mee te doen, om tot een percentage in de tank te komen.

NB - in feite is de waarde die door de sensor wordt geretourneerd, eigenlijk gewoon de tijd die het signaal nodig heeft om de zenderzijde te verlaten en terug te keren naar de ontvanger. Dit is in microseconden - maar wetende dat de geluidssnelheid 29 microseconden per cm is (wat? Dat wist je niet? Pfft…) maakt een gemakkelijke conversie van een tijdsperiode naar een afstandsmeting.

Afbeelding
Afbeelding

Ten eerste - natuurlijk moeten we de afstand door 2 delen om de sensor tot de oppervlakte te krijgen. Trek vervolgens de constante afstand van de sensor af tot de 'max' waterdiepte. De resterende waarde is de diepte van het water dat is gebruikt. Trek vervolgens die waarde af van de maximale waterdiepte om de diepte van het water in de tank te vinden.

Deze waarde is dan de basis voor eventuele andere berekeningen, zoals het berekenen van deze waterdiepte als een percentage van de maximale diepte, of het vermenigvuldigen van de diepte met het constante 'oppervlaktegebied', om een watervolume te krijgen dat kan worden weergegeven in liters (of gallons, of een andere eenheid - zolang je de wiskunde kent om het te doen - houd ik me aan een percentage voor de eenvoud).

Stap 2: Praktische zaken

Het apparaat kan in de hand worden gehouden, maar dit introduceert een kleine kans op kleine onnauwkeurigheden als het apparaat niet elke keer op dezelfde plaats en onder dezelfde hoek wordt gehouden. Hoewel het maar een heel kleine fout zou zijn, en waarschijnlijk niet eens een die zou worden geregistreerd, zou het iets zijn dat me zou irriteren.

Omdat het in de hand wordt gehouden, is de kans echter veel groter dat het verdomde ding in de tank wordt gedropt en nooit meer wordt gezien. Dus om BEIDE mogelijkheden te verminderen, wordt het op een stuk hout bevestigd, dat vervolgens over de tankopening wordt geplaatst - zodat de meting elke keer vanaf exact dezelfde hoogte en hoek wordt genomen (en als het in de tank, dan blijft het hout tenminste drijven).

Een drukknop activeert het apparaat (waardoor er geen aan/uit-schakelaar nodig is, en de mogelijkheid van een per ongeluk platgedrukte batterij) en start de schets in de Arduino. Dit neemt een aantal metingen van de HC-SR04 en neemt het gemiddelde hiervan (om eventuele grillige metingen te verminderen).

Ik heb ook een stukje code toegevoegd om te controleren of een van de Arduino digitale I/O-pinnen hoog of laag is, en die te gebruiken om het apparaat in de 'Kalibratie'-modus te zetten. In deze modus toont het display eenvoudig de werkelijke afstand (gedeeld door 2) die door de sensor wordt geretourneerd, zodat ik de nauwkeurigheid ervan kon controleren met een meetlint.

Stap 3: De ingrediënten

De unit bestaat uit drie hoofdcomponenten…

Afbeelding
Afbeelding
  1. Een HC-SR04 ultrasone zender/ontvangermodule
  2. Een Arduino Pro Mini-microcontroller
  3. Een 4-cijferig 7 segment LED-display of display 'module' zoals een TM1637

Al het bovenstaande is gemakkelijk te vinden op ebay, door simpelweg te zoeken naar de vetgedrukte termen.

In deze toepassing gebruikt het display gewoon 3 cijfers om een %-waarde van 0-100 of 4 cijfers weer te geven om het aantal liters weer te geven (max. 2000 in mijn geval), dus elk 4-cijferig display is voldoende - u hoeft het niet te doen zorgen maken of de module decimalen of dubbele punten heeft. Een display 'module' (LED gemonteerd op een breakout-board, met een interface-chip) is gemakkelijker, omdat het minder pinverbindingen gebruikt, maar een onbewerkte LED-display met 12 pinnen zou door de Arduino kunnen worden ondergebracht met enkele kleine aanpassingen aan de code (in feite was mijn oorspronkelijke ontwerp gebaseerd op deze opstelling). Merk echter op dat het gebruik van een onbewerkt LED-display ook 7 weerstanden vereist om de stroom die door elk segment wordt getrokken te beperken. Ik had toevallig een TM1637 klokweergavemodule beschikbaar, dus besloot ik die te gebruiken.

Aanvullende bits en bobs omvatten een 9v batterijclip (en batterij natuurlijk), een 'push-to-make' tijdelijke drukknopschakelaar, een projectdoos, header-pinnen, verbindingsdraden en een lengte van 2 "x4" hout dat groter is dan de diameter van de tankopening.

De aanvullende bits en bobs (afgezien van het stuk hout) werden gekocht bij mijn plaatselijke hobby-elektronica-outletketen - Jaycar in Australië. Ik stel me voor dat Maplin in het VK een levensvatbaar alternatief zou zijn, en ik denk dat er een paar zijn in de VS, zoals Digikey en Mouser. Voor andere landen ben ik bang dat ik het niet weet, maar ik ben er zeker van dat als u geen geschikte winkelstraat of online leverancier in uw land heeft, Chinese eBay-verkopers voor u zullen langskomen, als u dat niet doet een paar weken wachten op levering (ironisch genoeg is, ondanks dat het een van onze naaste buren is, 6 weken of langer niet ongebruikelijk voor levering aan Australië vanuit China!).

Zorg ervoor dat je een projectdoos krijgt die groot genoeg is - ik vermoedde de mijne voordat ik de componenten beschikbaar had, en het is echt heel erg krap - ik moet misschien een andere drukknop kopen die minder ruimte in beslag neemt.

Oh, en tussen haakjes, de lengte van het hout kwam net van wat restafval dat ik in de hoek van mijn garage bewaar (als een thuis voor meer van die mooie spinnen).

Als je eenmaal het schema en de functionaliteit begrijpt, kun je besluiten om je versie aan te passen en een aan/uit-schakelaar op te nemen, of een 18650 Li-Ion-stroombron te gebruiken, met zonnepaneel en laadregelaar om hem constant bij te vullen en klaar voor gebruik, of verander het eenvoudige LED-display voor een meerregelig LCD-scherm of grafische OLED met meer informatieweergave-opties, zoals het tegelijkertijd weergeven van het percentage EN de resterende liters. Of je kunt gaan voor de alles zingende, dansende draadloze IoT-eenheid die permanent in de tank is geïnstalleerd MET opladen op zonne-energie. Ik hoor graag van uw variaties en aanpassingen.

Stap 4: Het prototype (en de code) testen

Nadat ik de HC-SR04 van een goedkope Chinese bron op ebay had gekocht, verwachtte ik niet echt een enorm nauwkeurige eenheid, dus ik wilde hem eerst op het breadboard testen, voor het geval ik wat afstandscorrectiecode moest toevoegen aan mijn schets.

Op dit punt was ik aan het rondkijken voor basisinformatie over het aansluiten en gebruiken van de HC-SR04, en ik moet het instructable "Simple Arduino and HC-SR04 example" van jsvester erkennen. Zijn voorbeeld en ervaring waren een goed startpunt voor mij om te beginnen met coderen.

Ik vond de NewPing-bibliotheek met functies voor de HC-SR04, die ingebouwde functionaliteit bevat om het gemiddelde van meerdere metingen te nemen, waardoor mijn code een stuk eenvoudiger wordt.

Ik vond ook een bibliotheek voor de TM1637-klokweergavemodule, wat het weergeven van cijfers een stuk eenvoudiger maakte. In mijn oorspronkelijke code (voor het 4-cijferige 7-segmentsdisplay) moest ik het nummer in afzonderlijke cijfers splitsen en vervolgens elk afzonderlijk cijfer op het display opbouwen door te weten welke segmenten moeten worden verlicht, en vervolgens door elk cijfer in het nummer bladeren en bouw dat nummer op het juiste displaycijfer. Deze methode wordt multiplexen genoemd en geeft in feite slechts één cijfer per keer weer, maar doorloopt ze zo snel van het ene cijfer naar het andere, dat het menselijk oog het niet opmerkt en u voor de gek houdt door te geloven dat alle cijfers aan staan tegelijkertijd. Net als bij de HC-SR04-bibliotheek die het meten eenvoudiger maakt, zorgt deze weergavebibliotheek voor alle multiplex- en cijferverwerking. De Arduino Reference-pagina's waarnaar hierboven is gelinkt, geven enkele voorbeelden en natuurlijk wordt elke bibliotheek geleverd met voorbeeldcode die een grote hulp kan zijn.

Afbeelding
Afbeelding
Afbeelding
Afbeelding

N

Dus de foto's hierboven laten mijn testopstelling zien - ik test het op mijn Arduino Uno voor de eenvoud, omdat dat al is ingesteld voor tijdelijke herbruikbare verbindingen voor prototyping. Het apparaat werkt hier in de 'Kalibratie'-modus (merk op dat digitale pin 10 - de witte draad - is verbonden met aarde) en leest nauwkeurig 39 cm af op de doos die ik er willekeurig voor had geplaatst, zoals blijkt uit het meetlint. In deze modus geef ik de kleine 'c' voor de meting weer, om aan te geven dat het niet de normale meting is.

Naast Vcc (5v) en Ground heeft de HC-SR04 nog 2 andere aansluitingen nodig - de trigger (geel naar pin 6) en echo (groen naar pin 7). Het display heeft ook Vcc (5v) en Ground nodig, en nog 2 verbindingen - klok (blauw naar pin 8) en DIO (paars naar pin 9). Zoals reeds vermeld wordt de bedrijfsmodus aangestuurd door een hoog of laag op pin 10 (wit). De verbindingen gebruiken dezelfde pinnen op de Arduino Pro Mini, maar worden permanent gesoldeerd. De bedrijfsmodus kan worden geselecteerd met behulp van een jumper over twee van de drie header-pinnen, respectievelijk verbonden met Vcc, pin 10 en aarde.

De officiële specificaties voor de HC-SR04 claimen zoiets als een maximale fout van slechts 3 millimeter tot de maximaal ontworpen bedieningsafstand van 4 meter, dus stel je mijn verbazing voor om te ontdekken dat mijn apparaat zeker tot op 2 meter nauwkeurig was - wat is ruim boven wat ik nodig heb. Vanwege de beperkte ruimte voor een snelle en vuile testopstelling, werden mijn testresultaten buiten die afstand beschadigd door reflecties van andere oppervlakken dan mijn testdoel, omdat de straal van de zender zich uitspreidde en een groter gebied innam. Maar zolang het maar goed is tot 1,5 meter - dat zal me goed doen, heel erg bedankt:-)

Stap 5: Regenwatermeter Ino Sketch

De volledige code is bijgevoegd, maar ik zal hieronder een paar uittreksels opnemen om enkele van de stappen uit te leggen.

Allereerst de opstelling…

#erbij betrekken

#include #include // pinnen voor HC-SR04 #define pinTrig 6 #define pinEcho 7 NewPing-sonar (pinTrig, pinEcho, 155); // 400 cms is max voor HC-SR04, 155 cm is max voor tank // LED-module verbindingspennen (digitale pennen) #define CLK 8 #define DIO 9 TM1637Display (CLK, DIO); // Andere pinnen #define opMode 10

Naast de TM1637- en NewPing-bibliotheken heb ik ook een Math-bibliotheek toegevoegd, die me toegang geeft tot de 'afrondingsfunctie'. Ik gebruik dit in sommige wiskunde, zodat ik het percentage bijvoorbeeld tot op de dichtstbijzijnde 5% kan weergeven.

Vervolgens worden de pinnen voor de twee apparaten gedefinieerd en worden de apparaten gestart.

Ten slotte definieer ik pin 10 voor de bedieningsmodus.

// zet alle segmenten uit voor alle cijfers

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

Dit codegedeelte demonstreert een manier om de displaymodule te bedienen, waardoor elk segment in elk cijfer afzonderlijk kan worden bestuurd. Ik heb de 4 elementen in de array met de naam bytes ingesteld op nul. Dat betekent dat elk bit van elke byte nul is. De 8 bits worden gebruikt om elk van de 7 segmenten en de decimale punt (of de dubbele punt in een kloktype-display) te besturen. Dus als alle bits nul zijn, zal geen van de segmenten oplichten. De bewerking setSegments stuurt de inhoud van de array naar het scherm en toont (in dit geval) niets. Alle segmenten zijn uitgeschakeld.

Afbeelding
Afbeelding

De meest significante bit in een byte bestuurt de DP en de overige 7 bits besturen de 7 segmenten van G tot A in omgekeerde volgorde. Dus om bijvoorbeeld het getal 1 weer te geven, zijn segmenten B en C nodig, dus de binaire weergave zou '0b00000110' zijn. (Met dank aan CircuitsToday.com voor de afbeelding hierboven).

// Neem 10 metingen en gebruik de mediane duur.

int duur = sonar.ping_median(10); // duur is in microseconden if (duur == 0) // Meetfout - niet doorslaggevend of geen echo {uint8_t bytes = {0x00, 0b01111001, 0b01010000, 0b01010000}; // Segmenten om "Err" te spellen display.setSegments (bytes); }

Hier vertel ik de HC-SR04 om 10 metingen te doen en mij het gemiddelde resultaat te geven. Als er geen waarde wordt geretourneerd, is de eenheid buiten bereik. Ik gebruik dan dezelfde techniek als hierboven om specifieke segmenten op de 4 cijfers te besturen, om de letters (blanco), E, r en r te spellen. Het gebruik van binaire notatie maakt het iets gemakkelijker om de afzonderlijke bits aan de segmenten te relateren.

Stap 6: Code laden naar een Arduino Pro Mini (zonder USB)

Zoals ik al eerder zei, duurt het vaak 6 weken of langer voordat items van Chinese eBay-verkopers aankomen, en veel van mijn prototyping en codeschrijven werd gedaan terwijl ik wachtte op enkele van de componenten - de Arduino Pro Mini is daar een van.

Een ding dat me niet opviel aan de Pro Mini, totdat ik hem al had besteld, is dat hij geen USB-poort heeft om de schets te downloaden. Dus, na wat verwoed googelen, ontdekte ik dat er in dit geval twee manieren zijn om een schets te laden - voor de ene heb je een speciale kabel nodig die van de USB op je pc naar 6 specifieke pinnen op de Pro Mini gaat. Deze groep van 6 pinnen staat bekend als de ISP (in-system programmer) pinnen, en je kunt deze methode op elke Arduino gebruiken als je dat wilt - maar aangezien de USB-interface beschikbaar is op vrijwel alle andere Arduino-varianten (ik denken), is het gebruik van die optie veel eenvoudiger. De andere methode vereist dat je een andere Arduino hebt met een USB-interface erop, om als 'tussenpersoon' te fungeren.

Gelukkig betekende het hebben van mijn Arduino Uno dat ik de tweede methode kon gebruiken, die ik hieronder voor je zal schetsen. Het wordt genoemd met behulp van de 'Arduino als ISP'. Kortom, je laadt een speciale schets op je 'go-between' Arduino, die er een seriële interface van maakt. Laad dan je eigenlijke schets, maar in plaats van de normale uploadoptie, gebruik je een optie uit het IDE-menu die uploadt 'met de Arduino als ISP'. De 'tussenpersoon' Arduino haalt dan je eigenlijke schets uit de IDE en geeft deze door aan de ISP-pinnen van de Pro Mini, in plaats van deze in zijn eigen geheugen te laden. Het is niet moeilijk als je eenmaal doorhebt hoe het werkt, maar het is een extra laag complexiteit die je misschien wilt vermijden. Als dat het geval is, of je hebt geen andere Arduino die je als 'tussenpersoon' kunt gebruiken, dan wil je misschien een Arduino Nano kopen, of een van de andere kleine vormfactormodellen, die wel de USB-interface bevat en maakt programmeren eenvoudiger.

Hier zijn een paar bronnen die u mogelijk nuttig vindt om het proces te begrijpen. De Arduino Reference verwijst specifiek naar het branden van een nieuwe bootloader naar het doelapparaat, maar je kunt net zo gemakkelijk een schets op dezelfde manier laden. Ik vond dat de video van Julian Ilett het concept een stuk duidelijker maakt, hoewel hij het gedeelte in de Arduino-referentie overslaat dat uitlegt hoe de twee Arduino's aan elkaar moeten worden aangesloten, en in plaats daarvan een kale chip op een breadboard programmeert.

  • De Arduino Reference Manual - Arduino gebruiken als ISP
  • Julian Ilett's YouTube-video - Een Arduino gebruiken als ISP

Omdat de Pro Mini de 6 ISP-pinnen niet handig gegroepeerd heeft, moet je decoderen welke van de digitale pinnen betrekking hebben op de 4 programmeerpinnen (de andere twee verbindingen zijn slechts Vcc en Gnd - dus zijn vrij eenvoudig). Gelukkig voor jou heb ik dit al meegemaakt - en ben ik bereid om de kennis met je te delen - wat een vrijgevig persoon ben ik!!

De Arduino Uno, en vele anderen in de Arduino-familie, hebben de 6 pinnen handig gerangschikt in een 3x2 blok, zoals deze (afbeelding van www.arduino.cc).

Afbeelding
Afbeelding

Helaas doet de Pro Mini dat niet. Zoals je hieronder kunt zien, zijn ze eigenlijk vrij gemakkelijk te identificeren en zijn ze nog steeds gerangschikt in 2 blokken van 3 pinnen. MOSI, MISO en SCK zijn hetzelfde als digitale pinnen 11, 12 en 13 op zowel de Pro Mini als Arduino Uno, en voor ISP-programmering sluit u eenvoudig 11 aan op 11, 12 op 12 en 13 op 13. De Pro De Reset-pin van de Mini moet worden aangesloten op de Uno-pin 10 en de Vcc (5v)/Ground van de Pro Mini moet worden aangesloten op de Arduino +5v/Ground. (Afbeelding van www.arduino.cc)

Afbeelding
Afbeelding

Stap 7: Montage

samenkomst
samenkomst

Zoals ik al zei, ik nam een punt op de zaak en had er spijt van. Het was een hele klus om alle componenten erin te passen. In feite moest ik de contacten van de drukknop zijwaarts buigen en wat pakking aan de buitenkant doen om het een beetje verder op te tillen zodat het in de diepte van de doos zou passen, en ik moest 2-3 mm van elke kant van het displaymodulebord zodat het ook past.

Ik heb 2 gaten in de behuizing geboord om de ultrasone sensoren door te prikken. Ik boorde de gaatjes iets te klein en maakte ze vervolgens geleidelijk groter met een kleine roterende slijper, zodat ik ze een mooie 'push-fit' kon krijgen. Helaas waren ze te dicht bij de zijkanten om de grinder van binnenuit de doos te kunnen gebruiken, en dit moest van buitenaf gebeuren, wat resulteerde in veel krassen en schaatssporen waar de grinder gleed - ach, dat is allemaal aan de onderkant hoe dan ook - wat maakt het uit..?

Ik sneed toen een gleuf aan het ene uiteinde dat de juiste maat heeft om het scherm doorheen te steken. Nogmaals - mijn gok op de doosgrootte beet me aan de achterkant omdat de gleuf me achterliet met een heel slank stuk boven het scherm, dat onvermijdelijk brak terwijl ik het glad aan het vijlen was. Ach, daar is superlijm voor uitgevonden…

Ten slotte, met alle componenten ongeveer in de doos gepositioneerd, heb ik gemeten waar het gat in het deksel moest worden geplaatst, zodat het lichaam van de drukknop in de laatste beschikbare ruimte zou vallen. ALLEEN MAAR!!!

Vervolgens heb ik alle componenten aan elkaar gesoldeerd om te testen dat ze allemaal nog werkten na mijn buigen en slijpen en trimmen, voordat ik ze allemaal in de behuizing monteerde. Je kunt de jumperverbinding net onder de displaymodule zien, met pin 10 op de Arduino (witte kabel) aangesloten op Gnd, waardoor het apparaat in de kalibratiemodus wordt gezet. Op het display staat 122 cm vanaf mijn bank - het moet een signaal hebben opgevangen dat wordt teruggekaatst vanaf de bovenkant van het raamkozijn (het is te laag om het plafond te zijn).

Afbeelding
Afbeelding

Daarna was het een kwestie van het hete lijmpistool uitbreken en alle onderdelen op hun plaats schuiven. Toen ik dat had gedaan, ontdekte ik dat de kleine speling tussen de bovenkant van de displaymodule en het deksel, nadat de module op zijn plaats was gelijmd, een beetje een bobbel achterliet waar het deksel niet zo goed past als ik zou willen. Ik zou kunnen proberen daar op een dag iets aan te doen - of waarschijnlijker, ik zal niet …

Afbeelding
Afbeelding

Stap 8: Het voltooide artikel

Na een paar tests na de montage en een correctie van mijn code om rekening te houden met de diepte van het stuk hout waarop ik het apparaat had geschroefd (wat ik volledig over het hoofd had gezien in mijn berekeningen - d'oh!!), is het allemaal klaar. Eindelijk!

Gemonteerd testen:

Als het apparaat gewoon met het gezicht naar beneden op mijn bank zit, zal er natuurlijk geen gereflecteerd signaal zijn, dus het apparaat geeft correct een foutconditie weer. Hetzelfde zou het geval zijn als het dichtstbijzijnde reflecterende oppervlak buiten het bereik van het apparaat ligt.

Afbeelding
Afbeelding

Het lijkt erop dat van mijn werkblad tot de vloer 76 cm is (nou ja, 72 cm plus de 4 cm diepte van het stuk hout).

Afbeelding
Afbeelding

De onderkant van het apparaat, waarop de zender en ontvanger te zien zijn die over het stuk hout hangen - ik zou het eigenlijk niet meer een stuk hout moeten noemen - het wordt voortaan het meterstabilisatie- en precisieplaatsingsplatform genoemd! Gelukkig is dit waarschijnlijk de laatste keer dat ik het vermeld;-)

Ooh - je kunt al die vervelende krassen en skate-sporen zien in deze …

Afbeelding
Afbeelding

… en hier is het voltooide item, geplaatst in de normale bedrijfsmodus, waarbij de capaciteit van mijn tank wordt gemeten tot op de dichtstbijzijnde 5%. Het was een (zeer) regenachtige zondagmiddag waarop ik dit project afmaakte, vandaar de regendruppels op het apparaat en de zeer aangename 90% aflezing.

Afbeelding
Afbeelding

Ik hoop dat je deze instructable met plezier hebt gelezen en dat je een beetje hebt geleerd over Arduino-programmering, natuurkunde en het gebruik van sonar/ultrasone reflectie, de valkuilen van het gebruik van giswerk in je projectplanning, en dat je bent geïnspireerd om je eigen regenwatertankmeter - en om vervolgens een regenwatertank te installeren om hem op te gebruiken, terwijl u het milieu een beetje helpt en op uw waterrekening bespaart.

Lees alstublieft verder - voor wat er de volgende dag gebeurde…!

Stap 9: Naschrift - honderd (en vijf) procent?

Dus op de maandag na de regenachtige zondag was de tank absoluut zo vol als maar mogelijk was. Omdat het een van de weinige keren is dat ik het ooit helemaal vol heb gezien, dacht ik dat het het ideale moment zou zijn om de meter te benchmarken, maar raad eens - het registreerde 105%, dus er was duidelijk iets mis.

Ik haalde mijn peilstok tevoorschijn en ontdekte dat mijn oorspronkelijke aannames van 140 cm als de maximale waterdiepte en 16 cm hoofdruimte (gebaseerd op visuele schattingen gemaakt van buiten de tank), beide een beetje afwijken van de werkelijke metingen. Dus gewapend met de echte gegevens voor mijn 100% benchmark, kon ik mijn code aanpassen en de Arduino opnieuw laden.

De maximale waterdiepte blijkt 147 cm te zijn, met het meetpunt op 160 cm, wat 13 cm hoofdruimte geeft (de som van de hoofdruimte in de tank, de hoogte van de hals van de tank en de diepte van het stuk van … whoa, nee, wat?! Ik bedoel diepte van het meterstabilisatie- en precisieplaatsingsplatform!).

Na de variabelen maxDepth en headroom dienovereenkomstig te hebben gecorrigeerd en het maximale bereik van het sonarobject opnieuw in te stellen op 160 cm, toonde een snelle hertest 100% dat daalde tot 95% toen ik de meter een beetje optilde (om een kleine hoeveelheid van de water gebruikt).

Klus geklaard!

PS - dit is mijn eerste poging tot een instructable. Als je van mijn stijl houdt, gevoel voor humor, eerlijkheid om fouten toe te geven (hey - zelfs ik ben niet perfect …), enz. - laat het me weten en het kan me de boost geven om er nog een te doen.

Stap 10: Nabeschouwingen

Bruikbare capaciteit

Dus het is nu een paar weken geleden dat ik deze Instructable heb gepubliceerd en ik heb veel reacties gekregen, waarvan sommige alternatieve mechanismen suggereren - zowel elektronisch als handmatig. Maar dit zette me aan het denken, en er is iets waar ik waarschijnlijk in het begin op had moeten wijzen.

  • Mijn tank heeft een pomp, die op grondniveau is geïnstalleerd - net iets onder de bodem van de tank. Omdat de pomp het laagste punt in het systeem is en het water uit de pomp onder druk staat, kan ik de volledige capaciteit van mijn tank benutten.
  • ECHTER - als uw tank geen pomp heeft en afhankelijk is van zwaartekracht, dan wordt de effectieve capaciteit van de tank beperkt door de hoogte van uw kraan. Zodra het water dat in uw tank achterblijft lager is dan de kraan, zal er geen water meer stromen.

Dus of u nu een elektronische meter gebruikt, of een handmatig kijkglas, of een vlotter- en vlagsysteem, houd er rekening mee dat zonder een pomp de effectieve 'basis' van uw tank in feite de hoogte van de uitlaat van de tank is of tik.

Aanbevolen: