Archive for the ‘Equipment’ Category

Vintage ED-Lab Prototyping Station

Wednesday, September 16th, 2020

Spotted at a thrift store.

Of course anything with that many knobs and jacks caught my eye, and it’s in fantastic cosmetic condition.

Looking more closely, the function generator would have been a dream to have when first learning about op amps!

Careful with That Desulfator, Eugene

Friday, September 19th, 2014

I’ve achieved some promising results from my battery desulfator / dewhiskerer / whateverer … and some less promising results.

overcharged 9-V / 7.2-V batteries

The smaller the battery, the more important it is not to forget that the desulfator / dewhiskerer is on. This was, as I recall, only about a fifteen-minute overdose. The magic smoke, I assure you, got out.

Wanted: An EPROM Programmer that Works on a Mac

Friday, December 28th, 2012

And Linux. And old, high-programming-voltage EPROMs. And USB, naturally. If you know of such a thing, give me a shout in the comments — I can’t find any on Google, and I find plenty of links to other people who also couldn’t find them.

6502 Microprocessor, Apple ][, and Asteroids

A couple of weeks ago, I went to an annual holiday lunch with former coworkers and got to visit with an old friend. He was reminiscing about 6502 assembly programming on the Apple ][ and wondered whether I'd know where he could get one. I told him that I could probably loan him one or two; but (with a mischievous glint in my eye) that I have a couple of upright Asteroids arcade games and they run on 6502s and I’ve always wanted to reprogram one and write my own game.

Bump, set, spike. Yeah, he’s interested.

It’s not a completely impractical idea. I have a large schematic set that includes the addressing of the memory-mapped I/O and some rudimentary information on the operation of the vector generator board. There’s even a project to comment the disassembled ROM, which would give further hints about how to interface to the hardware.

If one were to undertake such a project, one would really like to use a USB-attached EPROM emulator so one could dump new code into the machine frequently and rapidly for testing and development. But at a bare minimum, one would need a stack of EPROMs and a programmer and ideally a ZIF-socket daughterboard to fit into the original EPROM socket and make it easy to swap EPROMs. As I have no Windows machines and do my electronics development on a synchronized fleet of Mac and Linux machines, a commercial EPROM programmer that I can use is going to be a little bit hard to come by.

Yes, I could run Windows under virtualization on my Mac; I think I may even be able to get a legal copy through my campus’s license agreement. But I’m not interested in going that direction unless I have to.

Isn’t it about time the world had a cross-platform EPROM programmer?

If All You Have Is a Logic Analyzer, Everything Looks Like a Timing Problem

Wednesday, June 27th, 2012

I just rewrote the Arduino Playground Nokia LCD screen code to use hardware SPI instead of ShiftOut(). (More work to do before releasing the code back to the community. And I know, not everyone will want to use the hardware SPI, but it should be an option.)

It looked like a trivial change, but after making it, the display’s screen remained blank.

Logic analyzer capture of bad SPI communication

But … but … but … the slave-select line is supposed to be held low during each byte of transmission. I know the ATmega’s SPI hardware doesn’t manage it for you, but surely the Arduino’s SPI.transfer() function does, right???

Working Arduino SPI Transfer

Logic analyzer capture of working SPI communication

No. You have to manage it manually.

void LcdWrite(byte dc, byte data) {
digitalWrite(PIN_SS, LOW);
digitalWrite(PIN_DC, dc);
digitalWrite(PIN_SS, HIGH);

SPI support is a perfect candidate to be a real object-oriented class rather than a functional library in OO clothing. Instantiate objects that know which slave-select pin is theirs, which may have different bit orders and clock rates and clock modes, and provide a transfer() method that sets all the registers, twiddles SS for you, and transfers your byte.


Faster Arduino SPI Transfer

BTW, notice on the second capture that manually bouncing SS using two digitalWrite()s takes longer than transferring eight bits of data using the hardware SPI. Start to understand why I want to transfer data using hardware instead of bit-banging?

Logic analyzer capture of working SPI communication with fast SS manipulation

Manipulating the SS bit in the port register directly is much faster … at the cost of being much less clear what’s going on to non-native speakers of C.

void LcdWrite(byte dc, byte data) {
PORTB &= ~ (1 << 2);
digitalWrite(PIN_DC, dc);
PORTB |= (1 << 2);

ATmega I/O Pin Hardware Toggling for Fastest Arduino SPI Transfer (That Isn't Any Faster)

ATmega I/O pin hardware toggle diagram

Logic analyzer capture of working SPI communication with fast SS manipulation

The C-based bit manipulation code above is already fast enough that the timing constraint has moved back to the programmer-selected SPI clocking speed and the ultimate solution -- using the ATmega's hardware-based pin toggle feature -- doesn't save any noticeable time, but the code sure looks cool but it's the right thing to do and it's a risky game to play to assume you always know correctly the logic level of the pin when you enter the function.

void LcdWrite(byte dc, byte data) {
digitalWrite(PIN_DC, dc);

(BTW, I had a dream recently -- which I did not know was not real -- in which the latest Arduino release added digitalWrite(pin, TOGGLE) to do the above. Imagine my disappointment tonight to learn it was only a dream. And no, I'm not the first to suggest that feature, by a long shot. Just, maybe, the first to think it had actually happened.)

PCB Milling with the MakerBot CupCake: Aluminum Leveling Platform

Saturday, March 19th, 2011

Last weekend I got my Dremel rigidly mounted in my CupCake for PCB milling, but the platform holding the PCB was attached with double-stick foam and was being deflected by the milling bit cutting the copper, causing considerable deviation from the intended milling path.

Leveling platform in MakerBot CupCake

Last night Steve cut some more aluminum plate for me and today I assembled a rigidly-mounted leveling platform to replace the stock build platform. The lower plate has holes matching the machine screws attaching the top of the Y stage, and I used slightly longer screws to bolt through both the aluminum plate and the original wood top into the Y carriage.

Leveling screw with nylock nut, upper view

I drilled holes in the corners, tapped the upper plate, and enlarged the holes in the lower plate. The socket-head cap screws spin freely in the lower plate while adjusting the upper plate’s height (I used a continuity meter to check when the milling bit was just barely touching the plate in each corner); then the nylon-insert nuts lock the screws in position. The whole assembly is quite rigid once tightened.

A number of designs for leveling build platforms use only springs between the two plates. I was concerned that without a nut, the machine screws might back out under vibration. Also, when extruding, having a platform with some give reduces the damage if you miscalculate the Z position and gouge the platform; but for milling, the whole point of this replacement is to remove any play in the platform.

PCB milled in MakerBot CupCake

The results were not tremendously better than before (left board, top row of pads; right board from commercial mill for comparison), so I slowed the feed rate to .1″ per minute and let the mill finish the rest of the board for five hours, just to see whether I could produce usable traces. The traces cut at an outrageously slow feed rate are much better than previous results, but still a bit, shall we say, interpretive for my taste.

Having watched the Dremel bit trying to cut the copper and having tested it handheld out of the machine, I do recognize that it’s not the right bit for this job. I have some carbide engraving bits recommended by Pierre (exuinoxefr) on the way from Hong Kong, and I think they’ll make a significant difference. In April.

Meanwhile, note the three pads in the center of the board. Even at only one stepper motor step per second, the board took a very consistently incorrect path under the toolhead. Also note that the diagonal lines look like they were drawn with a left-handed quill pen — NE/SW lines are thicker than NW/SE.

I believe this is caused by the considerable play between the original CupCake bushings and the guide rods. Tighter bushings would cause more friction, so they were chosen for a bit of a loose fit. Even though the platform is now rigidly mounted on the Y carriage, the Y carriage wiggles on the Y guide rods and the X-Y carriage wiggles on the X guide rods.

I’m extremely interested in the Mendel-inspired replacement X-Y assembly by Thingiverse contributor “twotimes.” It replaces the bushings with sets of roller bearings spaced around the guide rods; the bearings can be tightened against the rods and still roll smoothly. I intend to get in touch and ask whether it successfully removes the play from the carriages.

Leveling platform in MakerBot CupCake, closeup

Although my immediate interest is whether I can use the CupCake that I already own as a PCB milling machine, the enhancements I’m making will improve it as a filament deposition machine as well. The lack of leveling in my heated build platform prevented me from printing larger models; I’ve already drilled my heated platform to fit interchangeably into this new system. Smoother X-Y action from a replacement carriage can only help, too.

PCB Milling with the MakerBot CupCake and a Dremel (Almost)

Monday, March 7th, 2011

Dremel mounted in MakerBot CupCake (lower view)

My Dremel’s spindle had much more solid bearings than the Handy Grinder, so I mounted it in the CupCake tonight to try milling with it.

Dremel mounted in MakerBot CupCake (upper view)

It fit even worse through the Z stage than the Handy Grinder, but I remember having said something about the drill not even needing to be vertical as long as the bit’s tip made contact with the workpiece.

Dremel milling PCB in MakerBot CupCake

The XY platform wasn’t quite level (deeper cutting on the right than the left); but the real problem was that the Z stage was flexing. Not lifting off the Z stage guides — I could feel the acrylic bending as the tool direction changed. This demanded backing off the Z axis to an extremely shallow, ineffective cut to keep the milling tip from tracking the cutting direction as it did with the Handy Grinder.

Increasing the rigidity of the Z stage by bolting a large plate to it while mounting the Dremel is my top priority for getting closer to usable performance.

PCB after milling attempts

Straight off the mill after a variety of different attempts on the same workpiece. Parts of it almost look usable …

PCB after milling attempts, sanded

But sanded, it’s clear that in most places the bit barely scratched the copper and wasn’t even close to scoring through, because of the obligatory shallow cut.

PCB Milling with the MakerBot CupCake (Almost)

Sunday, March 6th, 2011

I crave a CNC mill for trace-isolation milling prototype PC boards and I haven’t managed to get my CupCake filament deposition machine calibrated so I can use it. (Build platform leveling and filament feed are my current showstoppers. I’ll get back to it.)

I knew that someone had proposed mounting a Dremel in place of the CupCake’s extruder and that MaskedRetriever had modeled a mounting bracket; but curiously, I haven’t heard any more about using the CupCake for milling. Surely someone has done it; I just haven’t run across it.

Last night while I was asleep, the facts and the immediacy of the situation came together: EAGLE can output trace-isolation g-code and ReplicatorG reads g-code and drives the CupCake. Really??? PCB trace-isolation milling is that simple???

Yes. Yes it is.

Circuit board layout drawn with pen in MakerBot CupCake


Low-Temperature-Cooked-Eggs in a PID-Controlled Crockpot

Tuesday, December 14th, 2010

The web is ablaze with projects for sous-vide (vacuum-sealed) and low-temperature / long-duration cooking. For those not familiar, the basic idea is that if a perfectly-cooked medium-rare steak is 120°F / 49°C in the center, by cooking traditionally on a grill, you overcook it everywhere but the center. Instead of cooking at a higher temperature and waiting exactly the right amount of time for the inside to warm up to the desired temperature, cook the entire piece in a water bath at the desired final temperature for a long time, then sear the outside to make it extra yummy.

PID-controlled crockpot cooking two eggs

My project this weekend, rolling around in my head for way too long and finally kicked into motion by EMSL’s omelette-in-the-shell post, is nothing new nor revolutionary; it’s merely mine. Like many others before me, I plugged a crockpot into a PID controller to turn the crockpot’s heating element on and off and maintain its temperature precisely over a long period of time.


Visiting San Diego

Thursday, October 14th, 2010

I’ve been in Anaheim, California for a conference this week, and I had the happy opportunity over the weekend to drive down to San Diego and meet in real life a couple of long-time blog friends, Scott and Ben.

Keith's Restaurant sign

I knew I was in the right place as soon as I looked out my hotel window.

Scott Smith's laser cutter frame

Scott is building a copy of bdring’s DIY laser cutter, which looks fantastic. Over the weekend Scott was assembling the sleds that transport the mirror over the workpiece. It’s a very nice design — everything is modular and everything is adjustable.

Fly-milled delrin and aluminum

Scott and his machining mentor Peter generously demonstrated milling techniques on Scott’s Sherline mill. Shown is a fly cutter that was just used to smooth the surface of delrin and aluminum blocks. Although it’s not mirror-shiny, I was impressed at how easy it is (with the right cutting and feed rates) to clean up a face. Peter also demonstrated the use of an edge-finder to precisely position a hole drilled into the edge of an acrylic plate for the laser cutter.

Scott Smith's CNC mill interface

Scott’s mill came CNC-ready with mounts for stepper motors on all of the axes. Scott designed and built his own interface between the PC’s parallel port and the stepper controls, adding indicator lights and the all-important stop button.

Lemons on tree

California is full of things I’ve never seen before, like lemons on trees

Ben Wynne soldering an EasyBright

and people other than me

Scott Smith soldering an EasyBright

soldering together EasyBrights. I don’t have the microscope, though, so I don’t have to make the squinty face.

Ben Wynne's RepRap Mendel

Scott and Ben have both been interested in my progress (and lack of usable results) on my MakerBot CupCake and Ben had just finished assembling a RepRap Mendel when I arrived. It’s much more interesting in person than any picture or video I’ve seen has captured. Compared to the CupCake, it’s incredibly smooth, quiet, precise, and easy to calibrate. On day two, Ben was already churning out prints I envied.

Between Scott’s mill, Ben’s RepRap, and Scott’s laser cutter, they’re set to prototype just about anything. I did suggest that Scott should build a water-jet cutter next, but he wasn’t having any of that. I may need some time to warm him up to the idea.

Project boxes at Fry's Electronics

We paid a visit to Fry’s Electronics, a legendary California electronics components and computer retailer. Although they’ve transformed into primarily a big-box electronics store, I was still impressed with their hobbyist / components section, including a larger variety of project boxes than I’d seen in one place and a good selection of components, including SMT passives, right there on the rack for the buying.

Min Smith playing guqin

Back at Scott’s house, his wife Min was practicing her guqin, a Chinese instrument you may remember from a Jet Li movie. Having been raised listening almost exclusively to western music (“We have both kinds!” — no, not that western music), I found its tuning even more unfamiliar than that of the guitar — it’s not tuned in regular intervals.

Sunset over the Pacific

To top it all off, we had time to wander down to the beach for a California sunset. Thanks, Scott, for an excellent visit with good electronics, great food, and local sights!

Installing Batteries in a Liebert GXT2-2000RT120 UPS

Sunday, June 27th, 2010

A while back, I bought a secondhand Liebert GXT2-2000RT120 uninterruptible power supply (UPS) on eBay. The GXT2 is a series of online UPSes, meaning that the output power always comes from the inverters off the battery bank; it doesn’t switch from utility power to battery power like an offline UPS. Besides eliminating any possible switchover glitches, online UPSes always deliver conditioned power at a constant voltage. The 2000RT120 is a 2000VA unit with 120V output — large enough to power all my servers for a good little while.

Liebert GXT2-2000RT120 UPS with battery cage disassembled

The batteries were due for replacement and the seller removed them to save on shipping costs. I got a UPS with a set of wires and no instructions on how to connect them.

Liebert GXT2-2000RT120 UPS battery wiring

Also one of the wires was compromised … but since it appears to be a ground wire, I figured no big deal if it shorts out against the cage. KIDDING!

Yesterday I figured out the wiring, installed batteries, and got the UPS set up in my server rack.