![]() |
|
|
Back from the playa! (Friday September 12, 2008) movie here.Well, actually I've been back for a week now, but it's been a busy week of unpacking, cleaning, re-packing, clearing out old stuff in the garage to make room for new stuff. Oh, and the water heater blew up. Anyway, Burning Man was a blast this year. It was a really dusty year, though. The winds were not violent like they were in years past, but they were strong and steady for several of the days. The Bureau of Land Management (BLM) moved the city about a mile north of where it has been the past few years, and the surface of the playa was really, really soft. This often made it difficult to ride a bike, and it also made it dustier when the wind blew.
Eh, it's Burning Man, you're gonna get dusty. Anyway, for dust wasn't as much of an issue as the soft playa. Where the ground was hard, the surrey was pretty easy to ride, but as soon as you hit a soft spot, all forward momentum is lost and you pretty much have to stand on the pedals to move forward. Or else everyone piles out and pushes. But it was very easy to conscript volunteers to help pedal this thing, and that was a big part of the fun.
Much to my surprise, I didn't experience any electrical issues at all. The wiring I'd been so worried about held up fine. I didn't encounter any reboots or other sequencer weirdnesses. The 12 Ah gel-cell battery worked out great, as did the 18W Costco solar panel I charged it with. I'd brought a spare battery, figuring I might have to leapfrom them, but I had way more batery capacity than I needed. Either the batteries are very conservatively rated, or my saucer draws way less juice than I'd budgeted. I never did get around to measuring the current draw once it was complete. Anyway, since the batteries were kicking ass I rigged up another 50 feet of LED rope light to decorate the camp with, and used the second battery to power all that stuff. I did however experience some mechanical issues. Since the saucer was transported on an open trailer, I did my best to keep my speed down to 45 or 50, and for the most part I did that. But still, with all the wind and buffeting and what-not, in the 700+ miles between San Diego and Black Rock City I probably blew out about 80 or 100 zipties. Fortunately I brought - almost as an afterthought - the mother lode of zipties with me. So it took about an hour or 90 minutes to get that straightened out, and then the saucer was fine. But on Thursday night, the frame that holds the saucer broke. The frame was made from thick-wall 1/2" copper tubing, and the vertical sections each had a 4' piece of 3/8" rebar inside for extra support. So the vertical sections were fine, but two of the elbows blew out. They just couldn't handle the stress and vibration, and one of them cracked and the other one sheared off completely. So I limped back to camp and parked it for the night. The next morning as I ate breakfast, some random guy came by to compliement the saucer. I thanked him, we start talking, and I explain the broken frame dilemma. Turns out he works on boats, is a pretty good fabricator, and goes off to get his angle cutter (!) which he just so happens to have at his camp. Minutes later we fire up the generator, he's cutting rebar, sparks flying everywhere, and he bends two pieces into a really tight radius. A little bit of gaffers tape and I'm back in business. So thanks again Jay, and Mood, my hat's off to you.
Bringing home the gold! (Tuesday August 19, 2008) Stayed up late Friday night writing automated sequences for the controller, so that it would switch modes automatically if you want it to. Was vexed by a few bugs writing it, got past those, everything's working fine, go to bed. Saturday morning, go down to the garage to flash the new code into the real saucer, and all hell breaks loose. Keeps rebooting, freezing, etc. Could not figure out
why. Ran the debugger, and I'm seeing stack corruption. I saw that a few days earlier in my office, and it was
caused by my desktop saucer having too many lights on at once, causing the lab bench supply to sag, creating
a brownout condition. But that was a bench supply - now I'm running off a big-ass-motorcycle-battery-lookin-thing.
At some point I notice it has something to do with how fast the lights are changing state and guess that maybe it's
a noisy Vcc or ground or something.
When I laid out this board I was in such a hurry to make a 5 pm cutoff that I neglected to put any bypass caps on.
I seem to have gotten away with it so far, but could this be it? I'm starting to panic. So I pull the saucer apart,
extricate the processor board (it's pretty well buried in there inside a metal enclosure), pull it out. Look in my
capacitor bin find a 10 uF cap. Great, so I find adjacent power and ground pins, solder it on, and offer a prayer
to St. V. EssEss (patron saint of bouncy ground references). Lo and behold, problem appears solved. Bypass caps are good, mmm'kay? With that behind me I leave the saucer running for several hours and no more crashes, and a couple other glitches seem to have gone away as well. That evening, I loaded the saucer into a rented trailer and haul it over to the County building for the Midnight Madness Bike Ride. (I previously had managed to talk three other friends into going on an 18-mile ride with a completely untested, and rather top-heavy flying saucer surrey.) They have a Light The Bike contest, and the surrey won top honors, beating out a disco-ball bike and two Maglight bikes to bring home a certificate from REI for a new bike. Boo-yah! Steady as she goes (Friday August 15, 2008) Those interface boards didn't work out. They're really nicely built. Perhaps a little too nicely. The board bonds a 40 pin IDC connector out to forty screw terminal things, but four of those are grounds. I figured I'd be able to cut a few traces, add three jumper wires and I'd be in business. Unfortunately, on the two layer board, the upper layer is all ground plane, and the pins are also grounded on the bottom of the board as well. I found this out after I dremeled a moat around one of the pins on the bottom yet it was still grounded. There's no way to cut it from the top, so I'm stuck. I returned the three boards I did not butcher, and then ordered a bunch of those screw terminal things off Digi-Key. They're here already, and when I get some time I'll work something up using perfboard.Some video of the saucer in action here. Since this video was made, I've replaced all the black zip ties on the top of the saucer with white ones, and trimmed them. Looks way better. And I've discovered that if there's a problem with the control panel cable, the sequencer goes crazy. So I'm coding up a fallback position incase the control panel dies again. Passed the smoke test (Monday August 11, 2008) Yesterday I finally got the flying saucer all wired up. I'm estimating there is about 450 feet of wiring in the saucer, and thats not even including the 150 feet of LED rope light. And about 500 zip ties. Anyway, once it was wired up, I tested each channel individually by hand, then finally hooked it up to the lighting controller for some flying saucer gratification. It looks pretty cool! (if I do say so myself). I'll post some video when I get a chance. Anyway, all the segments work, no short circuits, nothing overheated, all seems okay. I was gonna weigh the saucer just out of morbid curiosity, but I decided to keep moving forward with the only test that matters - putting the saucer on the surrey and see how it rides.
I thought it might be a bit top-heavy, but as heavy as the saucer is, the surrey is a lot heavier.
I was also worried
the saucer was going to be too heavy for the uprights. The six uprights each have a four-foot piece of 3/8" rebar in them, so it wobbles and flexes
a little, but it ain't going anywhere. So long as nothing vibrates loose I think it'll be OK.Speaking of things shaking loose, underneath the saucer still looks like the telecom closet from hell, but not much to be done about that now. I got to thinking about my idea of making a 40-pin-IDC-to-something-else adapter and Googled around on the web and found a guy who sells the exact thing I'm looking for. It's meant as an accessory for one of their products, but it's perfect for my lighting controller. It has a 40-pin .100 header and bonds all those pins out to screw terminals. I really should have looked for those things about a month ago, but, eh, add it to the list of regrets. I ordered up four of them 2nd day air, so they'll be here on Wednesday. I think I might still use the barrier strips (now that I've invested about 20 hours wiring it up, grr), but get rid of all the connections to the thin & fragile ribbon cable wires. Instead, I'll just use a regular 40-pin IDE cable with my controller on one end and this guy's adapter boards on the other. I still have a shitload of that 18/2 alarm wire, so I'll use that to go between his adapter board and the barrier strips. Ought to be a lot more robust. I've been trailer shopping some more, and it sounds like I'm stuck with U-Haul. All of the other equipment rental places don't want you taking their stuff out of San Diego county. I mean, I guess I could lie and say I'm not, but I guess I'd be screwed if I cooked a wheel bearing in Truckee or something. So I went back to U-Haul, and made some more measurements. Part of why I'm rushing to complete this thing is that I still haven't done much Burning Man shopping yet (though, I'm mostly set with crap I bought in previous years). Still, I need to get on that. But the other reason is that I had been hoping to break in the flying saucer at the San Diego Midnight Madness Bike Ride which is this Saturday night, the 16th. I rode my playa bike in it last year, and it was a lot of fun. Also, they have a prize for 'best illumination." Last year the prize was a $300 REI gift card! So I got my eye on that sucker. But also, it's a fun ride, people bring all kinds of crazy bikes, and it'll be a good test run before the playa. I'm trailering the bike to Midnight Madness, so I'll also be able to play some trailer games to see if I can get by with one of the smaller and less-expensive trailers. (Friday August 8, 2008) You know, over the course of this project, I've probably had to make a hundred or more decisions along the way. Some are trivial, some were momentous (such as the choice of spring steel wire frame for the saucer), but today I ran up against the decision that so far is the one I regret the most. When I did the first 16-channel prototype EL-wire sequencer, I used those white .156 Molex KK connectors for the output terminals. They are really heavy duty, but they were overkill for EL wire, and they consume a lot of board space. So when I made the 80 channel version, I use two 40-pin .100 connectors just like what an IDE drive uses. While I saved some board space, the density of that connector is probably what forced me into a a six-layer board. But whatever, I busted out the Visa card and dealt with it that way.All along I've known that I'd somehow have to transition from the ribbon-cable world to the world of 18-gauge copper wire. I ordered some sample Molex automotive connectors, and they're pretty cool, but the ribbon wire would get shredded the first time you pulled one apart. So instead of connectors, I decided to use screw-terminal barrier strips. The idea was that I could strip and tin the tiny ribbon cable wires and screw them down on one side, and then screw down the 18-gauge cables on the other. And I was thinking, well if a piece of rope light broke on the playa, it would be pretty easy to swap it out - just cut the zip ties, unscrew the wires, and screw in a new one. I guess even typing this, that ratonalization sounds plausible. Well, after having spent about 10 hours today fabricating this thing, wow, we have a winner for Most Regretted Design Decision. You don't see barrier strip screw terminals much anymore, and I guess now I know the reason for that. But even besides all that, what I have now is an amazingly dense concentration of wires. Every output wire in the whole system converges on an area maybe 9" by 9" and the more you add new wires, the harder it gets to add new wires. But the thing I'm most worried about are the spindly little ribbon cable wires. As a ribbon, it's pretty robust, but once you start splitting the wires out into a fan and trying to connect them individually, ugh. They just weren't designed for that. And after about 10 hours I'm maybe 3/4 way done. God help me if one of these pops loose on the playa, and forget about replacing anything. As it is, the cavalcade of overhead wiring might prove irresistable to the random raver whose just hopped in back and wants to start tugging on wires to see what happens. So. Once this thing is all wired up, I'm going to add another piece of plywood to hide the patch panel from prying eyes and fingers. Ugh. Nightmare! The good thing about repetitive mindless tasks like screwing wires to barrier strips is that it gives you a lot of time to think. My first thought was, maybe I should stop what I'm doing, run upstairs, and see if I can bang out a design for a simple little board that has a 40-pin .100 connector on one side, and four ten-pin .156 KK connectors on the other side. I wonder if I can make that happen on a two-layer board? Then I thought, hmm, one week turn, have it overnighted, I'm probably looking at a grand or more, assuming I can even do it in two layers. So I decided to take my lumps and keep working. Then I thought, I bet it was those damned 40-pin connectors that drove me to 6 layers in the first place. I wonder if I had used .156 KKs right on the sequencer board instead, if I could have gotten by with four, or even two layers. Well, it's something to think about if I decide to respin the board and do another one of these next year.
The Day the Earth Stood Still (Wednesday August 6, 2008) My new Aluminet isn't in yet, so I got impatient and sacrificed the Aluminet I used on the EZ-UP last year. Was almost the right size. Wow, whatever doubts I was having before, I gotta say the Aluminet really makes the thing look like a flying saucer.
While all this has been going on, I've also been wiring up the LED segments. It was very weird to take a brand-new 150-foot roll
of expensive-ass LED rope light and start chopping it up into pieces. They sell a little kit which caps off one end, and makes a quick
connect to the other end so you can hook it up. Those kits are expensive, and since I need a whole bunch of them, I shined all that
on. Instead I went to SD Electronic Supply, my new favorite surplus
electronic supply place, and bought a bunch of 18/2 alarm wire. Once the wire is cut, I go in with an X-Acto knife and cut away 1/2" or
so of the PVC housing, then use wire strippers to expose the two wires inside. Use a bench power supply to verify the polarity, and solder the
wires on. In lieu of the rope light caps, I bought a bag of 250 3/8" vinyl thread protectors. They fit very snugly on the rope light - a perfect
fit! So slip one on the unwired end, and on the other end, use the angle cutters to nip a slit in the end of the thread protector, feed the
wire through that, and then finally slip it over the end of the rope light. So both ends of the rope light segment are fairly protected
against the elements. I hope. The playa will reveal all.
A funny thing happened, though. That roll of 150 feet got me about fifty-something segments, so I started in on the second roll, and guess what? The distance between cuttable intervals is completely different! It's not the kind of thing I would have thought to check beforehand. I figured the two rolls were identical... and they're not. I sat down and muttered a long "ohhhhh shiiiiiiiit!" You see, the cuttable interval was the central dimension of the saucer design. The spoke length was derived from the cuttable interval length, and the the spoke length determined the saucer dimensions. Literally, everything about the saucer's dimensions centered around length of an LED rope light segment, and that length changed by about eight inches when I switched to the second roll. At some point I realized that I had pilfered some rope light off that roll to do the initial LED rope light tests. Those segments were my first attempt at soldering LED rope light, so they were somewhat butchered and very badly soldered, but there they were. Added those to the mix and counted them out, 59, 60, 61, 62, 63... 64. I had exactly the number of segments I needed to complete the saucer. So much for spares, but at this point, let's just get the damned thing done already. The first shot shows what a chair full of 64 rope light segment assemblies looks like, and the second one is the saucer with the last segment ziptied in place and illuminated. I connected each segment to an bench supply as I ziptied it down. That way I could get the rope positioned in its brightest orientation, and also double check for shorts and miswirings.
I am a little worried about the weight of the thing. Dang, it got heavy in a hurry. The frame itself was not that heavy, the wirework isn't that heavy, the rope light, yeah, that's a little heavy, the Aluminet weighs nothing. The paint added a surprising amount of weight. I am reminded of the famous story of Dr. Ferdinand Porsche, on the eve of a big race, ordering all the paint sanded off their cars to save some weight. Germany's international racing color later became silver as a result. But I digress, this saucer is effing heavy. Nothin' a lick of paint can't fix (Monday August 4, 2008) OK, I am finally declaring the saucer and frame finished! I built a new wooden frame with some additional cross members and started painting it. In between coats I'm working on the control panel. The original prototype control panel had two pots, but I think the playa would
destroy those in short order, so I'm going with an all-pushbutton control panel for Burning Man. We used to get a catalog that had all kinds of
crazy switches in it, including video game buttons, you know like Pac Man and Defender and all those Neo-Geo games. But I found
a new local electronics surplus place in town that had some pretty epic pushbuttons that light up, so I loaded up on those.
There's a perfect spot for a dashboard on the surrey, so I grabbed a piece of plywood, cut it to size, found an old can of oak
woodstain and some verathane, and voila, oak dashboard. So now I've got a bunch of things drying. A surrey with no fringe on top (Thursday July 31, 2008) So this surrey off craigslist came without a canopy. Previously I'd made treks to Industrial Metal Supply, Home Depot, Lowes, and Marshall's Hardware in quest of suitable material. The frame has slots where the supports go, it's just a question of finding a suitable replacement material. The surrey is Italian, so all the tubing sizes and thread sizes are metric, so that presents an additional challenge. The material I liked the best was 1/2" EMT conduit. Pretty strong for its weight, but alas, too thick. I ended up going with 1/2 inch thick-walled capper pipe. On the plus side it's light and it fits perfectly into the slots. On the downside, it's kind of soft and looks like it would bend pretty easily. My neighbor offered a good solution - slip some 3/8" rebar inside the copper pipe. Rebar is playa-tested, sounds good to me.
First there is a circle (Tuesday July 29, 2008) So, the process of actually making the saucer itself has been pretty interesting. Don't feel like blogging that elsewhere, so here it goes for now. A long time ago I decided to use steel wire for the frame, because that's what my bike basket is made of. It's strong, it's light, how hard can it be? So I got out the dial caliper, measured the basket wire (appx 0.091") did some research on the web, then started making some drawings. Originally the saucer was going to go around the body of the surrey, but that would have made the saucer about 12 feet in diameter. I actually went down this road, and even ordered up enough wire to make it before coming
to my senses. A saucer like that would require a door or some other way of ingress/egress, which means the rest of the
saucer needs to be that much stronger... yuck.So after some hemming and hawing, I punted. Instead, made the saucer be the canopy overhead, that way it can be a one-piece thing. Do some measurements, make some calculations, and I arrive at a saucer 7 feet in diameter and 14.4 inches deep. First thing to do is form the rings for the inside and outside of the saucer. Soldering the wire, that alone required some investigation. I started out with a propane torch and some plumbing solder, and that went nowhere in a hurry. Turns out the hot tip for welding spring steel wire is "silver bearing solder" which has a melting temperature of about 410 degrees Fahrenheit. Also, rosin flux will not work, you need acid flux. The flux breaks the surface tension of the metal so the solder will stick to it. You can buy both silver bearing solder and acid flux at many hobby stores. Turns out this spring steel wire is popular with RC airplane freaks. I bought one of those big Weller soldering guns (you know, like the one your Dad has in the garage, with the two scary-looking heating elements and the headlight that goes on when you pull the trigger) and went to town. First I'd tie the two pieces of spring steel wire together using galvanized baling wire, then drop a few drops of the hydrochloric acid-based flux (ooh, dropping acid) on the, um, joint, and then use a cotton swap to swab the flux around a little bit. Use the iron to heat the joint (takes 20 or 30 seconds) and then the solder flows. First I had to build a simple wooden frame to hold the pieces in place so I could work, and just started tacking more and more bits of wire together. First there were four spokes, then eight, then 16, then 32, and then finally 64. Originally there were supposed to be 72 of them at 5 degree intervals, but the divide by two thing worked much better in practice, so 64 spokes it is. Even then, it was pretty wobbly. I think the secret of the bike basket is that it's under tension - if I took my bolt cutters and cut a wire, it would probably spring outward. Since my saucer is not under tension. it wobbles a lot. A LOT. So the wooden frame isn't just a construction jig, it's gonna have to be part of the finished product. Crap. What can you do? I did add a third middle ring, and that helped a little.
Saucers and Pulse Widths (Tuesday July 22, 2008) Most of the past few weeks have been spent working on the damned saucer. You know, next year I need to find someone to collaborate with - they can do the car, and I'll just stick to the electronics! Well, it's not as bad as all that, but it certainly has been an adventure, and I guess if I had more energy right now I'd start a separate blog for that. The capsule summary is that the saucer part of the flying saucer is made of spring steel wire, which I've never worked with before, and I spent a lot of time figuring out the right solder, the right flux, how to work with the stuff, and even then I had to make some pretty radical design changes just to be able to have something. It kinda feels like I turned a corner today, finally. I've also been busy ordering stuff off the web and starting the regular Burning Man preparation process. I'm leaving three weeks from today! Woo-hoo! I mean, oh shit!The good news is that the electronics are going well. The circuit is stable, the software is stable, and when I can steal a few hours here and there I add more stuff. For the last week or so I've been playing with PWM (pulse-width-modulation) to vary the brightness of the LEDs, and in the process I am learning some amazing things about LEDs. So, the whole deal with PWM is that instead of varying voltage to control brightness, you vary the duty cycle of the LED. So, if you just turned the LED on and left it on, that would be a 100% duty cycle. If you turned it on half the time, and turned it off half the time, that would be 50%. Obviously, if you do this slowly, LED comes on, LED goes off. Not too exciting. But if you speed up this switching, you see flicker, and then once you start switching faster than 60 or 70 times per second, you stop noticing the flicker. I am actually switching at ten or twelve times that rate. Most of the time. Anyway, you don't see it as flicker, you just see it as a difference in brightness, but the amount of brightness does not map linearly. PWM is popular for controlling motors, because it makes it very easy to send a controlled amount of power to a motor. You want half power? Give it a 50% duty cycle. Done! The eye, however, like many of our senses is not linear. So if I pulse an LED with a 50% duty cycle, it doesn't appear to be half as bright, it looks more like 80 or 90 percent brightness. Which is good in some ways - it means I can lower power consumption (more on that in a sec), but it means that I need to come up with some sort of a logarithmic curve to map duty cycle to apparent brightness. So I did that, and the crazy part is that I'm having trouble getting the LEDs to operate dimly enough. For example, I want to have a mode where the LEDs fade on slowly from complete darkness, and it's really really hard to do that! Awhile back I coded up a loop to turn the LED on, then immediately turn it off as fast as I could, wait for a bit and start all over again. The on time was 53 uSec (53 millionths of a second) and the off time was 27 mSec (27 thousanths of a second). This works out to a duty cycle of 0.2%. Yet the LED's glow was quite visible. I was unable to lengthen the off time, because I was already at around 42 Hz and the flicker was pretty noticeable. I eventually hand-coded a much tighter loop, and it helped a little, but not a lot. Part of the "problem" is that I used a bunch of shift registers to control the MOSFETs which switch the LEDs. These shift registers rock because I can talk to lots and lots of channels pretty easily, but I have to do a lot of bit-banging and thrashing around, and that limits how fast I can talk to the hardware. I never considered that I'd run up against this limitation. I do have a few fade-on fade-off sequences written, but the trick is that I can't let them run too slow or the sudden-ness which with the LEDs come on to their dimmest possbible state becomes noticeable. Eh. I am happy with the power consumption, though. For all intents and purposes, all of the power dissipation in in the LED rope light. The controller itself is drawing a negligible amount of current. I don't think I even need to bother with a power switch. "Off" means turn off all the LEDs and maybe slow the processor clock down. So for many sequences I'm going to try PWM-ing the LEDs at 50% or so, thereby either doubling battery life, or halving the size of the battery I need to power this thing. Much Progress (Wednesday July 9, 2008) I was away at HSMF for a week but I'm back at it. A Digi-Key package was waiting for me too, so last night I built a simple control panel with four switches and two pots and got that working. The "wheel" has been done for awhile, but I only had 64 of the 72 LEDs going until this morning. A few weeks ago 300 feet of green LED rope light showed up, and I've done a few preliminary current measurements (many thanks to my bro on that one) and everything is looking pretty good. I still have some things to work through, but it doesn't look like it's going to get hot, burst into flames, or anything like that. I wish I had more than five weeks to get everything together, but I'm just going to keep banging away on the thing and hope I get it done in time. As far as the sequencer goes, the basic pieces are there. There are still a few unknowns, such as whether I'll be able to do PWM (pulse-width-modulation) on 80 channels fast enought to be able to control brightness without visible flicker. And I'd like to have some sequences with the LEDs fading on and off gradually, which means I'll need to bitbang some sort of a PWM envelope generator.The big thing now is the flying saucer itself. Earlier today I did some calculations and ordered up some .091" steel wire, similar to what bike baskets are made of. Strong for its weight, and hopefully it's reasonably easy to solder. Rev B! (Tuesday June 17, 2008) Well, I've got a lot more experience with PCB Artist under my belt. This is the free PCB software distributed by Advanced Circuits. One of the things that drew me to PCB Artist in the first place is that schematic capture (drawing the schematic, which is abstract and deals with resistors, capacitors, integrated circuits - basicaly a specialized draw program) is intergrated with layout (which is concrete and deals with the footprints of actual physical components, drawing copper traces, and so on.) One of the big weaknesses of Pad2Pad is that there's no schematic capability. It's strictly a layout program. Connect Pin 1 of this part to Pin 7 of that part, but it has no notion of what those parts are. So you have to remember. Which is okay for a simple circuit but gets increasingly cumbersome as the circuit gets more complicated.
I had experimented with Orcad, which is a very expensive and very complicated set of programs, but it came with its own set of issues,
and I couldn't get a few of its features to work for me. So I decided to press ahead with PCB Artist, and for the most part
it does seem to do the basic stuff correctly. Changes made in schematic view do get propagated to layout view, and vice versa.
The library of parts that it knows about is pretty limited, but there is a library editor that allows you to define new parts,
both from the schematic view side and from the layout side.
The other nice thing about PCB Artist is that it does autorouting, which means it figures out how to draw the copper traces to connect Pin 1 of this part to Pin 7 of that part, without that trace crashing into and shorting out againt every other trace on the board. Again, this ends up being a big deal when you have lots and lots of parts with lots and lots of connections between them. On my final design, between the two 40-pin connectors, the 12 or so ICs, there were hundreds and hundreds of "nets" that all had to be connected, and PCB Artist does that for you. Unfortunately, it doesn't appear to be all that smart about how it does it, and I was not able to get my design to route in four layers. This meant going to a six-layer board, which is a lot more expensive. This is partly a result of using old-fashioned through-hole parts instead of fancy high-fallutin surfance mount parts. But I as I might have written elsewhere, I don't have the tools or the patience to assemble, debug, and rework surface mount stuff, even though I could have gotten by in two layers, probably, with a surface-mount design. Still, I didn't expect the thing to go to six layers, either. Who knows, maybe that's Advanced Circuits' way of drumming up more revenue. Anyway, since I was going to six layers I decided to stop being "nice" with the parts placement and just cram them in as tight as I could, make the thing as dense as possible, since a smaller board is a cheaper to buy. By this time I'd already spent a lot of time struggling to get it done in four layers, and i struggled some more, but in the end I got all 80 channels to fit in a footprint that's about 4.5 inches by 4.75 inches. That's the whole freakin' thing, microcontroller and all. And depending on whether you stuff the board with MOSFETs and jumpers, or triacs and resistors, the same board will be able to drive LED rope light or EL wire. In fact, it might even be able to do some of both. But I haven't tested that, and in any event, I'm getting ahead of myself. So, I finally got the layout done, got the boards done on a two week turn, and got them back. I had a few problems with the Microchip PIC development tools (which I use on almost a daily basis on my day gig) but once those were squared away I was off and running. I'm currently using a PIC 18LF4525 processor, but the nice thing about PICs in 40-pin packages (and perhaps within all package families) is that they seem to be pretty much interchangeable. This one has plenty of RAM and FLASH memory to do the job, and costs all of seven bucks in single-unit quantities. The telco jack in the corner is so I can plug it right into Microchip's in-circuit debugger, which of course I'll pack away in a baggie and bring to Burning Man in case I decide to make any software changes on the playa. Oh, man, I really hope that doesn't become necessary. But I am getting ahead of myself again. This thing is going to drive individual segments of LED rope light, but before buying that (which is expensive as hell right now) I decided to make a test fixture. So I bought a bunch of "12 volt LEDs" from a crazy place in Hong Kong. These are LEDs in series with a dropping resistor, all nicely shrink-wrapped in what appears to have been a really labor-intensive process, yet they cost about what bare LEDs would have cost from Digi-Key. Viva Hong Kong! So I ordered those up, and I bought a piece of sheet aluminum from Industrial Metal Supply (I love that place) and drilled 72 holes in a circle. The idea is that I'd make something that can fit on my desktop to I can hopefully write most of the animation sequeces (and see what they look like) in my office.
What a difference a year makes (Sunday May 18, 2008) Jeez, is anybody even reading this thing anymore? I have no idea. Well, since my last entry, I went to Burning Man, got fired back up for '08, and I'm back at it. A few things have happened. At the burn, I noticed how many mutant vehicles are using LED rope light instead of EL Wire. It's a hell of a lot brighter, although it does create a different effect. Ultimately, I decided that I wanted to switch to using 12 volt LED rope light, and started figuring out what changes I would need to make to the circuit. In some ways, LED rope light will be simpler - no high voltage AC to deal with, for starters, and it's easier to control the brightness in software than it would be with EL wire. The circuit topology is pretty similar - instead of using triacs to control the high voltage AC, you use MOSFETs to control the 12 volts DC. After poking around on the Mouser and Digi-Key websites, I made a happy discovery that I can get by with a MOSFET in a TO-92 package - this is the same package as the triacs I had been using. I then realized that the pinouts were essentially the same. In fact, the only difference is that you drive the triac through a resistor, but not with a MOSFET. This means that if I add some dummy resistor/jumpers to the schematic, I can create one circuit board layout that will work for either EL Wire or LED rope light. To go with LED rope light, stuff the "resistor" locations with jumpers and the TO-92 locations with MOSFETs. If I change my mind and go back to EL Wire, stuff the resistor locations with resistors and the TO-92 locations with triacs. This is huge!The other big thing that happened in the last year is that in my consulting gig I got a lot of experience with PIC microcontrollers, and I'm ditching the Jackrabbit single board controller. So my board will have a PIC which runs the whole show. Much much simpler, much lower power consumption. There's no downside here. I decided to go with 80 channels, but there are connectors so I could gang multiple boards together if I wanted to go with 160 or 240 channels. I know, that's pretty obscene. I can't imagine neededing that many channels, but it didn't cost me much board space to add the ability. finished the schematic this week and I'm working on the board layout. I'm using PCB Artist, which is a freebie schematic capture / board layout package distributed by Advanced Circuits. The first time you use this software you have to order your boards theough them, but then the software gets unlocked somehow and it will then generate Gerber files which you can take to any board house. The company I'm consulting for uses Advanced Circuits a lot and they've had very good luck with them. I hope to have the layout done and the circuit boards ordered by the end of the week. No news, really (Friday March 30, 2007) No real progress to report. Mostly because, due to an unforseen scheduling conflict, my art car project is on hold for BM07. I'm still going to Burning Man, but I'm going to have to split pretty quick right afterwards and won't be able to deal with having an art car in tow. It's just more than I can bite off right now. But drop me a line if anyone's interested in using this sequencer for your art car or installation. That might be a more sane way for me to contibute this year.The other thing that's happening is that I've been doing a lot of consulting work lately, and I haven't had a ton of time to devote to this EL Wire project. At this point I still plan to bang out an 80-100 channel EL-wire circuit board because I figure I can always find a use for something like that. :) On another note, on this consulting job I've been doing my first development work on the PIC processor. Nice development tools, easy to program, and the devices are cheeeep! I may decide to switch from the Jackrabbit to the PIC. Happy Boxing Day (Tuesday December 26, 2006) Sorry, nothing new to report. Too busy with the holidays, you know. In thinking about the new EL Wire driver, though, here are the things I need to keep in mind:
It is my density (Tuesday December 19, 2006) Slow day today. But, for shits and giggles I played around a little in Pad2Pad and without optoisolators I'm able to squeeze 40 channels into 1.75 inches x 4.7 inches. To put that in perspective, my current 16-channel prototype is 1.75 inches x 6.5 inches. A tragic waste of real estate (Monday December 18, 2006) Before I could do this experiment, I needed to do a little bit of research, and that took longer than expected. As I probably mentioned earlier, I found a few examples of other people driving their triacs with TTL signals. But upon closer inspection things were not quite so straightforward. For example, this guy's topology is a little bit different from mine. Since my board's already laid out and sitting on my desk, I needed to find an example with the exact same back-end topology as mine. This topology is the same, except that pins 1 and 3 appear to be mislabled on his schematic, which if Guerroloco based his design on it, might have been why his first one blew up. Anyway, this Rhino 8 schematic is clear enough even if the triac pins labels are incorrect, and his board layout I *think* confirms this since the parts are inserted from the other side... bleh. Anyway, I went for it. My TTL output is driving triac pin 2 though 100 ohm resistors (although the eagle-eyed observer will notice that the last few channels are 220s. I ran out of 100s.) The nice thing about the opto isolators is that the EL driver is completely floating from the rest of your board. That's what make it sane. If you get rid of the opto isolators, you need to pick one of the EL driver outputs to tie to ground. Which could get exciting if you choose the wrong one. So I took a DMM to my El Wire driver and determined that one if its outputs is tied to its own input power ground. So that's the output that needs to be tied to my board's ground as well. All I needed to do was swap the pins on the Molex connector. Ok, now we're ready. So I fired it up and.... kaboom! Just kidding. Actually, this proto worked great. Seems to behave identically to the one with optoisolators, in fact. So that's good news. Now, when you look at the photo, you can see just how much unnecessary board space there is. I guess that's why everyone else's sequencers are so much smaller than mine! I think I kinda went crazy with the connectors, too. I probably won't go with these monster .156 KK Molex connectors for the final one. They seemed like a good idea at the time, but I think they're kinda overkill. Everyone else seems ot be doing fine with tiny little connectors. Where to from here? You know, when I first started this project I had decided that if I could get this prototype to work without optoisolators, I would immediately then build the densest, most massive EL sequencer I could. And I still may go down that road. But right now I think I'm going to have a beer. Then, I think I'm going to take a deeper detour into the EL inverter design. WIth a little help from my friends (Friday December 15, 2006) Well, I told my brother (a bona-fide electrical engineer) about my little experiment, and now he's gotten interested in the problem. So we'll see where this goes. I was originally planning to use a commercially-available EL driver. But I'm on a diversion to see if I (ok, we) can figure out a way to make a robust frequency-programmable EL wire driver. Stay tuned...Also, I'm pretty much out of EL wire, so last night I bought a bunch of EL wire and also a few assorted inverters from Coolight.com and CoolNeon.com. Also, my package from Mouser arrived, so when I get some time I'm stuff a board without optoisolators and try driving them directly with TTL. Smoked rabbit, anyone? (Tuesday December 12, 2006) One of the interesting things about EL wire is that the color of the wire changes if you excite it at different frequences (this is true only of blue-green EL wire which actually has a clear jacket, so what you're seeing is the true color of the phosphor. The other colors of EL wire use a colored jacket.) Anyway, so if you excite blue green EL wire at different frequencies, it glows different colors. So, awhile back I decided to experiment with this. I bought a power transformer from Mouser with a 2 volt output. This part is intended to be used as part of a power supply, you put 120 vac in, you get 2 vac out. My idea was to hook it up backwards to my function generator, so my function generator would act as an oscillator and I can dial in any frequency I like, step that voltage up through the transformer, and see what happens. So, I did this several weeks ago and I got all kinds of groovy colors, but the EL wire didn't glow very brightly. So I did some measurements.On the function generator side, the current was about 150 mA @ 3.5 v. On the EL wire side it was drawing about 1 to 3 mA @ 150v. The function generator was clipping, so it was apparently having trouble driving this load. Wouldn't it be cool to have the sequencer change the color of the EL wire as part of the sequence? So I left that as an interesting diversion to pursue down the road. Last night as I was reading my Jackrabbit manual, I read about its open-collector sinking outputs. They can sink 1A from a 30V source. Well, gee, there's a fine high current source right there. If you use that as your oscillator, with a 30 volt swing you could use a 1:5 turns ratio on the tranformer and probably light up a mile or two of EL wire. So I wrote a little code to change the state of one of these outputs every millisecond to generate a 1 kHz square wave. I hooked up a transformer and away I went. What could go wrong? I was able to make the EL wire glow, though not very brightly, and I was about to do some voltage measurements when I decided to halt the processor. Very bad move. You see, I had no current limiting and no DC blocking. I just hooked the transformer right up to power and this sinking output. As long as the processor was running, there was a 1kHz signal there. But as soon as I halted the processor, this output no longer oscillated. I was now driving 5 volts DC into what looked like a dead short to ground through this open-collector sinking output. Mr. Jackrabbit gasped a little puff of smoke. Heh. Oops. My bad. I toyed around with the Jackrabbit some more and I definitely torched that one pin but fortunately everything else seems to work. Still runs and I can still download code. Got lucky. I better get smarter quick, though, because I only have two more of these high-voltage high-current outputs left. :) That's probably it for awhile (Saturday December 9, 2006) Well, I'm probably done dorking around with the Jackrabbit for now. The next phase will be to see if I can eliminate the MOC3031 triac driver ICs. Seems like lots of people get by without them. You don't have to look very hard to find one - here's one, for example. So my next step is to build up one of my boards without the MOC3031. If I can make safely make this work, it will be a huge gain. I'll be able to reduce the 80-channel version to about half its size, or I can go up to about 160 channels. How cool would that be? But, I'm out of parts, and it will be several days before my Mouser order arrives. In the meantime, I threw this webpage together to document where I'm at.What this product needs is more features (Friday December 8, 2006) The new Jackrabbit has been performing very reliably. I almost feel bad about the mean things I said about it before. Serial communication has been very reliable, and it's been smooth sailing. And I've learned a little bit about the multitasking extensions to C they've added. (Strictly speaking, the language used to program the Jackrabbit is not C. It's very C-like and they call it "Dynamic C," but it's not ANSI C. I've discovered several things that are perfectly kosher in ANSI C which generate errors in Dynamic C. A little annoying, but I'm getting used to it.)The Jackrabbit comes with sample code, but it's not great. A little on the embarrasing side, really. They have code, for example, that demonstrates how the buttons work, but it doesn't handle debounce all that well, and they have button code and LED code pretty tighly coupled, and not all that well documented. The two should be completely separate. Really what you want is all the button hardware crap (which should rarely change) to be abstracted away from the event handler (which is different for every application). Then you could make a button event handler which calls your abstract LED handler, or whatever it is you want to do with your button pushes. So I took some time to sit down and write myself a decent button event handler that does all that, and does useful things with people holding down the button, and so on. I mean, it took all of two or three hours to write, but still, instead of their crappy button demo code, why don't they distribute something that people could actually use right out of the gate? Anyway, whatever. Now that I have the buttons doing useful things, I was able to add the ability to change EL patterns and change the speed of the sequence. Thursday December 7, 2006 I populated channels 9-16 of the proto board, and hot diggety damn, that works too. So against all odds, my design worked, my PCB layout had no errors, and I didn't botch anything soldering the stuff in. Oh, and the code worked. But at this point the code doesn't do much.It! Is! Alive! (Wednesday December 6, 2006) Go Brown 29! UPS managed not to lose my package this time, hooray. I hooked everything up, and holy crap! It works! I mean, EVERYTHING works. A while back, I had chopped up some EL wire into segments, maybe a foot and a half long, and taped them to a piece of cardboard, and wired it all up with a Molex
connector which fits my prototype. I actually made two of these, each with eight pieces of EL wire. The first eight channels worked
right off the bat. I'm pretty stunned. I fully expected that I'd need to do some debugging to get it to go.
Mouser Electronics rocks!(Monday December 4, 2006) I called Mouser on Monday morning to tell them about the latest fiasco, and they were cool. Above and beyond the call of duty. They agreed to ship me another Jackrabbit development board, again Second Day air, again on their nickel. Meanwhile, I started tinkering around with the Freescale development kit. I did get so far as to determine that, even though the Freescale part and demo board are 3.3 volt, they seemed to play ok with my designed-for-5-volts hardware. I could drive my logic chips right off the Freescale demo board and everything seemed to work.Time to go on a long rant about Freescale. Their processors rock, they're cheap, they're easy to program, and they've got solid development tools. What's not to like? Well, they are really freaky about their tools. The demo board, which costs something like a hundred bucks, comes with a license for a "light" version of their demo tools. That's what they say. The reality is that they make you jump through a million hoops to actually get the license. It's completely ridiculous. I mean, it's REALLY bad. You have no idea. Note to Freescale: if you're in the business of selling chips, you need to make the tools easily accessible. Don't play weird psycho games, promising a "light" version, then make it a huge pain in the ass to get the software by hiding it behind page after page of strange forms to fill out, only to later give you grief about the light version and try to upsell you. You are not in the software business. You are in the chip business. I can only do ONE THING with your development tools: write code that can ONLY BE RUN on YOUR CHIPS. Which I need to buy. Which is where you get 99% of your revenue. I mean, God forbid I get good at writing Freescale-specific software. I might have to spec a chip for a project, and gosh, I wouldn't want to be tempted to use a Freescale part, would I? This isn't rocket science, people. I'd have better luck getting the allegedly free development tools from a DMV office staffed with KGB agents. No, you should be making this stuff really easy to get to. You should be mailing 'em out like AOL CDs. Grr! That's why they're called "Oops" (Friday December 1, 2006) Well guess what, kids? UPS freaking LOST the package! I was home for most of the afternoon, and nobody ever came. Their online tracking said the package was left on my porch that afternoon, but it wasn't. I took a stroll through the 'hood to see if it somehow wound up on somebody else's porch. I called UPS and they were less than helpful. On the plus side, I could actually reach an operator, but they said that until they got more information transmitted back from the truck, there was nothing that could be done. So I tried calling every few hours,
and they kept giving me this line until about 7pm. Whatever info it was they needed from the truck had apparently been transmitted by this
point, and they didn't have an explanation for what happened. I needed to contact the shipper before an investigation could be opened.
I pointed out that it was 7pm on a Friday, the shipper's gone home, can't they do anything more than that? Finally, I did get the call escalated
to some sort of supervisor, who was a lot more helpful. I still would have to talk to Mouser on Monday, but she'd open the investigation
now. I mean, the package might still be probably still sitting in the truck. But, whatever.
Okay, send it back (Wednesday November 29, 2006) Mouser rocks - we had to engage in a little bit of he-said she-said between me and Rabbit Semiconductor, with Mouser mediating, but Mouser agreed to send out a new Jackrabbit development kit UPS Blue (second day air), and Mouser was going to pay for shipping. And they gave me an RMA number for the old unit. The new one will be here on Friday the 1st.The Jackrabbit Stops Speaking (mid November 2006) So while the boards were off being fabbed, I started playing around with the Jackrabbit, writing some test code for my sequencer. And almost immedediately I encountered problems. The Jackrabbit connects to your PC with a long serial cable that connects to your COM port. And you can't compile or do anything if their integrated development environment (IDE) can't see the Jackrabbit. I was having numerous problems with flaky connections. Sometimes it work work, sometimes it wouldn't, and when the IDE can't see the Jackrabbit, it freezes. You have to kill the program, and of course if you haven't remembered to save your changes, guess what, you're screwed. Oh, and the editor sucks. I actually mostly used Vim to write code, which sorta works, but their IDE doesn't play well with other editors, but somehow I limped along.But immediately after I gotten the proto boards back from Pad2Pad and stuffed all the parts and was ready to test, the Jackrabbit completely froze up. The program in flash wouldn't run, I couldn't talk to it over the serial cable. And apparently Rabbit Semiconductor doesn't like doing business over the telephone - all their tech support had to be done by email. So that sucked. Every day we'd echange one or two emails, and they'd have me perform some weird test or other (is it the cable? is it your COM port?), and after several days of this nonsense, they finally concluded that, yep, it's dead. But they don't handle returns, I have to send it back to Mouser. This turned out to be a blessing in disguise. Board Layout (early November 2006) Next there is the question of how to build a prototype. It's way too complicated to breadboard. I mean, it could be done, but it didn't seem like a lot of fun. And this project is all about fun. So is there an inexpensive way to make printed circuit boards? Guerroloco etched his own, and in fact he links to a couple other places for resources on etching your own boards. But I'd already decided I didn't want to do this. I'd much rather design a PCB in some sort of CAD software and let a board house do it. Is there a way to do this economically? I tried googling for "free PCB software," and there are a number of packages that you can download for free, but they all have some soft of limitation. I tried EagleCAD, and it's truly awful. I spent hours with it before coming to to the conclusion that I'd rather dig my eyeballs out with a dirty salad fork than do anything in EagleCAD ever again. And not only is it horrible, the free version only limits you to a few square inches of board. So that's a problem.I downloaded a few others whose names all esacpe me, and they all seemed crippled in some fundamental way. I also tried Pad2Pad, which was the program recommended in Guerroloco's Instructable. Now, most full-featured board layout programs poop out Gerber files, which is a special file that tells the board manufacturing house everything they need to know to build your PCB. The freebie software packages that are tied to a specific board house don't do this, because obviously, they don't want you freeloading their free software to design a board, that you then go take to their competitor for manufacture. So I get that. The reason Guerroloco and other were using Pad2Pad is that it's one of the few (only?) software packages that prints out the actual copper traces, so if you want to use the toner-tranfer method, you could go etch your owm circuit board. But I aldready decided I wasn't going to do that. But I checked around, and surprisingly, the board house tied into Pad2Pad has pretty reasonable prices, especially for a small PCB like mine. And if you're willing to accept a slow turnaround, you can save a lot of money. So I used their software to lay out a board with a 40 pin .100 connector which matches the pinouts of the Jackrabbit prototyping board, and chose their longest turn, 12 business days I think it was. Seven boards ran me about $120, including tax & shipping. And they actually turned the boards much faster than that - seven calendar days - so I received the boards well before their quoted shipping date. I'm pretty happy with them. The Jackrabbit Speaks (Late October 2006) Meanwhile, I still don't have a microprocessor. I returned to my research libary (it's a small room with a porcelain chair), which is where I keep my Digi-Key and Mouser Electronics catalogs. As I grokked these books I started checking out the Rabbit Semiconductor family of single board computers. Their cheapest one, called the Jackrabbit BL1820, is pretty cheap at 50 bucks, and total overkill for what I need. Tons and tons of IO, it's C programmable, and they even have variants with battery back up and a real-time clock. Which I don't actually need but, whatever. Party on. So I ordered up the development kit from Mouser ($139), which includes their middle-tier Jackrabbit single board computer. (You can see the whole Jackrabbit family here.) The advantage of a single board computer (SBC) is that I don't have to dick around with trying to bring up a new piece of hardware. What they sell you is a small board that's already been completely debugged (hopefully), and there's some sample code, and in theory you just plug your board into their board, start writing code to drive your hardware, and away you go. Around this time I talked to Dave, my old boss, and he made some suggestions for the digital hardware design. Instead of using an army of latches, why not use a 4094? It wasn't a chip I'd not encountered before. Turned out to be a great suggestion. The 4094 is a serial-in parallel-out shift register, so you have to clock the data in one bit at a time. That right there is the only downside, it takes eight times as long to write to it because you're doing it one bit at a time instead of one byte at a time. But apart from that, it's all win. The chip also has an an internal latch, so I can update everything all at once. So to drive 64 channels, my chip count has just dropped from 17 chips to 8 chips, saving me a ton of board space. But here's the clincher - to go beyond 64 channels with the old design would not have been straighforward. There are several ways I could increase the number of EL wire channels, but I'd have to jump through a few hoops. With the 4094s, adding more channels is trivial, you just string 'em together like Christmas lights. Huge win. I decided to make a 16-channel prototype using the 4094, because if I can get 16 channels to work, I can get any arbitary number of channels to work. This schematic can be seen here. Dave also suggested that I take a look at a Freescale part he'd been using in some of his designs. So in addition to an improved h/w design, he sent me on my way with a Freescale demo board and some development tools. So that was cool. For the prototype, though, I decided to proceed with the Jackrabbit. Getting Started (mid October 2006)
But in general, the whole enterprise seemed pretty do-able. There were a few things I was going to do differently, though. I wasn't interested in using a Basic stamp. I'm an embedded C guy, so what I really want is a C-programmable embedded controller. Some assembly would be fine, but I definitely wanted to be writing my high level functions in C. Also, his design has eight channels, and I wanted more than that. Way more than that. I wanted craploads of channels, as many as I could possibly get away with. As many channels will fit on, say, an 8x8 PC board, that's how many channels I want. First, I needed a microprocessor to drive the thing. I did some research, and the Zilog Z8 processor looked like a winner to me. It's cheap, the development kit is cheap, and it's C-programmable. In mid-October I bought a development system from Digi-Key. I guess I hadn't thought things through too clearly, because I soon ran up against a number of issues.
But then I realized that if I did that, all 64 channels would not be written to at once. It takes time to write to each of the eight latches, which means that for a short instant some latches will have new data, and some will have old data. Visually, you'd see this as a glitch, and the eye is pretty good at chatching glitches. It wouldn't be beautiful, and it needs to be beatiful. Right? Right! So, I added eight more latches behind the first set of latches, and these eight new latches would have a common strobe pin. This way, I could update the eight latches as before, amd when I'm done with that, wiggle the strobe line on the second set of latches and BAM! all 64 channels will update at the same instant. This schematic can be found here.
Copyright © 2006-2008 David Chesavage. All Rights Reserved. |