I just finished the test code for jebao pump control. I will merge it to the main project once I verify it to work. (the web page UI will then come next, that is usually the hardest part to code)
The current design is (I tried to keep it simple).
I divide the day into 6 time segments (user definable time, currently at hour resolution, unless someone can convince me going down to minutes is needed)
These are the variables
time for the time segment
wave mode to run in that time segment (7 to choose from + you can define more)
speed to run in that segment (will ramp if values between two time segment is different)
frequency (or time per cycle) to run the selected wave (e.g. 2 seconds to run the W1 pulse)
so for instance, from midnight to 6am, you can run fixed speed at 50%, then from 6am to 9am you ramp from 50% speed to 100% on waveform W1, etc.
I coded pump1 to be the master, and you can specify pump2,3,4 to run independently, in sync or antisync (opposite) that of pump1.
since I only have one pump, I will not be able to test any of that sync feature, but in theory it should work.
Since I will be opening up my chauvet to modify the connections, I am thinking of converting my currently 2 generic IO lines to 2 12V output lines for controlling 12v peristaltic pump. I am thinking of using that either for dosing 2 part, or for automatic water change. The advantage of my code is everything is executed from interrupt so I can control the pump down to 1ms (actually less than that, like 100us). Once calibrated on the volume per unit time, I can add feature to dose x ml over 24 hours evenly. For water change, it will be like you specify the gallons (or liters) and the pump will run according to the calibration rate (with pause every few minutes, as I think these $15 peristaltic pumps from ebay are not designed to run continuously)
I will be converting the lines I originally designated for use with X10 to control 2 jebao PWM pumps.
I will update the schematic diagram once these are all done.