Water niveau met AC op de voelers

Discussie in 'Model elektronica' gestart door Zeiler, 28 dec 2023.

  1. Zeiler

    Zeiler

    Lid geworden:
    28 dec 2012
    Berichten:
    796
    Locatie:
    Hilversum
    Beste allemaal,

    Ik ben bezig met de bouw van een stoomsloep, de romp is in aanbouw en de ketel is bijna gereed.

    [​IMG] [​IMG]

    Voor de aansturing van alles zou ik graag een water niveau regeling willen maken met drie voelers waarmee ik hoog- en laagwater wil detecteren. Ik heb inmiddels begrepen dat ik hier een AC spanning op de voelers moet hebben om gasbellen te voorkomen, de gasbellen zorgen voor een onbetrouwbare meting. Ik ben onvoldoende geschoold in elektronica om dit verder te krijgen dan dit en een paar avonden googlen hebben me niets concreets gebracht.

    Dit heb ik nu, lees er hier ook meer over.

    [​IMG]

    [​IMG]




    Dit is het schema waar het mee werkt, het draait nu op een labvoeding ingesteld op 5V.


    [​IMG]

    Om er een klep mee open en dicht te sturen met bijvoorbeeld een servo zou ik er onderstaande van kunnen maken, maar dan werkt het nog steeds met DC stroom op de voelers. Dat wil ik eigenlijk omzetten naar een AC spanning waarbij toch iets van een DC overblijft om een digitale input voor de Arduino voor te maken. Voor dit stukje heb ik dus hulp nodig, maar mogelijk dat de informatie die Henk heeft gedeeld al een groot deel van de oplossing heeft, ik kan er alleen nu nog geen grip op krijgen.

    [​IMG]

    Hoe kan ik op de voelers een AC spanning zetten en toch een DC spanning voeden aan de Arduino die ik als digitale input kan verwerken? Welke onderdelen heb ik daar voor nodig en hoe passen die in het schema? Hopelijk zijn er mensen die hier op mee kunnen denken, ik heb de powerpoint file waar ik het schema in geknutseld heb bij dit bericht geplaatst, mogelijk dat het makkelijker mee helpt puzzelen.

    Hopelijk heeft iemand de mogelijkheid om me verder te helpen.
     

    Bijgevoegde bestanden:

    Laatst bewerkt: 28 dec 2023
  2. Stoompomp

    Stoompomp In Memoriam

    Lid geworden:
    22 jul 2017
    Berichten:
    4.646
    Locatie:
    HELLEVOETSLUIS
  3. Zeiler

    Zeiler

    Lid geworden:
    28 dec 2012
    Berichten:
    796
    Locatie:
    Hilversum
    Hoi Henk, ik hoop eigenlijk de resolutie hoger te hebben dan met wat je voorstelt m en het is nog niet gezegd dat die luchtbellen ook verdwijnen als je er even AC op zet, beter instaan de luchtbellen helemaal niet. Ik hoop dus dat iemand me aan een hardwarematige oplossing kan helpen.
     
  4. brutus

    brutus Vriend van modelbouwforum.nl PH-SAM Forum veteraan

    Lid geworden:
    18 nov 2008
    Berichten:
    28.610
    Locatie:
    Oldeberkoop
    Gewoon uitzoeken hoe hoog je die ingangsweerstand kan krijgen en nog steeds een betrouwbare detectie, en gewoon bij gelijkstroom blijven.
    Ik heb maar bitter weinig verstand van electronica, maar de schakelstroom van een transistor hangt van het type af en sommige hebben echt maar luttele microamperes nodig.
    Wat ik wel weet is dat electrolyse bij een paar microampere redelijk verwaarloosbaar is. Deste kleiner de schakelstroom, deste lager de electrolyse

    Er zijn ook schakelingen die reageren op verandering van capacitieve waarde, en dan kun je met twee volledig geïsoleerde voelers werken,zonder electrische stroom door het water, en ben je ook niet afhankelijk van de geleidbaarheid van het water voor een goede werking.
    Ik weet dat sommige niveaumetingen op die manier werken, ik weet alleen NIET of dat gevoelig genoeg te maken is voor dit soort kleine afmetingen.

    Dit soort dingen is ook gewoon te koop, al werken ze dan soms een tikkeltje anders, meestal met lichtdetectie op het peilglas: Innovative Solutions - Simple Water Level Sensor (denesdesign.co.uk)

    Modélisme (electronique-ljm.com). Deze laatste is een simpel aan/uit schakelaartje op het peilglas met een capaciteit van 100 mA, genoeg om middels een relais een voedingpomp aan of uit te schakelen...

    Wie weet heb je hier wat aan?
     
  5. Zeiler

    Zeiler

    Lid geworden:
    28 dec 2012
    Berichten:
    796
    Locatie:
    Hilversum
    Dat wat je zegt, die elektrolyse zal sneller gaan als de stroom hoog is. Mogelijk dat het allemaal wel meevalt. Ik heb nu NPN transistors van 45V, 0.1A dus die schakelen al heel snel.

    Anders dit weekend nog even de opstelling aanzetten en kijken of er bellen vormen als ik langere tijd (~ 1,5 uur) het kleinst mogelijke stroompje laat lopen waarbij de transistors nog schakelen.

    Als er zich ondertussen elektronici melden die mee kunnen denken in het omzetten van de DC naar de AC op enkel en alleen de voelers dan zou dat wel heel mooi zijn…!

    Fijne dag allen!

    Crispijn
     
  6. AHoogendijk

    AHoogendijk PH-SAM

    Lid geworden:
    24 mei 2012
    Berichten:
    1.669
    Locatie:
    Krabbendijke
  7. hmeijdam

    hmeijdam

    Lid geworden:
    29 jan 2010
    Berichten:
    1.912
    Locatie:
    Barneveld
    Als je toch een Arduino gaat gebruiken, kun je die ook meteen het werk laten doen door gedurende een door jou te bepalen tijd de spanning om te polen

    Je verbindt dan de zwarte en rode circuits niet meer permanent aan GND en aan VCC, maar aan digitale output pinnen die je door middel van digitalWrite(PIN, HIGH) of digitalWrite(PIN, LOW) naar wens een uitgangsspanning van 0V of 5V kunt geven. Door de 10K weerstanden zijn de stromen immers zo klein dat de output pin van de microprocessor dat makkelijk aan kan. Die mag tot 20mA aansturen.

    Verbind het zwarte circuit met een digitale output pin, bijvoorbeeld D2
    Verbind het rode circuit met een digitale output pin, bijvoorbeeld D3
    Verbind het blauwe circuit met 3 Analoge ingangen, bijvoorbeeld A0, A1 en A2 (hier ga je mee meten, zoals je al van plan was)
    Verbind het groene circuit met een 3 digitale output pinnen, bijvoorbeeld D4, D5 en D6

    Maak in je software twee standen die je om de seconde laat afwisselen.

    1) meetstand (ik schrijf het in een soort pseudo Arduino taal, om het idee van de code te duiden. Dit is natuurlijk geen kant en klaar programma)

    pinMode (D2, OUTPUT) // maak van zwart D2 een uitgang die je naar keuze HIGH of LOW kunt maken
    pinMode (D3, OUTPUT) // maak van rood D3 een uitgang die je naar keuze HIGH of LOW kunt maken
    digitalWrite(D2, LOW) // maak zwart 0 Volt spanning (GND) voor de 3 transistoren)
    digitalWrite(D3, HIGH) // maak rood 5 Volt spanning op de koperen plaat en aan de 10K weerstanden rechts
    analogRead(A0) // Hier moet je dan je metingen doen om te kijken wat het niveau is
    analogRead(A1) // Hier moet je dan je metingen doen om te kijken wat het niveau is
    analogRead(A2) // Hier moet je dan je metingen doen om te kijken wat het niveau is
    dit laat je dan een minuut zo zijn gang gaan.

    2) reverse voltage stand

    pinMode(D2, INPUT)// maak zwart een ingang. Dat schakelt de GND van de transistoren uit, die doen even niet mee
    digitalWrite(D3, LOW) // maak rood 0 Volt spanning op de koperen plaat (1e stap voltage op plaat omkeren)
    pinMode (D4, OUTPUT) // schakel groen D4 in, deze kan zo HIGH gezet worden.
    pinMode (D5, OUTPUT) // schakel groen D5 in, deze kan zo HIGH gezet worden.
    pinMode (D6, OUTPUT) // schakel groen D6 in, deze kan zo HIGH gezet worden.
    digitalWrite(D4, HIGH) // zet 5 volt op de 1e voelpin, de spanning is hiermee omgedraaid
    digitalWrite(D5, HIGH) // zet 5 volt op de 2e voelpin, de spanning is hiermee omgedraaid
    digitalWrite(D6, HIGH) // zet 5 volt op de 3e voelpin, de spanning is hiermee omgedraaid

    Dit laat je een seconde of zo zijn gang gaan "delay(1000)"
    en dan in omgekeerde volgorde de zaak weer terugzetten

    digitalWrite(D4, LOW) // zet 0 volt op de 1e voelpin
    digitalWrite(D5, LOW) // zet 0 volt op de 2e voelpin
    digitalWrite(D6, LOW) // zet 0 volt op de 3e voelpin
    pinMode (D4, INPUT) // schakel groen D4 uit, deze doet nu dus niet mee.
    pinMode (D5, INPUT) // schakel groen D5 uit, deze doet nu dus niet mee.
    pinMode (D6, INPUT) // schakel groen D6 uit, deze doet nu dus niet mee.

    De stroomsterkte door de koperen plaat is in de reverse voltage stand vele malen groter dan in de meetstand. In de meetstand gaat hij door de 10K weerstand in de reverse voltage stand door geen enkele. Vandaar dat ik tegen 1 minuut meetstand nu op de gok een 1 seconde reverse voltage stand heb gezet. Om een en ander meer in balans te krijgen zou je beter in het groene circuit ook drie 10K weerstanden kunnen opnemen en dan de tijdsduur van meetstand en reverse voltage stand gelijk maken. Die weerstanden heb ik nu niet getekend, maar nadat ik het schema had gemaakt, leek me dat een betere optie
    let op dat ik de aansluitingen naar de Arduino zomaar ergens heb laten uitkomen. Om het goed te doen had ik het plaatje van de Arduino op zijn kop moeten zetten, want nu zitten de analoge input pinnen net aan de verkeerde kant.
    mbf.jpg
     
    AHoogendijk vindt dit leuk.
  8. Stoompomp

    Stoompomp In Memoriam

    Lid geworden:
    22 jul 2017
    Berichten:
    4.646
    Locatie:
    HELLEVOETSLUIS
    Mooie oplossing.
    Ik heb geen kennis van de Arduino, maar als ik het goed begrijp, maak je gebruik van het "sample and hold" principe?.
    Kanaal kiezen, meten, oude meetwaarde overschrijven, meetwaarde opslaan.
    Groet. Henk.
     
    Laatst bewerkt: 29 dec 2023
  9. hmeijdam

    hmeijdam

    Lid geworden:
    29 jan 2010
    Berichten:
    1.912
    Locatie:
    Barneveld
    Dat klopt helemaal. Daar zorgt de functie "analogRead" voor A0, A1 en A2 zijn dan de kanalen, die elk corresponderen met een pin van de microprocessor. Het is een meting met een nauwkeurigheid van 10-bits. Dat betekent 0V = 0 en 5V = 1024 (2 tot de macht 10). Uitgaande van 5V werkspanning.

    Mocht je het leuk vinden; in de software doe je het zo:

    uint16_t meetwaarde1; // hiermee scheppen we een nieuw veld met de naam "meetwaarde1" wat 16 bits kan bevatten (je kunt kiezen uit 8, 16 of 32).
    uint16_t millivolts; // hiermee scheppen we een nieuw veld met de naam "millivolts" wat ook 16 bits groot is.

    meetwaarde1 = analogread(A0); // het veld met de naam meetwaarde wordt gevuld (= hold) met de 10-bits voltage waarde (met 6 voorloopnullen) volgens de sample methode.

    Wil je nu het voltage weten in millivolts, dan moet je dus 1024 omrekenen naar 5000 en maak je een formule.
    millivolts = 5000 * meetwaarde1 / 1024; // het veld met de naam millivolts wordt gevuld met het resultaat van de formule.
    (note: het * teken is het vermenigvuldig teken voor de Arduino. Daar wordt geen X voor gebruikt)
     
    Zeiler en Stoompomp vinden dit leuk.
  10. Zeiler

    Zeiler

    Lid geworden:
    28 dec 2012
    Berichten:
    796
    Locatie:
    Hilversum
    Beste @hmeijdam, ik ga me er eens goed in verdiepen en puzzelen! Leuk dat de wisselspanning op deze manier kan worden gegenereerd en dat er geen extra hardware nodig is, op een paar extra weerstanden na.

    Het zal niet snel zijn maar ik kom met een reactie! Dank hiervoor!

    Crispijn
     
  11. Zeiler

    Zeiler

    Lid geworden:
    28 dec 2012
    Berichten:
    796
    Locatie:
    Hilversum
    Ik ben de test aan het uitvoeren om te zien of er bellen ontstaan aan de probes nu ik nog steeds de originele hardware opstelling heb, met 5V DC op de voelers, Ik begon de test op 5V, 0.005A en dat is na 10 minuten opgelopen tot 5V, 0.008A volgens de labvoeding. Daarna geen verandering meer. Rond de korte gestripte stukjes van de VDE kabel zie je kleine bellen ontstaan. Soms breekt er een luchtbel los en gaat deze naar boven. Het gaat dus ondanks zo'n kleine stroom vrij snel.

    Nu, dit is een prima nul meting om gedaan te hebben en waar ik het idee van hmeijdam tegenover kan zetten. Hier nog een foto van de luchtbellen, het omzetten naar een 'wissel spanning' doen we niet helemaal voor niets.

    [​IMG]

    Ik zou het schema ook nog om kunnen draaien dusdanig dat de drie probes direct de 5V krijgen maar volgens mij lost dit geen probleem op maar verplaats ik het dan alleen maar.

    Later een update over de te schrijven code en de benodigde hardware ombouw. Mijn tijd is helaas beperkt.
     

Deel Deze Pagina