DIY auto top off – arduino Optical ATO
Evaporation and increased salinity levels is one of the fastest ways to crash your tank.. An ATO, auto top off or technically an osmolator will automatically add freshwater back in to your tank to keep the water level constant and compensate for evaporation.
Since a fancy auto top off can cost 100-200$ I decided to make my own extremely accurate version for a fraction of the cost.
Rather than using just a standard float valve (which can fail) I went with an optical water level sensor, which is very accurate and detects when water touches the top of the sensor. I also added a float valve as a backup.
The microprocessor will only activate the pump of both sensors are not detecting water. If either one senses water the filling sequence is skipped
I also added a Hold switch to the box. When this switch is hit the arduino goes into a loop of blinking the LED as a reminder to turn it back on. This Hold mode will be useful when doing water changes.
I may add a third safety of only running the pumps for so many second per fill. But this is dependant on if I do micro topoffs 24h/day or hair have the ATO check every few hours or at times I’m not around.
Once i soldered the sensors on to my wire i covered the last half of the wire all the way down to the sensors in heat shrink to seal it up and have a nice black wire to blend in with the back of the tank.
Motor on the left, 12V power in the bottom right. DB9 connector for the sensors and USB in case i want to adjust the programming at a future date.
I found a thin acrylic rube which was about the size of an airline. This allowed me to use an airline holder as my mount. The beauty of this method is i can very easily raise and lower it to set my water level.
Once i fill the tank ill trim the rod to about the level of the tank. to clean things up. I do love the simplicity and adjust-ability of this method of mounting it.
Side view of the sensors in the tank. I plan on keeping the water level slightly below this overflow into the pump chamber. This should minimize nose 🙂