How to (almost) Make (almost) Something that (almost) Makes (almost) Anything

Cedric-Pascal Sommer's Class Page

MAS.865 2024



I will be working on an open-source lens making bot, the first of its kind actually. I’m big into optics, particularly for astronomy and astrophotography. Now this is a hobby where you can easily spend the same amount of money on a good refractor telescope as on a car. So far, optics remains one of the most inaccessible and least prototypable „things". I do grind mirrors for my own telescopes by hand for fun (just like Newton - still the best way to go about it), but it’s damn near impossible to do this on the scale of large mirrors or small lenses - let alone multiple lenses. There’s a few folks out on the internet who really push it with their own DIY optics shop (like this) and I believe it should be possible to simplify all of the processes for lens making into one modular machine that can be converted and adapted for different needs. I know it’ll be a steep learning curve, but I hope this is a long-term project that will open up a ton of high-precision optics-based instruments and machines to prototypists all around.

Components

Turntable

  • A simple turntable to mount the glass sample onto. Could also be usable for other spin-based operations (clay working, ...)
  • V1: Simple turntable at constant speed
  • V2: Simple turntable at variable speed
  • V3: NC turntable

Stroker Arm Mechanism

  • V1: Maybe first just a fixed post spin grinding machine, that adjusts the offset of the tool
  • V2: The stroker arm mechanism is another mechanism, I guess? For a single arm stroker?
  • V3: And then the W (Zeiss) two stroker design?

Grit Applicator

  • Something that spits out grit and water to continue grinding

Path Planning & Simulation

  • Enable different path planning and simulations of the grinding operation and lens shape
  • We want to end up somewhere where we input the lens shape we desire and then run on machine

Other Notes

  • How do we make it adjustable from lens making to mirror making?
  • Can we make it closed-loop?
  • Can we add metrology to make sure we are getting a consistent shape?
  • But then how do we add NC? Like the ability to control different grits and water spray maybe? And the ability to adjust the stroking mechanism, like the offsets etc and knowing what type of lens they will create could be very interesting...maybe a hydraulic arm that can be shifted in its offset. Or a linear actuator...
  • CoreRad (being able to reach any point in radian / polar coordinates, rather than Cartesian CoreXY) with a fixed motor

Systems Design & Engineering

Frame

I started looking for a suitable systems design frame to base my design on. After looking through multiple projects of past years, hackathons, and other open-source files, I came across a small desktop-sized mill with a design that seems almost perfect for what I need: The OpenBuilds MiniMill. Unfortunately, the Sketch file is rather messed up in Fusion and hard to edit, so I took some time to clean up the design and change some of the components (motors, the lead screws). Next step is to add the 4th axis to allow for the tool to be held at an angle at the machine.

Library of Machines

Mirror-o-Magic

Zeiss Grinding & Others

Cloudy Nights Image Mom Image 12 Mirror Making Machine Image

Other home-made stuff

References

Prototyping Components



This week, I worked on a prototype for the Arduino pressure controller shield I want to build. Basically, the idea for this pressure controller is to be a plug-and-play controller board that sits on top of an Arduino Mega board and allows for an easily modifiable setup of different valves and sensors to accomodate simple pneumatic and vacuum setups for applications like soft robotics.

Prior Art

I am building this project on the basis of a few fully-integrated systems that come pre-built to allow for easier modification of the system and a way to test different valves and sensors. The control firmware will be based on CTRL+P by Clark Teeple.

The CTRL+P pressure manifold developed by Clark Teeple that allows for up to 8 channels, using some continuous-modulation valves for low-pressure pneumatic applications

The FlowIO platform by Ali Shtarbanov, Hyejun Youn, Ozgun Afsar, Joseph Paradiso of Media Lab. Again, a great general purpose, fully-integrated system. However, I want to open this system up for more modular expansion and modification

Hacky Prototype

In order to figure out what functionality I need to make my shield both as flexible as possible and still provide common functionality for pneumatic control, I just took a box full of old weird undocumented pressure-application equipment from our lab (pumps, valves, tanks, pressure sensors, flow rate sensors, and anything in between and beyond) and tried to interface it with an Arduino Uno.

Granted, a lot of the components' documentation is hard for me to understand and the existing platforms might not be ideal for interfacing them - but this is exactly the challenge I am trying to solve. So I went ahead and just built the pressure and electronics circuit around it. While the result looks absolutely hacky, it helped me isolate what elements I need to integrate on my board to provide the basic framework for building something like this in an integrated way.

Once I got everything to work, I used PlatformIO in Visual Studio to run some basic operation of actuating a single valve and plotting the measured pressure in the pressure chamber attached to the valve. In the following pictures, I am sending different input values over PWM to the valves.

WTF is going on?

As I tried modulating the valve along a linear pressure trajecory using PWM, you know, easy peasy stuff, I noticed that I couldn't get it to follow the trajecory consistently. The valve seemed to either stick open or closed, and if I sent a voltage in between, it erratically opened and closed. Notice the comforting sound in the video that definitely does not sound like a happy valve.

Now this is how I found out how these valves actually work. If you know anything about pressure applications and specifically how valves work, you probably already know this, but for a simple valve, there is usually a simple solenoid inside that either lets pressurized air pass in or out of the system.

So did I just try actuating a solenoid using PWM, hoping that it would be able to maintain an intermediary stage? But wait! The specific valve I was playing with was actually rated for continuous modulation! Which means that they are built with two solenoids! So why am I not able to continously modulate the pressure?

At this point, I have a few theories. Theory 1 is that I actually may need a real analog-to-digital converter, because the PWM signal might not work with these valves opposed to a true analog signal. Theory 2 is that maybe my pressure chamber is so small (just a hose) that it can't work. I'm still working on finding out

Component Updates

Modular Pneumatic Manifold

This week, I workers on the electronics for the pneumatic manifold. As the goal of the project is to have a modular and versatile controller that works with a variety of valves, pumps, and sensors, I wanted to build it on top of a widely available board. Luckily, I came across an open-source firmware for a multi-channel pressure controller in C that someone had built in the past. Going from the specifications, the firmware is optimized for the Teensy 3.5 and the Arduino Mega 2560 R3. As I happened to have a Mega lying around, and as it’s pretty widely spread amongst beginners, I am assuming this as the basis for my build. I started by importing the part into my design and then drew out the schematics of all the components. Basically, my shield will have space to mount one valve with up to two channels (enabling continuous-control valves with a pressure and a vent channel) and one sensor, enabling full continuous pressure control in one output. The valve can be modulated over PWM, the sensor value can be read as an analog signal. After finishing the design of my PCB, I started milling the board on the Roland SRM-20, traces on the 1/64 mill and outlines on the 1/32 carbide mill. Unfortunately, our lab lost the sacrificial plate somehow and I had trouble machining the traces accurately. I will stuff the board by next week and run it with the firmware I found online.

NC Shop Vac

This is part of the coolant and abrasive slurry system. The idea here is to use a shop vac, which may just be the most widely accessible „compressor“ / „air pump“ to deliver coolant to the optics CNC I am building. My plan right now is to use the underpressure the stream of air exiting the shop vac generates to pull in a bit of coolant and cool the cutting process, without needing a separate water pump (in essence, the shop vac would act as the pump). Think of something similar to how a carburetor injects fuel into the fuel air mixture.

I started by pulling apart one of our shop vacs at night to see if I can find a way to manipulate the motor speed. A variable resistor might be the best way to control the motor speed. I have only rudimentarily tested its effectiveness in pulling distilled water from a channel in the side, but it seems like it could work. The only bigger challenge I came across is the fact that the water pulled in gets rather mistigfied into small droplets instead of forming a spreads stream. Next, I will make a board that can easily be interfaced via I2C to interact with the shop vac and change the coolant flow and extraction

Kofferdamm Coolant Bell

This is again part of the coolant flooding and extraction system for the optics mill. I thought through different options of managing coolant, but ultimately, most options seem like they would be spraying coolant all over the machine, which is exactly the problem I want to avoid for a small machine like this. The current solution I am thinking about is a somewhat dentist-inspired approach. I am assuming it is not possible for me to locally extract all the coolant that will spray all over the part. Under that assumption, I want to contain the coolant as much as possible to one local area, have it spray all over the place in there but not leave that area in an uncontrolled manner. The best I could think of so far is a combination of a bell-housing that retains any spray water and contains it to a local area as best as possible. In addition, the top inside of the housing is designed to minimize water contact to the spindle. For the inside of the collet holder (?) and the spindle itself, I designed a sacrificial filter inspired by the ones serological pipettes use, that may have to be changed from time to time if it gets wet. I started making a mold for a silicone cast of this bell, in a screw-on fashion.

System: Optics CNC Mill

Most things happened here this week. I got components and parts from Jake and designed the mill as a 3 axis mill system, mostly going off of the design of the Open Builds Mini Mill and the Milo 1.5, but only using components CBA has readily stocked. Work in progress

TODO: Insert Fusion screenshots here...

Existing Projects for CNCs

Jake's Machine Week Machine Files Build Your CNC OpenBuilds Mini Mill Milo 1.5 PrintNC MPCNC

04/22: Mill Update

After fully designing the first version of my mini optics mill, I realized it is shit. Way too many thin-walled 3d printed parts. Way too wobbly on the z axis. Way too much play on the xy table. As this is the first time I am trying to build something with an accuracy of >1cm, this may come as a surprise to some of my readers. But I hadn’t anticipated it to be as bad. After coming to terms with the fact that my beautiful contraception will probably make nobody proud, I started all over again. This time, I designed the mill with a few key design principles in mind: 1. All structural parts of the frame should be from aluminum extrusions. No custom 3D printed parts here. I want the frame to be as rigid as possible, with the possibility of filling it with concrete later. The extrusions should be standard extrusions, nothing fancy that only one vendor carries 2. Anything supporting the xy plate and z axis that isn’t aluminum must be from something similarly sturdy. I did not want 3d printed parts here. So instead, I made sure that all the parts could be cut on a CNC, a waterjet or even just a band saw and a drill press 3. Only non-structural accessory holders, like clips for the tubing for the coolant system, can be 3d printed One thing that was important to me was to make a machine that could be reused by students in the future for any baby-mill based design. That required the use of just things we pretty much already have around the lab. With these principles, the new mill design is what I call the 3-2-1 Mill. It’s a 3-axis L-frame VMC, uses linear rails and ball screws on all axes. I’m using TinyG for the motor controls and a generic 24V power supply for my 3 Nema 17s. I need to do smaller loops!!

Later, when I picked up my components from Jake, he gave me yet another interesting

04/22: Coolant System Update

04/23: Modular Controller Update

I finished the firmware for my controller, which is based on a controller Clark Teeple had built earlier. A set of commands can be used to control time points, but what’s maybe more interesting is the fact that trajectories can be sent to the controller. I‘m currently controlling it using a Python script. I also finished the PCB design for the controller and have milled it on the Roland.

Blimp Update