Fish tank, the project.



Since a long time, I’m interested in making a fish tank and then especial a salt water tank. For many years i had a fish tank with fresh water but now planning to make a salt water version. The control for the tank is already made with an Arduino DUE board. The saltwater installation exists of the next parts; the main tank, a sump (filter tank), lightning and heating, several pumps and valves and a reverse osmose filter with a small supply tank. 

The already made control, has the following features:

  • heating control; 2 heating elements keeping the right temperature
  • lightning control; 3 different lamp groups for simulating day/night
  • valves for several purposes like water changes and adding evaporated water, the valves are equipped with open/close sensors.
  • 3 pumps for circulation, filtering and mixing for the production of salt water
  • a skimmer installation
  • a RO filter for ultrapure water
  • measurement of important process values

For controlling the tank there are several sensors present in the filter and the tanks:

  • temperature sensors (3 pcs)
  • differential pressure sensors for measurement of the tank levels (3 pcs)
  • TDS sensor for checking the quality of the RO water installation
  • pH sensor for measurement of the acidity of the water
  • Redox sensor for measurement of the amount of dissolved 02
  • 2 flow sensors for measurement the supply and filter drain to and from the tank to the sump


The control has also some features for timing, alarming and signaling:

  • a human interface (HMI) for supervisory control and data acquisition (scada on windows 10).
    masking and forcing process values is possible to influence the control and do maintenance
  • a real time clock for keeping the right time; always the right time when not connected to the human interface
  • a sim800L for sending and receiving text messages (alarming)
  • the sim800L is also used for storing several control parameters
  • a RGB led for signaling status information
  • a OLED display with some extra information like date/time, temperature and status
  • tank parameters are stored in an access database and also "on board" of the fish tank control, the parameters can be maintained in the HMI. changing the parameters on HMI will also update and store the parameters on the board.
  • it is possible to write process values to the access database (event driven and polling)
  • it is possible to trend max. 3 process values on a digital pen plotter. it is possible to store several sets of process values in an access database; you can choose from the available sets (and if necessary select and store other process values/sets)
  • from the menu you can activate a webcam
  • and (of course!) all other benefits of the AFSM software package


 System architecture

Architecture Fish tank

 The controlpanel:

PanelFishTank      klepje  

The control is built into a halyester cabinet of 50x70cm. It is equipped with approximately 70 terminal clamps for fitting the cables needed to connect all the equipment, like the 5 valves.



I’m testing the control for some months now to check the stability of the used components; differential pressure sensor, temperature sensors, TDS, flow and pH sensors. I’m also testing the arduino DUE for stability; free ram, cycle time, temperature, level etc. The stability of the arduino control is very good, that also applies for the DS18B20 temperature sensors and the MPX5010DP differential pressure sensor. The pH sensor last for appr. 4 months and then begins to deviate (I’ve used 2 pH sensors so far). The TDS sensor is stable. 
In general the components, like power supplies, relays etc. mounted in the cabinet are warm (certainly not hot) and that also applies for the DUE, all of the equipment is powered by separate power supplies (3,3Vdc, 5Vdc, 12Vdc and 24Vdc). The 3,3Vdc supply is powered by the 5Vdc. The longest up-time for the control -before i loaded a new sketch- is at the moment 28 days, no memory loss and no malfunctions.


The HMI screen:



The parameter screen:



The plotter screen: