July 22, 2020

A decade of project blogging

I just noticed that as of this month, I've had build-its.blogspot.com for 10 years.  It's hard to believe how long it's been and how short it's felt.  Hopefully Blogger is still around in another 10.

For nostalgia's sake,  here's the oldest project-thing I've documented- strapping model rocket engines to a pinewood derby car:  This video predates the blog - I think it was filmed in 2007.

2nd place goes to this shot of me planing a railing on The Boat from 2009. 

June 6, 2020

Simple Dynamics With Varying Transmission Ratios

An idea I've had in the back of my head for a while now is using varying transmission ratios to transfer kinetic energy between bodies.  That sounds really abstract, but I'll explain.

Here's a simple example that frames the problem.

There's a mass, \(m\), which can translate in \(x\).  Driving the mass is an actuator with inertia \(j\) and angle \(\theta\).  There's a transmission between the rotation of the actuator and the translation of the mass.  The transmission ratio, \(k\), is the ratio between angular velocity of the actuator and linear velocity of the mass, i.e. a radius.  This radius varies as the angle of the actuator changes.

Below is a sketch of how a varying transmission ratio might look, with a pulley that changes radius as it winds up:

The specific idea I wanted to test out was this:
Start out with a low transmission ratio, so spinning the inertia doesn't move the mass very much.  "Spool up" the inertia to high speed.  Vary the transmission ratio so the mass accelerates at constant power, but the inertia speed is constant.  Then, rapidly increase the transmission ratio.  This should cause the inertia to decelerate, transferring its kinetic energy to the mass.

At least, that's intuitively what I would expect to happen.  It's similar to the idea of revving up an engine and dumping the clutch to accelerate hard (or do a burnout), but in the clutch case, half of the kinetic energy is necessarily dissipated by slip in the clutch.  In the variable transmission ratio case, there's no slip, so there shouldn't be any energy loss.

Jumping into the dynamics:
Instantaneously, the relationship between angular velocity and linear velocity is:
$$\dot{x} = k\dot{\theta}$$
Differentiating, the relationship between accelerations is:
$$\ddot{x} = k\ddot{\theta} + \dot{k}\dot{\theta}$$
Normally, with a fixed transmission ratio, \(\ddot{x} = k\ddot{\theta}\).  But if the transmission ratio isn't constant, another term shows up.  If the transmission ratio is increasing and there's positive angular velocity, there's an additional positive acceleration.  That's in-line with the intuition so far.

If a constant torque \(\tau\) is applied to the actuator, the acceleration of the mass works out to the following:

\ddot{x} = \frac{k\tau + j\dot{k}\dot{\theta}}{j + k^{2}m}

Rather than the transmission ratio being time-varying, say it's position-varying.  Imagine a cable spooling up on a variable-radius pulley, or a cam follower rolling along a cam.  Recognizing that if \(k = k(\theta)\), then \(\dot{k} = \dot{\theta}\frac{dk}{d\theta}\), the acceleration is:

\ddot{x} = \frac{k\tau + j\dot{\theta}^{2}\frac{dk}{d\theta}}{j + k^{2}m}

This position-derivative variant is nice because it can be pre-computed from k vs position, rather than requiring time-differentiation to get.

Going back to the idea I wanted to test: Spool up the motor to high speed.  Operate at constant speed and power.  Then spool down the motor to transfer the actuator's kinetic energy to the mass.

I roughly hand-designed a varying transmission ratio to do this.  At the beginning, there's a constant, small transmission ratio.  Then it switches to a logarithmic curve -  A log curve results in constant power output at constant actuator angular velocity, although I'm not going to justify that here.  At the end, it rapidly increases to slow down the actuator.

Here's a plot of the example transmission ratio vs motor angle.  Polar version of the plot on the right:

And a rotating GIF for good measure:

Simulating the dynamics, here's what I get when applying a constant torque to the actuator.  Actuator angular velocity and speed of the mass are plotted below.  First, when the transmission ratio is tiny, the angular velocity ramps up but the mass barely moves.  Then when the transmission reaches the logarithmic section, the angular velocity becomes roughly constant.  The mass accelerates at constant power.  Finally, the steep end section of the transmission is reached, the actuator angular velocity quickly decreases, and there is a corresponding jump in mass linear velocity.

Plotting the kinetic energies of the actuator and mass, vs the input energy, \(\int{\tau\omega}\), you can clearly see energy trading off between the actuator and mass.  No energy is lost - the kinetic energies at the end are equal to the input energy:

Changing gears (ha), here's what a solid model of a pulley with profile this looks like:

And rather than a variable-radius pulley, the same transmission profile can also be implemented as a variable-pitch screw (or maybe technically a barrel cam).  A pair of cam followers ride in the grooves and act as the nut:

Stay tuned, prototypes coming up soon.

April 18, 2020

Titanium anodizing experiment

A month or two back I tried out anodizing a titanium bicycle fork.  Eventually I want to anodize, mask, and bead blast a frame along the same lines as Firefly , so the fork was a test-run to get a feel for the anodizing and masking process.

I did the anodizing by soaking a foam brush in a water and baking soda mixture, clipping one power supply lead to the brush, and one to the part, and brushing the part. 

If you're good at this, you can get nice gradients by adjusting the power supply voltage as you move along the part, but I definitely need more practice.  I love the purple and dark blue parts: 

I used some vinyl tape to mask out a pattern, and then bead blasted to strip the anodizing where it wasn't masked.  I didn't put any effort into this pattern since this was a test, but eventually I'll make a mask on a CNC vinyl cutter.  I need to find a blasting cabinet with a gentler media in it as well.

January 20, 2020

New High Power Motor Drive

I've been working on a large robot-size motor drive, with a design target of 75V, >70A (peak phase) continuous with heatsinking, and >150A peak.  In order to make the drive as compact as possible, it's split into three separate boards stacked on top of each other.  The bottom layer is the power layer with MOSFETs, ceramic DC link capacitors, and current shunts.  To minimize the thermal resistance between all the heat generating components to the world, the power layer is built on a 2-layer aluminum substrate board.  Above the power board is the logic board with microcontroller and gate-drive, built on a normal 4-layer 1 oz board.   On the very top is a breakout board with connectors for DC power input, the 3 phases, and communication/encoder

To get a better feel for how well the aluminum power board will work, I built a simple half-bridge using the same FETs as I plan on using for the final motor drive.  

Here's the first test-board, affectionately named The Half Bridge of Science.  It's just 2 parallel TPW3R70APL FETs per side, some 250V .47 uF ceramic caps, and a couple TLP152 gate-drive optocouplers to drive the gates.

Here's my dummy load for the half-bridge:  4 big "Pickle" resistors in a 2S2P arrangement for 1 ohm and lots of watts, with the boost converter inductor from a Ford Fusion hybrid in series.

Here it is with 55 DC amps (equivalent to 77 peak sinusoidal amps) going out of it at 50V on the input at a 50% duty cycle, basically perfectly maxing out the MITERS Lambda 50V 30A supplies.

Here are side-by-side shots of the board with a thermal camera at 55A switching at 10 kHz on the left, and 20 kHz on the right.  Here's it's poorly  clamped to a heatsink with no thermal paste.  At 10 kHz, the FETs (Sp2) ran at 57 C, and the ceramic capacitors (Sp1) at 55.  At 20 kHz, the FETs were at 65 C and the hottest of the ceramics at 75 C.  Looks like I need more DC link ceramics to handle the ripple current.

 There were a few mistakes with this board, so I expect thermal performance to only get better from here - I accidentally used the 1 W/m-K insulator instead of the 2 W/m-K insulator that's also available, and I misinterpreted the minimum via size, so the thermal vias were huge and sparse.  This seemed pretty promising, so I designed 3-phase version

Here's the populated 3-phase power board.  For testing, I got a normal FR4 board to confirm that everything works.  The copper power links between the boards were custom-machined, since I couldn't find any COTS pins that were as compact.

Here's the logic board, minus gate driver.  To start out, I'm trying the DRV8353S gate drive IC.  It's very similar to the DRV8323 I used on my smaller motor drives.  I went for the version without a built-in buck converter and use an external 15V and 5V buck to power everything.  Since the DRV8323 was good for driving 2 FETs very similar to these at 40 kHz, it should be able to drive twice as many FETs at 20 kHz.

The top of the stack has Wurth terminals to get power in and out, and some JST-SH's for logic.  I plan on replacing the logic connectors with something more robust like the Harwin Datamate L-Tek's I used on the Mini Cheetah, once everything is up and running.

The assembled stack:

Next time it will be a little bit thinner - I ordered the wrong male header for the board-to-board connectors, so the boards sit a little further apart than I originally intended.

Next to a coke can for a sense of scale.  The footprint of the drive is 45x45mm.

Hooked into a giant T-motor U15 I'm using for testing:

That's all for now.  There were two swapped pins on the logic board I had to fix with air-wires, but other than that everything seems to work.  Unfortunately I made some dumb testing mistakes and blew up the controller before I could push it too hard, and the stacked construction is almost impossible to disassemble.  But now that I know the board layout works I'm going to send out for the aluminum power boards.  Stay tuned.

December 15, 2019

Furuta Pendulum(s): Building some more

I built 6 furuta pendulums for a university controls class:

Since the original furuta pendulum was all built out of scrap I had lying around, I had to redesign pretty much everything from scratch.

Instead of using a hand-skewed motor like the original, I used a custom-wind of a T-motor gimbal motor.  These have low enough cogging torque to work pretty well:

Each motor gets a Microfit connector crimped on the leads, and a hollow shaft retaining-compounded in, for the encoder wheel to attach to:

The spindle has a pair of bearings very lightly preloaded by a wavy washer, and a diametrically magnetized magnet in the back which is read by a hall encoder:

In the base is a US digital 20k count/rev optical encoder which the wires for the pendulum hall encoder pass through:

SPI to the pendulum encoder gets passed over a 12-pin slip ring, with each pin doubled-up for (hopefully) better reliability:

In the base there's a board with power switch, mode switch, DC input jack, USB connector for serial communication, and programming header on it.  The mode switch allows the pendulum control to be done by the on-board motor controller, or by taking commands and passing back sensor outputs over serial to a computer running the controller.

I didn't want any screws to show, so the top is held on by 4 magnets:

Next to the original:

November 29, 2019

Building All The Robots

Here's a photo-dump of some pictures from assembling the herd of Mini Cheetahs.

150 Stators:

150 Front actuator housings with output bearing installed:

50 upper legs.  The upper link was consolidated from 3 parts to 2 for the new robots:

For assembly I got these fancy Wera adjustable torque screwdrivers, so I (and people helping assemble) could repeatably torque all the screws:

A handful of the 450 planet gears with needle bearings installed:

150 rings gears with OD's post-machined to size.  Ready to be pressed into the housings:

A sea of sun gears:

Actuator with stator and gearbox installed:

I made several minor design mistakes I had to fix.  Some holes in the sheet metal were 1mm off, so I made this fixture for re-machining the holes.  Small mistakes like this sunk a huge amount of time, because each on has to be fixed between 50 and 150 times.  Fortunately everything was salvageable.

Most of the actuators with stators and planetary gearboxes installed:

Part of one robot body with computer, CAN interface, IMU, RC receiver, and power supply:

The glorious actuator cabinet:

Computers and CAN breakouts:

Power supplies, body center-plates:

Belts installed, ready for tensioners and outer half of the leg clamshell.

A mostly assembled leg:

A nearly complete robot, waiting for the last few wire-management steps and final body assembly:

One robot during electrical and software testing, before final assembly:

Half a robot's worth of actuators:

Final assembly step of attaching the legs to the body:

Robot with top panel removed:

A pair of robots ready for final testing:

Most of the new robots lined up on the lab treadmill: