The finicky details are the easy part

For someone coming from a woodworking background, 3D engraving by laser is as far opposite from carving as it’s possible to get. Not just the medium — multiple machine passes from a specially-prepared bitmap — but also the understanding of what works well and what doesn’t.

When you’re carving something by hand, more details means more work. Every dot or vein or step is another set of moves with the knife/chisel/gouge/whatever.  Another chance to screw up. Every change in contour from flat to rounded to sharp is a change of tool or technique. Another …

Laser couldn’t care less. Dark area in the bitmap representing your picture? Crank the power up and vaporize more material. Light area? Crank the power down. Start at the bottom left (for my glowforge, at least), move right to the end of the bottom-most line of the picture, return to the left, move up a tiny fraction of an inch and do it again. It’s all just a raster.

In fact, complicated images may look better when laser-engraved than simple ones. When you’re working with a sharp blade, slight variations in your materials don’t generally matter a lot. The cut goes where you tell it. So if you want a smooth flat contour, you just make one. Working with a laser, those same slight variations mean that a little more or a little less material will be blasted away for the same combination of speed and power. Unless you sand or otherwise go over the surface to fix things afterwards, flat surfaces will never quite be flat. (And if you have to hand-finish everything, why did you use the laser?)

More fun yet, the laser itself can induce slight variations in about-to-be-zapped material because heat leaks from the area you’re cutting to the material on either side. So even uniform stuff like acrylic can respond non-uniformly to a 3D engrave. For example, one of my first attempts at a Vermont statehouse (depth map processed from an old model in the Sketchup warehouse).

statehouseengrave1

You can see how the surfaces that should be flat are more than a little bit rough.

 

But an image with a lot more detail and a lot more sharp transitions between shallow and deep comes out looking better, because the signal swamps the noise.

greenmanpic

(this one is based on a Green Man model at Thingiverse.)

Oh, and one other thing. Wood chars. And the deeper you cut with a smallish laser, the more charring. But you can clean that up with one final pass at high speed that takes only a cardstock-thick layer off the engrave. And it’s really cool to watch the surface go line by line from dirty to uniformly clean.

Posted in making | Tagged | Leave a comment

Glowforge!

gf1My laser cutter arrived a few weeks ago. It’s pretty cool. Partly because I’ve been anticipating it for the better (worse?) part of two years, but mostly because it’s just there.

I’ve used a laser cutter before, and this was the workflow:

  • Find a free time slot at the nearest makerspace, 45 minutes away, that matched my schedule
  • Arrive, sign in, turn on laser (but not compressor or exhaust system)
  • Transfer my design to the PC attached to the printer and open it with Corel Draw
  • Use the funky Corel plugin to set up which lines and areas would be scored, cut or engraved with which power/speed/etc
  • Put my material in the laser, making sure it’s tight against the stop bars.  Use joystick and guide block to adjust focus.
  • Transmit job to cutter, fire up compressor and exhaust system — good thing the proper order is printed on the boxes — and press big button to start job.

It wasn’t that much fun, and it was not conducive to experimentation. If I screwed something up, it would usually be weeks before I could come back.

Now:

  • Make a design in Inkscape or draw something on a piece of paper or cardboard.
  • Turn on laser cutter
  • upload design to web-based UI or put it on the bed and hit the “trace” button
  • Put material in and position the cut/engrave on the material
  • Select speeds and powers
  • push glowing button

If I screw up, I figure out how and redesign or just run the job again with new settings. And since I can use it often, I don’t forget how to work the software or the hardware between times. The 12-year-old has used it to make chachkes for his chess club; one of his friends came over and drew some monsters to cut out of cardboard. It’s easy.

My main complaint is that I am not worthy. Having it doesn’t endow me with new artistic or engineering skill, or even a working knowledge of multiple CAD programs. So that part is going to be a slog, but at least the incentive is there.

Oh, and another complaint: it only cuts through things like acrylic and wood, a maximum of about a quarter inch thick.  No aluminum or steel or granite. (But it does have some really cool low-power capability — when I was playing with a design for a bookmark, I engraved my tests on a piece of 20# copier paper without even leaving a mark on the back.)

More later.

Posted in making, possibly useful, toys | Tagged | 2 Comments

Arduino on Windows: not ready for prime time

I’ve been teaching a little middle-school mobile robot workshop at the 12-year-old’s school, and it’s been a mess. The kids did pretty well assembling the bots and wiring them up, but clearly I needed to spend much more than the couple hours of software prep per hour of workshop time that I’ve been doing.

My first mistake was downloading the newest version of theArduino IDE from the Windows App Store, like it says on the Arduino download page. (I needed that instead of old trusty 1.05, because I’m using Adafruit Metro Minis, and the board definitions come in via a Board Manager url.) Two sessions gone there, as maybe 1 out of 5 times we got a successful compile of even the Blink sketch. A few web searches later “Oh, yeah, they bundled a component in the toolchain that’s incompatible with Windows 10, and haven’t updated it yet.”

Fixed that by downloading from the main site and cloning the installer to half a dozen laptops, and Blink mostly started working, but nothing else did. Instead of failing with an error message the compiles just dragged on forever. Another session lost.

Sudden inspiration, and I deleted the Ardublock tool from all the machines, because who could possibly want to use graphical programming for middle schoolers who don’t like to type. Compiles now completed, but slowly.

Last monday I finally got to the point where we could consider uploading programs larger than an example sketch. Oops, a couple of the laptops didn’t have the Adafruit board definitions. Should be easy to download, right? Except this is a school, so the wifi is a bit wonky. And every time the wifi blipped out the IDE responded by freezing and a requiring a kill signal from Task Manager. Did I mention that these are consumer-grade laptops with woefully underpowered USB ports, so that every time a kid plugged their bot in without first disconnecting the tiny little gearmotor the Port menu greyed out and we had to restart the IDE again to get USB connectivity back?

 

Posted in going places, probably boring, things that don't work | Tagged | 3 Comments

Buy extension cords, not wire

When you’re in the sticks, your supply options are limited. That’s why the other day I bought a couple of extension cords instead of the bulk wire that was right on the other side of the aisle at the hardware store. I needed some 16-gauge and 18-gauge wire because the 14 and 12 I had wouldn’t fit into the terminal block of the gadget I was building.

The 16-gauge 2-conductor bulk wire, aka lamp cord, was 69 cents a foot. So was the 18-gauge. So was pretty much every other %#% bit of bulk wire they had on the shelf. The 15-foot 16-gauge extension cord was $6.99, and 8-foot 18-gauge was 4.99. And I have some nice plus I can splice in somewhere if I need them.

It makes sense from the store’s point of view, because most of the time for them the cost isn’t so much the wire as the employee getting the spool down from the shelf, finding the wire cutters, measuring out the length, and probably engaging in a little conversation to make sure the customer isn’t going to appear in tomorrow’s newspaper. But for me, with cutters and crimpers and strippers galore, it’s way easier to do my own. Of course if I needed a longer wire run than the extension cords allowed, I might have to fall back on the bulk stuff. But if I needed a longer wire run and was planning on using lamp cord, that would probably be a sign I was doing something wrong.

Posted in making, possibly useful | Tagged | Leave a comment

Solder first, Trim Headers Later

I had a bunch of Adafruit Metro Minis to solder up for a workshop I’m teaching, and –as usual — almost all the header strips were longer than they needed to be. I guess it’s much quicker to pack a few extra than to cut each strip to precisely the right length, and the offcuts will certainly find use.

But the cool thing is that the metro mini’s mounting holes are placed just right so that you can just jam the entire header strip onto the board and leave the excess hanging over the end. Then, after everything is soldered, go back and clip. Definitely faster, and almost certainly saved me from counting wrong on at least one strip. I don’t know if it was an intentional part of the design or accidental, but if it was accidental please do it again.

metroheaders

As you can see from the closeup, the mounting hole isn’t exactly in line with the headers, so there’s a little bit of a jam that holds the headers in place. Better yet. (Oh, and just by the way, I was originally planning to use Trinkets, but the short-duration USB thing is one more headache for students who aren’t that computer-savvy in the first place.)

Posted in making, possibly useful | Tagged , | Leave a comment

A really stupid feature set

In the process of getting solar panels, we talked ourselves into a heat pump with a couple of split heating/cooling units (gotta find something for all those nice renewable kilowatts to do). But it turns out that Mitsubishi designers are either not very smart or really, really want to sell upgrades.

In particular: there’s a button you can push to change from your current setting to a pre-stored alternate setting; there’s also a button for setting a timer to turn the unit on or off according to a schedule. But — unlike pretty much every conventional thermostat built since the energy crisis of the 1970s — there is no way to change the thermostat according to a schedule so that it’s, say, cooler at night than during the day. Some web searches suggest that we might be able to get a wifi-enabled add-on that would let us schedule our heating and cooling with an app. From anywhere in the world.

Oh, and all this is operated by a remote control that is not coded to any specific heating/cooling unit. So if you have two units (say, upstairs and downstairs) and it’s possible for a nice strong IR light to bounce off walls and through doors from the vicinity of one unit to the vicinity of the other…

Maybe when I build the IR-proof flaps that keep both units from doing everything in synchrony I’ll just add a controller that captures some of the signals and includes an RTC. (Even though the local rep has warned me that customers who tried to make their heating/cooling units change their thermostats according to a schedule have experienced unwanted Service Calls.)

 

Posted in probably boring, things that don't work | Tagged , | Leave a comment

Lubricate your fans

(tl;dr: if you have a fan that cools your hot end or heat break, lubricate it. It may solve some problems.)

It’s a good thing I splurged on the dual extruder for my printrbot way back when. Not that I use it very often, but entirely by accident it saved me from going down a diagnostic rabbit hole.

I’ve been printing car bodies for a little mobile-robot workshop at the 11-year-old’s school, and I finished a roll of PET+, so I decided to do the rest of them in PLA. Cued up a roll, did some test extrusions, started the print. Jammed. Cranked up the temp, ran about a foot of filament to clean out any PET+ remnants, started again, jammed again.

For about an hour I went through the same cycle with different rolls of PLA, cold-pull, “cleaning filament” etcetera. When I did a series of text extrusions, things were fine, but when I tried to print, jam. I got ready to disassemble my hot end, but.

Just to procrastinate a little, I decided to deal with the fan on the second hot end, which had been stopping randomly for a few months — it’s always on, because that’s the way the printrbot does the fans on the all-metal hot ends, but I hadn’t actually been printing with it, so I didn’t worry too much. So I read up on fan lubrication, and while I was doing the one, I figured I might as well do the other fan, on the hot end that I do use. It hadn’t been stopping or making noise, but what the heck.

Guess what. I thought the fan on the primary hot end was running fine, but apparently it wasn’t. Because now both fans are running, and I just ran the same hour-long build that was jamming consistently, without a single hitch.

Note to self: consider building a cheapjack tachometer to see when the fan slows down.

Other note to self: consider printing up little caps for the lubricant well around the sleeve bearing, because apparently cheap 30mm fans don’t bother with those.

Posted in possibly useful | Tagged | Leave a comment

Everything is parallel

Or at least multithreaded. I was prototyping some vaguely image-related ideas in Processing, and decided that I wanted to pick which image file I was going to mess with on the fly rather than hard-coding the filename and path into the program. Down the rabbit hole I went.

Processing has a function for using your operating system’s select-a-file dialog. But because of the way that I/O is handled, it can’t just return a value containing/pointing to the file you selected. You have to specify a callback that — oh, wait, the callback can’t return a value either, it has to modify a previously-defined global variable.  (The Processing language reference conveniently sidesteps this twist by providing an example that simply prints the selected file name to the console.)

So I put the file-selection magic in the setup function for my code, which runs before the main loop. The main loop ran, and then the selection dialog popped up. Huh? Oh, right, multithreading. The code in setup() returns as soon as it’s told the operating system what it wants and what callback to trigger. The fact that nothing substantive has been accomplished yet is irrelevant.

I have to admit to feeling just a tiny bit like a real programmer when I added a semaphore to the file-selection callback and the main loop. Now the main loop spins cheerfully at 30 frames a second doing nothing until I pick a file. Oh, and I want an output file too. Good thing my code doesn’t actually do anything.

Posted in possibly useful | Tagged | Leave a comment

The autopilot conundrum

This morning I stopped by a local school where some of the kids had crowdfunded a 3D printer (a printrbot Play) to see if I could help them get it working. I seem to have become the town expert, which is a frightening thought.

The machine had never worked for them. One of the axes apparently jammed somehow either during shipping or initial setup (the kid who was mostly in charge of it described multiple episodes of that rattling noise that comes with a skipping stepper motor and his immediate response of pulling the power plug). And when I got to it, it wasn’t responding at all.

So we reinstalled drivers, swapped in a known-good USB cable, reinstalled Cura, tried Cura on my linux laptop. Nothing. The furthest we got was “Opening serial port …. Closing serial port.” And on the laptop, “lsusb” reported no change when the machine was plugged in. Eep. A blown board didn’t seem that likely, and yet.

So as a last resort we turned the Play on its side and I held the ground shield of a spare USB dongle against the firmware-update pins (we didn’t have a jumper handy) while the kid plugged in power and pressed the reset button. This time “lsusb” reported an Atmel DFU device, which means the printrboard is probably OK, it’s just that the stepper blowback or the constant unplugging and replugging borked its firmware. So tomorrow I drop off a jumper, and the kid finds the instructions for downloading and reflashing. All in a morning’s work.

Except that before we ran through all that diagnosis, these folks were pretty much convinced they’d flushed $400 (plus shipping and filament) down the toilet. When you make a machine that Just Works and can be operated by people with little to no expertise — which Cura also helps enable — it’s really great.

But when anything goes wrong, it’s like throwing a toddler into the deep end.  All the simplifications and pre-built configurations that make a combination like the Play and Cura suitable for schools mean that you’re not going to run into the usual teething problems of getting a printer going. Only the unusual ones, which may even be hard for a relative veteran to diagnose and fix. And that’s a recipe for trouble.

Not that I have any good solutions. Either newbies still have to learn a lot more, or mass-market printers have to become orders of magnitude more bullet- and fo0l-proof (which means more expensive and/or much slower to arrive). Or veteran volunteers need to be thicker on the ground.

 

Posted in going places, things that don't work | Tagged | Leave a comment

There’s a reason some things are surplus

The 11-year-old has been bugging me for a few years now that he wants to build a crystal radio set, and sourcing the parts individually is something of a pain. So when I saw a kit for cheap at a surplus site, I thought: Cool!

Perhaps not. After a couple of tries we got the antenna wire wound onto the cardboard tube (barely — about half an inch so spare on each side when all the turns are solidly butted against each other) only to find that the holes in the molded, foldable plastic sheet that serves as the frame aren’t quite big enough for the tube.

Sorted that. Turns out the tabs that are supposed to lock the frame together when you fold the sides up, don’t. Sorted that too.

Then the 11-year-old, who had been doing pretty well with the instructions, asked me to interpret a paragraph that apparently referred to the two pieces of extra wire in the kit, one of them as “the second wire” and the other as “the other wire”. We duly hooked them up to the places specified. After spending several minutes with the wire stripper trying to find that tiny little thread of metal inside the tough rubber insulator.

Nothing. Nada. Less than the crackling we got just touching the earphone wires to metal objects.

So the kid went back to playing retro video games while I reread the instructions and looked at the circuit to figure out what it thought it did. Turns out “second wire” and “other wire” are synonyms. Time to undo and redo some tiny bolts and washers. Then I read further in the little booklet and found the instructions for connecting one wire to a cold water tap (because we live in a parallel universe where no one invented PEX or nylon and so all water taps are connected to ground) and then holding the other wire in your hand while with your other hands you hold the kit and move the little tuning ball across the antenna.

Did that, actually got some 60-cycle hum. It’s a beginning, and the kid was not entirely disappointed.

 

Posted in kits, things that don't work | Tagged | Leave a comment