Vraag:
Niveau van een watertank met een microcontroller
mad_z
2009-11-30 17:00:08 UTC
view on stackexchange narkive permalink

Hoe meet ik het niveau van een watertank met een microcontroller?

Dit is geen antwoord waard, maar een vriend van me deed dit een paar jaar geleden voor een kunstproject. Iedereen die geïnteresseerd is, ik stel u graag voor en ik weet zeker dat hij u graag zal uitleggen hoe hij het heeft gedaan. Zijn project is hier: http://unixarts.com/sealevel.html Dit combineerde beide pompen en de sensoren en vereiste voldoende nauwkeurigheid om op en neer te lopen zonder al te veel scheefheid
Als de microcontroller niet meer werkt, is hij onder water.
Dertien antwoorden:
#1
+23
Michael Kohne
2009-11-30 17:45:43 UTC
view on stackexchange narkive permalink

Aangenomen dat je hier op aarde opereert (in plaats van in een baan), kun je een vlottersensor gebruiken die je meet met de micro. De vraag is: moet je het exacte niveau weten, of heb je gewoon een soort trip nodig als het te hoog / laag wordt?

In het thema 'reis op specifiek niveau' kun je schakelaars zoals deze krijgen - over het algemeen bevat de vlotter een soort houdingsdetectieschakelaar. Als het waterpeil lager is, komt de vlotter op zijn kant terecht en staat de schakelaar op 'uit', terwijl het verhogen van het waterpeil de vlotter rechtop en dus 'aan' dwingt. Deze worden vaak gebruikt voor carterpompen. Ze zijn redelijk betrouwbaar en heel gemakkelijk in de omgang, al moet je voorzichtig zijn om ze correct te verankeren, en je moet er zeker van zijn dat niets de vlotter in de weg staat.

Als je het moet weten het werkelijke niveau, dan heb je veel keuzes, maar het is minder eenvoudig. Je kunt gaan met zoiets als een ultrasone sensor (ultrasone straal die vanaf de bovenkant van de tank naar beneden schiet om op het waterniveau te reflecteren).

Deze jongens lijken niveau-indicatoren te maken voor GROTE tanks die bestaan ​​uit een vlotter en een extern gewicht dat aan elkaar is vastgemaakt. Terwijl de vlotter op en neer beweegt op de vloeistof, beweegt de externe indicator op de juiste manier. Je zou iets soortgelijks kunnen bouwen, met niets ingewikkelder dan fotocellen om het niveau te lezen (als het een grote tank is, of als je veel granulariteit wilt, heb je veel fotocellen nodig).

Als alternatief, door het idee van een bekabelde vlotter te nemen, kunt u een tussenwiel plaatsen dat beweegt wanneer de kabel beweegt, en daar een encoder aan bevestigen. Hierdoor zou je het niveau met een vrij hoge nauwkeurigheid kunnen volgen.

#2
+15
Evan
2009-12-01 04:59:42 UTC
view on stackexchange narkive permalink

Ik weet dat het binnenkort uit te brengen boek Praktische Arduino is voorzien van een watertankdieptesensor -project, dat een drukverschiltransducer gebruikt om de waterdruk bij de bodem van de tank, en van daaruit om te berekenen hoe vol de tank is.

Schema's staan ​​op de bovenstaande link, samen met een link naar de broncode op github.

(Volledig openbaarmaking: ik heb geen band met het boek, maar heb een van de auteurs een paar keer ontmoet op onze lokale hackerspaces.)

#3
+11
russ_hensel
2009-11-30 21:04:00 UTC
view on stackexchange narkive permalink

Een methode die ik leuk vind, maar niet heb geprobeerd, is om twee geïsoleerde platen in de vloeistof te plaatsen. Geen condutie, electrolosis, contanimatie ....... Ze vormen de platen van een dop. en worden gebruikt in een soort oscillator (keuze aan jou) Omdat water een goede dialetrie is, hangt de frequentie sterk af van de hoeveelheid water tussen de platen. Meet de frequentie om de diepte te bepalen.

U kunt mogelijk een soortgelijk resultaat krijgen door een AC-signaal toe te passen en de stroom door de dop te meten.

Let wel, het hangt sterk af van de dialectrische constante van de vloeistof. Tenzij ik me vergis, wordt capacitieve detectie meer gebruikt voor detectie van aanwezigheid / afwezigheid dan voor niveau. Het lijkt erop dat zowat elke methode die ik ben tegengekomen, afhankelijk is van het soortelijk gewicht. Tanks die vloeistoffen met een variabele samenstelling bevatten, zijn moeilijk te reguleren.
De op capaciteit gebaseerde vloeistofniveausensoren werken het beste bij het detecteren van de aan- of afwezigheid van vloeistof. Voor het aflezen van het waterpeil laad / ontlaad de platen met een vaste weerstand en meet de tijd. Zoals hierboven vermeld, kan het toevoegen van verontreinigingen aan het water (zoals zout) een drastische verandering in capaciteit veroorzaken en dus uw aflezing voor een vast vloeistofniveau. Als de vloeistof die u meet homogeen is, is dit veel minder een probleem.
Ik heb een dynatron-oscillator gemaakt met een eenvoudige standaard SMD-spoel die resoneerde met geïsoleerde platen zoals russ veronderstelde. De sinusgolf was vierkant en iemand anders telde de pulsen in de firmware, met andere woorden wat russ zei WEL werkt.
#4
+10
blalor
2009-11-30 23:35:04 UTC
view on stackexchange narkive permalink

Meer details zouden helpen, maar ik denk dat de ultrasone methode sowieso waarschijnlijk de eenvoudigste is, conceptueel gezien (vandaar de behoefte aan meer details: -]). Ik gooide een niveausensor voor de stookolietank in mijn kelder met behulp van een MaxSonar ultrasone transducer. Ik schakel over naar een Parallax Ping-sensor, zodra ik er een kan bemachtigen. De MaxSonar-eenheid is een beetje lastig gebleken; blijkt dat het maar een resolutie heeft van één inch (2,54 cm), wat overeenkomt met bijna 7 gallons in mijn tank. Ik heb de MaxSonar-eenheid in een PVC-dop aan de bovenkant van de tank gedaan, naar beneden gericht (buiten het bereik van de vloeistof).

#5
+7
Some guy
2009-11-30 17:56:22 UTC
view on stackexchange narkive permalink

Een manier om dit te doen is door een led op de bodem van de tank te plaatsen die naar boven wijst, en een fotodiode bovenaan de tank, gericht naar de led. De LED wordt verzwakt door het water in de tank, je moet experimenteren om te bepalen hoeveel. Het is ook het beste om een ​​reeks snelle metingen uit te voeren en deze te middelen bij gebruik van deze methode.

lijkt erg foutgevoelig, omgevingslicht, klotsen, etc.
#6
+7
John D
2009-12-02 00:45:21 UTC
view on stackexchange narkive permalink

Ik gebruik een goedkope noppensensor van de plaatselijke ijzerhandel met een fototransistor om de led-indicator te detecteren. Met dit aan de zijkant van de tank geplakt, voelt het wanneer het niveau boven de sensor stijgt en waarschuwt het ons voor een hoge waterconditie.

#7
+6
wackyvorlon
2009-11-30 21:03:50 UTC
view on stackexchange narkive permalink

Er is een verrassend aantal manieren om het niveau te controleren. Er zijn sensoren die RF gebruiken, een puls door een golfgeleider sturen en de reflectie van het oppervlak van de vloeistof in de tank detecteren. Er is echografie, drijvers, bubblerbuizen, drukkranen ... De gebruikte methode hangt af van de grootte van de tank, de inhoud, de omgeving en andere factoren.

#8
+4
ttt
2010-04-29 14:13:50 UTC
view on stackexchange narkive permalink

Ik ben verbaasd over alle ingewikkelde elektronische oplossingen hier, ik zou een eenvoudige potentiometer gebruiken. De meeste microcontrollers hebben een standaard analoge i / p.

  + V ----- | | / \ / < ---------- > naar analoog i / p \ | | ----- GND  

Gebruik een standaard watertankklepvlotter (er is er misschien al een). Het resterende probleem is het koppelen van de float aan de pot om een ​​maximale swing te krijgen (je zou ook een slider pot kunnen gebruiken).

  | - | | | | o | < -------- Schuifregelaar. ||| ||| | | < -------- Koppeling. | ____ | (float) ---------- o ----- o < - Ankerpunt van float. ----  
Hoe zorg je ervoor dat de pot teruggaat naar zijn oorspronkelijke positie?
Het gewicht van de vlotter zal hem naar beneden trekken als het waterniveau daalt ...
Daar ben ik niet zo zeker van.Het juiste gewicht van de vlotter vinden zodat deze drijft in aanwezigheid van water en de pot laat vallen in afwezigheid van water is niet zo eenvoudig.De meeste potten hebben een vrij hoge statische wrijving.Ik denk dat het echter mogelijk is, gezien de juiste mechanische opstelling.
Veel van de langere schuifpotten hebben een zeer lage wrijving (gebruikt in mengers met vingertopbediening en DJ-decks).Ik heb een 4 "schuif uit mijn doos met bits gebruikt en deze getest met een normale vlotter van een watertank. Hij werkte zelfs op een kleinere vlotter van het toiletreservoir! Overigens zou ik een vaste weerstand in serie met de pot gebruiken, zodat zelfs als hij kortsluiting maakt in een natte omgeving, hij de output van een controllerpoort niet overschrijdt (of teveel stroom trekt van een vaste Vref).Ik gebruikte een 10k-resister met een 10k-pot in mijn testopstelling.
Bij het testen heb ik gewoon een stuk gebogen draad gebruikt om aan de vlotterarm te vergrendelen.In het toiletreservoir is de arm van kunststof met vierkante doorsnede, dus het zou heel gemakkelijk zijn om een klein gaatje te boren om de bevestiging te maken.
#9
+4
Evan Plaice
2010-11-07 08:59:03 UTC
view on stackexchange narkive permalink

Eenvoudigste aanpak

Plaats een buisje in een hoek van de tank die iets groter in diameter is dan een pingpongbal.

Plaats een infrarood LED aan de ene kant van de buis en een fotoresistor tegenover de LED (door een gat te boren in de buis van deze ondoorzichtig of aan de buitenkant te plaatsen als deze transparant is). Heet lijm de elektrische onderdelen om ze waterdicht te maken en laat de pingpongbal in de buis vallen.

Wanneer het waterpeil stijgt of daalt tot het punt dat de pingpongbal de infraroodstraal breekt, weet je dat hij het gewenste niveau bereikt. Dit werkt als je alleen een discrete (aan / uit) niveau-indicator nodig hebt.

Dit systeem wordt ook gebruikt in paintball-pistolen die zijn ontworpen om te voorkomen dat je ballen hakt door ervoor te zorgen dat de hele bal eerder in de vuurkamer is. waardoor de elektronische trigger de ontstekingssolenoïde kan inschakelen.

Het is eenvoudig, effectief en vereist weinig of geen kalibratie.

#11
+1
mazurnification
2010-10-06 16:27:46 UTC
view on stackexchange narkive permalink

Nog een slimme aanpak: maak gebruik van de grotere thermische geleidbaarheid van het water (vloeistof). Het idee is om een ​​temperatuursensor te hebben en het verschil van zijn zelfopwarming te meten wanneer het ondergedompeld is en wanneer het zich in de vrije lucht bevindt.

Dit is eigenlijk gedaan in CHCH NewZealand waar ik ben, maar ik heb het niet gedaan, ik denk dat het ongeveer 20 jaar oud is. Er was een rij met veel thermisters aan de buitenkant van de tank. Dus het werkt goed, dus je krijgt mijn stem.
#12
+1
Rikkitikki
2012-03-19 15:18:28 UTC
view on stackexchange narkive permalink

Een andere oplossing (geen woordspeling bedoeld);

Gebruik een potentiometer zoals hierboven voorgesteld. Het normale rotatiebereik is 270 graden. Bevestig een vlotter aan de potentiometer met behulp van een arm. (lengte = 1 eenheid)

Tussen vol en leeg beweegt de boomarm 90 graden.

De ADC op een PIC is 256 of 1024 stappen (ja, nul is een stap ).

Ik gebruik 256 stappen voor duidelijkheid.

270 graden = 256 ADC-stappen. 270/90 = 3 (een derde van het potentiometerbereik)
255/3 = 85 ADC-stappen

Programmeer een code om het 0 gradenpunt (tank leeg) te markeren wanneer een knop wordt ingedrukt.

Dit slaat een offsetpunt op in de PIC eeprom. Nu hoeft de potentiometer niet exact op nul te staan ​​omdat dit kalibratiepunt kan worden ingesteld.

Bereken met trigometrie een opzoektabel (hint: php-script) die overeenkomt met elke stap van de ADC.

Tip: elke ADC-stap komt overeen met 90/85 = 1,0588 graden.

Ja, je had meer aandacht moeten besteden aan de wiskundelessen. stomme tijdverspilling toen, nu onmisbaar. betrek de hersenen. leer trigonometrie. anderen leren.

Acroniem: The Old Arab Carried A Heavy Sack Of Hay.

De hypontenuse is de lengte van de boomarm. Maak er 1 eenheid lang van. De opzoektabel geeft vervolgens het percentage van de tankdiepte weer. (natuurlijk vermenigvuldigen met 100)

#13
  0
Rakesh
2013-02-24 12:33:24 UTC
view on stackexchange narkive permalink

Controleer de volgende link:

http://www.edgefxkits.com/contactless-liquid-level-controller

Ik denk het kan nuttig voor je zijn.



Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 2.0-licentie waaronder het wordt gedistribueerd.
Loading...