Gå till innehåll

Arduino LED och Tunze pump kontroll


Garion

Rekommenderade inlägg

Hej.

På begäran lägger jag upp lite info om mitt hembygge.

Först och främst vill jag dock påpeka att jag har byggt detta utan djupare kunskaper i vare sig programmering eller elektronik. Det innebär att det kan finnas en hel del felaktigheter och saker som inte fungerar för någon annan. Jag tar inget ansvar för eventuella problem som uppstår om någon bestämmer sig för att använda mina scheman eller kod.

Dessutom har jag i en del exempel använt 220V som kan vara dödligt om man får det i kroppen. Så var försiktig om ni använder denna info.

En beskrivning av vad jag ville uppnå:

- Styrning av LED-belysning med minst 4 kanaler. Utökades sedan till 6 kanaler.

- Analog (0-10V) styrning och inte PWM. Detta för att kunna ersätta med vanliga potentiometrar eller justerbara PSU om det skulle behövas.

- Realtidsklocka (RTC) för att hantera tidshållning.

- Styrning av 2st Tunze 6095 pumpar. Flera pumpar kan anslutas, men endast 2 kanaler behövs.

- Knapp för mat. Stoppar pumparna ca 3 minuter.

- LCD för att visa vad som sker.

Projektet skulle vara relativt enkelt att bygga, och för mig betyder det att bygga på s.k. experimentkort. Det blir mer lödning, men man behöver inte designa, etsa och tillverka kretskort. Dessutom är det lättare att ändra om det blivit fel. Alla kretsar testkörde jag först på ett sånt där labbkort man sticker små jumperkablar i.

I och med att jag bestämt mig för att använda experimentkort, behövde jag koncentrera mig på att bara använda kretsar av den gamla typen DIL och inte något ytmonterat. Därför blev valet av Digital-till-Analog konverterare (DAC) något begränsat.

Jag valde en krets som heter MCP4822 som är en 2-kanals DAC för SPI. SPI är enkelt åtkomligt på Arduinon så det passade bra.

Tyvärr ger MCP4822 maximalt 4,095V ut och jag behövde maximalt 10V till mina MeanWell PSU och 8V för pumpstyrningen.

Jag använde mig då av en gammal känd op-amp. LM324 som innehåller 4 st. op-ampar. Med återkoppling och en trimpotentiometer kan jag justera max utgång vid max talet 4095.

Komponenterna kostar ca:

Arduino = 200:-

MCP4822DAC = 15:-

LCD = 150:-

RTC = 75:-

LM324 = 5:-

Inbyggnadslåda = 45:-

Sladdar & kontakter = 50:-

Jag hade en hel del motstånd och kondensatorer liggande, men annars kanske man får lägga på en 50:- till.

Här är ett schema av enklaste typ. 2 kanaler, en billig Arduino, en LCD och en RTC.

AquaCON Stream ver 3.pdf

Denna lösning använder ganska många av Arduinons pinnar för LCDn och blev svår att utöka.

Jag valde därför att komplicera kretsen lite genom att koppla LCDn till I2C bussen genom en PCF8574.

Då fick jag några pinnar lediga för att koppla till fler DAC. Varje DAC behöver en styrsignal för att välja vilken utgång man ska skriva till. SS1, SS2, etc. De har samma buss annars, så det går en pinne till varje SS.

Mina Meanwell drivare (jag har lite olika modeller) har ibland svårt att slå av helt när det är 0 volt på styringången. Därför har jag lagt till 3 reläer som kan slå av strömmen till drivarna när de ska slå av. Dessutom har jag ett relä för att slå på/av fläktarna på LED-rampen, så att de inte går hela tiden.

Annat som jag lagt till är:

- En knapp för att starta en "Foodtimer" som stänger av pumparna i ca 3 minuter.

- En knapp för att byta "Meny" på LCD-displayen, så att man kan se LED-nivåer eller Pumparnas hastighet.

- En knapp för att byta "Mode" på pumparna från synkron, asynkron, random eller manuellt.

- En lysdiod som indikerar att mat serveras.

- En potentiometer som man kan justera pumparnas ramphastighet. Dvs hur snabbt de går från 0 till max.

- En potentiometer som man kan justera den tid pumparna går för fullt och står stilla. Dvs tiden mellan respektive ramp.

Här är schemat över den lösning jag använder idag:

AquaCON ver 8.pdf

Observera att schemat innehåller 220V.

Här är en liten skakig video som visar pumpstyrningen:

Slutligen lite kommentarer om framtida projekt och lösningar.

I stället för att lägga allt i samma lösning, har jag nu valt att köra separata lösningar var för sig. Det är lättare att hantera koden för respektive enhet då, och det är inte lika stor risk att det blir konflikter mellan olika lösningar.

Det blir fler Arduinos, men de är ju inte så dyra...

Jag håller just nu på att flytta ut pumpstyrningen från LED-styrningen så att de använder separata Arduinos.

Det finns några intressanta kretsar att köpa från https://www.atlas-scientific.com/index.html

Jag har köpt deras PH-krets och deras ORP-krets. Kombinerat med en "one-wire" termometer som heter DS18S20 har jag grunden för en mätare/kontrollenhet. Jag har testkört lite och det fungerar bra än så länge.

Jag köpte också 4 st. pumphuvuden på ebay för att se om jag kan få till en hembyggd doseringspump. Det ligger lite längre fram i tiden.

Jag återkommer lite senare med mer info om koden jag använder.

Hälsningar

Håkan

Länka till kommentar
Dela på andra sidor

Det är med viss tvekan jag lägger fram koden för mitt hembygge. Helt enkelt för att det känns lite pinsamt.

Jag är en dålig programmerare och har någotsånär lärt mig att hämta kodsnuttar och anpassa dem för mina behov.

En del har jag fått lära mig själv, och då blir det väldigt simpelt och inte alls optimerat.

Jag vet att det finns många här som är duktiga programmerarare, så jag hoppas på att slippa allt för mycket negativ kritik.

Tips om förbättringar och annat relevant är ju dock alltid intressant. Man vill ju lära sig mer.

Till att börja med några förutsättningar:

Mina LED drivers är av lite olika modeller. Det syns i koden.

Några drivers slår inte av helt när insignalen är 0V. Dessa kopplas via reläer.

Några drivers för röd, grön, cyan och violett är separata drivkretsar som matas med 5V-0V. Dvs de lyser max vid 0V och är släckta vid ca 4,5V.

Dessa värden inverteras av koden.

För att få en stadig och tidsokänslig styrning av pumparna, samtidigt som LED-styrningen ska fungera, kände jag mig tvungen att använda interrupts för pumpstyrningen. Detta är mycket komplicerat och gör att allt möjligt kan gå fel om man ändrar värden på variabler vid vissa tillfällen. I nästa version flyttar jag ut styrningen till en ny Arduino och kan då undvika interrupter.

Det betyder att jag fick svårt att få till timingen inne i interrupt hanteraren och ytterligare justeringar blev svårt.

Jag vill ha olika tidsperioder under dygnet. Dessa ska hantera LED-drivningen oberoende av varandra.

Exempelvis kanske jag vill ha lite mer rött under solnedgång, än vad jag har under soluppgång.

Moln ska slumpas fram vid olika tillfällen. Den kod jag använder nu sänker inte värdena så mycket som jag önskar, men jag ville inte ha moln under soluppgång, solnedgång eller vid svagt månljus eftersom det blev lite konstigt när molnen gjorde att det blev mörkt ibland.

En annan sak när det gäller att visa värden på LCD-displayen, så ville jag visa de verkliga värdena som skickas till LED-drivarna, så det blev lite konstigt konverterande där. De förminskningar som molnen innebar t.ex. måste ju reflekteras i värdet.

Nåja nu ska vi se om det går att inkludera kod på detta forum:

AquaCON_ver_8_3_6.txt

Om inte det fungerade så lägger jag in koden som pdf också.

AquaCON_ver_8_3_6.pdf

/Håkan

Länka till kommentar
Dela på andra sidor

Jäkligt kul läsning, jag kan ingentig om programering men jag tycker det är det fina med Arduino att det går att kopiera så mycket från andra appar och det går att "lära" sig från olika exempel.

Ska läsa igenom i lugn och ro hemma ikväll istället, men jag tycker inte du behöver skämmas för att lägga ut det du gjort själv ;)

// Danne

Länka till kommentar
Dela på andra sidor

Härligt att du delar med dig! Inspirerande!

Jag har köpt arduino och delar till ett snarlikt projekt men inte kommit så långt med mitt bygge ännu...

Precis som du kommit fram till har jag skaffat separata arduinos för olika uppgifter, för enkelheten och flexibilitetens skull. Har sedan en raspberry pi som jag planerar ha som webbinterface som styr vad de olika arduinos gör, med enkla kommandon eftersom detaljerad funktionalitet för varje uppgift är programmerad i respektive arduino. För att slippa jobba med 220 v har jag tänkt mig styra nexa trådlösa fjärrströmbrytare med 433Mhz radio från arduino.

Jag hade varit mycket tacksam om du ville förklara lite mer om hur styrningen av pumparna fungerar. Det har jag inte alls hunnit läsa mig in på... :)

Jag har också funderat på både Atlas Scientifics kretsar och doseringspumpar från ebay men inte slagit till ännu så återkom gärna med mer info om dem.

Kort sagt, vill veta mer om allt! :)

/Daniel

Ändrat av daniel_i_malmö
Länka till kommentar
Dela på andra sidor

Hej Daniel. Tack.

Jag har också tittat på Raspberryn, men hittar inte så mycket färdigt där. Känns som det är den vägen man får gå så småningom iallafall.

Ett problem som jag upplever är att kunna justera värden på ett rullande system.

Menysystem med knappar blir snabbt komplicerat och minneskrävande. Seriell kommunikation likaså.

En tanke är att längre fram kunna knyta 3-4 Arduinos till en Rasberry som webserver.

Just nu känns det ändå som att de fristående enheterna klarar sig själva rätt bra. LCD-displayerna ger snabbt en indikation om hur läget är.

Med enbart webinterface blir man kanske lite "blind" om värdena ändras.

När det gäller pumpstyrningen så är det busenkelt. Tunzes elektroniska pumpar har en ingång för styrning av pumparnas varvtal.

Enligt specen är det 1-8 volt som gäller. Pumparna har en kopplingsbox som är ca 3x3 cm med en 5-polig DIN-kontakt (hona).

Den där gamla som man använde för att koppla skivspelare och bandspelare till stereon för härrans många år sedan.

Stift 1 är signal 1-8V.

Stift 2 i mitten är jord.

Enkelt att testa med en justerbar batterieliminator, eller en potentiometer kopplad till porten.

Jag vet inte hur många mA som krävs men min utgång från LM324 kan ge max 40mA och det verkar räcka för att styra 2 st. pumpar.

Var det svaret du ville ha, eller gällde det mer koden?

/Håkan

Länka till kommentar
Dela på andra sidor

Jag tror att du kan använda/kopiera mycket bibliotek och funktioner rakt av från reefangels hemsida, tror du har funktioner för styrningen av pumpar färdig där :) Sen är det forumet en guldkälla att hitta tips på programmering och funktioner som man inte visste att man behövde ;)

// Danne

Länka till kommentar
Dela på andra sidor

Jag har också funderat på både Atlas Scientifics kretsar och doseringspumpar från ebay men inte slagit till ännu så återkom gärna med mer info om dem.

/Daniel

PH och ORP kretsarna är väldigt smidiga. För mig är det största problemet att de är så små.

De skickar alla värden seriellt och styrs också seriellt, så egentligen kanske det är enklare att koppla dem direkt till en Raspberry.

Beror återigen på om man vill använda LCD och/eller styra något.

Med en multiplexer kan man styra massor med enheter med endast några få pinnar.

De har andra intressanta prober och styrkretsar också som jag tänker mig att prova på så småningom. TDS och salinitet exempelvis.

Doseringspumparna har jag inte provat än, men jag läste en forumstråd på Reefcentral där det tydligen fanns en hel del problem med att få timingen att stämma. Vi får se. De ligger och väntar på att jag ska få tid.

Jag monterade kretsarna och BNC-kontakter för proberna i en metallbox för avskärmningens skull och sedan en vanlig seriell kabel till Arduinon.

Funkar klockrent.

/Håkan

Länka till kommentar
Dela på andra sidor

Om vi ska gå riktigt OT så vet jag att det frågats tidigare på RA´s forum om att använda deras webbserver till eget projekt, svaret blev "Cool :)" han är jäkligt öppen med allt som för tekniken framåt. Då kan du koppla Arduino direkt via wifi eller tråd och styra allt från webben/iphone/android

Länka till kommentar
Dela på andra sidor

Daniel: Jag var inne där och letade. En stor källa till inspiration och det finns mycket bra att hämta där.

Jag tyckte dock att det var lite svårt att hitta "rätt" kod om man valt annan hårdvara.

Kanske behöver skumma igenom forumet bättre.

Generellt får jag bättre input genom att "googla" i stället för att söka i Arduinos forum.

Här kommer en bild på ORP och PH kretsarna från Atlas i lådan.

post-4773-14468928304353_thumb.jpg

Och en bild på den "nya" Arduino Nano 3.0 med LCD.

post-4773-14468928304603_thumb.jpg

Det är allt som krävs egentligen. Förutom proberna.

Fast nu börjar vi diskutera nästa projekt ;)

/Håkan

Länka till kommentar
Dela på andra sidor

När det gäller pumpstyrningen så är det busenkelt. Tunzes elektroniska pumpar har en ingång för styrning av pumparnas varvtal. Enligt specen är det 1-8 volt som gäller.

Jag är intresserad av att få veta vad det är för spec du refererar till.

Länka till kommentar
Dela på andra sidor

Jag kan ingen spec, men Tunze pumparna själva skickar ut en 8v signal på pinne 5 i DIN-5 kontakten som man också kan manipulera för att styra pumparna genom att strypa den och göra detta i olika intervaller med en timer krets tex. Det är så Tunzes egna styrningar fungerar. Styrningarna i sig är i princip passiva. Men att generera en egen spänning som här är också en bra lösning, allt beror på hur man designar det man ska använda :-)

Vad som händer om man lägger på högre än 8v spänning till pumpens styrning vet jag inte, men jag skulle inte rekommendera det.

Länka till kommentar
Dela på andra sidor

Jag har ingen spec direkt, men jag gjorde mycket efterforskning på nätet för att hitta lösningar.

Detta gjorde jag innan jag ens köpte några pumpar, eftersom jag ville försäkra mig om att det skulle funka med de pumpar jag skulle köpa.

Några länkar som jag använde information från:

http://www.kc9joy.com/Electronic%20Page%20Circuits/Fishtank%20Wave%20controller/Fish%20tank%20index%20page.html

http://ealex.aqua-web.org/wavebox/circuit.htm

http://www.ultimatereef.net/forums/showthread.php?t=349604

Innan jag lade på 8V på ingången så kommer jag ihåg att jag på något sätt verifierade denna information på Tunzes hemsida, eller i någon av deras manualer. Jag kommer dock inte ihåg exakt var. Eftersom det bara var för att bekräfta informationen sparade jag inte någon länk.

Jag tror att det kan vara i manualen till någon av deras akvariedatorer/styrningar.

Jag är en relativt försiktig person och vill inte förstöra något jag betalat relativt mycket pengar för. Därför kollade jag upp först.

Hur som helst så fungerar det bra för mig. Jag vet dock inte om de verkligen går max. Det är ju lite jobbig att mäta flöde.

Länka till kommentar
Dela på andra sidor

Spänningen borde inte vara högre än 18V iaf på någon av pumparna för Tunzes single controller bygger på ett 555 timer chip. De tar inte över 18v iaf de varianter jag tittat på, isf borde det stå i manualen för pumpen att den inte går använda med single controllern.

Tunze verkar gilla standarder annars så jag kan inte se varför det inte skulle vara 8v på alla deras pumpar med DIN-5 kontakten. Men vill man veta så är det ju bara att ta en voltmätare och kontrollera spänningen mellan pinne 5 och 2(spänning ut från Tunze pumpen och jord). Det bör vara den spänning som krävs för maximal hastighet så länge inte Tunze varit så finurliga att de gjort så att man måste ha en separat styrspänningsmatare för att få ut max av sina pumpar :-)

Länka till kommentar
Dela på andra sidor

VCC finns ju på en av anslutningarna på kontakten så jag ser ingen anledning till att styrspänningen skulle var låst till just 8V. Finns många sidor på nätet där andra "gör-det-självare" anger att styrspänningen skall var 0-10V eller 1-10V...

Länka till kommentar
Dela på andra sidor

Det är en styrsignal på 1-8 volt.

Inte relaterat till matningsspänningen. På många av de elektroniska pumparna kan man ändra pumpens maxvarvtal genom att byta ut det medföljande motståndet (markerat med 12V - 24V). Det måste vara matningspänningen till pumpen.

Styrsignalen fungerar som en dimmning till en konstantströmdrivare till LED.

Det finns flera s.k. akvariedatorer som specificerar hur man ska ställa in sina enheter för att få ut 1-8V för styrsignalen till Tunzes pumpar.

Jag har ingen bra länk att visa upp bara.

/Håkan

Länka till kommentar
Dela på andra sidor

VCC finns ju på en av anslutningarna på kontakten så jag ser ingen anledning till att styrspänningen skulle var låst till just 8V. Finns många sidor på nätet där andra "gör-det-självare" anger att styrspänningen skall var 0-10V eller 1-10V...

Vad jag kommer ihåg av det jag läst, så är det ingen fara att köra 10V men pumpen går inte fortare än när 8V är pålagt.

Jag kan av egen erfarenhet säga att pumpen dessutom står stilla uppåt 1,5V för sedan starta med ett ryck.

/Håkan

Länka till kommentar
Dela på andra sidor

Från en manual till GHL Profilux

6.5 Current

ProfiLux can control (current) pumps inmany different ways, the following pumps are suited to be controlled:

- Pumps with an analog control signal input (mostly 1-10V-interface), e.g. from Tunze®, IKS® or Abyzz®, these

pumps are connected to a 1-10V-interface of ProfiLux (for the connection to ProfiLux you need the

corresponding accessory)

- Pumps whose speed is adjustable via phase controlledmodulation (therefor our dimmable powerbar

Powerbar2Dim is necessary)

- EcoTech®-pumps of VorTech® (with our module VorTech-Controller, only for ProfiLux 3)

- Electronical external filter Professionel 3e® from Eheim® (with ourmodule Eheim-Controller)

- Some low-voltage pumps, e.g. Koralia® from Hydor® (with our module PumpControl1)

Så 10V verkar inte vara några problem.

/Håkan

Länka till kommentar
Dela på andra sidor

Ja det kan nog stämma bättre.

Jag försökte bara hitta något mer specifikt än mina ord. Manualen jag klippte ur texten från var den första jag hittade och texten beskriver ju inte ingående hur programmeringen ska gå till, utan snarare vilka specifikationer pump/interface ska ha.

Som jag skrev så startar mina pumpar lite över 1V. Det är kanske vid 1,5V eller 2V men det skulle också kunna stämma med 3-8V.

Det som vore intressant att få veta är dock hur många mA som behövs för styrsignalen. Det har jag inte lyckats få reda på.

En av mina pumpar stannar ibland och "hackar" när den ska varva upp, och jag har försökt hitta felet.

Så långt jag kommit fram till efter att ha öppnat den lilla kopplingsboxen är att den lilla kondensator som sitter där kan påverka.

När jag böjt till ledarna lite på den så fungerar pumpen felfritt igen.

Men det kan också vara så att det behövs lite mer ström för att styra kretsen.

Jag har två pumpar på samma utgång så de får väl bara typ 20mA var men det verkar fungera.

/Håkan

Länka till kommentar
Dela på andra sidor

http://www.elfa.se

Brukar jag handla elektronik, kontakter och tryckknappar från. Jag har en butik relativt nära, men de har nästan aldrig rätt grejer hemma så då får det bli postorder.

http://www.kjell.com/

Har hyfsat bra priser på LCD, kabel, reläer, etc. Arduinos är OK.

http://www.lawicel-shop.se/shop/

Mycket bra priser på Arduinos och tillbehör, men inte så stort utbud på annat.

/Håkan

Länka till kommentar
Dela på andra sidor

Hej Håkan, Tittade lite snabbt på din kod och det är inte mycket att skämmas för, ser bra ut och betydligt bättre strukturerat än koden till Tunzes egna kontroller-programvara för pumpar (den är under all kritik).

Har själv experimenterat lite med arduino'n men mina kunskaper i elektronik begränsar mig. Ska bli kul att följa ditt projekt och jag kan säkert agera lite bollplank om du behöver hjälp med programmeringen.

Länka till kommentar
Dela på andra sidor

Gå med i konversationen

Du kan posta nu och registrera dig senare. Om du har ett konto, logga in nu för att posta med ditt konto.

Guest
Svara på detta ämne...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Ditt tidigare innehåll har återskapats.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Skapa Ny...