Calibration
Step 1 - Download calibration.zip at http://coolpaint.org/gcode/calibration.zip. THis is your starter set. ;) The static files are in the zip file which you will need to calibrate. After calibration, you will have the values needed to rerun the Gcode generator with gcode that is specific to your setup. Those values will then be put into the web-based gcode generator to generate gcode scripts that are particular to your setup.
Pump Orientation
Make sure pumps are assembled with the correct polarity/direction. For this use xyztest.gcode. It should go through all 3 motors in the working direction. If any single one seems reversed then switch the polarity or swap the 2 hoses around. This should also be done for the rinser.
Determine max pump speed
pumpmaxspeedtest.gcode - So this needs to be spooled in pronterface so the console can be observed. I didn't see a way to have printf type functionality in gcode so instead you will need to watch the console as it spools the command directly. When it starts to skip, make note of the last speed sent to the RAMPs board via the gcode. This is the absolute max speed of the pump but should be lowered again. It may be the case that the pump skips when there is more pigment than solution in the hose. This hasn't been tested but reduce it by 10% and keep lowering it until success. Try smaller batches at first.
Alternatively would just be to create a series of files by hand. Or count the number of beeps using the pumpmaxbeatspeedtest.gcode. This will require you to count the beeps yourself and note at what point it failed. Then multiple this beep number by 200 to know the speed at which is started to skip. If you look at the source-code, it will likely have steps of 200. For example "G1 X-200 F5400" will test the pump by moving it 200 RAMPS units at a speed of 5400. There are no loops in gcode so there is just a big list of increments. The next line should have F5600. This way it increases and beeps on each increase, allowing a test without a console to read from. (the output is done via beeps) We gave the advice of cutting back the speed 10% from where it fails but this is likely not enough and when the pumps do jam up it will interrupt the process and if not caught - require discarding of the existing mixer or pigment solution. The first pump starts at 5000. There is a beep first and then 1 for every 200 increment. So if you hear 31 beeps before the pump jams then it should be using a speed of "5000 + 200 * 31". We suggest looking at the source-code to verify this. It will jam before earlier speeds and why some amount needs to be trimmed off this.
Determine RAMPS units to ml conversion factor
RAMPs units to ml - There are many variables at play when determining how a RAMPs unit translates into a ML. The unit would be a mm on the 3d-printer but is not specified in our device. We refer to it as a "RAMPS unit" Instead of you trying to figure it all out and still not knowing if it is correct, we ask everyone calibrate their pumps using a well documented straightforward process. The doesn't actually calibrate the pumps but will determine the constants used to generate new specific gcode.
If the pumps are not identical then we suggest you try on all 3 to verify they pump the same amount. If they are not the same then reach out to us on the forum or email. The current php script that generates the gcode does not handle pumps that vary amongst themselves.
This is done by 100Xcalibration, 10kXcalibration, 20k, 40k. These scripts exist for all of the X,Y and Z pumps. Start with the smaller ones and find one that will pump 100s of mls. We had a plastic graduated cylinder but any large light-weight cup would work. The idea is to run one of the above scripts and weigh how many grams of water it pumps. Make sure to tare the cup's added weight out and the grams will show you MLS. Then take the amount the amount pumped in RAMPS units (it is the value in the script's name) and divide it by the grams of waters. This will give you the units/ml setting.
So on 3/5/25 we calibrated from scratch. The 2000 RAMPs units pumped about 70 mls. There was a distinct difference in the Z from X and Y. This is likely some underlying effect I do not quite understand whereas X and Y are treated the same when the gcode is run to control a 3d-printer. The values we wound up for in terms of ml / units. x=.0348 , y=.03565, z=.03085.
Do not use the 2k unit to test with. 10k seems to be a lot more reasonable where the output is about 350-400 mls in our setup which is weighed on most digital scales. Also - weigh the empty container each time. So run calibration, weigh, empty water thoroughly then weigh again. Also - run the 10k script for a few seconds until all the air bubbles disappear. Then hit the reset button and put the output in the actual container. Then execute the script until completion.
Volume to fill mixer
If the RAMP units to ml translation is correct then simply pouring water into your mixing container should suffice. You do not want this to be too large because it currently requires a slow mixing of the 2 ingredients and the larger the amount in each mix cycle then the longer the period of time during when the 2nd solution is mixed in. (The larger the mix amount, the longer it takes to pump in the 2nd solution, and therefore the further away from instantaneous mixing)