If you're curious what air bearings are - they're an alternative to plain or rolling element bearings that use a fluid (air) interface to allow for frictionless constraint without part to part contact. They're generally used in high precision applications (semiconductor fab, linear motion in CMMs, >60k rpm spindles). One incredibly cool application is in Dan Gelbart's video on the single micron tolerance lathe he built out of granite parallels and air bearings.
There's an abundant supply of graphite available on the internet that's used for machining sinker EDM tools. You can buy it new in small quantities but there are also plenty of cutoffs used by machine shops for cutting injection molding tools. I ordered some cheap rectangular pieces of graphite through ebay, printed a plenum, and epoxied an NPT push connect fitting into the plenum, and that to the graphite (the actual first one was just a square plenum with no positive mechanical connection and urethane CA which at ~40 psi shot the graphite across the room. After that I started thinking a little more about the mechanical connection and ground a chamfer into the graphite to provide some dovetailing + two rings of grooves in the plenum which allowed for actual positive mechanical engagement of the graphite. In contrast to the thumbnail this is what my first attempt looked like - some small amount of flow but most of it was coming through a visible defect in the graphite.
So despite some small bubbling, this attempt was unsuccessful. Around this time I started to worry about the thickness of my sample (which was already at a very narrow 8 mm). My other concern which happened to be the more warranted one was in questioning the open porosity of my stock (ie. how connected were all of the pores of the sample as opposed to just being single isolated cells. After some more detailed googling it became evident that there is a lot of nuance to various graphite grades. I stumbled upon a company called POCO Graphite that markets particularly isotropic grain/pore size/mechanical properties/particular manufacturing process controls. Their website has detailed descriptions of air bearing microstructure/mechanical properties, down to pore size, and percent open porosity. It was also clear that many of their EDM grades shared similar pore size and density (open porosity percentage is only listed for their "industrial" or air bearing grades. You can see more air Bearing graphite information here and here
It seems as though workable parameters for air bearing graphite envelopes:
CMM's are typically used to separate these two measurements where XYZ point collection are all automated, and then a plane is fit to the inspected surface. You can effectively achieve the same thing by plotting your points in a spreadsheet, but I wanted to build a tool to automate XYZ point collection for the manual dial indicator + surface plate scenario. I used two AMT102 rotary encoders from another project to create what amounts to a driven SCARA arm that sleeves over a dial indicator (without constraining it in Z), and follows it around a surface plate as an operator takes measurements in Z. Through work I have a script that pulls data via USB from a cheap iGAGING dial indicator, which amounts to measurement of all 3 axes.
Figuring out the trig was relatively straightforward, but there's a caveat which is that as soon as your second arm leaves the 180 deg interior angle of the first (and again after 270) you have to make a few small adjustments to the plotting script. This led me to a day wrangling with plots that looked like the one below. You can see all of the trig in twoBarMetrollogyCollection.py. The plotting script is currently computing the trig for every point, for every frame, because I was lazy about moving from the plotting a complete array to the real time case. I haven't run into any memory limitations yet because most of my plots have been limited to under 2ish minutes.
The final script is written in python, and uses a lot of openCV and PyTesseract for the OCR. It works by letting a user upload a video of their test setup, grabbing the first frame, and then asking for rectangles to be drawn around individual regions of interest within a sensor's DRO. The script then iterates through every frame of the video looking within each user generated rectangle. Tesseract also provides a confidence score to each guess, so that gets added as well. This method relies on the camera and sensor being relatively static throughout the test.
Most smartphone cameras shoot at 60 fps, so even if you are rejecting 50% of frames you are still getting 30 fps of data, which is excessive for most of the tests that I run. Unfortunately depending on the DRO, you do wind up with a lot of distorted frames where the DRO was flickering between values. 7 segment displays are one of the better options here. Some of the benefits of data acquisition this way are:
Most machinest's vises use large castings and a lot of mass to ensure rigidity, but the philosophy here is to transmit as much of the clamping load into the base of the machine through the rail as quickly as possible. The moving jaw and nut post index along the mounting holes of the linear rail, so they have a 6" capacity with only 40 mm of stroke. Both the fixed jaw and nut post are mounted from underneath using M4 FHSCS, so the price to pay is that the vises need to be unmounted to adjust capacity. There's a captive nut in a pocket within the moving jaw that attaches to the tightening screw. All of the clamping load goes from the fixed jaw to the nut post, and the linear guide only takes up any moment from off-axis clamping which is relatively low unless you're using parallels.
I made a pair of hard jaws for the vise machined from an old parallel, and another pair of soft jaws from copper for delicate work. All the other components are currently 6061, but someday that will all turn into A2 depending on how useful they are.
For Formlabs' 2019 Hackathon I was initially planning to build up a polygonal scanning mirror and just make a scanner, but convinced two coworkers to join so we decided to tackle something more challenging. A third relatively common application for polygonal scanning mirrors is to generate topographic maps as a part of a plane's LIDAR. They're a good fit for this application because of the high scanning speed and repeatability of the mirror's single rotational DOF. LIDAR is actually just a pretty straightforward time of flight sensor, no different from ultrasonic distance sensing, but with some quirks (non-visible wavelength + pulse at odd frequencies to create a unmistakable return signal).
The device we built scanned at 905 nm (non-visible) in a 60 deg vertical window, and was capable of 360 deg rotation. It sort of has to be said that this is not an ideal scanning method for mapping rooms (unless you have things moving incredibly fast). We started with a very promising LIDAR dev kit from TI
capable of scanning at 4kHz. But couldn't get it working and wound up falling back on a cheap off the shelf sensor called the TF mini, which we spliced our own laser into.
Our initial plan to index edges of the hexagonal mirror using the TOF laser failed because we forgot about the fact that the TOF throw signal was only on intermittently. We got the project to a point where we were getting good distance measurements, but poor scans due to intermittent indexing signal. So our continuing engineering goal for the project is to shine a second low power laser (in the visible spectrum) at 100% duty cycle that is used purely to index each time you pass between facets of the polygon. Overall the project was a lot of fun and I got to use some unusual optical equipment, despite not winding up with a working scanner.
You can see some early video of it cutting here, (ignore the cardboard chip containment). Future plans for this tool are to replace a few remaining phenolic parts with aluminum, a low RPM spindle, rotary axis, and eventually film a machine overview.
The motor is controlled with a VESC, which is a neat open-source speed controller originally designed for DIY electric skateboards. VESC's can push up to 50A continuous at 60V which is significantly more power than I need (I am pulling about 26A at 30 mph which is about as fast as I feel comfortable on a bike). The VESC also has a 5V BEC and is capable of reading resistive or hall effect throttles, which would otherwise have to be overcome with an arduino or servo-tester circuit. VESCs are also capable of some neat functions including regenerative braking and FOC control which I am looking forward to experimenting more with. I built the battery pack into a pelican case and wired in some schottky diodes for backcurrent protection, as well as a solid state relay (the glowing blue external power button). The battery pack is actually completely waterproof at the expense of poor cooling. The motor is mounted between the seat stays and seat tube and is geared down to the rear wheel with a 2-stage HTD 5mm timing belt reduction of about 10.6:1. I started with a large plywood rear pulley located concentrically with the hub of the rear wheel and zip tied to the spokes of the wheel. I foolishly thought it would be fun to design a freewheel and build it from scratch which you can see a picture of below. I designed and machined/printed all of the parts in the freewheel aside from the bearing. The pawls are machined from 5160 spring steel, but the ratchet I never got around to waterjetting it in something that wasn't aluminum (note the aluminum shavings in the mounted picture below). The freewheel worked for about 2 weeks of daily commuting and then jammed and failed catastrophically when the acrylic pawl retention cover cracked. Since then I haven't had the heart to return to the project, but will eventually replace the custom freewheel with an OTS one mounted to the hub and a waterjet sprocket.
Each part included 5 tool changes and moved through 3 setups to achieve a total machining time of under 2 hours, while minimizing post-production through slot milling for the frames, machining for all hinge mounting hardware, and using extremely tight finishing stepovers. All workholding, part location, and tool changes were integrated directly into the machining process through a series of prompt-driven macros, allowing the parts to be manufactured by any shop employee.
Climbing volumes are primarily sold pre-assembled, which typically includes a finish coat of paint or epoxy, mixed with an aggregate material to provide gripping texture. Holes for screw in t-nuts are also added, and are used for bolting additional holds to the volume. Depending on volume geometry, final volume (length^3 in this case) can increase by an order of magnitude in comparison to flat packed volume which effects shipping costs.
Three weeks before the conference, initial plans to ship a gantry-style indexer were canceled due to size constraints of the building’s service elevator. I began working on adapting the Indexer to the Desktop Max and had a working prototype
in two weeks time. The prototype was used as a part of a 3 day workshop in collaboration with a team from University of Minnesota’s DesignFab entitled “Exploring the Fourth Dimension.”
After positive
feedback from the event and several several customer inquiries, I adapted the prototype to a production ready design, which is sold as a standard product for ShopBot’s Desktop line of CNC tools. The Desktop Max 6” Indexer is also used
frequently by ShopBot to demonstrate rotary CNC work both in house and on the road.
You can find more information at the Desktop Max 6” Indexer Product Page.
After sourcing a compatible tangential knife, I designed, built, and tested a prototype of this product for a customer requiring a custom dual-z machine, capable of both cutting and machining material up to 4” thick. The final tool was capable of switching between tangential knife and machining operations mid-toolpath, and the tool handling for the knife was integrated directly into the ShopBot control system.
This project involved a variety of custom electrical and mechanical hardware. I also worked closely with software engineering to develop a secondary post-processor to add tangential 4th axis motion to native ShopBot code when the tangential knife was called.
The final design lowered cost and build time by integrating PEM hardware in several places and shifting complexity in parts from powder coated steel sheet to an uncoated aluminum. The redesign also oriented the tool’s drivers vertically to allow for more efficient natural convection across the rear of the tray which doubles as a heatsink.
The redesign allowed for an additional row of aluminum decking to be installed at the rear of the tool, such that an Automatic tool changing system, Fixed Z-Zero Plate or Indexer/other accessory could be mounted permanently to the tool without sacrificing work area, or to utilize an additional 2” of machining area. The changes have since been incorporated into ShopBot’s 24” x 18” Desktop redesign.
I used a prototype of the redesigned tray in a custom modular CNC controller that I built for my personal machine, but the design can be used pretty generally for building CNC enclosures using Gecko G250X drivers and ShopBot’s Desktop control board.
The desk shown above was designed parametrically, meaning that its model was constrained by a series of variables which allow for rapid design changes. The animation above shows parameter changes including desk width, depth, and leg height, which could be used to change the desk's function from a work desk to a console table. The desk can be disassembled and flat packed into 5 pieces, and assembles using mortice and tenon joinery (requiring no fasteners or adhesives) in about 2 minutes.
The files for this project are open source and fully parametric, meaning that variables such as material thickness, height and width can all be changed dynamically, without having to directly edit the 3D model or update the machining operation. In some cases the layout of the final flat pattern must adjusted. Feel free to get in touch if you are interested in working with these models or have any questions!Models including all necessary CAD and CAM for this project can be found here.
After building the bench top, I added the loft shown below, and fabricated a pair of steel legs inspired by mid-century style hairpin legs. Design constraints for the legs were that they be strong enough to support two people, and that their fastening method be hidden when looking at the bench from above. The final design achieves this by bracketing to each slat individually, which also helps in distrubuting load accross the depth of the bench. I built the legs with help from my uncle at ARP Design. In the future I hope to publish a more detailed walkthrough for this build, but have made the models available below!
The files for this project are open source and fully parametric, meaning that variables such as material thickness, height and width can all be changed dynamically, without having to directly edit the 3D model or update the machining operation. In some cases the layout of the final flat pattern must adjusted. Feel free to get in touch if you are interested in working with these models or have any questions!Models including all necessary CAD and CAM for this project can be found here.
Design constraints for the final product were that it be backwards compatible with all existing ShopBots, repeatable to within +/- 0.001” of an inch, and be able to used to zero directly to the surface of material to be machined, as well as mounted in a fixed location to zero to table surface.
The screenshot above shows the add-in's GUI which allows for the selection of custom post processors, posting of Folders, Setups, and individual Operations. The current prototype version of the add-in will search the network for a single tool network connected tool (doesn't currently work for AP mode), automatically post process the selected CAM files and launch a browser with the found tool. Here's a guide on installing custom Fusion 360 add-ins if you're interested in trying it out.
In visual basic, I programmed a tool handler that created a database of tools for the quick change spindle and applied offsets, including options for dual-z spindles, as well as fixed z-zero plates. The handler was fully integrated into ShopBot’s control system and is currently in use on two custom machines.