CNC Mini Mill #12: Streamlining Tool Changes

It’s been a while since the last mini mill post. I’ve taken the table off a couple of times to clean out chips that get in under the gibs and re-grease the ways, but it should be clear from the relatively large number of posts of stuff actually made with it that it’s been running really well.

One thing that has kept productivity down, though, is the somewhat cumbersome process necessary for tool changes. Some background if you’re not familiar with CNC machines: Because tools have different lengths, the controller needs to adjust the position of the machine so that the tool tip is at the same position when the machine is commanded to a certain Z-position. This is done with the help of tool length offsets. Tool length offsets work kind of like coordinate offsets, which keep track of the difference between the machine position and the active coordinate system. (If you’re unfamiliar with how these work, CNCcookbook has a series of posts on this.) Tool length offsets shift all the coordinate systems up or down depending on which tool is selected.

If you have a setup that makes it possible to switch tools with perfectly repeatable Z-positions (like the Tormach TTS system), you can measure the lengths of all your tool, input them into a large table of tool offsets on you CNC controller, and just notify it when you switch to a new tool. That would be nice, but I’m not at that point. (Yet, more on that soon.)

The alternative is to measure the tool length every time you switch to a new tool. Essentially, if you have a point with known coordinates, you can move the machine to that point (manually) and then tell the controller “you’re now at Z=0”, or whatever. This will update the active tool length offset, and you can then resume the G-code program. (Some machines can automatically probe for the length, but those systems are either not very accurate or really expensive, and you need a controller that has support for it.)

This is the Z-axis setter. When the button on top is depressed so the dial is at zero, it is exactly 50mm above the base.

This is the Z-axis setter. When the button on top is depressed so the dial is at zero, it is exactly 50mm above the base, to within 0.01mm.

The way I’ve done this is by using the (fairly cheap) “Z-axis dial setter” shown above. This is essentially a gauge block with a dial indicator, so by zeroing out the needle, you know you are exactly 50.00mm above the base of the instrument. After finding the workpiece Z-axis zero with this instrument and putting that into the G54 coordinate system, I’d put it off to the side on the mill table, move the mill over and zero out the reading, and then set the G55 coordinate system origin to here.

Then during the operation, whenever the program called for a switch to another tool, it would pause. I’d manually type in the commands to raise the mill up to its maximum height (for best access to changing the tool), change out the tool, move over to the G55 X0Y0 and then jog the machine down onto the dial until it read zero. By then telling the controller that “hey, you are now at G55 Z0”, it would adjust the tool length offset to make the current position (in G55) Z0 and thereby also shifting the G54 work piece coordinates by the correct amount for continuing the program with the new tool.

Then I had to manually type more commands to raise the mill up to clear the workpiece, switch back to the G54 coordinate system, and move it over to the original position it was in when the program paused so that it could continue.

This worked well from an accuracy point of view. The repeatability was about 0.01mm, plenty good compared to the backlash in the Z-axis. The main problem was that every time you type manual commands you run the risk of mistyping something and crashing the machine. Which happened, on several occasions. It was also slow.

What was needed was to make the machine automatically move to the tool change position and back. One could imagine doing this by making Fusion360 insert these commands into the G-code program itself, but that would interfere with the fact that Chilipeppr, the web-based user interface to the CNC controller, stops the program when it gets to a tool change.

The other way was to make the Chilipeppr web client send these commands, which is what I ended up doing. This was an interesting exercise; it’s a completely browser-based thing running Javascript, and I’ve never written a line of Javascript in my life. Nevertheless, I managed to figure out how to do it, and now it works!

I made a video to show the Chilipeppr user group how it works:

This should make changing tools a lot faster and less error prone. And as you may see in that video, I’ve picked up a bunch of the TTS tool holders, so soon I should be able to switch between at least the most common tools without measuring at all!

 

Microsquirting the NC30, part #26: Petcock replacement

While slowly making progress on assembling the fuel pump housing (welding the 1.6mm 6061 sheets is really taxing my welding skills), I’ve addressed the other end of the fuel supply. The stock petcock can’t be used since it has no provision for a fuel return line, and the tall strainer makes the pump suck air long before the tank is empty. (This isn’t an issue with the carbs since they use fuel very slowly, but since the pump circulates the fuel it’s pulling much more fuel through the intake.) A new way of connecting the fuel lines had to be worked out.

I decided to simply make a small “connecting block” for the fuel supply and return lines, replacing the petcock. It doesn’t have any way of turning the fuel off (or a reserve) but that’s OK because it’s quite bad for the pump to try to pull against a closed tap. Having a reserve won’t work because that would make the pump draw air, and that’s also bad for it. (Not to mention that it’s not clear how hard it will be to get all the air out of the fuel lines.) The big drawback is that you lose any way of knowing how much gas you have in the tank.

I briefly considered trying to add a capacitive fuel level sender, but decided against it. With the amount of use this bike is likely to get, it won’t be a huge hassle to simply monitor your mileage and avoid running out. (Famous last words…)

As usual, there’s not a lot of space to work with. The fuel supply line has to run rearward from the tank, under the frame cross member, and into the fuel pump housing. If the attachment on the tank is reasonably close to the tank bottom, this line will slope downward the entire way to the pump housing, so the air in the line should be able to flow back up to the tank.

I actually designed the piece a while ago, before my parents visited, and I attempted to machine it a couple of weeks ago. Everything went fine until the last setup (it has to be cut from 4 different sides) when I apparently mis-typed the part origin and ruined it. This soured me on the part for a while (and I had plenty of cabinet doors to work on) but this weekend I decided that it was time to just get it over with. This time the machining went better.

 

Here, the groove for the O-ring that will seal against the tank is being cut.

Here, the groove for the O-ring that will seal against the tank is being cut.

The finished petcock replacement, wth the AN-6 outlet on the left and the AN-4 return line on the right.

The finished petcock replacement, with the AN-6 outlet and the 90-degree swivel fitting on the left. The AN-4 return line is to the right.

Since the fuel line will go basically straight rearward, it would be very difficult to remove and replace the tank with a hard hose fitting due to the hose needing to go under the frame cross member. It would require a very sharp bend to get it under when mounting the tank, and the minimum bending radius on the AN-6 hose is something like 3 inches. So, instead of pointing the outlet directly rearward, it’s to the side. This makes it possible to attach the hose to a 90-degree swivel fitting as seen in the picture above. This way the fitting can swivel to point the fuel line down when the tank is raised.

The fuel return line is a bit easier to deal with, apart from the fact that it is very tight going forward under the tank from the petcock area. Using a 45-degree hose end, it will run forward under the tank lip on the right side and then somehow loop around and attach to the fuel pressure regulator return line. It may be easiest for it to do a 270-degree turn around the forward fuel rail, down and back, and then to the FPR.

The petcock replacement block mounted on the tank. The outlet is twisted 180 degrees here from how it will run when mounted. Note that the outlets on the block are rotated slightly from the side-to-side direction. This allows the outlet to run laterally to meet up with the fitting on the fuel pump housing and the return line to run parallel to the tank edge when using a 45-degree fitting.

The petcock replacement block mounted on the tank. The outlet is twisted 180 degrees here from how it will run when mounted. Note that the outlets on the block are rotated slightly from the side-to-side direction. This allows the outlet to run laterally to meet up with the fitting on the fuel pump housing and the return line to run parallel to the tank edge when using a 45-degree fitting.

I’m not sure whether the O-ring will seal against the underside of the tank given the partially remaining multiple layers of paint you can see in the picture. I may have to sand it smooth. That paint all has to come off eventually anyway as the plan is to repaint it.

The fuel system is slowly coming together. Now if I could just manage to weld the fuel pump housing together…

 

Back to the Kitchen #3 – Countertops

The previous installments of the “2016 kitchen sprint” described the prep work needed before getting new counter tops. In parallel with getting this done, Kathy and I had started the discussion about what kind of counter top we wanted.

Basically we considered three different alternatives: granite, “solid surface” which is a mixture of acrylic and minerals (most known as the Corian brand), and quartz, which actually is a mixture of ground quartz and polyester resin (most known as the Silestone brand).

The pros and cons of these various materials are well described elsewhere, but in the end we settled on quartz. The only clear advantage we found with Corian was that they can be thermoformed into shapes, so you can have an integrated backsplash without any seams. In previous kitchens we’ve had, this seam frequently got moldy and nasty since it’s hard to not get water there. Since we are keeping our large integrated stainless steel sink, that’ll be much less of a problem in this kitchen.

The next question then was what color to choose. There are a bewildering array of choices. We did a rough cut by looking at the manufacturer’s web sites and then went in to Big Island Countertops to see them in person. We both agreed we wanted something mid-gray toned. We even brought in our one painted cabinet door to compare. Here are the final three we were down to:

We were down to these three colors. From left to right: "Niebla", "Cygnus", and "Grey Expo".

We were down to these three colors. From left to right: “Niebla”, “Cygnus”, and “Grey Expo”.

If you know Kathy, you can probably guess how this went… Actually, we both agreed that the green-toned “Cygnus” went really well with the green in the cabinet doors. The overall shade is different, because it has these other dark and light tones in it, but the green is a good match to the door. So notwithstanding my mother’s concern that “your kitchen will be all green”, that’s what we went with.

The design was a little bit unconventional. We didn’t want the planks exposed above the backsplash, so we got a quite tall backsplash, all the way up to the “waist” on the wall. This made it more like 11″ tall, while a “standard” backsplash is more like 6″. This is how the old laminate counter looked, and saves us from having to either keep the painted surface clean or coming up with a completely different material for those sections.

All that backsplash area adds up, and those colors are of course also custom orders, so the quotes we got were quite a bit more expensive than the $3-4k I had initially estimated. We decided we’re putting enough work into the kitchen and we spend enough time there it’s not a big deal in the long run.

First they dropped the counter top pieces in. There are three large pieces for the three counter sections. The only seams are for the narrow piece behind the range.

First they dropped the counter top pieces in. There are three large pieces for the three counter sections. The only seams are for the narrow piece behind the range.

The backsplash is in place on the section on the right.

The backsplash is in place on the section on the right.

The only part that is a bit funny about this is that the new backsplash is the same thickness as the counter top, 20mm, while the only one was just a thin piece of laminate. This means the backsplash actually is thicker than the window frame visible in the upper left of the picture above. It looks a bit strange, but not bad.

The final result. For the first time since moving in we no longer have to worry about dropping food down around the range when cooking!

The final result. For the first time since moving in we no longer have to worry about dropping food down around the range when cooking!

It came out really well. There are of course a few little blemishes you can see if you know where to look, but overall the installers did a really good job. It’s not too green either. The color is actually hard to characterize, in some lighting it actually looks more blueish than green. Keeps you guessing!

So now we are back to having a fully functional (actually even more functional, given that we no longer have those annoying holes around the range) kitchen. Painting the lower cabinet doors is the next part, still a work in progress.

A Weatherstation Update

It’s now been almost exactly 2 years since the last post about the weatherstation I built and put up outside the house, so I thought it would be good to talk about how it’s worked out.

In general, it’s worked well. However, a few things are showing their age:

  • Over the past few months, the anemometer (the spinny thing measuring wind speed) on the weather meter kit from Sparkfun gradually ground to a halt. When I got around to taking it down from its tall tower and pulled it apart, it was obvious that the tiny ball bearing that lets it spin was shot. It uses a 10mm OD x 5mm ID x 4mm width bearing, and luckily you can buy them from ebay for a few bucks. That got it spinning again.
  • The solar cell that powers the station is suffering severely from the UV exposure. According to Sparkfun’s description, they are sealed with “clear epoxy resin”. Whoever designed that must not have known that epoxy needs to be protected from UV. The solar cell quickly started looking like this:
    This is what the solar cell looked like after only 6 months outside. Now, after an additional 18 months, it looks way worse. It's still generating enough power, though.

    This is what the solar cell looked like after only 6 months outside. Now, after an additional 18 months, it looks way worse. It’s still generating enough power, though.

    I complained to Sparkfun and they agreed this was a good point and sent me a new one (which of course would just do the same.) However, I noticed that their current lineup of solar cells use a polyurethane coating instead of epoxy, so I guess my complaint had some effect. In any case, the cell is still generating enough power to run the station, so I’m going to leave it until it stops working completely

  • A last month, the connection to the station dropped out. When I opened it up, it turned out that the interior had been turned into an ant nest!
    Part of the weather station ant nest. This doesn't show the Xbee, which was totally covered in ant eggs.

    Part of the weather station ant nest. This doesn’t show the Xbee, which was totally covered in ant eggs.

    The reason for the station finally dropping out must have been that the Xbee and its SMA connector was covered in ant eggs. Ant eggs must be conductive or have a sufficiently different capacitivity than air that the feedline losses got high enough that the radio connection was lost…
    Incidentally, this species of ants have become more and more of a problem for us over the past year. They are coming into the kitchen and appear to be nesting in the old galleries where wood was previously eaten by termites. The guys at the Hawaii Ant Lab identified them as Ochetellus Glaber, an invasive ant species originally from Australia, where it is known as the “black house ant” due to its tendency to move into houses. Great…
    Anyway, after conducting massive “formicide” and cleaning out the parts, it mostly functioned again. There appeared to be some sort of partial short circuit in the Arduino, because occasionally it would start drawing more like 150mA compared to the normal 10mA. I initially thought this was because I had cleaned the parts in water, but looking at the data it actually started happening shortly before the station dropped out. I couldn’t figure out what caused it, so I just programmed a new Arduino Pro Mini and swapped it out.

  • The LiPo battery has swelled considerably. It still functions normally, with no obvious capacity decrease, but I attribute this to the fact that Sparkfun’s “Sunny Buddy” solar charger is set to charge the battery to 4.4V. This is much higher than a LiPo battery is supposed to be set to (the battery’s protection circuits cut it off at 4.3V) and likely leads to a much shortened life. I complained about this, too, and their updated version now uses a 4.0V float voltage, much more reasonable. I just got one of the new boards that I’ll swap in, hopefully that will forestall any further deterioration.

As far as the software goes, there is a bug that causes an occasional lockup in the Arduino. It has something to do with it waking up from sleep and counting the revolutions of the anemometer, because if I unplug it, it doesn’t happen. I believe there must be a race condition in how the interrupt code puts the chip back to sleep, causing it to fail to wake up and go into eternal sleep, but I’ve gone over the code several times and can’t find anything.

This is one of these frustrating bugs that happen just often enough to be a problem, but not often enough to be easily debugged. I’ve resorted to resetting the Arduino using the Xbee’s digital outputs if the data collection software hasn’t gotten data in a few minutes. This works, but it’s still annoying. If anyone can see anything wrong with the code, please let me know!

 

Back to the Kitchen #2 – Painting

In the last post, I described how we’ve finally gotten some momentum back on the long-stalled kitchen refinish. In this post, we continue with painting.

The existing kitchen paint, under the top layer, contains lead. This was the reason I wanted to get rid of it, at least on the surfaces where the paint was in questionable condition or where you are most likely to chip it. Stripping off all the paint would be a lot of work, so we only did the cabinet floors and the faces and frames. The paint on the interior walls of the cabinets was in good shape, so there we decided to just clean with TSP, sand it, and paint over.

The stripping of the lead paint was done with the Speedheater, an infrared paint stripping tool (made in Sweden! 🙂 ) that heats the paint so it becomes soft and detaches from the surface and can be scraped off with these really effective scrapers. Because the paint is softened, scraping like this doesn’t produce lead-containing dust, just large chunks of paint. You still have to make sure you collect this so it doesn’t get crumbled into pieces and tracked around everywhere, but it seems to be the cleanest method of getting rid of lead paint that doesn’t involve using machines with internal HEPA filters and whatnot. Plus, it’s actually really quick to get rid of the paint once you get into the rhythm.

After the paint is removed and you’re basically down to bare wood, you still have to go over it with a rough sand paper to get off any remaining loose little paint chips, so we did that very slowly while wet-wiping up the generated pieces.

The interior of the cabinets were then ready to be primed with the Fine Paints of Europe Oil Primer but, as I mentioned in the last post, the faces needed some help to get them really flat so they received two coats of Brushing Putty first. This is like a really high-build primer that we also use on the cabinet doors and you can really get a superb surface with it. In this case, the wood we used to make the face of the raised counter frame was really uneven and after 2 coats we called it good enough even though there are still noticeably uneven places.

The cabinets after priming, ready for the top coats.

The cabinets after priming, ready for the top coats.

The top coat is the Fine Paints of Europe “ECO Brilliant“, a water-based alkyd paint that’s very shiny and levels beautifully. Like an old-school oil-based alkyd, it dries to a hard surface, which is what you want on a cabinet, but you can paint it without having the whole house smell like mineral spirits, which is awesome.

In hindsight, having a “brilliant” surface might have been a mistake. It looks awesome, but it also shows every little imperfection in the surface. Certainly we could have gone with a slightly more matte surface inside the cabinets, not that it matters much either way there.

The first top coat is going on. If you look beyond all my gray hair to the cabinet floor, you can see how shiny the paint is. This isn't because it's still wet, it really is shiny like that.

The first top coat is going on. If you look beyond all my gray hair to the cabinet floor, you can see how shiny the paint is. This isn’t because it’s still wet, it really is shiny like that.

After the first coat has dried, it’s sanded with a very fine sand paper (like 300) to get rid of any brush strokes and imperfections before the second and final coat goes on.

When painting the second coat, it's actually hard to see where you've painted, because the dried paint is basically just as shiny as the wet one. Unless you have a light from a very oblique angle, it's easy to lose track of exactly what you've already painted.

When painting the second coat, it’s actually hard to see where you’ve painted, because the dried paint is basically just as shiny as the wet one. Unless you have a light from a very oblique angle, it’s easy to lose track of exactly what you’ve already painted.

I found it a bit nerve racking to put on the final coat, knowing that whatever screwups we made now would be visible. The end result is definitely not perfect, but it’s mostly a case of “I made the mistakes so I know exactly where they are”.

Here's the final result. Of course, we still don't have any cabinet doors. Or a counter top...

Here’s the “final” result. Of course, we still don’t have cabinet doors. Or real counter tops… But it definitely looks a lot better than it did before. (Note that the one painted “test door” has been mounted on the right. We did that just to make sure the hinges we ordered will work.)

If you don’t put your eyes right up to the paint, it looks fine (except if there’s light falling at the right angle.) The photo below should give an impression of exactly how much even minute imperfections show up if you have the right light.

This reflection of the living room windows shows exactly how much you can see the imperfections in the surface, if you look hard enough.

This reflection of the living room windows shows exactly how much you can see the imperfections in the surface, if you look hard enough.

So that’s that. The counter tops are on order, the drawers have also been painted, and there’s been progress on the cabinet doors, but those topics are worthy of their own posts.

 

Back to the Kitchen

It’s been more than two years since the last post about the kitchen cabinets where I talked about how they were going to get reconditioned with Brushing Putty before being repainted… Well, you know how it goes. First there was the basement flood that lead to the basement unfinishing and drainage projects taking precedence, and once you’ve lost momentum you know what happens; not a whole lot. That is, until last month when my parents visited from Sweden for a month. My workaholic father decided that it was about time we made some progress on the kitchen, and boy did he make it happen!

I don’t remember how much I talked about the kitchen counters before, but the existing kitchen had several severe deficiencies, beyond the fact that it had flaking lead paint.

For one, the hole for the range is way too wide, so for the past two years we’ve had ~6″ spaces on each side that are perfect for dropping food into. The original range they had when they installed the counters must have been gigantic.

For two, the counters aren’t the same height everywhere. The counters to the right of the sink were about 2.5″ taller than the sink itself and the rest of the counters. It’s kind of visible in this vintage picture from when we first looked at the place.

This is what the kitchen originally looked like (including the thankfully long gone carpet). Note that the counters on the right are higher than the rest of them.

This is what the kitchen originally looked like (including the thankfully long gone carpet). Note that the counters on the right are higher than the rest. The original builders must have been very short, because the main section is quite low.

Getting a new kitchen countertop was always on the list of things to do, but these two facts meant that it wasn’t just a matter of ordering a new countertop; we’d first need to raise the cabinets and shrink the space around the range, and that’s what my Dad and I went to work with!

As far as raising the cabinets, one could imagine either building a frame above them or raising them up from the floor. Since they are built in place, they weren’t moving, so the only reasonable option was to build a frame above them. This would mean a wide, unused face right under the countertop on the left, but we decided we could live with that. The alternative would have been replacing the cabinets altogether and we didn’t want to do that.

Getting the old laminate countertops off turned out to be quick business — they were barely glued in place and most of them could be pulled off. In a few places we had to make use of the floor scraper. Then we could without much trouble pry up the planks that made up the subsurface (a welcome change since most things in this house is cross-nailed to the nth degree and usually won’t come off in one piece).

It turned out that the counters needed to be raised by almost exactly the width of a 3″ piece of lumber, about 66mm. The existing counters were fairly well leveled, but there was an offset between the two disconnected counters on each side of the range and the sink was a little off level. We corrected for this by planing down the 3×2’s that we built the frame out of as needed. This basically consisted of making a bunch of small adjustments until things fit.

To cover the open spaces on each side of the range we extended the frame out over them and then fixed a plank of the correct width under it. The whole deal took about a day in total, not bad at all given how much I’d agonized about how to do it.

 

Bengt and I celebrate in the now-correct-width recess for the range.

Bengt and I celebrate in the now-correct-width recess for the range. The cabinets are covered in plastic sheeting because we’d also stripped out the lead paint from the floors.

In hindsight, we should have planed the fronts of the frame before even mounting them, because as it was we were left with quite a lot of spackling to make them even. It would have been less work and have come out looking better. Oh well, this is how you learn.

Test-fitting the range in the recess. It'll look a bit funny to have these large blank areas, but the spaces are really too small to be useful for anything.

Test-fitting the range in the recess. It’ll look a bit funny to have these large blank areas, but the spaces are really too small to be useful for anything.

The sink area after raising to the correct height.  Notice that the counters on the right are still higher? Don't worry, we didn't screw up.

The sink area after raising to the correct height. Notice that the counters on the right are still higher? Don’t worry, we didn’t screw up.

With the counters now at the right height, it was time to paint them. That’ll be the subject of the next post.

A street sign

Back in 2013 when we knew what address we were moving to, I decided to make a street sign with our address and names on it. I ordered fancy wood from Inventables and was going to route it on the ShapeOko. However, the ShapeOko has not yet been unpacked and it’s been 2.5 years so finally I just decided to do it on the CNC mill instead.

Routing wood is really more of a high-rpm application than the mini mill is made for, so it’s not optimal but obviously it can be done. I had a 1/8″ straight flute bit from the ShapeOko, but ordered a 1/16″ one, plus a large 45-degree chamfer bit to chamfer the edges of the sign.

The starting point was a 12x6 piece of hard maple with a 1/16" sheet of Padauk, an exotic hardwood with very red color, on top. The plan was to route out the red part and end up with white letters on the red background.

The starting point was a 12×6 piece of hard maple with a 1/16″ sheet of Padauk, an exotic hardwood with very red color, glued on top. The plan was to route out the red part and end up with white letters on the red background.

Designing the sign turned out to be a bit of a frustrating exercise. Fusion 360 really is not good at handling text — there is no way, at least that I could figure out, to justify or align text. It had to be done freehand. That’s not so bad with the small amount of text I had to deal with here, but still…

The rough clearing was done with the 1/8" bit and Fusion360's "adaptive clearing" operation which makes the bit go in tiny arcs rather than plow through the material full width.

The rough clearing was done with the 1/8″ bit and Fusion360’s “adaptive clearing” operation which makes the bit go in tiny arcs rather than plow through the material full width.

The actual milling took a long time. With a max speed of 2500 rpm, you can’t really go very fast through the wood, especially with the 1/16″ bit. After first clearing most of the material with the 1/8″ bit, the remaining was done with the 1/16″, and then a profile cut around the edges of all the letters. Finally, the 1/8″ was used to clean up the bottom of the letters from the traces of the adaptive clearing’s little arcs. Overall, it took more than 3h of cutting time.

Because the sign is 6" tall and the mill only has 5" of travel in the Y-direction, I had to use two setups, flipping the sign in between them. Here's the start of the second op.

Because the sign is 6″ tall and the mill only has 5″ of travel in the Y-direction, I had to use two setups, flipping the sign in between them. Here’s the start of the second op.

The letters are done. Now for the chamfer around the edges.

The letters are done. Now for the chamfer around the edges.

Cutting the edges with the 3/4" 45-degree chamfer bit.

Cutting the edges with the 3/4″ 45-degree chamfer bit.

The result is pretty good. The red wood is a bit softer and has larger grain than the maple, so it had a tendency to tear a bit in the sharp corners. There was also a fair amount of loose fibers that had to be cleaned up, but overall it looks pretty cool.

After cleaning up and the first coat of varnish, it looks pretty nice. The varnish really brought out the red in the Padauk.

After cleaning up and the first coat of varnish, it looks pretty nice. The varnish really brought out the red in the Padauk. It might fade a bit when it dries, though.

Now I’ll just have to get another couple of coats of varnish and then we’ll have to figure out where to put it. We were thinking the garage wall, but at 12×6 it’s a bit small to read from the street at that distance. Maybe we’ll hang it on the mailbox or something.

Microsquirting the NC30, part #25: Fuel pump housing progress

The fuel pump housing I described in the last post has slowly been coming into existence. (There’s been some house-related distractions that I may talk about at some point…)

All the “complicated” parts have been completed. What remains is to cut out the 8 pieces made of 1/16″ (1.6mm) flat sheet.

The fuel pump is held with two O-rings. The bottom one (in the foreground) is strictly just for vibration isolation, the upper one is in the lid and also makes a seal to the outside.

The fuel pump is held with two O-rings. The bottom one (in the foreground) is strictly just for vibration isolation, the upper one is in the lid and also makes a seal to the outside. When the lid is removed, the hole is large enough to pass the fuel strainer so it can be mounted after the housing is welded together. 

This side shows the "lid" of the fuel pump housing. The lid holds upper part of the fuel pump and seals against the lower part with a large O-ring. The hole needs to be large enough to pass the fuel strainer.

This side shows the “lid” of the fuel pump housing. The lid holds upper part of the fuel pump and seals against the lower part with a large O-ring. The hole for the fuel pump has a chamfer at the top which prevents the pump from sliding out, so it’s held down against the bottom holder.

 

I’m not entirely sure of the best way is to cut the flat parts to size. It’s tricky to clamp them in the vise, but it’s also tricky to clamp them directly to the table. Most of them are square, but the sides are cut on a diagonal so that really needs to be done on the mill. I’ll keep you posted.

 

Microsquirting the NC30, part #24: Fuel pump housing

If there hasn’t been that much activity lately, it’s because I’ve been pondering how to solve the fuel pump mounting problem. The pump is just large enough that when you include the diametrically opposite inlet and outlet, there just isn’t enough room, and since the pump can’t self-prime with any amount of air in the inlet, there are

Eventually I decided mounting it the way Greg’s GSX400 fuel pump works that he mentioned in a comment to a previous post is the way to go.  His pump is mounted in a little “surge tank”, which has the advantage that you don’t need to connect the thick inlet hose directly to the pump. It also makes it easier to ensure the pump doesn’t suck air, since it will draw from the bottom of a large volume where the air will be on top. It also makes it possible to mount a fuel strainer, which I was going to attempt to do in the tank but have largely given up on.

The most important thing to verify was that the pump could actually self-prime when stuck with the inlet directly into a container of gasoline. Since the pump has a small inlet coupler, that will still contain air in this situation, and indeed the pump proved unable to purge that air.

With my patience near an end I conjectured that it would work if I could get the air out of the inlet, and the way to do that is to make a hole the air can get out through… So I carefully drilled a 2mm hole in the inlet, right next to the pump. If any swarf got into the pump it would be bye-bye with that one, so I was very careful to first plug up the entrance to the pump interior, drill the hole, and then make sure the inlet was aimed downward until I was sure there was no loose chips there.

With this “improvement”, it worked — the pump now happily primed and pumped out the air contained in the pump and then ran happily. (Which was damn lucky, since the hole I just drilled precludes ever mounting a hose there again…)

It was then “just” a matter of drawing up and manufacturing this “pump housing”. There is enough room for it to go in the battery compartment, along with the Ballistic Lithium battery, but only barely. I had to redesign it several times to make it fulfil all the requirements:

  • Inlet into the housing must be ~65mm high from the bottom to let the hose from the tank cross into the battery compartment.
  • Total width can not be more than 80mm.
  • The pump outlet and power connector must be more than 60mm up from the bottom on the rear side of the housing.
  • The fuel strainer must somehow be attached to the inlet.
  • And importantly, all of this plumbing has to allow for as much air as possible to get out of the box and flow back up to the tank.

The tricky part is that the width requirement implies that the AN-6 inlet port and the fuel strainer must sit one above the other. The height requirement on the inlet means it needs to be on top and the strainer on the bottom. But that means the inlet into the box, which is the strainer, actually is close to the bottom and that will prevent the air in the box from venting.

Eventually I came up with what I believe is the solution: The strainer is near the bottom of the tank, but I’ll make another, small, hole into the inlet near the top of the box. The sole purpose of this hole is to get air out when it is initially filled with fuel, so it doesn’t have to be big. It just so happens that the fuel injector service kit I got (see Microsquirting the NC30, part #20: Leaks…) came with an extra filter, a very tiny strainer with a 6mm OD. This way it won’t be possible for dirt in the fuel to flow into the pump housing through this hole, and the majority of the fuel should go through the main passage through the strainer anyway.

With that idea it all sort of came together, but it’s still going to be kind of a chore to manufacture. The pump is suspended with 2 O-rings diagonally in the box, held by the lid and a lower bracket. The lid also has an O-ring that seals the lid to the box. Here’s a Fusion360 rendering of what it’s going to look like:

Here's a rendering of the fuel pump housing, with two sides removed to show the inside. The AN-6 inlet is on the back side facing right, the bag-like thing behind the fuel pump is the fuel strainer bag. The hole above the fuel pump is the air vent hole where the fuel injector filter will go. The lid is in the upper left.

Here’s a rendering of the fuel pump housing, with two sides removed to show the inside. The AN-6 inlet is on the back side facing right, the bag-like thing behind the fuel pump is the fuel strainer bag. The hole above the fuel pump is the air vent hole where the fuel injector filter will go. The lid is in the upper left.

The whole thing consists of 12 parts, 11 of which will need to be welded together (plus the lid). Four of the pieces are 3-dimensional and will be milled, the remaining 8 are the walls which are made of 1/16″ (1.6mm) 6061 Aluminum.

So far, I’ve made the most complicated part, the inlet/strainer attachment:

Because of the three-dimensional shape of this piece, it started as a big chunk of metal. I think this is the smallest fraction of final/initial metal in any piece I've made. Check out those chips flying in the picture, by the way. This 1/4" 3-flute endmill, at 2000mm/min, eats through material at a surprising rate for a "Mini Mill".

Because of the three-dimensional shape of this piece, it started as a big chunk of metal. I think this is the smallest fraction of final/initial metal in any piece I’ve made.
Check out those chips flying in the picture, by the way. This 1/4″ 3-flute endmill, at 2000mm/min, eats through material at a surprising rate for a “Mini Mill”.

Here, most of the material has been removed, but progress was halted because of a broken endmill. I had forgotten to adjust the speed cutting the pocket where the strainer attaches in the top of the picture. You can kind of see where the track ends abruptly...

Here, most of the material has been removed, but progress was halted because of a broken endmill. I had forgotten to adjust the speed cutting the pocket where the strainer attaches in the top of the picture.

You can kind of see why this is called "subtractive manufacturing". That's a lot of chips...

You can kind of see why this is called “subtractive manufacturing”. That’s a lot of chips…

Here's the final product. Cosmetically, it's far from perfect, but since nothing will be visible I don't really care about appearance. Both the fuel strainer and the inlet port fit, so we should be good to go.

Here’s the final product. Cosmetically, it’s far from perfect, but since nothing will be visible I don’t really care about appearance. Both the fuel strainer and the inlet port fit, so we should be good to go.

I’m working on the remaining parts, so those will show up in the next post.

 

Microsquirting the NC30, part #23: We have ignition

With the intake rubber fitment problem overcome, I could finally mount the entire throttle body assembly onto the bike. This was a moment long coming.

The throttle body assembly, without airbox and fuel rail, test fitted onto the engine.  Thankfully everything fit perfectly.

The throttle body assembly, without airbox and fuel rail, test fitted onto the engine. Thankfully everything fit perfectly.

Closeup of the throttle bodies for the rear cylinders.

Closeup of the throttle bodies for the rear cylinders.

Thankfully it all fit. The four throttle bodies slid into the intakes a lot easier than the carbs did, which isn’t surprising since the “barbs” are much smaller now. The tightest spot by far is the throttle position sensor.

There's about a mm between the throttle position sensor cover and the frame. I had paid close attention to whether this would fit and concluded that it would, but I'm not sure I realized it would be that clos.

There’s about a mm between the throttle position sensor cover and the frame. I had paid close attention to whether this would fit and concluded that it would, but I’m not sure I realized it would be that close.

The position of the throttle cable attachment also looks like it will work unmodified. It’s a bit lower than it is on the carbs (because the throttle butterflies turn the opposite way) but I could hook it in to the existing cable and move the handle and have it work. I think the handle travel to full throttle will end up being a bit less than with the carbs.

After further mounting the fuel rails and the airbox, I could verify that there’s also no interference between the other tight spots: the connector fuel hose on the #1 cylinder and the manifold pressure port on the fuel pressure regulator are close to the inside of the fuel tank, but not touching. The fuel supply hose at the #4 cylinder clears the frame crossmember in front of it and loops under the cylinders.

With the whole throttle body assembly mounted, I could proceed to wire up the fuel injectors. These are supplied with +12V from the fuse box and are grounded by the Microsquirt injector outputs. Since there are only two outputs, the front and back cylinder injector pairs are wired to the same outputs.

That was a fairly minor wiring job and after that was done, it was theoretically possible to start the bike. There are no throttle linkages, of course, so all the throttle butterflies are closed and it would only pull air through the small ports on top of each of the throttle bodies, but this should be sufficient to get it to idle.

With the fuel pump pulling out of the gas can like it did for the fuel injector measurements, I fired up TunerStudio, connected to the Microsquirt, and hit the starter.

Ignition!

It fired almost immediately and settled into a very high idle. It’s clearly getting too much air through those little air ports to have a reasonable idle that way.

Here’s a video of this momentous occasion:

So there we go, there’s hope!

There are a few options for the idle. One is to use the carb method and crack the throttle valves a tiny bit. That’ll work, but it’s very sensitive. Another option is to connect all four of the air inlet ports and use some sort of restriction (ideally adjustable) to set the idle speed. The third, and most advanced and flexible, is to use an electrically actuated valve to set the idle speed. With this option you can program the Microsquirt to do things like raise the idle when cold, so it won’t stall under those conditions. This would be useful, but that would also require fitting more hardware under the engine. I’ll ponder this while I work on the fuel plumbing.