A Planetary/Harmonic Hybrid Gearbox

I recently saw this amazing idea from Darren Schwenke on Hackaday.io:

https://hackaday.io/project/164732-mprt-modified-planetary-robotics-transmission

Which is (so far as I know) a brand new type of gearbox, inspired by a well known concept called a  “Harmonic-Drive“. Harmonic drives have been around for years and were used whenever light weight or small size was required (on the moon rover, for example). They work via the deformation of a flexible ‘strain wave gear’ to enforce the meshing between two gears with nearly matching numbers of teeth. This allows very small reduction ratios, in a compact space:

240px-HarmonicDriveAni.gif

Image from Wikimedia Commons, here

The red strain wave gear is where output goes. The downside is that a strong and really flexible gear like that is hard to make, and also difficult to couple the output from easily. Most designs I’ve seen require custom spring steel ‘cups’ which are precision manufactured via electro discharge machining or similar. (Although there are several awesome 3D printed versions out there. )

Darren’s idea with the MPRT gearbox is to take the basic concept of the harmonic drive, but remove the complicated strain wave gear and instead substitute ordinary planetary gears, which then do the same job of enforcing the meshing of the two outer rings at several key points:

Gear sketch v01.jpeg

The final gear ratio for this is around 66:1 reduction, which is amazing for a single stage:

IMG_2322.JPG

I liked his design, but didn’t want to wait a long time to 3D print it, so I drew up this one for my laser. I created the gears just using the involute generator in inkscape, then added all the bits and bobs to hold it on the motor and mount reliably. I laser cut the pieces out of bamboo ply, and screwed them together with M3 fasteners.

A NEMA 17 stepper motor sits underneath and drives the whole assembly:

IMG_2323.JPG

Also, I’d like to mention one of my favourite construction techniques, using M3 nylon standoffs as thumbscrews. I’ve had to put various bits of the gearbox together and pull them apart half a dozen times while prototyping, and being able to fasten bits securely by hand is a huge time saver.

I used a few dollops of furniture wax, which seemed to make it run smoother:

IMG_2328.JPG

The torque is large but not ridiculous, and I can make it stall by hand if I really try, but overall it’s still remarkable for a single stage gearbox. (Also, not many moving devices have sliding wood-on-wood surfaces, so if you made this out literally almost any other material you’d likely have better results. )

Files up here for anyone that wants to make their own:

https://www.thingiverse.com/thing:3576090

 

Posted in Uncategorized | Leave a comment

Unwisely driving 17 stepper motors from a bare arduino

This is a quick and dirty way to get a whole bunch (up to 17) small stepper motors working off a single arduino, with no extra circuitry whatsoever.

Why would you want to do that? Maybe you want to make a wall display, a clock or some other interactive object, and you can’t afford thousands of dollars for motors, and hundreds of hours spent wiring up boards for ‘proper’ drivers.

(Side note, the back story to this is for a while now I’ve been wanting to make a big-ish display simulating vector fields, and I was scratching my head trying to come up with a way to do it that wasn’t ridiculously expensive. I ended up finding one that was not only cheap, but lazy too!)

Anyway, here’s the finished display:

finished display.JPG

The main ingredient is the 28BYJ-48 stepper motors, which is a geared motor which is dirt cheap. They’re mass produced and apparently designed for air conditioning louvres?

Ordinarily when you use a stepper motor you need a dedicated constant-current driver to avoid damage. The essence of this project is how to avoid the cost and complexity of a driver.

The cost of the parts were:

  • $3 each for the driver and motor pair , from Little Bird Electronics.  (If you really wanted to, you could get them even cheaper in bulk, and also by not including the driver)
  • $10 for the arduino, from eBay.

I used 17 motors, so it was $61 AUD all up. Which is ridiculously cheap for something with almost twenty channels of precise motion control.

Here’s what it looks like inside:

A smarter person would have numbered them so they were correct as viewed from the front. Next time, Gadget, next time.

Also, the wiring is also about as simple as you can imagine, I basically just jammed the motor wires into the arduino’s digital pins and slammed the box shut before they could fall out again:

Science

Here’s how to do it yourself. But, before we begin:

If you try this, you might break your arduino.

If you try this, you might break your arduino.

If you try this, you might break your arduino.

And also,

If you try this, you might break your arduino.

Everybody clear?

This approach works*, but relies on several things which might not occur all the time. Don’t assume you can get away with this in other designs.

*Actually, I’ve really no idea if this will work long term, all I can say is that my one has been running for several hours now, and the arduino hasn’t yet caught fire, appeared broken, or visibly lost steps on the motor. Win!

Trick 1: The arduino digital outputs have a non-zero resistance

This is the reason you often see people getting away with plugging LEDs in to the arduino pins directly, without a current limiting resistor.

(For years I thought it the ATMEGA chip had actual current limiting circuitry, but turns out it’s just the internal resistance or something? At any rate, don’t assume you can abuse other chips in the same way. )

I don’t know for sure this is required, but I’ve found in the past the ATMEGA/arduino is way more tolerant than microcontrollers for badly connected loads, so I’ll assume it’s relevant.

Trick 2: We convert the motor from unipolar, to bipolar,

(This has the nice side effect of doubling the resistance of the motor, further reducing it to the point where the arduino chip can drive it without circuitry).

The motor from the factory has a coil arrangement we want to change from this, to this:

We do this by:

  • opening up the back cover,
  • cutting off the centre tap ( red wire)
  • Dremelling out the circuit board to disconnect the two pairs of coils from each other

Trick 3: The 28BYJ-48 stepper motor is crap. And that’s good news for you!

Or, to be more precise, the motor has (before the gearbox) only 32 steps per rev, or 11.25 degree step size.

Why this is relevant is that we want to be able to power down each motor’s coils between movement, so that the arduino is only powering a single motor at a time. But we also want the motor to not lose steps the next time it’s powered up again.

A big 400 step NEMA17 motor (such as you might find in a good 3D printer) has 0.9 degree step size. If you power on and off a big 400 step motor repeatedly, it’ll jiggle slightly. If it jiggles more than 0.45 degrees, then when it’s started it’ll be dragged to the next notch in the rotor, and hence the wrong  location. This will happen most when under mechanical load, or the influence of belt tension, etc. So ordinarily, turning motors off translates into lost steps, and poor position accuracy. Hence for a 3D printer, they typically leave the motors powered up, or under a reduced current whenever they need it to hold position correctly.

Because the 28BY-48 motor has a huge 11 degree step size, (and it’s behind a gearbox) it’s really unlikely any mechanical jiggling is going to move it far enough to be a whole step away from where it should be. So the next time it’s powered up, it’ll be pulled back to the exact location it was before!

And that’s it. With code to carefully avoid running more than one motor at once, it can be scaled up to as many motors as you like, and you only need to stop when you run out of arduino pins.

I think am going to enjoy making displays with this technique, and it’s quite satisfying to watch the dials spin around in person.

 

Files and code here for anyone that wants to make their own:

https://www.thingiverse.com/thing:3544304

Have fun, but don’t blame me if you damage stuff by trying this.

Edit: I’m still playing around, but it seems like you can get loss-free movement of at least 6,  8, 10+ motors at a time. Damn, this works way better than I have any right to expect. 

 

Posted in Uncategorized | 2 Comments

Tangent Ruler – Draw circles passing through two points

Unintentionally I’m going to continue my tradition of making projects involving rulers.

I saw this picture online: https://imgur.com/t/aiko/mu96ohu and I thought it was too cute a technique not to try out for myself. I did a couple of minutes sketching in Inkscape, and then had it lasercut shortly thereafter.

Here’s how to use it. First, simply drive a couple of nails through your favourite table or work surface:

IMG_2031.JPG

Then, using a pen, draw out the circle while keeping the ruler pressed against the two nails:

IMG_2033.JPG

You should end up with a perfect(ish) circle that passes smoothly through both nails.

I’m going to try to remember this trick, I can see it being useful for laying out parts for machining, or to make shapes based off existing features.

Files here for anyone that wants to make their own:

https://www.thingiverse.com/thing:3405583

 

Posted in Uncategorized | Leave a comment

Huygens’ Ruler – Drawing Interference Patterns

Here’s a quick project to make it easier to draw examples of interference patterns and wave behaviour. I call it Huygens’ Ruler:

ruler overview v01.JPG

It’s based on the idea of Huygens’ principle, the idea that every point on a wavefront becomes the source of spherical wavelets that make up the next wavefront.

Here’s how you use it. Drive a nail or thumbtack through some cardboard, and drop the ruler on top ( I just nailed into the desk of the makerspace, because meh, that table’s already seen a lot worse):

drawing in action v01.JPG

Using the Huygens’ Ruler

There are circled markings for every integer wavelength, and also holes for half-integers. This means you can easily make diagrams with different colours for the ‘peaks’ and ‘troughs’ of a wave, and see by the intersections where they reinforce, and where they cancel out.

close up interference drawing v01.JPG

Green dots are where the two waves reinforced each other, and red dots are where the waves cancelled out. 

Here’s a few nifty demonstrations that are possible to do with the rulers. First off, we can see how changing the only wavelength of the two sources changes the interference pattern spacing:

changing wavelength v01.JPG

Left: 3cm wavelength, Right: 4cm wavelength. Sources are 10cm apart in both

Next, we can see the effect of changing the phase of one of the sources. To do that, instead of putting the nail in the first hole, we use one of the later ones:

Setting phase on ruler v01.JPG

Setting the phase of the source at 90 degrees

Here’s the effect that has on the resulting pattern:

Beamforming example v01.JPG

Top drawing: No phase difference. Centre nodes head straight to the right.     Bottom drawing: 90 degree phase shift between sources, and the resulting beam is ‘steered’ downwards.  

This is the basis behind the idea of Beamforming, and also represents the simplest possible example of a phased array.

I added markings to the body of the ruler so that it’s possible to measure what the phase is at any point. This makes it easy when a wave hits a gap in a wall, for example. In that case the wave will be re-emitted starting at that phase again. (e.g. if the ruler hits the wall at the 270 degrees mark, you would then draw the next source with the nail on the 270 degree point.)  That way a blue line always represents the same amount of distance from the source, via whatever holes or path you use (modulo the wavelength).

I’m rather happy with this project. I had a few rounds of revisions, but I’m quite pleased with the final result, and it’s pretty fun to draw with.

Double double slit drawing v01.JPG

Soothing. This is my version of those adult colouring books, with the added bonus that it involved using a hammer 

Files are here for anyone that wants to make their own:

https://www.thingiverse.com/thing:3248998

 

Posted in Uncategorized | 1 Comment

‘Born Ruler’ addon for Qubit/Bloch Sphere

Here’s something I was planning to make ages ago, as part of the Bloch Sphere project, but it slipped my mind.

It’s a visual demonstration of how the Born Rule, which describes how complex ‘probability amplitudes’ are related to probability.

Say we have a single quantum bit, represented as a point on the surface of the Bloch sphere. (Note: depending on how our qubit is implemented, the 3 dimensions of the Bloch sphere aren’t necessarily the same 3 dimensions of ordinary space, but let’s ignore that for now).

Let’s say we’ve recently measured the state of our qubit, so we know which way it’s pointing (the pink arrow in the model), which we’ll call ‘1’.

If we measure the state again at the same angle,  there’s 100% chance of measuring  a ‘1’. Dead certain, no ambiguity about it. Spin up v01 small.JPG

If we rotate our qubit so it’s pointing down, we have a perfect 0% chance of measuring a ‘1’. Again, dead certain, with no ambiguity:

spin down v01 smalls.JPG

But if we rotate it so it’s pointing to the side, we will have a 50% chance of measuring a ‘1’:

spin right v01 small.JPG

Another way to say this is that if we measure it at right angles to the way we measured it last time, there’s absolutely no correlation between the previous measurement and the next.

And any other angle in between those will be slightly correlated to the last result, and become more correlated as the old and new angles of measurement become closer.

Here’s the files for people that want to make their own:

Born Ruler: https://www.thingiverse.com/thing:3235423

Bloch Sphere: https://www.thingiverse.com/thing:3053421

Posted in Uncategorized | 1 Comment

Lasercut bobbin rack for sewing thread

Here’s something I came up with today to make it easier to organise sewing thread.

The problem is how to organise about four or five tubs worth of these:

before v01.JPG

As an experiment, here’s what the exact same collection would look like if it was densely packed. Much more space efficient, but completely useless when it comes to actually retrieving thread to use:

possible stacking v01.JPG

“Do you have any lemon yellow thread?” “Er… I’ll let you know in an hour or so”

OK, so is there  a happy medium between those two? Something that shows the colours, but allows what Adam Savage calls ‘first order retrievability‘?

Here’s what I came up with:

rack pic v01.JPG

I make no apologies for variations in the colour ordering here. Deal with it.

Here’s the same collection from before, with the overflow and different sized bobbins on the right:

after v01.JPG

So not as efficient space-wise, but way more efficient for actually using it. If we need to know whether there’s any cerulean-off-turquoise thread, that’s something you can see in less than 5 seconds.

I made versions for the 3 bobbin sizes I found in the box. They’re something like 20mm, 27mm and 41mm. No idea whether that’s all the sizes available, or if there are other common ones?

large rack v01.JPG

Medium and large rolls can be accommodated too.

Also, there’s a row piece for each sized rack, that keeps each column at something close to the densest packing. There’s also nothing to stop you mixing the columns to accomodate multiple sized bobbins in one box, but it just won’t be as space efficient.

The whole thing is designed to fit nicely into the Quadrant 5 litre storage tubs, so that it’s both portable, but keeps the dust off. I use a ton of these boxes of for both part and project storage. They’re available from ‘the reject shop’ in Australia for a few dollars each.

Files here for anyone that wants to make their own:

https://www.thingiverse.com/thing:3221313

Posted in Uncategorized | Leave a comment

Why the Bragg Condition Sucks

(With sincere apologies to both Sir William Bragg, and also Sir William Bragg. I’d have loved to meet you both, and also see your famous bubble raft demo in person!)

At a late stage in the spiral double slit project, I suddenly realised I should ‘sanity check’ my results against the equations we learned in high school for the double slit experiment.

I then had a small panic attack when my numbers didn’t match up…

After spending a day digging through my code & notes looking for errors, and plotting out different simulations, I suddenly realised why my numbers weren’t working. This is the equation we learned in high school:

Essentially it describes the locations that satisfy the Bragg condition, that is, the locations where the phases differences of the two signals reinforce (0 degrees) , or cancel out (180 degrees).

However there’s a gotcha here. The vectors contributed by each slit aren’t constant in length, but vary in a Sinc pattern along the screen.

So, with that in mind, let’s see how my simulation matches the high school version. The animation shows what happens if the slit width is varied, but everything else is kept constant.

The blue dots are the Bragg condition for cancellation. The green line should always touch the dots if they’re a good predictor for the trough locations on the screen.

 

As you can see the equation doesn’t predict all the trough locations by a long shot. It’s certainly better than nothing, but by itself the Bragg condition (phase information) doesn’t tell the whole story as far as interference is concerned. The magnitude information also need to be taken into account.

 

Posted in Uncategorized | 1 Comment