Joining GT2 belt into closed loops

The task.

I was building a little robot, and I wanted belt-driven four-wheel drive using GT2 belt (an inexpensive timing belt common in 3D printers). The problem: I only had bulk GT2 belt, not closed loops (see extremely advanced diagram on right).

For my first attempt, I used end-slips to cut out the teeth from part of the belt, then super-glued it to the back of the other side. This works okay, but the joint was very inflexible owing to the near doubling of the thickness, and it eventually came apart after a few days use.

I’ve since found a better solution. What we need is a backing: a material I could adhere to the back of both sides of the belt, and which would be strong, flexible, and compatible with superglue.

I found such a substance in my trash can! When you buy 3D printing filament, it usually 2016-06-19 19.51.38bcomes vacuum-sealed in clear plastic to keep it dry. The parts of this plastic that have been heat-pressed together are strong and flexible without stretching — it’s the perfect belt backing!

So I cut a narrow strip and super-glued it to the back of one end of the belt. Superglue dries hard, so I put down the glue in stripes so that the belt would still be flexible. After it dried a little, I glued the other end of the belt on, making sure to provide glue at the joint itself as well.

I let it dry under a weight for a few minutes, and the joint came out almost as flexible as the belt itself. The resulting bond has no give when stretched, goes over pulleys well, and survived the maximum tension I could put on the pulley by hand.

Pictures of belt on the end result (a little yellow robot):

2016-06-19 19.49.44b 2016-06-19 19.50.20b 2016-06-19 19.50.50b 2016-06-19 20.04.26b 2016-06-19 20.04.32b

MC Escher “Concentric Rinds” in 3D

I recently saw the M.C. Escher exhibit at the NC Museum of Art, and one piece that stuck with me was Concentric Rinds:

MC Escher - Concentric Rinds, 1953

The geometry bugged me for a while until I finally figured it out and sketched it up in OpenSCAD:

mc escher - concentric rinds - document


mc escher - concentric rinds - anim - transparent

Here’s a cleaned up version of the OpenSCAD script to generate it – it’s surprisingly simple:

module torus_strip(r, width, thickness) {
    rotate_extrude(convexity = 10)
        translate([r, 0, 0])
        square([thickness,width], center=true);

module the_ring(r) {
    torus_strip(r, 2, 0.5);

$fn = 256;

for (r=[50,40,30,20]) color([1-r/50+0.5,1-r/50+0.1,r/50+0.1]) {

    rotate([ 0, 0, 0]) the_ring(r);
    rotate([90, 0, 0]) the_ring(r);
    rotate([ 0,90, 0]) the_ring(r);

    for (tt=[-60,-120]) rotate([0, tt, 0]) 
        for (t=[0:45:360-1]) rotate([ t, 0, 0]) 

It took a while to figure out the geometry, but I finally got it when I saw there were three rings that were simply orthogonal, plus two arrays of 8 rings that intersected at the octagons. That’s how I modeled it above.

I also played with the animation stuff and got this:

mc escher - concentric rinds - xformer - anim2

Which I think is also neat.

That’s all.

AC power control without touching AC power

2015-11-04 10.49.30bIn this article I’ll show a simple 3D design for a servo mount to control a light switch for about $3, plus some electronics to drive it with a neat little interface. This article explains how I used it to regulate my air conditioner, but the basic bracket allows control of any U.S. standard wall switch.

I just moved into a new office and there’s a window-mounted air conditioner. There’s a remote control to set the target temperature, but the unit isn’t smart enough to turn off at night. Instead, there’s a physical wall switch so you can turn it off with your actual physical hands, like a barbarian.

2015-11-02 16.00.07b

I’m not going to put up with a hot office in the morning, nor will I let the unit blow cold air all night and weekend when nobody’s around.  Instead, I will Build Some Crap.

Details after the break. Continue reading

How to make a ton of clear LEDs into diffuse LEDs

2015-11-01 02.41.35.mp4_snapshot_00.03_[2015.11.03_16.22.52] - labeled

Step 1: Make a rock tumbler out of some threaded rods, bearings, a motor, and a spaghetti jar:

2015-10-29 16.34.04b

Step 2: Get sand. If you don’t live in a beach/desert, you can probably get some for free from a landscaping supply place. (They charge per ton, so when you ask for a cup, they will think you are a crazy person and just give it to you.)

Step 3: Chuck the LEDs and sand into the thing and run it overnight.

That’s all.

Here’s what not to do:

  • Use an orbital sander to wiggle the jar. It’s super load loud and doesn’t do much.
  • Add water. This just gives you corroded LEDs that arent even diffuse.
  • Run it with so much power that centrifugal force sticks everything to the sides and it vibrates itself off your desk overnight.
  • Run it with so little power that it stalls.
  • Fail to own a variable power supply so that your only choices are 12V and 9V (see above).
  • Make your first shaft coupler out of gaffer tape. I ended up designing and 3D printing a simple shaft coupler.
    2015-10-29 20.45.18b


Generating 3D-printable pieces directly from EAGLE PCB designs

2015-10-24 19.52.06-design2

NOTE: Everything involved in this post is available for download here.

2015-10-24 19.46.08bI while back, I made this PCB that acts as a big daisy-chainable two-digit 7-segment display using the WS2803D and discrete LEDs. The pic to the right is a shot of the first use of these PCBs: a big sign that says “4561”.

It works great, interfaces easily with AVR/Arduinos, and is cheap to build.

One thing that’s not great about it is the amount of light leakage from the LEDs — if you put some kind of light diffuser in front of it, you see all kinds of reflected and refracted bits of light. Here’s a shot of a clock I made out of these boards with white gaffer tape as a diffuser:

2015-10-24 01.10.03c

Look at all those random patterns of light…it’s shameful.

Today I figured out a simple way to 3D print a light mask for this board using design elements straight out of EAGLE! Here are the high-level steps:

  1. In a new layer in your EAGLE board layout, draw the stuff you want to 3D print.
  2. Do a series of conversions to get that EAGLE layer turned into an OpenSCAD script and then a STL for printing.
  3. Print, jam on board, enjoy a better looking display.

Here’s a shot of the light mask applied to the left two digits of the clock:

2015-10-24 19.58.30b

Full directions after the break. Continue reading

Here’s some huge wallpapers made of math

I don’t feel like writing a big post explaining all of it, so the summary is that I spent a few hours playing with colorspaces, Hilbert curves, and image generation, and produced some stuff that looks kind of neat.  I’ve posted everything in one big wad, and you’re welcome to poke at this ugly undocumented code if you like. I also posted prior Python art scraps.

All the images in this post are shrunken down — the full size loss-less PNGs are on the github with the code. This is the kind of thing it kicks out:


Basically, I walk a 3D color space via a 3D Hilbert curve, mapping it to a 1D scalar. I then walk that 1D scalar on a 2D Hilbert curve, rendering each color in place in an image. Here’s an example of a 1D sequence of colors walked:


From there, I fiddled with the various outputs in Paint.NET to make pretty pictures, e.g.:
denty-rainbow-small(Original here) I was able to render the above one at a ridiculous resolution (8192×4608), so it looks awesome spanning four monitors.



(Original here)


(Original here)

Check out the github dump for more.

Using Nylon trimmer line with a PrintrBot and Gaffer’s Tape

2015-06-30 14.20.20bPeople have been experimenting with Nylon trimmer line for a while, and I wanted to give it a shot, since nylon is tougher, more flexible, smoother for moving parts, and can handle higher temperatures.  I found a few small tips which I believe are novel, specifically that (1) gaffers tape makes a fantastic print surface while preserving inductive level sensing, (2) minimum print time per layer is the key to getting good prints with Nylon at high temperatures & speeds, and (3) dickbutt is the best test model in the world.

Summary of findings for the impatient:

  • Trimmer line usedRino-Tuff Universal 0.065 in. x 275 ft. Trimmer Line (Home Depot).
  • Print surface: Gaffer’s Tape. It makes an excellent surface — the nylon adheres quite well, but the tape can be peeled off to help free parts like painter’s tape can for PLA.  No alcohol or glue necessary. I haven’t seen anyone online using it for nylon, so maybe I discovered something new?
  • Get the right size: Make sure your filament is less than the rated size for your printer, not merely close (2.0mm didn’t work in my 1.75mm printer, but 1.65mm did).
  • Don’t trust the size on the label: My “1.65mm” filament was actually a fairly consistent 1.40mm.
  • Cura print settings — after experimenting, I arrived at the following settings (Cura profile INI here):
    • Temp: 230 C
    • Speed: 40 mm/s
    • Fan: off!
    • Minimum layer time: 10 s (essential!!)
    • Retraction speed: 10 mm/s (slower than default)
    • Retraction amount: 1 mm (less than default)
    • Retraction combing: on
    • Travel speed: 160 mm/s (much faster than default)
    • Bottom layer speed: 10 mm/s (slower than default)
  • Heated drying unnecessary: Drying of the filament may help, but I found I didn’t need to given the right printer settings (sufficiently high temperature).
  • Be systematic in your experimentation for print settings!

More details after the break.

Continue reading