Sunday, May 24, 2009

DIY dosing pump for reef aquarium

Part of the daily maintenance on a reef aquarium is controlling the calcium and alkalinity levels in the water. Calcium is used by reef inhabitants to build their skeletons, and it is also precipitated abiotically (calcium deposits on pumps, heaters, etc). Even though this rate of calcium utilization is fairly slow, it must be replenished to ensure there is always a sufficient supply, and having a very consistent level is beneficial to the inhabitants.

The alkalinity level of the water is a measure of how resistant the pH is to fluctuations. It too must be replenished to keep the pH of the water stable. If you are curious about marine calcium/alklainity, search the web. There is a ton of information available, and it is quite complex and interesting.

There are a few ways to maintain proper calcium and alkalinity levels, but I prefer to use a two-part alkalinity and calcium supplement called B-ionic. My aquarium is 5 gallons, and so it only requires about 1 mililiter of each solution (alk and ca) added each day. The exact amount varies, and the two solutions may need to be dosed in unequal quantities. Well, this gets a little tedious after a while, so I built a device that would slowly add the desired amount of each of the alk and ca solutions over the course of a day:I bought two "syringe pumps" on eBay for under $15 each. The pumps consisted of a leadscrew assembly, split-nut, and holder for the syringe. There was no motor, but I knew that they were originally intended to be run by a clock motor. The speed of the motor was constant, hence the only way to control the dosing rate was by changing the motor or the syringe diameter.

I hacked up the syringe pumps a little, and fitted them with two stepper motors that I got at a surplus store for $17 each. The motors are unipolar (6-wire), 1.8*/step, 24V per phase at 300mA.
The motors are mounted to the leadscrews with a short length of Delrin shaft. This allows a necessary amount of flexing, since the motor shaft and the leadscrew are unlikely to perfectly aligned. This is a very low-speed low-torque application, so the strength of the delrin shaft is not an issue.



The motor driver circuitry is built from PN2222A transistors that are wired between the motor windings and circuit ground. Each transistor has a clamp diode and filter capacitor on its collector. Each transistor base is driven by a pin on the Arduino Duemillenove microcontroller board. There are four phases for each motor, so this took a total of eight pins on the Arduino. The Arduino is also connected to a 4x20 LCD screen via 6 pins (4-bit interface). I also wired two potentiometers to the Arduino's analog input pins. The pots are setup as variable voltage dividers between ground and 5V.

The Arduino runs code that reads the positions of the two knobs, translates the positions into timing intervals, and advances each of the stepper motors when its respective time interval has elapsed. I also added code to de-energize the motors 1/2 sec after they have been advanced. In this application, the time between motor steps ranges from 40 seconds to 3 minutes. I tested this power-save feature, and it appears the system has no tendency to push the motor backwards while it is unpowered. Thus, power is only necessary when the motor is moving, and it can be deactivated when it is waiting for the next step.

The circuit and motors are powered by a 20VAC wall transformer. I rectified this with 4 diodes, and used a 7805 to supply 5V to the Arduino and LCD. The motor windings get unregulated DC voltage about 20V, since the load from the LCD's backlight is substantial. The 7805 required a large heatsink for this same reason.


For display purposes, the Arduino code translates the motor timing interval to mililiters/day. Turning the knobs provides a very responsive update of the LCD value. It is easy to set the device with .01 mililiter/day precision, although I doubt the device mechanially has that level of precision.

I calibrated the device by turning the stepper motor a specific number of steps, and used a very sensitive scale to measure the mass of water that was pumped out of the syringe. Later that day, I setup the device running normally with its output directed over a vessel on the scale. I learned that my scale must have an anti-drift feature, as it did not register any mass! Instead, I measured the water with a small syringe, and it came it at 4.75 mL (should have been 5). I am not sure if .25mL evaporated, or if .25mL stuck the sides of the vessel, or if the system is inaccurate. Maybe it's all three. The .25mL discrepency is not too important, since the settings will be tweaked based on water testing results once it is up and running.

I am still testing the system, as I really want to be sure it is stable. If the device malfunctioned and dispensed all of its calcium in one blast, it might kill everything in the aquarium. The code is pretty simple, but the Arduino clock function will rollover every 49 days, and it's difficult to test what will happen at that time.

I'll make another post when I install the system on the aquarium.

Thursday, May 14, 2009

Welded tube joint (mild steel)

This is a joint which would be found on a typical bicycle. I used a 7/8" hole saw mounted in my milling machine to notch the end of a tube. It fits up against another tube of the same diameter. I TIG welded at about 80 amps with a standard #7 gas cup, 15 cfh argon, 1/16" tungsten and rod.

The tube was originally chromed, but I ground the chrome off prior to welding.

After welding, I ground one side of the weld flat. Is this structurally sound? I don't know.

Sunday, May 10, 2009

Acrylic flowers

I built this bouquet of flowers from flat sheets of opaque acrylic plastic. The flower petals were machined on a CNC mill. The flower centers and stems were cut by hand with a hole saw and table saw, respectively. Everything is assembled with TAP quick-setting acrylic cement (similar to Weld-On #3). The label was made on a Brother label printer, and the label edges are actually much less apparent than it seems in this photo.


Sunday, April 19, 2009

DIY aquarium chiller is a success

Today was the first warm day of the season here in Sunnyvale, CA. In my living room, the air temperature was close to 90*F


The aquarium temperature was a steady 80*F throughout the day.
The temperature controller claimed to be using only 10-15% of the chiller's capacity, but I think this might be misleading because of the way the system is setup. The chiller (water cooler) has its own thermostat, and attempts to keep its water temperature around 45*F. The fishtank's temperature controller turns a pump on and off that pushes the chilled water through a heat exchanger with the aquarium water. The amount of time that the pump is running is the "percentage of capacity" that I have been listing here and in other posts. I am sure the system has a non-linear response such that the amount of cooling delivered at %100 would not be ten times the cooling delivered at %10. This is because the chiller's water temperature would be rising (making it less effective at cooling the tank) as the pump runs more often. Nonetheless, I think the chiller system has plenty of headroom, and it only rarely gets hotter than 90*F in my house, so I am feeling pretty good about the project.

Wednesday, April 8, 2009

Monster TIG nozzle = monster waste of money

UPDATE 6/15/2013: Arc-zone has redesigned their Monster TIG nozzle. It now has a chunk of rock wool or similar material to help diffuse the gas flow. I have never used this version, and so the comments in this blog post do not apply to it. Check the comments section for more details.


Today's lesson involves my quest to weld stainless steel sheet metal, a Monster TIG nozzle, and a copper chill bar. In previous posts, I've described having trouble maintaining weld bead quality on thin stainless sheets. The problems are a combination of putting too much heat into the metal, and having too little argon gas coverage. I am not sure if addressing one problem can help solve the other. Today, I did some testing to find out if adding a lot of gas coverage can help. I also tested out a copper chill bar.

Common weld parameters for the whole test:
1/16 ceriated tungsten ground to a sharp point
55 amps (pedal floored for the entire test)
very slight %90 pulse at 200Hz just to get my auto-darkening helmet to work
20 CFH pure argon
10 sec post-flow

I purposefully used a small piece of 304 1/16" sheet to show the heat buildup problems. I also welded close to the edge to test the worst-case heat buildup.

First up: normal gas lens with #8 cup.

Wow, I never knew the copper could help that much!

Next, a large diameter gas lens with #12 cup
Same story here. It looks like there was even less heat in the metal. This might be because there was better contact between the sheet and copper, or because the gas nozzle has a wider opening. I'll bet the Monster nozzle will be even better...

Finally, the "Monster TIG nozzle", which is 1" in diameter and uses a stubby gas lens collet body.
Wha?! There must be something wrong -- what's going on here?! I tried all gas flow settings from 5 CFH up to 30 CFH and concluded this nozzle is completely useless. It's possible that I am misunderstanding something since I am a new welder, but I am pretty sure this thing just plain doesn't work. I noticed that the tungsten had turned black after a few welds, indicating the gas coverage isn't even enough to keep the tunsten from oxidizing. At 30 CFH, the gas flow was so turbulent, I could see the arc getting blown around, and pops of smoke coming out of the weld. At lower flow settings, I could see the stainless oxidizing even before I lifted my hood. I tried different stickout from 1/8" up to 3/4" with no change. I am sure the cup made good contact with the torch body, and there were no air leaks. I even tried extending the nozzle away from the gas lens with a spacer to make sure there was adquate space for the gas to disperse with only a tiny improvement.

On the right: large gas lens with #12 cup. On the left, you guessed it, Monster suck.



This screen arrangement doesn't look so great.

It's made with just two screens without any spacers between them, and two very coarse screens on the outsides. The screen diameter is a few mm less than the interior diameter of the ceramic cup, so I'm guessing a lot of gas slips around the edges of the screens.
So, I'll be continuing my stainless welding quest without the Monster nozzle and with copper chill blocks. I'll also be testing Solar Flux B. So far, I think it works well but poses a huge cleanup mess after the welding is complete.