## Friday, January 14, 2022

### Spinning things!

It spins!  A good end to the most productive week I've had in quite a while (on personal projects, at least):

More spinning things: turning the 3mm cam followers:

Tiny cam follower shafts done.  Thumb for scale:

Assembled cam follower "spindles" with a bearings:

Real blog post with more explanation coming soon-ish.

## Tuesday, January 11, 2022

### Undercutting tool

I needed an undercutting tool for the part in the last post, so I made one from an old HSS end mill.

ER32 chuck loosely held in an ER40 collet, serving as a manual rotary/linear axis.  Grinding wheel in the mill spindle:

One of the features it cut:

## Saturday, January 8, 2022

### Screw mechanism progress

Machining the rotor/cam nut for the screw mechanism:

Turned on a manual lathe to this point, then milled on the 5-axis:

Mid-finishing passes:

## Saturday, November 13, 2021

### Today's contraption

The astute reader can probably figure out what this is and what it's a test setup for:

Oh how I missed you, MITERS Hardinge

## Thursday, August 12, 2021

### Espresso machine software testing

Testing a mostly-functional espresso machine gui.  Somewhat Decent inspired.  While I don't have an interface for creating espresso profiles from within the gui, I can write arbitrary espresso profiles/state machines in python which is pretty powerful.  Testing with the Puck Simulator.

The profile in the video does the following:
• Cycle water through the tank at 2 mL/s until the water and the group head get up to temperature (I cheated this in the video and turned off heater power)
• Flow water through the group head to the drip tray at 2 mL/s for 2 seconds to purge the air from the group.
• Block off the drip tray, flow to the group at 2 mL/s until the pressure reaches 6 bars.
• Run at a flat 6 bars until the shot weight (estimated from the pump speed/pressure/flow curve since I don't have a built-in scale yet) reaches 32 grams.
• Open the valve between the drip tray and group head to rapidly purge pressure (so it doesn't keep dripping)
• Reset to the beginning and wait for input.

## Tuesday, August 3, 2021

### Adjustable Puck Simulator

Needle valve + basket with the bottom cut out + aluminum "puck" with an o-ring = adjustable coffee puck simulator.

## Monday, July 5, 2021

### Mill Enclosure

Last Sunday I whipped up an enclosure design for the mill to replace the shipping crate.  It's entirely made from 2d laser cut panels (I used SendCutSend, introduced to me by Alex.  A+ would use again) standard lengths of 3d-printer aluminum extrusion, and off the shelf hardware.  I'll post CAD in case it's useful to anyone else with this mill once I've made any tweaks I need to:

Lit with an LED bar:

## Monday, June 28, 2021

### Half way done

One section done, one section half machined.  Now that I have working toolpaths, I can mostly copy/pasted between parts/sides and just re-select the appropriate geometry.

The first finished section of the part:

Here's a quick look at all the toolpaths.  Once it's done I'll do a real blog post with machining details:

## Thursday, June 3, 2021

### The scrap pile grows....

The most recent attempt was so close.  As usual, got wrecked by the final tool change.  Not sure what happened (maybe I just forgot to touch off?), but the final tool, which finished the linear guide grooves, was about 1mm too deep.

This op is 1/6 of the whole part.  Eventually 3 of these, machined on both sides, will get joined by a tie rod.

3mm drill shank in the 3mm slot.  The walls are actually parallel now.

Face spline for locating the 3 pieces and transmitting torque:

## Wednesday, May 19, 2021

### Gratuitous simultaneous 5-axis

I've just done 3+2 machining up until now, and haven't tried any simultaneous 5-axis toolpaths.  Not an exciting part or feature - just a few countersinks - but the real accomplishment here is that zero endmills were sacrificed making this gif:

## Tuesday, May 18, 2021

### Stainless Shaft

Making a stainless shaft.  Nothing super fancy, but it turned out pretty nice so here are some photos.  Turned on the tiny lathe, threads/hex/keyway done on the mill

Thread milling makes it super easy to thread right up to a shoulder:

## Sunday, May 2, 2021

### Varying pitch screw machining

I didn't forget about this!

Precision anti-chatter stick:

## Tuesday, April 6, 2021

### Pressure control, 1 kHz USB data logging

PI+Lead pressure control with ~30 hz bandwidth (probably will get it's own thorough post soon), native USB data transfer either way (logging at a little over 1 kHz, sending commands at ~15 hz from the GUI), python/QT gui running the show.  Orange = pressure command, blue = measured pressure:

## Sunday, April 4, 2021

### STM32 USB CDC + PyUSB Data Transfer

First experiments using native USB CDC (communications device class) on STM32's, using the CubeMX libraries:

It's been surprisingly straightforward to get working.  I basically just followed this video from ST, with a few minor changes.  I've been able to hit up to 650 kilobytes/s transfer (micro to computer) which seems to be the limit for the ST libraries.  Put another way, I can log ~160 floats at 1 kHz.  Although not nearly as fast as USB Full Speed can be, it's way faster than serial,  it's non-blocking, has  CRC error checking with auto-retry, variable packet size, and so on.  Overall a very nice data transfer experience.  It's great to not have to think about packet structure, accidentally being off by one byte, error checking, and all the other headaches that usually go along with serial.

The gif is a PyQt GUI using PyUSB for USB data transfer, using pyqtgraph for plotting, same as the dynamometer GUI.  Plotting performance is a little disappointing.  I get ~9 FPS plotting 19 traces at 2000 points/trace.  Performance seems to scale linearly with number of traces, but not with number of points, which is kind of interesting - plotting 1/5 as many points only increases the frame rate by 50%.

## Tuesday, March 23, 2021

### Frequency response measurement

It's been a while since I did any system id for fun:

Pretty darn 2nd order (as expected from motor inertia and magnetic coupling stiffness).  Handy way to get generate a bode plot from timeseries data is  $$\frac{FFT(output)}{FFT(input)}$$

## Sunday, February 21, 2021

### First Shot

It works!  Super janky right now but all the pieces work:

## Tuesday, February 16, 2021

### Espresso Machine Group Head Machining

The click at 0:41 is very satisfying

Questionable workholding stack:

Fancy "morphed spiral" profiling toolpath came out well:

Inlet and outlet visible

With fittings, shower screen and seal installed, and portafilter locked in.

Proper blog post on the way