Proportionele zuigertank met Arduino

Discussie in 'Duikboten' gestart door Lex Verkuijl, 24 jul 2020.

  1. Lex Verkuijl

    Lex Verkuijl

    Lid geworden:
    30 okt 2004
    Berichten:
    4.313
    Locatie:
    Lelystad
    Hallo allemaal,

    Ik ben vanuit het groot onderhoud van mijn Walrus aanbeland bij het upgraden van de duiktank. Ik wil het proportionele deel aan gaan sturen met een Arduino, waarbij de positiebepaling van de zuiger plaatsvind met een Hall-sensor. Waarschijnlijk is dit ergens al wel eens gedaan, maar ik wil kijken of het mij ook lukt. Arduino's zijn een nieuw stukje hobby voor me. :thumbsup:

    Maar goed, in de voorbereidende fase kwam ik toevallig met Freek in gesprek, en die heeft een Engel zuigertank voor in zijn laatste project, waar hij een aansturing voor zocht. Eén en één is twee; die tank van Freek ligt nu naast mijn toetsenbord om als Beta-testobject te dienen voor de ontwikkeling van met name de software in de Arduino. Als bijproduct heeft Freek dan straks ook een Hall-aansturing, vooropgesteld dat alles lukt. :rolleyes: Ik zal hier af en toe melding doen van de vorderingen.

    Eén van de eerste proefopstellingkjes voor de Arduino. Een kijken hoe inlezen van een RC puls uit de ontvanger werkt, en hoe je die dan verder kunt verwerken:

    [​IMG]

    Toen kwam Freeks tank, een 750mm exemplaar van Engel, omgebouwd naar 12volt, met dus de kleine motor. Die heb ik eerst gedemonteerd (sorry Freek...) en een 2mm Neodymium magneetje in het tussentandwiel gezet. Toen een Hall-sensor in elkaar gefrutseld, en die met de schroeven van de eindschakelaars in positie gezet:

    [​IMG]

    Die eindschakelaars blijven als uiteindelijke harde afslag van de tank. Daar ga ik niet op wat voor electronica dan ook vertrouwen, kan altijd iets mis gaan en dan drukt ook dat kleine motortje de tank vast.

    Daarna de tank weer in elkaar, en een proefopstelling met Arduino en relaisblok gemaakt. Of de relais blijven weet ik nog niet, ik ga ook nog een H-brug erop testen. Na wat gepruts werkt de Arduino sketch in ieder geval qua uitlezen van de Hall-sensor, en een eerste initialiserings routine is operationeel. Daarbij wordt de tank vanuit welke positie dan ook helemaal leeg gedrukt, en wordt de teller van de sensor op nul gezet.

    [​IMG]

    Dan weet de Arduino de nul = leeg stand, en van daar uit moet hij gaan reageren op ontvanger pulsen. Ben nu aan het uitzoeken hoe dat het beste te doen is.
     
    Laatst bewerkt: 24 jul 2020
  2. Lex Verkuijl

    Lex Verkuijl

    Lid geworden:
    30 okt 2004
    Berichten:
    4.313
    Locatie:
    Lelystad
    Kleine tegenslag. De tellerwaardes van de hall sensor blijken niet stabiel te zijn. Het is steeds meer of minder, afhankelijk van toerental en/of draairichting. Eerst wat experimenteren of ik dat stabiel krijg.

    Wel alvast hieronder wat ik wil realiseren. Boven de input van de zender, met een draaiknop of schuifregelaar, daar onder de gewenste reactie van de tank.

    [​IMG]
     
    Laatst bewerkt: 25 jul 2020
  3. duikboot

    duikboot

    Lid geworden:
    21 jun 2012
    Berichten:
    220
    Locatie:
    apeldoorn
  4. FreekS

    FreekS

    Lid geworden:
    17 jul 2008
    Berichten:
    723
    Locatie:
    Düsseldorf, Duitsland
    Wow, dat gaat snel! Ik mag wel doorwerken met de boot!
     
  5. Lex Verkuijl

    Lex Verkuijl

    Lid geworden:
    30 okt 2004
    Berichten:
    4.313
    Locatie:
    Lelystad
    Doe rustig aan Freek, ik loop tegen de eerst hickupps aan... Ik ben nu de programmering anders aan het benaderen. Hoe ik het eerst wou doen lukt niet echt.. Al doende leert men!
     
  6. Lex Verkuijl

    Lex Verkuijl

    Lid geworden:
    30 okt 2004
    Berichten:
    4.313
    Locatie:
    Lelystad
    De Hall sensor lukte niet goed. Ik dacht dus dat de oorzaak het magnetisch veld van de motor, en misschien de draaiende tandwielen zou zijn. Ik heb daarom in de plaats een infrarood sensor gemaakt, maar die geeft hetzelfde probleem... Het zit dus niet in de sensor zelf.

    Ik ga daarom het tellen van de sensor pulsen in het programma nu anders benaderen, kijken of dat helpt.
     
  7. blubblub

    blubblub

    Lid geworden:
    1 aug 2011
    Berichten:
    30
    Hallo Lex,

    Ben ook al een hele tijd bezig om mijn zwaardvis met een arduino aan de gang te krijgen,
    Ben uit eindelijk in Australië uitgekomen.Bij John huppeldepup zijn achternaam ben ik ff kwijt.
    Hij maak al zijn boten,metname onderzeeers zelf en werkt eigenlijk uitsluitend met de arduino.
    Hij legt ook alles netjes uit hoe de functies werken.
    Zeker een bezoekje waard.Alle sketches kan je ook downloaden bij hem.
    Zijn website
    ScratchbuildwithJohn

    Veel succes ermee.
    Groetjes Aad westerdijk
     
    Laatst bewerkt: 26 jul 2020
  8. Lex Verkuijl

    Lex Verkuijl

    Lid geworden:
    30 okt 2004
    Berichten:
    4.313
    Locatie:
    Lelystad
    Hoi Aad,

    Dank voor je tip, ik ga daar even kijken!

    Inmiddels heb ik de teller stabiel. Na wat google en youtube werk blijk ik een niet handige constructie in de sketch gezet te hebben die het gaan 'zweven' van de tellerwaarde in de hand werkt. Dat is nu opgelost, de teller is stabiel. Ik kan weer verder! (maar ga eerst bij die John kijken!)



    [edit] Mooi die John, legt alles uit met een duikboot, zender, én een glas wijn op zijn werkbank... ;) [/edit]
     
    Laatst bewerkt: 26 jul 2020
    raf vindt dit leuk.
  9. Paul01

    Paul01

    Lid geworden:
    12 apr 2006
    Berichten:
    197
    Locatie:
    Rotterdam
    Laatst bewerkt: 26 jul 2020
  10. Lex Verkuijl

    Lex Verkuijl

    Lid geworden:
    30 okt 2004
    Berichten:
    4.313
    Locatie:
    Lelystad
    Op zich zijn dat handige dingen als ik het zo lees. Alleen moet je dan met stepper motoren gaan werken, dat wou ik nog even niet doen.
     
    Laatst bewerkt: 28 jul 2020
  11. pentip

    pentip

    Lid geworden:
    17 apr 2006
    Berichten:
    482
    Locatie:
    Gennep
    Een gedachte: bij het opstarten druk je de tank leeg. Betekend dat stijgen? Zo nee, wellicht niet zo handig in geval van een storing met herstart van de Arduino onderweg?

    Stappenmotoren vind ik ook een lastig iets. Eenvoudiger als je een compleet setje motor/controller koopt en een standaar sketch pakt maar dan nog.

    Kun je wellicht anders ook meten wat de stand is zodat je een controle hebt? bijv. een paar posities middels sensortje melden waarna de sketch verifieert/calibreert. Nu heb je alleen eindpunt na opstart en moet het goed gaan tot de volgende herstart.

    Ik ben van plan mijn twee aandrijfmotoren met een H-bridge aan te sturen en bovendien het toerental op de as te meten en terug te koppelen naar de Arduinog die daarmee dan de assnelheden kan synchroniseren. Dan stuur ik dus niet op voltage naar de motoren en zoeken ze maar uit hoe hard ze draaien maar regel ik op de toerentallen van de assen en compenseert het voor wrijving/motor verschillen etc. Hoeft vast niet echt (trimmen kan immers ook vanaf de zender) maar lijkt me wel een mooie uitdaging om het echt goed te maken.

    Middels het combineren van gegevens kun je je Arduino pas echt effectief inzetten: dan kun je dus commando geven om naar een bepaalde diepte te gaan en regelt de arduino hoe die daar gaat komen. Dus stuur je een signaal dat die gewenste diepte bepaald en niet een signaal dat het gewenste volume van de tank bepaald (waarna je nog zelf moet kijken hoe diep dat is vandaag in dit water)
    Maar: hoe meet je de diepte van een modelboot op de cm nauwkeurig? is het drukverschil voldoende op zulke kleine diepte verschillen om te meten met een betaalbare sensor?

    Kun je richting nauwkeurig genoeg bepalen onder water? GPS signaal zal er niet bruikbaar zijn lijkt me? Het is vast allemaal al eens gedaan maar vaak wordt het niet beschreven of slechts deels, dus leuk project en leuk dat je je ervaringen deelt!
     
  12. Lex Verkuijl

    Lex Verkuijl

    Lid geworden:
    30 okt 2004
    Berichten:
    4.313
    Locatie:
    Lelystad
    De setup draaien was bij aanschakelen van het systeem. Dat is inmiddels veranderd naar nulstellen van de teller bij elke keer dat de zuigertank helemaal leeg gedrukt wordt. Dan vang je ook eventueel gemiste tellerpulsen tijdens het varen op.

    Ik heb al jaren de Lagereglers van Norbert Brüggen in gebruik, die passen het signaal op het diepteroer aan naar de horizontaal, om de boot zo horizontaal te stabiliseren bij onderwatervaart. Zowel de normale, als ook die met diepteregeling. Daarbij word ook de waterdruk gemeten. Vanaf de zender zeg je dan eigenlijk alleen tegen de boot dat hij op zeg 25cm diepte moet gaan varen, de LTR (Lage-TiefenRegler) doet de rest, en houd de boot dan ook op die diepte. Het regelbereik van de LTR is ongeveer 50cm, en hij houd daarbij ook verbazend nauwkeurig (+- 1 tot 2cm) de ingestelde diepte aan!

    Ik heb gyro's en druksensoren in bestelling staan om dat ook te proberen met de Arduino. Gewoon voor de fun, die dingen van Norbert zijn al perfect. Of dat dan in één arduino gepakt word (moet hij qua rekensnelheid aan kunnen) of dat ik daarvoor een tweede pak valt nog te bezien. Voor mijn Walrus (ander draadje) is er ook een X-mixer voor de kruisroeren nodig, die kan er dan ook meteen is verwerkt worden.

    Maar dat is toekomstmuziek, eerst deze zuigertankaansturing goed laten werken!
     
    FreekS vindt dit leuk.
  13. dirkske

    dirkske

    Lid geworden:
    18 feb 2006
    Berichten:
    104
    Locatie:
    Aarschot
    Als uw hardware/elektronica in orde is denk ik niet dat je rotaties zou mogen missen. Google eens op 'debouncing' moest je dat nog niet gedaan hebben. Mogelijks is het signaal van de hall sensor wat 'vuil' (aan/uit/aan etc...) bij het passeren van de magneet.
     
  14. Lex Verkuijl

    Lex Verkuijl

    Lid geworden:
    30 okt 2004
    Berichten:
    4.313
    Locatie:
    Lelystad
    Het tellen is interrupt gestuurd. Daarbij heb je geen last van debouncing en mis je geen puls. Nu had ik eerst deze eerste interrupt aanroep als 'tellerpuls' gebruikt, en dat gaat dus niet helemaal goed. nu kijkt hij als de interrupt plaatsvind in die routine eerst nog een keer of de sensor werkelijk geschakeld is, in mijn geval van high naar low en telt pas als dat inderdaad het geval is. Dan geeft het wel betrouwbare tellingen, met alleen de interrupt dus niet.
     
  15. raf

    raf Forum veteraan

    Lid geworden:
    27 aug 2003
    Berichten:
    13.516
    Locatie:
    As,België
    lex zet er dan meteen een lipo/Lion controle bij
    ik meet elke accu apart en als er eentje leeg geraakt (3 volt) geeft de controller een signaal naar mijn DTC en komt de boot boven en kun je niet meer duiken
    20200730_095542_Burst01[1].jpg deze is voor 2S2P en word door middel van 2 draden aan de DTC aan gesloten
    (deze is samen gemaakt met maarten we hadden alle twee het zelfde idee alleen zaten we alle twee vast met een deel van het ontwerp LOL)
    dit is het signaal van "kom maar naar de kant"
    daar ik met pic processoren werk kan het natuurlijk allemaal veel kleiner
    de dtc is maar 32 op 22 mm daar zit dus water detectie tank vol en lipo controle op
    de diepte regeling met druk sensor is ook reeds gemaakt maar met de pomp sturing werkt het te onnauwkeurig
    het verhogen van de frequentie van de processor van 4 Mhz naar 32 Mhz gaf ook geen oplossing
    plus alle tijden moesten terug berekend worden want die kloppen dan niet meer
    Niet uw probleem want jij hebt niet te kiezen welke frequentie je gebruikt maar daar is een pic dus veelzijdiger in

    het op nul zetten elke keer je tank leeg is dat is wel een goeie oplossing natuurlijk
    zo vang je inderdaad verloren stappen op maar gaat hij dan wel op nul komen ????
    of doe je het laatste stukje " ga door tot de schakelaar is ingedrukt" BV
     

    Bijgevoegde bestanden:

  16. Lex Verkuijl

    Lex Verkuijl

    Lid geworden:
    30 okt 2004
    Berichten:
    4.313
    Locatie:
    Lelystad
    Ik heb een vermoeden dat als je straks alle losse PIC printjes die jij in een boot gebruikt bij elkaar legt, je meer ruimte nodig hebt als 1 arduino nano van 45x18 mm :rolleyes: . Maar die kleine dingetjes zijn natuurlijk wel makkelijk weg te frummelen, en bij de Arduino komen nog sensor- en stuur printjes ;) .

    Onderspanningbeveiliging word uiteraard ook in de arduino verwerkt. Failsave op RC signaal kan eventueel ook, maar tegenwoordig hebben de meeste ontvangers dat al ingebouwd zitten, dan heeft het in de tanksturing geen nut.

    Voor het laatste stukje leegdrukken plus nul stellen gebruik ik geen schakelaar, maar "ga door tot er voor de duur van x-seconden geen interrupt meer plaats vind, en stel dan nul". Geen interrupt meer = tandwiel staat stil = eindschakelaar is uit = tank is leeg.
     
    FreekS vindt dit leuk.
  17. raf

    raf Forum veteraan

    Lid geworden:
    27 aug 2003
    Berichten:
    13.516
    Locatie:
    As,België
    Ok maar ga je dan niet blijven drukken als de zuiger reeds achter aan het schot zit of heb je er een belasting meting op zitten wanneer de stroom te hoog word
    Kan met een weerstand van 220 Ohm en een opto coupler
    Door die weerstand te vergroten of verkleinen pas je de gevoeligheid aan


    en ik gebruik maar 1 pic op de duiktank waar dan ook meteen alles op zit wat daar mee te maken heeft
    zoals hier boven 32 op 22 mm met de relais en alles er op
    de volgende print gaat met een H brug zijn die ben ik nu aan het testen en dan word de print nog kleiner in de hoogte
    voorlopig tot 4 amp belastbaar met die H brug
     
    FreekS vindt dit leuk.
  18. Lex Verkuijl

    Lex Verkuijl

    Lid geworden:
    30 okt 2004
    Berichten:
    4.313
    Locatie:
    Lelystad
    Hi Raf,

    Op de tank zitten vol en leeg afslag schakelaars, zoals origineel bij een Engel zuigertank. Die blijven zitten, en doen het daadwerkelijk stoppen van de zuiger bij vol en leeg. Daarom het signaleren van reset door het uitblijven van de sensor pulsen.

    Een h-brug heb ik hier nu ook liggen inmiddels, ga nog testen of relais beter werken, of die brug.
     
    FreekS vindt dit leuk.
  19. raf

    raf Forum veteraan

    Lid geworden:
    27 aug 2003
    Berichten:
    13.516
    Locatie:
    As,België
    kun je die schakelaar niet gebruiken als melder naar de arduino toe
    programmatische is het inlezen veel gemakkelijker dan missing puls detectie en veel sneller

    welke brug heb je want sommige zijn shit waar je 4 uitgangen voor moet gebruiken
    als er dan bij opstart l2 en L1 tegelijk open gaan dan gaat de rook er uit en is het einde verhaal
     
    FreekS vindt dit leuk.
  20. FreekS

    FreekS

    Lid geworden:
    17 jul 2008
    Berichten:
    723
    Locatie:
    Düsseldorf, Duitsland
    Mooie discussie - dat wordt leuk! ik denk niet dat ik voor de Piccard een lipo of li-ion ga gebruiken, misschien eneloop (2x10 stuks geeft 4Ah) of zelfs lood. Hangt een beetje van stroomgebruik af. Corona ontvanger heeft failsafe. Ik heb een strip LEDs met een LED controler die ik wil inbouwen, daar moet ik nog over het schakelen denken. Maar voorlopig nog met de romp bezig.
     

Deel Deze Pagina