Drive 4 3D Printed Peristaltic Pumps from one UNO I2C Slave Device

Hi All,

The Atlas Scientific pumps, if you need 4 to manage Ph+ / Ph- / A / B are quite expensive all together. To make things a lot cheaper I have 3D printed 4 pumps. (please look at this beauty from Silisand: Peristaltic Pump Improved for Nema 17 by silisand - Thingiverse).

I would like to drive the 4 pumps with one arduino NANO and 4 A4988 stepper drivers. This is already working for one pump.

The code on the UNO works as a I2C slave device, waiting for a “D” command and the amount from MyCodo. An example of a command to dispense 25 ml is the following: D,25.00 , a caracter, comma and a double.

I could just replicate the setup and use 4 UNO’s / 4x an A4988 driver to get this going. However much easier would be just one UNO controlling these 4 stepper drivers.

The wire library for Arduino can only use one slave address per UNO, to control the 4 pumps it should be able to register and listen to 4 addresses. Dead end…

What I would like to try is to insert a digit after the “D” caracter in the range of 1…4 to let the arduino know which pump to use. I have looked at the Atlas Scientific I2C code in Mycodo, and that would be quite easy in the write function of

Does anybody have any idea how to get an extra attribute for the pump # in the config screen where the Atlas Scientific Peristaltic Pump in I2C can be configured? Than i would just add 4 pumps, all with the same I2C address and set the pump number from 1…4 in the config, send that over I2C to the NANO and have the NANO figure out witch of the 4 pumps to activate. A command should than look like this: D2,25.00 so 25 ml for pump 2.

Any help is really appreciated!


I would not attempt to use or copy the Atlas Scientific (AS) Output code, as it is very specific to AS devices and is quite complex to be able to work with different communication protocols. You should be copying one of the other I2C Pump Outputs and modifying it to work as a new Output for your device. You should also consider starting with the ability to dispense for a duration, since calibration would need to occur before accurate dispensing of volumes can occur.