Well I've been working this spring on my Liquidator automation controller. I just need some help from someone with some experience in the field converting mv to parts per million (ppm).
Here is my project as it stands now, I've started to layout the circuit board for the project and I hope to have it done soon. The code is pretty much done with the exception of a few wish items. Much of it will be dependent on what information I can obtain from forums and the net in general.
Here is the breadboard layout. In the back you can see the white and black solenoid that will allow the chlorine to flow. It's designed to not require pressure to operate. When it's on it opens a passage inside. The mechanical parts are all stainless and nylon, I hope it last a while. The strange metal tower is actually a make shift heat sink I attached to a TIP-30 transistor. It's job is to turn on and off the solenoid.
Here we have the main display screen that would be seen during normal operations. On top 00:00:00 represents the time the solenoid was running. It is in hours:minutes:seconds and is pretty accurate. This time resets itself after 8 hours of no usage. The mv reading is taken from the ORP sensor. The ppm reading is based off a look up table and currently is in a linear slop. It's WAY off because I need to find a good conversion chart. This I could really use help with. The temperature represents ambient temperature. The word "Low" means the sensor is detecting a value below what you have it set to.
This is the screen to set the desired ORP level. The device has to have 60,000 samples above or below what this setting is before it makes a decision. This of course happens in just a few seconds. The idea is to not have the unit turning the solenoid on and off too often. Kind of a false alarm prevention.
I added a pH setting to allow for re-calculation of the ORP value based on pH, at this time I've not actually implemented this feature. I hope to when I get more data.
This is an interesting feature. I didn't want to have flow gauges or any other type of wiring, etc to detect when the pump is running. So I opted to detect the flow of water by sound. A very small microphone will sit on the pipe and listen to the water flowing. This screen shows you the current sound level and allows you to adjust the trigger point.
If the pump is running and the chlorine level is low why not have an alarm? Well that's exactly what this does. It allows you to set a minimum ORP level. When the ORP is below this level a multi tone alarm will sound every 10 minutes. It's not supper annoying, but should gain some attention.
I didn't really need this screen, but I opted to add it for people that like accurate devices. It allows very fine tuning of the temperature readout. I found it was pretty accurate from the start.
One of the most demanding parts of this project was reading an ORP sensor. For that we use a Burr Brown Instrumentation Amplifier. It has an input impedance of 10^13 ohms. That's trillions of ohms. It was needed to accurately read an ORP sensor. Please forgive my sloppy solder work. I knew this little break out board holding the chip would only be used once.
When I'm done with the project (Soon) it will be all surface mount chips. The hardest part is going to be finding a suitable case to put it all in that will withstand the outdoors.
By the way the circuit has non volatile ram and will keep your settings if the power goes out (for at least 100 years). It also has lockup detection and will auto reset itself if the system stops running. So power flickers and such should not cause a green pool.
Wish list for my project:
1. Season detection by using the temp sensor to automatically adjust the chlorine levels. Not a hard thing to do.
2. Accurate PPM readings based on pH adjustments, etc. I need some help with this one.
3. I would love to have a real time clock calendar on board to actually control the pump itself.
If anyone has any information on converting ORP mv reading to PPM values I would greatly appreciate it. My code allows for a non linear curve for these values (look-up table).
I'll post more when the project has progressed.