Feedbacks like these are most welcome. Theres no bad word or disrespectful elements in it, and thats all we worry about. Calling out Glitches and possible improvements are always a good thing and useful for other members , thank you for sharing your feedback.
The pwm feature in dosing pump allows us to control the speed of dosing pumps. Currently we recommend (the guide) dc peristaltic pumps, but we'll move to stepper motors at some point, which requires pwm as well. Hence its written with pwm support in mind. If you are using something that does not require pwm (for example BRS dosing pump) then just a normal timer should do the job.
The forward/reverse thing is bit hacky as it possible due to the l293d chip we have used in the guide. Now, though this is handy, its not a common feature across all dosing system. Which means enforcing this feature in doser module will make it hard for many other dosing system to work with reef-pi. It is possible to just alter the l293d circuit and have jumpers to change direction (and user have to change them physically to alter direction), and keep the software simple, without direction control .
You will need the pca9685 IC (light controller) for more than two pwm channels, its bit complicated than the dosing guide but should not be very different. Again, if you dont need pwm/speed control just use the timer feature. On this note, we are allowing sub-second durations in timers in next version of reef-pi.
I am the one that wrote the small change for the sub-second duration change :).
The pwm is also useful for peristaltic pumps, especially for nano tanks where more precise dosing maybe required, I've hooked up a PCA 9685 and a pair of l293d modules, from this I can run 16 dosers if needed with high precision, I don't think any DIY or commercial unit can do that.
The cheap l293d modules I think are the way to go, less cost and less effort than building a proto board.
Reef pi is definitely the easiest and most flexible DIY controller that you can build and the best part is it's constant evolution, a big thanks to
@Ranjib
I have been using the l293d breakout boards and have found them to be very effective. I am using it to control a cheap dc peristaltic pump. My worry is building the PCA9658 PWM board to control more than 2 pumps. It looks like a lot of work, though I will probably end up doing it for lighting control.
From my testing of dosing pumps I found that adjusting the power level was inconsistent. If I changed the power from 100% to 90% this didn't not result in a 10% output decrease. In a past project I have written I have found that I can get a very linear output decrease by using sub second durations (which is why I added the feature). As a side note, if you were to move to using a stepper motor then the PWM power adjustment should be very consistent.
The heart burn I am having over using "timer" instead of "dosing pump" is simply that what I am doing is "dosing" just without PWM.
If I were to redesign the dosing pump feature I would
1. Add an optional "equipment" to control the pump being on and off. This would allow for directional control of a pump.
2. Make the PWM jack optional
(Note, that there must be at least an equipment or a jack)
3. Instead of dosing in "seconds" I would change it to dose in milli-liters
4. Store calibration results in the Dosing Pump object to make dosing in milli-liters possible.
4A. Calibration results would be stored as part of the object. (20 seconds at 50% power produced 10ml)
4B. Calibration results would be required to enable the dosing pump.
4C. When dosing, the system would use calibration results to determine the number of seconds to run the pump in order to dose the specified amount of liquid.
This makes it much easier to determine how much you are actually dosing, rather than having to do the calculation in your head. This also makes it so when you calibrate your pumps again in the future you aren't changing how much you are dosing, instead the system figures out how to adjust it based on the calibration change.
Thoughts?