Pigment production refinement log and notes

This thread is not meant to be interesting. If you are specifically interested in the pigment production apparatus then this thread will have value but not otherwise.

I will continue to add to this thread as I progress through the process of creating a version 1 of the pigment so we can make it more available for experimenters. Documentation of the current best practice process will be maintained on the wiki Diogenes Hackerspace Wiki This wiki is maintained by Rob for the Diogenes Hackerspace and may have other projects. I have made a few replies in this thread to get everyone up to date on where I am at. As I progress through the project I will update this thread. When the recipe and design have been refined then they will be published on the wiki and possibly git. For now this thread will serve as a journal of sorts but is not expected to be of interest to many. When someone decides to go through this project, it would be better to have the notes in here. If I don’t do it real time then it will likely not be done.

Currently I’m trying to create a design of basic equipment and the GCODE scripts to run the whole process. The goal is to keep the cost and complexity at a minimum. I feel I have accomplished this with the current iteration involving the RAMPs board. They really are a great fit for this project.

If you are reading this and on the fence about joining - please go ahead and sign up. We’re not here to harvest email addresses or spam. It is unlikely we will ever email you.

If you know others who might be interested in this then point them here. CoolPaint.org

The coolest paint out there :wink:

For now I’m going to just go through a tour of the project so far with a little background. If you are not interested in such things, you can safely ignore this whole thread going forward. The actual designs will wind up in the wiki you can find on the homepage.

So some background …

Rob aka CoffeeDripIV came across this Youtube video and readily understood how novel and impactful it was. He somehow was able to pique my interest and I decided I wanted to be involved furthering this technology. We have to thank NightHawkInLight for all his work. Without him this project would not exist and it was his Youtube video that brought this whole project to life.

I have a small background in electronics but I also had the resources of Diogenes Hackerspace members to give input when needed.

If you watch the original video above, the paint is made with a blender. This limits the amount of pigment that can be created due to the labor required. So the first step for me was to scale this up a notch. It was also to make an automated process where we can vary the parameters to try other recipes which could lead to improved cooling.

My first approach was to use an ESP32 along with stepper motor drivers. The abundance of the GPIO pins and cheapness seemed like a good fit. Mismatched motor driver voltages and convoluted wiring made it far too complicated for our goals. So that was scratched and it was suggested that a RAMPS board be used. This is what the majority of consumer 3d printers run as the controller. It turns out the RAMPS board worked quite well for this project and so far we’re using a default build of the controller software that is built for 3d printers. Instead of writing code to power the stepping motors, we have used GCODE files. The stepping motor hooked up to the X axis is moved via a GCODE command to print a horizontal line (only x coordinate varies). While we can not use loops, we have been able to do everything else needed. Using a combination of GCODE sleeps we have so far been able to write a script to do every process. Turns out no loops are required.

Another benefit of this approach is that using a the memory card you can create the GCODE programs and just execute them directly by the controller+display. Each automation step will have its own program which can be selected by knob and then executed. The interface couldn’t be simpler. The LCD screen is built-in to the $40 RAMPs kit.

Simplifying the procedure laid out in NightHawkInLight - there are 2 non-toxic ingredients that mix to create the pigment. There is a procedure for mixing the pre-ingredients but that is not covered here but is otherwise straightforward. There is 1 stepping motor for each of the 2 input reservoirs (buckets) which pumps out of their buckets into the mixing chamber. The stepping motors are turned on to fill the mixing chamber at the proper timing and proportions. Each stepping motor is actually hooked up to a peristaltic pump. This allows a precise measurement of the ingredients.

The mixing chamber was originally using a drill powered by a relay. We will include pictures of this on the wiki if anyone wishes to go this route. We might have kept this approach but the variable speed drill is just horrible for replication. There is a timing component of this project which impacts the precipitation of the pigment. While our first batch worked just fine - it makes it hard to refine this aspect and determine what contributes to the cooling effect. The variability between drills and the variable speed nature made it seem somewhat dicey (and pricey). The drill is still useful when dissolving the initial ingredients in the 2 input buckets.

Currently we are investigating motors that are powered off the heating bed PVM output. This is needed as a replacement for the power drill based mixer and also the decanting/rinsing stage (to be discussed later) There is a basic Chinese motor with chuck available for tiny hobbyist lathes. It runs about $20 and provides a chuck to insert the paint mixer paddle. However, we’re not sure how well it will hold up and whether to provided torque is enough. It was designed for a horizontal placement where the lathe stock maintains a force into the chuck. The chuck is attached to the motor by a firm knock by hammer and does not appear to be meant for permanent attachment.

I’m also trying to keep the prices to a minimum. If we can get the above motor to work, then the prices for the device are something like.

$20 x 2- mixer motor, $40 x 2 RAMPs controller kit, $35 x 5 stepping motor pumps, 2x $30 power supply, $20 tubing, $10 mixer paddle. So it is currently around $350 but you still need buckets. I would hope the setup can be created for under $400 but that is still in refinement. That price still doesn’t count the drying hardware which is not actually necessary given enough time.

This lathe motor for stirring is $20. There appear to be better suited motors but they are more expensive and do not have the chuck which is perfect for what is needed.

The goal here is not for mass production of pigment. We just wish to create enough pigment for research projects. The next scale would be industrial and will need professional engineers. While it may take a full day to create a batch - we’re hoping to only involve about 30 minutes of a person’s time to set off the processes.

It may not be clear but the mixing is done in cycles. This is due to the constraints of the pump capacity and timing requirements of mixing. So the mixing chamber mixes and flushes many times until the 2 input buckets are emptied.

So after each mixing cycle, the third pump clears the mixing container by pumping the newly mixed pigment solution into the output reservoir. This reservoir will then need to be rinsed to remove the salt.

We have created this mixing container with soda bottles turned upside down. The mouth of the bottle has a rubber stopper with a hole that fits the tubing. This tubing goes from the stopper to the third pump. The pump then pumps into the output bucket. This is salt water and pigment. We will have to decant the salt water, rinse the pigment and decant again. Since this is salt water it is non-toxic it makes the whole process worry free outside of disposing of salt water. (Not “toxic” but will kill plants)

There have been issues with the pigment blocking the draining pump. We expect this can be fixed by briefly reversing the pump direction but haven’t tried it.

The decanter is an inverted hose that will slowly pump out the salt water. It should pump until it starts to suck air which ideally is right above the top of the settled pigment. Then fresh water is pumped in and mixed so that the water thoroughly rinses the pigment. Then time is given for the pigment to settle and another decant step is done.

So our current way of decanting is another RAMPs board. It will have another mixer (lathe motor) that will agitate the settled pigment to be rinsed again. The process is basically - pump water in, agitate, let settle, pump water out and repeat. Decanting the original salt water off and rinse twice is expected to be adequate. Although it might be that another rinse is needed for higher purity. It is also dependent on how much rinse water is used. When we rinse twice, we are nearly filling the bucket up with the original amount of salt water.

Once it has had the salt water removed - it is time to dry out the pigment.

Lastly the drying stage.

After being rinsed there is a sludge of pigment. The very top is super soft and seems like a liquid. Closer to the bottom, the pigment is more like an actual sludge.

This pigment sludge was removed and put into a food dehydrator. It is very possible that a passively dried method could be used but that is beyond our scope for now. The food dryer has 10 trays. We originally lined the trays with foil which made little buckets. This worked ok. We were able to scrape the dried pigment off the foil with a rubber spatula. Later I bought some silicone trays that line the existing trays on the dehydrator.

It appears that this step takes about 4 hours or 5 hours. I expect a greenhouse type apparatus might work just as well without power consumption.

It turns out that the 3 steps - mixing, decanting, and drying all take around 4-5 hours. If everything is done in the course of a 5 hour cycle, it is likely one could run 2 cycles a day. With possibly 30 mins to an hour of actual involved labor for each cycle once the process is ironed out.

If we can find a paint formulate that meets our requirements, then the next step will be an industrial scale.

I’m excited!

So the current issue is that we use a power drill powered turned on by the heater voltage output of the RAMPS board. This requires a relay and drill. There is a GCODE command to set the voltage of the output (using PVM). This is hooked up to a relay.

From here we just plugged in a drill. One was purchased that has the side handle to aid in mounting it. In my younger days there were drills made of metal where a handle would literally be screwed into the body of the drill. I was not able to find that so I found another version where there is a plastic bracket handle. It allowed the drill to be steadied. The handle can be purchased separately for an existing drill. Just search for “drill handle”. This gives the drill a semi-flat side which will steady the drill when clamped in place.

The problem with this approach is it costs $80 for the drill and relay, but it also will not accurately reproduce the mix parameters. We lock the trigger down and turn the speed down to the minimum but that will not be reproducible. The speed drifts over time and will vary across drills.

So we’re currently looking to replace it. Since the power drill had a chuck, that will need to be purchased with the new motor. This is where the small hobbyist lathe comes into play. For $27 on Amazon or even less on e-bay, we’re able to purchase a motor + chuck. Search for “775 lathe motor”. This also has a mount/L bracket that we can easily use to mount the motor+chuck. (When assembling make sure to put the bracket on first!)

So the hobbyist lathe serves a few problems. It gives a chuck to add a stirrer/paddle to without modification. It gives a DC motor option.It lowers price. $27 vs $80 (relay+drill).

It isn’t necessarily true that the motors will be consistent across builds but it seems more likely than a specific variable speed drill.

We’re currently evaluating the suitability. If it works I’ll post a video of how we assembled it.

During the rinsing stage the pigment has to be stirred enough to remix with the clean water. If the lathe motor works for the mixer then we’ll use the lathe motor in the riinse stage.

So we have attached the chuck to the lathe. The motor axle goes through the motor so it can be rested flat against a solid surface while tapping the axle into the sleeve.

We heated up the brass sleeve with a torch for a bit. I also put the motor in the freezer prior. (doubtful it matters) I then used a hammer to tape the motor axel into the sleeve. Given the axle goes t

One warning. The bracket needs to be inserted during the final aspect.

So now the ??? is attached to the motor the has to be inserted into the chuck. This is where you insert the L bracket. If you don’t you will need to cut a slot into it so that it will slide in place. This became a feature where the motor can be removed from a permanent placement of the bracket but it was not originally intended.

The next step it so have it physically replace the drill and see if it has enough power to mix out powder. We’re using far less power than the blender that NightHawkin used.

We’re moving forward. All the stuff comes from China (via airmail :frowning: ) so it takes around 2 weeks. In addition, I used ali-express. It seemed like a great idea but you should order 1 of each item first given how problematic aliexpress appears.

The pumps I used originally were 400 ml/min (as I recall) then I bought ones that were 500 ml/min off aliexpress but they are actually smaller than the 400 ml/min ones originally purchased. The 2 power supplies didn’t make it out of China and the lathe Motors have some tiny chuck even though the Motors may be the same as the previous ones. The descriptions are minimal on aliexpress and it is far from clear what one is buying. I will be limiting purchases at aliexpress going forward. A significantly bad experience. The power supplies were returned to China but the order wasn’t refunded with requesting it. (who knows, it may have even been intentional) I hope the $25 RAMPS v1.6 boards and a couple of oddball mini lathe Motors are successful. I will post some pictures as sourcing this stuff in hopes no one repeats my procedure.

Here are some images of what NOT to purchase.

Here are the screenshots. This pump is likely too small but could very well still be used.

This one has a chuck that is too small. The 555 motor was used in our other lathe but the chuck allows larger attachments.

This is the CORRECT lathe on aliexpress. Notice the size of the chuck relative to the motor.

The week marched on. I spent a lot of time writing a php script that generates all the parameterized gcode. Finally it appears to be done. Next working on having the wiki list every needed step to have your own mixer up and running.

Made some progress today. I was going to film the assembly of the lathe motor but people will just need to learn to read instead. I removed the drill apparatus today to swap it out with the lathe motor. I wanted to put up the pictures here for references/history of the project.Processing: front-view-notused.jpg…
Processing: rinser_notused.jpg…

Here is our original design with the drill. It just added to much cost, was bulky, harder to mount, and the speed is harder to keep consistent being a variable speed drill. It is also harder to have repeatable results across setups when we’re using drills.


So I did a lot of work on the wiki today. I added a lot of images for the instructions on creating the mixing device. I’ve started making some contacts in the wider world. The g-code generator is being refactored for one last time. Hopefully I can get the first real version 1 of the mixer operational and we can start doing experiments to see which aspects of the process give us the most cooling efficiency.

Met up with Cesar who was a great help. The php code has largely been debugged and the default seems to work fine. Only a handful of changes left. It also stores the constants to the top of the scripts.

We will finally be able to do some basic experiments and determine what needs to be discarded from the process and what is gained or loss in each change. Excited. I could have done it manually but thats no fun.

I calbrated the pumps and it was 230 ml for 2000 units or 2000 / 230 or 8.7. Once we put this in the gcode generator the pumps worked like expected. The orientation and beeps and so forth have all been debugged.

I’m eager to do the base testing. I suspect that maybe we don’t even need to stir it during mixing. As we mix the 2 ingredients the original particle/precipitant has the full length of time to keep growing. So this will naturally create a varying size. Maybe the stirring isn’t needed?

We can also mix it all at once manually to compare.

I want to have the decanter set at different levels. So you have it stirred, then decant off the top, and repeat the process. Are the smaller particles cooling better? We will be able to filter them with a timed settling and decanting off the top. Likewise we can pull straight off the bottom to get the largest particles.

Could certain particles work better during day? I have only a fraction of the understanding I’d like. Regardless - I will be able to formulate effective experiements to isolate all sorts of variables in the process. Hopefully we can discard what isn’t need and maybe find ways to improve what we have? We can also determine what portion of this is from the white acrylic paint with the water.

If the shape of these crystals are what is making it work with a certain frequency the perhaps we can adjust something to target other frequencies? This is just a random thought but my physics knowledge will need a refresher. That is where Rob is great.

Infact, I need to go back and watch nighthawkinlight’s youtube videos but I’ve been wanting to get this done. We were making pigment in late May but many improvements have been made since then - so it is good.

Maybe Cesar will wish to do some experiments. We also have a couple of meetings scheduled next week. One with a lady who has experience in a version of Cool Paint in some commercial capacity. It is neat having people want to meet with us.

This lady seems promising. Unfortunately the only contact I’ve made off the work on climate posting. I’m still looking for someone who will want to make this stuff in parrallel. I spent a lot of tie on those damn docs. :wink:

Here is the new version of the mixer without the drill and relay. The min-lathe is $25, the drill + 110 relay was like $80. Look at the splash guard Cesar made. The finest engineering. Almost Boeing level stuff, folks. Also wrote a script which I will use to map the power to the RPM using some cheap tachometers I bought.

You might need to zoom in but the splash guard is the bottom off the same bottle with a piece cut out to let the paddle axle fit through. We also used clamps on the shim which is really great because it means you can fidget with the positioning of the paddle which is far harder when it is screwed down. This will probably wind up as our suggested build. Clamps are so useful in so many spots. The screws are currenty doing nothing functional.

Maybe Monday I will make it back over there (diogenes hackerspace - the host) and we can do the rinser …

Dedicating the full day to this. I expect to have a version one done and pigment created from scratch which we can then test against our control.

A few things - If the picture above you will see 4 wood screws holding the shim and also clamps. I would use the paddlemaxspeedtest.gcode to make sure the paddle isn’t rubbing against the mixing container but then make sure to tighten the screws down a bit. Those clamps fell loose after a few mixing cycles. I would not necessarily screw it down completely as you will likely need to adjust it at some point.

Another thing is the DC output on the RAMPS board is typically used for a fan. In the Marlin screen there is actually a fan icon which prints the speed at which the fan is operating. While using the paddmaxspeed test you can get a idea of how much power the motor is operating at. The percentage on the screen * 255 should be the power level in the gcode. (255 being max, 0 being the lowest) Not necessarily useful.

The splash guard worked well.

This 2 bottle aspect seemed great in that it was easy to make and used existing junk. I’m starting to think it is too flimsy and problematic. It shifts around and the outer bottle works to channel leaks out the bottom and in general will help minimize the mess - it also obscures what is happening inside. Perhaps a different size bottle. (Water bottle?) I know there are some that are clear and square.

Yesterday was somewhat of a success. We redid the mixing chamber. The original version was something hacked together. There were serious problems though. One being the outer bottle/jug that supported the mixing container prevented us from seeing the actual process. If something went wrong it was not possible to see. The other issue was that the outer rigid container was not actually rigid enough. Things shifted around too much. Also - it was quite ugly. After a trip to my least favorite place, Wal-mart, we came back with a new game plan.

This is the new mixing container design. It is supported by the bottom using a more sensible approach.


This is to support and hold the bottle steady. I bought the largest velcro strips at Lowe’s and applied to of them to the bottle. We had a different bottle but the sides are molded for gripping by a person. This same molding of the walls of the bottles will prevent the velcro from sticking as well as it should. This bottle has mostly flat walls with minimal grooves. The neck is also not too long so that the mixing paddle sits right above it.


Here is a close-up of the bottle cap. I was able to find a grommet/stopper type piece of hardware for $2. It wound up fitting nearly perfectly in the bottle cap. We also drilled out the plastic cap with 5/8" drill. (actuall 1/2" but 5/8 would be better) We wound up using hot-glue due to no setup time. We’re not sure how well that will hold up. THere was preferred e6000 glue sitting around but it had a 24 hour curing time. We’ll see if the hot-glue holds up.

Here is the packaging of the rubber stopper thing. It was purchased at Lowes in the hardware drawers.

After the mixing container was reattached the first stepping motor (X) didn’t work. In process of debugging I turned the controller on its side which twisted the power wires. They had been another hack from an ethernet cable. They wound up shorting out and apparently frying the board. We’ve redone that with more more suitable wiring but will have to replace the RAMPS board.

Today I learned many things. I’m happy with all the design changes from the other day.
The mixing container empty (Z) pump wasn’t draining the mixing reservoir, so I measured all 3 pumps and the Z pump pumps at 325 vs 380 units (mm) / ml .
So it wasn’t emptying the mixing container but now there is a calibration value for pumps X,Y,Z.
We aimed the paddle so that it rotates forcing the mixture into the bottom of the bucket. I believe reversing the polarity of the wiring will change this.
It seems like it’d be far les slikely to splash aiming the center column down. Although we did not experiment reversing the polarity.
The splash guard works ok. The hot-glue has held. The splash guard doesn’t capture all the liquid and there have been times the swirling liquid in the mixture started to resonate into a wave and it splashed a lot. The splash guard didn’t work so well during that time.

So from now on we will have people calibrate every pump (X,Y,Z) and there is no reason they wouldn’t except I was impatient and these things were not calculated as specifically enough to notice the issue.

We assembled a RAMPS board that was new. It didn’t come with MARLIN installed. The screen lights up but has no text. There is also a green LED that comes up briefly but pre-flash it just blinks green repeatedly. Once flashed you’ll see the LED come on at the start then turn off.

Here are my notes from the night- yet to be integrated elsewhere.

To compile it, I downloaded the Arduino dev environment.
I then used a previous source tree I had modified (the RAMPS display says Brians skypaint when it has been loaded)
I used the Marlin-2.0.9.7 that has the defines made for the Osoyoo branded RAMPS 1.4 board.
This source tree is not the one that is downloaded. The default Marlin that will install/compile errors out with a MIN TEMP (I believe) error.
The source tree I compiled from has this stuff commented out in the config file. I will make this available.
Go into the directory and you’ll see a Marlin directory. Go in there and there should be a project file named Marlin. Click on that to load it into Arduino dev environment.
I appears all the libraries were already in the source tree because I didnt have to install anything (or there are no dependencies in current compile)
So once you run it, it’ll automatically reflash the board. Make sure the USB cable (older style - comes with board) is powering the RAMPS board.
Then when it says Brian’s SKypaint on the display it should work.

Big shout-out to Cesar for hanging around and helping me with this.

The next day someone works on this we should have a full mix cycle and then send it through the process.
I have yet to restart the decanter but the process is simple now that the mixer.gcode is done.

I am closing on the end of this thread now. I will recreate a decanter thread.

If you use a different RAMPS 1.4 board, you might have to change the display type. We had some issues with that so make sure that part of the code lines up.

Wow 12 days since my last update. I thought the pigment production process would run to the end but it failed.

Instead of an output valve, we just pump out of the mixing container with the Z-axis peristaltic pump. Unfortunately it clogged up almost causing the mixing container to overflow.

The problem seems to be that the hose that comes off the bottom of the mixing container is full of air. So when the mixing container is filled - the first ingredient will enter that hose to replace the air from the emptying of the hose during the prior cycle. I’m not sure the order of things happening, but the pigment actually crystalizes on the hose under the mixing container… It seems to do it to the bottom of the U. (The hose goes back up after exiting the bottom of the mixing container/inverted bottle neck) There are likely many ways to address this but we decided to add another pump (the extruder stepping motor) to pump a small amount of water into the mixing container output hose. This bit of water will hopefully prevent the pigment from crystalizing inside the hose. There might be a few mechanisms by which it does this but it is only my ignorant conjecture.

I was able to crush the pigment in the hose and could feel the crunchiness. It then seemed to clear by itself. It is possible that my squeezing the hose broke it free as it seemed to clear out on its own.

Another thing I’ve noticed is that the produced pigment has solid chunks in the bottom. I’m not sure under what circumstances form larger solids but clearly the pigment is not a wet power. It remains to be seen what method will be used to break up these chunks. Too much grinding might destroy the crystalline powder and too little means problematic chunks of the pigment in the paint.

The current php script to generate the g-code is broken. It doesn’t seem to be pumping the proper ratios for the mixing stage. Secondly - although the rinser seems to have some serious issues and had not been tested. So once I fix that in the next few days then HOPEFULLY we’ll get Coolpaint working. I’ve seen some papers extolling the virtues of this type of paint. I’ve also seen nighthawkinlight’s newest videos about the clothing. Seems like much fun to play around with this but we’re pushing onward to bring the pigment to the masses :wink: