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.
  • 2 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 (2 pcs)
  • differential pressure sensors for measurement of the tank levels (2 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


Arduino Finite State Machine

Click on this link for opening the pdf of the FSM document.


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.



After a periode of testing with "normal" water, the tank is disabled and now asembled on the definite location.


The HMI screen:

Because of all components have to be connected again (for the final location), almost every field component is masked on HMI (yellow signal and field backgrounds, dec 12, 2021)



The parameter screen:



The plotter screen: