Vulstand tank met Lcd scherm op afstand

Dag iedereen ik heb twee regenwatertanks die ik binnenkort wil monitoren dmv arduino met ultrasoon vulstand detectie en uitlezen op een (LCD) scherm.

Het is me als beginneling met Arduino een uitdaging om het zoveel mogelijk zelf te ontdekken en op te lossen. Voor de grote lijnen kom ik wel graag hier eerst ten rade.
Hier dus een paar concrete vragen:

  • Is ultrasoon een goeie keuze om de vulstand in het oog te houden?

  • Ik vond o.a al deze en deze waterdichte sensoren, de eerste heeft twee sensoren de ander maar één. Waar zit het verschil en dewelke is aan te bevelen?

De te meten afstand ligt tussen ± 7 cm en ± 1OO cm, te meten op wateroppervlak.

  • De afstand tussen de twee tanks is ± 35 m. Het lcd scherm komt bij tank 2. Hoe overbrug ik best die afstand? Het kan met een draad/kabel die grotendeels buiten komt te liggen of kan dit ook draadloos? Met nRF2401?
    Het scherm geeft dus data weer die van twee verschillende locaties met elk hun eigen arduino.

Als het betrouwbaar draadloos kan geniet dit wel de voorkeur.

  • Als tank 2 dreigt leeg te raken moet ze worden bijgevuld door een pomp in tank 1, dit lijkt me geen al te moeilijke opgave.

  • Verder wil ik ook nog elke pomp uitrusten met een anti blokkeerstand. Ttz als de pomp 48 uur niet gedraaid heeft laat ik ze 1 minuut werken. Ook dit lijkt me relatief simpel.

De grootste uitdaging ligt momenteel in het lcd scherm aansturen al dan niet draadloos.

Elke tip om me op weg te helpen is welkom, alvast bedankt bij voorbaat.

Fijne dag nog,

Misj

Dag Misj,

Met draad kan je best kiezen voor RS485. Dat is half duplex. Je hebt dan wel een extra pen nodig voor het verzenden en je hebt wat delay nodig bij het verzenden. Anders is niet alles verzonden. Ik ben zelf bezig met het automatiseren van de serre bewatering met 1 master (ESP32) met ILI9341 3.2" OLED display en ongeveer 10 nodes ATmega644PA op 14,7456MHz (ideaal voor UART communicatie) 18,4320 MHz was ook een mogelijkheid maar ondersteunde de initiële ATmega32 niet. Omdat de nodes ook een adres instelling hebben heb ik 8 ingangen extra nodig en een uitgang om het display te doven. Anders paste een ATmega328 wel.

Het kan ook draadloos door ESP8266 of ESP32 via WiFi en MQTT met elkaar te laten praten. Moet je wel een MQTT servertje opzetten. Voordeel is dat elk onderdeel de nieuwe MQTT berichten ophaalt als het past.

Als 'scherm' processor zou ik toch een ESP nemen. Kan je er een webservertje op zetten en vanop je PC alles opvolgen. 1 voorwaarde, WiFi connectie op je home netwerk.

Pomp op of af zetten is geen rocket scene. Een flow meter kan al je eerste controle zijn. Als je vat 1000 liter is kan het niet zijn dat je 1100 liter gaat verpompen.

1 minuut laten pompen? Als vat 2 al vol is, waarom zou je dan 1 keer per dag water gaan verpompen? Ik heb zelf een pomp van 3600l/uur. 1 minuut pompen is dan 60 liter of 420 liter per week. Zo snel geraakt een pomp niet vast. Zelfs na een maand nog niet.

Met ultrasoon sensoren heb ik geen ervaring. Ik ga deze gebruiken. 2 per afnamepunt. Beiden gesloten als het niveau te laag is. Een kabelbreuk gaat dan geen laag niveau weergeven waardoor overlopen wordt uitgesloten. Nadeel je hebt 3 standen, vol, tussen vol en leeg, leeg. Waar je ultrasoon wel een tussenstand hebt. Op het werk gebruiken ze geen ultrasoon maar capacitieve druksensoren met luchtdruk compensatie. Die werken van 4mA tot 20mA. Daar speelt afstand geen rol en zou je alles op 1 processor kunnen zetten. Nadeel, deze sensoren van Vega kosten behoorlijk.

ps: je eerste link werkt niet.
edit: ILI9341 is verkrijgbaar met en zonder touch screen. Ik gebruik zonder touch. Als je wil kan je er ook een SD kaartje in steken om gegevens op te slaan.

Dag beekeeper,

Bedankt voor je input maar het is me allemaal wat chinees je oplossing.
Ik wil het relatief simpel houden vulstanden kunnen aflezen ter plaatse is prima, op de pc is echt (nog) niet nodig. Ik heb nu op tinkercad al een simulatie werkend met ultrasoon en LCD scherm voor 1 tank. Mijn probleem is nu hoe krijg ik de meting van de tweede ultrasoon er vanop afstand bij.

Ultrasoon met traploze meting geniet mijn voorkeur zo lees ik de werkelijke inhouden en kan het bijvullen beperken tot kleine stappen. Nu heb ik een (gekocht) systeem die per keer 50 liter stadswater bijvult, ik wil dit nabouwen met regenwater uit tank 2. (Het gekochte systeem werkt met een ondergedompelde druksensor).

Mijn niet zo oude regenwaterpomp blokkeerde dit jaar na ± drie weken stilstand, en ze een minuutje laten draaien hoeft geen water te verbruiken ik laat het gewoon weer in de put lopen.
Dit is technisch haalbaar voor beide pompen. Ik dacht hier de spanning op de pomp te detecteren en dan een tellertje te laten (her)starten, na een bepaalde tijd (± 48 hr) start die de pomp voor 1 minuut en de teller start weer op nul. Is er waterafname dan start de pomp en gaat de teller ook terug naar af.

Groetjes,
Misj

PS : - de link is hersteld.

Een goedkope (RVS) pomp uit de doe het zelf heeft het hier vele jaren uitgehouden. Ze werd alleen gebruikt om de vijver een aantal keren per jaar bij te vullen. Nu is ze overleden omdat er een lager het heeft begeven.

Het aantal liter dat verpompt wordt kan je detecteren met een flow sensor.

Bij gebruik van RS485 heb je 2 getwistte draden nodig. Het is minder storingsgevoelig dan RS232 (UART) communicatie. De afstand die kan overbrugd worden is 1200m. In uw geval is 19200Bd (Baud of 19200 bits/seconde) zeker haalbaar. Je kan ook gemakkelijk 'sniffen'. Een RS485=>USB aansluiten en je kan de communicatie volgen in de arduino IDE.

Je uitlezing met scherm (master) stuurt dan een commando naar je andere tank dat er water moet gepompt worden. Je slave kan dan een antwoord sturen. Op dezelfde wijze wordt het niveau opgevraagd.

Om de pompen op gezette tijden te laten draaien is een ESP met WiFi connectie het gemakkelijkst. Je kan dan via een NTP server de exacte tijd gebruiken. Je laatste keer pompen wordt dan als datum (uint32_t) opgeslagen. Hoef je niet meer te doen dan datums vergelijken.

Heb je geen WiFi dan is een RTC (DS3231) heel handig. Met batterijtje loopt die vele jaren betrekkelijk correct, ook bij spanningsuitval. Het gebruik van millis() is in dit geval minder aan te raden. Bij een spanningsuitval begin je weer vanaf 0 en heeft wat je hebt opgeslagen geen waarde meer.

Wil je regelmatig wegschrijven naar het geheugen? Overweeg dan een EEPROM. DS3231 en EEPROM zijn samen als opsteekprintje te verkrijgen.

Een processor met 2 UART is wel handig. UART0 voor debugging en programmering. UART1 voor RS485.

Het is allemaal veel moeilijker uit te leggen dan het te maken.

edit: welk type bedoel je met een lcd scherm? Is dat OLED? Is dat een 2*20 of is dat een grafisch display.

Het wordt hier denk ik wat moeilijker dan nodig.
Beide pompen hebben een drukschakelaar en een persleiding met meerdere kranen als er een kraan opent slaat de respectievelijke pomp aan.

Mijn idee is nu:

  • Tank 1 heeft een inhoud van 1.700 liter en een automatische bijvulling met stadswarter als het niveau onder 250 l zakt.
  • Tank 2 heeft een inhoud van 3,000 liter en een automatische pomp met persleiding naar het lokaal van pomp 1.
  • Ik meet het niveau van tank 1 als dit onder pakweg 350 liter komt opent er een magneetventiel en vult de pomp van tank 2 bij tot niveau 400l. (Beide tanken vullen bij als het regen van verschillende daken).
  • Graag had ik ook het niveau van tank 2 gemeten en uitgelezen bij tank 1 op een 20 x 4 LCD scherm. Als Tank 2 ook laag staat gaat het magneetventiel niet open en vult de put bij met stadswater.
  • Ik dacht dus met een relais en een magneetventiel is het probleem opgelost.
  • Enkel moet Arduino 1 te weten komen van Arduino 2 die 40 meter verder staat hoeveel water ( ttz meer dan minimum) er in tank 2 zit.
  • De pompen regelmatig laten draaien kan dan ook weer met elk een apart magneetventiel naar hun eigen tank. Millis leek me het simpelst, geen probleem als er na een eventuele stroomstoring eens een extra minuutje gepompt wordt. Sowieso is dat enkel bij vakantieperiodes.
    Wegschrijven naar geheugen is vooralsnog niet nodig, later misschien als spielerei.

Meer is er niet nodig bij tank 2. Zelfs in TH componenten kan dit op minder dan 10cm*5cm. Er is 1 SMD bij, de FET. Zonder (controle) leds kan het uiteraard nog kleiner.

Bepaalde zaken niet mee nemen in je analyse zorgt er meestal voor dat je vanaf 0 terug moet starten. Te weinig IO, geen geschikte poorten meer, andere processor, andere layout, ...

Een 20*2 LCD is heel beperkt in zijn mogelijkheden. Vraagt parallel minstens 6 IO zonder R/W gebruik. Het display kan maar in 1 richting gebruikt worden. Een ILI9341 gebruikt 7 IO inclusief led sturing en heeft vele malen meer mogelijkheden bij 320px x240px. Portrait of landscape maakt niet uit. RGB kleuren. Zelfs visuele weergave van de inhoud.

RS485 ontvangen is identiek aan RS232 ontvangen. Verzenden vraagt gewoon dat PD4 wordt hoog gemaakt tot de tekst is verzonden.

Het verschil is hoe ze communiceren met de Arduino.

A02YYUW Waterproof Ultrasonic Sensor - Opencircuit gebruikt seriele communicatie. Als je deze gaat gebruiken zou ik adviseren om een Arduino te gebruiken met een extra seriele poort (bv Mega, Leonardo, Micro, SparkFun Pro Micro; er zijn nog andere keuzes); het alternatief is SoftwareSeriel (voor bv. een Nano of Uno). Er is een draadje over deze sensor, zie A02YUWW sensor for speed measurement.

Bij de Waterdichte Ultrasonische Sensor - JSN-SR04T - JSN-SR04T moet je een puls op een pin zetten en wachten op de echo.

Ik heb geen idee welke beter is.

Draadloze communicatie is niet mijn sterke punt. Ik heb geen idee hoeveel geld je wilt verspillen maar als dat geen probleem is zou ik een setje nRF24L01s kopen (met antenne), een 433MHz (of 315MHz) zender en ontvanger, een setje Zigbees en misschien nog wat anders (geen idee wat er is) en daarmee gaan experimenteren. Voor zover ik weet is 433MHz eenrichting verkeer maar ik kan me vergissen.

Een van de vragen is of de twee Arduinos elkaar kunnen zien? Voor zover ik weet is de regel dat lagere frequenties beter zijn als er geen direct zicht is; nRF24L01 werkt op 2.4GHz en Zigbee voor zover ik weet ook.

Zodra je een beslissing hebt genomen hoe je gaat communiceren (en zowel de communicatie als het scherm werkend hebt aan de hand van bv voorbeelden) is dat relatief kinderspel :wink:

Serial Input Basics - updated geeft een simpel protocol met een startteken en een eindteken voor een betrouwbare communicatie; wat je ook gaat implementeren, het kan een beginpunt zijn. Hoewel de beschrijving over seriele communicatie gaat kun je de principes toepassen op enige vorm van communicatie,

Tenzij je een I2C implementatie gebruikt.

Bedankt allebei voor de tips, mijn oorspronkelijk idee was ook om met n RF24L01s te werken ik heb daar al wat mee geëxpirementeerd en communicatie lukt.

Volgende week staat er een week Ardennen op het programma en kort nadien een paar weken Roemenië :grinning:. De bedoeling is al zoveel mogelijk te studeren en uit te werken in simulatie om dan nadien aan de slag te gaan met de praktijk.

Fijne dag nog iedereen,

Op een standaard HD44780 display is I2C of RS232 ook niet aanwezig. Daarom ook de vraag naar het type display.

Houdt er maar rekening mee dat de 433MHz band overbevolkt is. Deuropeners, weerstations, garagepoorten, autosleutels, ... zitten allemaal op dezelfde open band. Wil je een veilige communicatie zal je error correctie en best ook nog encryptie moeten toepassen. Datasnelheid beperkt tot 9600Bd. Terwijl je bij RS485 veelvouden moeten mogelijk zijn.

2,4GHz is de gewone WiFi frequentie. Ook die zit overvol. Op sommige plaatsen in stedelijke omgeving al totaal onbruikbaar. 5GHz gaat ook niet lang meer duren maar die heeft dan weer het voordeel of nadeel dat de reikwijdte maar de helft is van 2,4GHz. Vraag is of je 30 meter storingvrij en met 100% ontvangstkwaliteit kan overbruggen.

Niet voor niets wordt voor communicatie heel veel RS485 ingezet. Ook gekend als Modbus. De implementatie is net zo eenvoudig als een bericht laten verschijnen op de seriële monitor van de arduino IDE of het ontvangen van een bericht.

Lees dit maar eens goed door.

Juist, ik had zoiets als deze in gedachten.

Met tinkercad heb ik dit al werkend voor 1 tank.
De communicatie met de tweede is de volgende stap.

Excuses ik had dit eerder kunnen melden.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.