tqw
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:The Quoting, Whirled: A Burning Man Art Project from August 2002.
# THE QUOTING, WHIRLED

The desert is a lonely place, especially at night.

In August 2002, we made part of the Nevada desert a little bit friendlier by
scattering 2,608 colorful, lighted messages across a 30' x 10' area of the
[Black Rock City](http://www.burningman.com/) Playa.

# THE QUOTING, WHIRLED: DEVELOPMENT

### Technical specifications

  * 32 "leaves"
  * 3700 r.p.m. motor: 105mA per leaf at full load. That's 61 frames per second, but the actual speed will surely be much slower because of weight and wind resistance. 10 fps produces a very readable display.
  * 8 full-color a.k.a. RGB a.k.a. full-spectrum LEDs per leaf
  * [Atmel](http://www.atmel.com/) ATMega8 microcontroller: 8K Flash memory, 1024 bytes SRAM per leaf
  * 32K bytes EEPROM per leaf for storing content
  * Current draw of single leaf's circuit at 100% LED duty cycle and 6.0 volts: 180mA (estimated), typical: 45mA (estimated)
  * Power provided to circuit through commutator/brush assembly. There's a drop of about 1.0 volts in the 3-phase rectifier bridge.
  * Each leaf receives new content through shared infrared. PWM, 38KHz. Current plan is to leave a bunch of $5 universal remotes in the dome so people can control the spinners.
  * The 32 motors (total 12-volt current 3.2 amps for drive @ 100mA, 12 volts each; 6 amps for circuits @ 180mA, 6 volts) get their electricity from a traditional steam engine fueled by the burning bodies of people caught in the act of sending unsolicited commercial e-mail. I'm still waiting for word from the Bureau of Land Management about the federal and Nevada state laws regulating this fuel. The fallback power system will be a twelve-volt deep-cycle battery recharged during the day by the Burning Man Artery's power grid.
  * Sunrise: 6:21 a.m.
  * Sunset: 7:41 p.m.
  * Moonrise: 8:09 p.m. on August 22, and about a half an hour later each night until about midnight the night of the burn.
  * Moon phase: Full moon is August 22. It'll be in the last quarter the night of the burn. So unfortunately it'll be pretty bright at night.

### Current status & history

  * 8/11/2: Pulled a bone-headed move and didn't really appreciate how hard it would be to solder a free-hanging surface-mount voltage regulator to wires. So last night I fired off a quick mounting board to be manufactured by [ExpressPCB](http://www.expresspcb.com) and shipped to me by Thursday. 
  * 8/11/2: All main boards are complete. Twenty-four of the LED boards are complete. Remaining: 8 LED boards, cabling, attachment to motors. It's going to be close.
  * 8/7/2: One board well-done, actually on the extra-crispy side, with lots and lots of solder bridges.
  * 8/5/2: I am going to try to solder the remaining 16 boards using the [toaster oven method](http://www.seattlerobotics.org/encoder/200006/oven_art.htm). Ordered the Kester water-soluble solder paste from DigiKey today.
  * 8/3/2: The LED-sanding party was a big success. We sanded about 200 LEDs to a nice diffused finish. I have assembled about 80% of half of the spinners. I'm doing it in batch mode so that means each of 16 of the spinners is 20% away from completion).
  * 7/31/2: Ordered two Concorde AGM 105 amp-hour 12-volt batteries with a 10-amp charger. Total cost about $600.
  * 7/24/2: Production PCBs arrived last night, and the LEDs arrived today. I assembled 8 of the PCBs last night (without LEDs) in 7 hours including an hour break for dinner. I estimate it'll take 4 hours to assemble the mechanical portion of this batch. So we're looking at 3.5 more full days to finish assembly of the spinners. Other developments: rest of team is working on the mounting hardware; graphics code is looking great; text code is lagging; the Artery is letting us plug into the power grid so we won't need to bring a generator; total battery cost is looking to be about $395.
  * 7/20/2: Took apart 30 motors and extracted their commutator/brush assembly. I'd actually rather solder surface-mount capacitors than keep doing this.
  * 7/17/2: Met with Ross and handed over the one existing prototype of the spinner so he can finally code for a real device.
  * [Early July]: In denial about imminent death of project. We're having supply problems with the LEDs. To make a long story short, it worked out fine (see 7/24/2 entry above), but for a while the factory asserted it couldn't manufacture this part number, then they wanted to substitute an inferior part, and all the while this was with a 4-week lead time. Then suddenly and inexplicably the original LEDs showed up. 
  * 6/28/2: Lots of developments this week. Final PCB prototype arrived. Uses the stolen commutator assembly power method. Also routed the board's perimeter to make it as small and light as possible. Placed the big order for 40 silkscreened, solder-masked boards with a lead time of 3 weeks. Whew! At last this project isn't blocked on me!
  * 6/18/2: Stole a brush/commutator assembly from another motor, stuck it on the shaft, wired up a quick-n-dirty three-phase bridge rectifier, and ran the spinner all night! Total current consumption: 280mA at 6 volts (1.68 watts)! Also got an OK from Markus F.X.J. Oberhumer to use the [miniLZO](http://www.oberhumer.com/opensource/lzo/) library with the copyright moved to the content rather than the program. Thanks, Markus!
  * 6/16/2: Assembled the very first completely induction-powered version of the spinner. It works and it's gorgeous. However, for some reason the 4011 circuit occasionally just doesn't start oscillating when I plug it in, and I have to touch a particular part of the circuit to get it to start. Moreover, sometimes the oscillations stop. This leaves the NPN MOSFET on, meaning that it pumps over 2.5 amps through the primary coil at a 100% duty cycle. This has an annoying tendency to heat up the transistor and the coil, melt the electrical tape holding everything together, and generally make me afraid of leaving the room because it might catch fire. I'm now investigating [ a different approach](http://www.seattlerobotics.org/encoder/200112/srs.htm) that will eliminate the heat issues, drastically lower current consumption, and cost only $1.25 extra per spinner. The disadvantage is I'll have to be even more careful about sheltering the mechanism from the elements, because it'll have exposed motor brushes.
  * 6/15/2: The circuit is alive! The zener diode did its job and died heroically. I removed it, cleaned the PCB, and put in a new diode and it started working again.
  * 6/15/2: Created my first two SEDs (smoke-emitting diodes) today. The first was absent-mindedness: I connected an infrared emitter directly to a 4.5-volt source without a current-limiting resistor. It emitted infrared, then visible orange, then visible smoke. The second put me in the bummed-out state I'm in now. I connected a 12-volt source to my prototype board and the 5.6-volt zener in the circuit started smoking and then cracked. I don't know whether I've ruined the whole circuit.
  * 6/15/2: Debugging your own electronics circuit is like being a seal balancing an umbrella held by a monkey roller skating on a beach ball spinning on your nose. If the umbrella tilts left, which way should you move your nose? Last night through this morning I soldered together the latest rev of the PCB and tested it. The lights operated as expected, and the inductor circuit is working surpringly well. However, the new rotation detector (infrared LED emitter/phototransistor matched pair) was acting really weird. Finally after desoldering several components, rewiring a breadboard version of the circuit, revisiting the definition of an open-collector output, and questioning my belief in God, I determined that it was a SOFTWARE ERROR. Instead of pulling up the inputs on the mega8, I was setting the pins to outputs (mixed up the PORTB and DDRB macros). What a fantastically useless way to spend half a weekend. But the good news in the end is the circuit appears to be absolutely perfect. After more testing this weekend I'll place the quantity order for the PCBs.
  * 6/13/2: Got Digikey deliveries today. Thousands of components that fit in a box smaller than a shoebox. PCB prototypes should arrive tomorrow morning.
  * 6/12/2: Ordered 400 Kingbright LF819EMBGMBC LEDs today. Let me know if you want to buy any, because I'll have extras!
  * 6/10/2: Placed THE SECOND BIG ORDER from Digikey. All those little bits add up! Also sent the final prototype Gerber files to PCBExpress for manufacturing. Fingers crossed.
  * 6/9/2: I think I found a sweet spot in the oscillator circuit. Using a 4.7 nanofarad (.0047 microfarad) capacitor, the primary takes in 0.63 amps at 12 volts and the secondary sees 240 milliamps @ 5 volts, for an efficiency of (5 * 0.24) / (12 * 0.63) = 15.8%. With reasonable separation between the coils the secondary gets 180 milliamps (11.9% efficiency). This isn't spectacular but it's finally providing enough current to run the circuit at peak levels.
  * 6/8/2: Learning more about the basics of electricity. A watt is volts x amperes, and stating that such-and-such load draws such-and-such milliamps doesn't mean much unless you also know the volts. In digital electronics most people talk about milliamps because everyone knows you're talking about digital logic levels (i.e., 5 volts). But once you are talking different voltages, it definitely matters. Thus: I've updated the power requirements for the circuit, because 100mA at 12 volts is more power than 100mA at 5 volts. The good news is that this means the power requirements are lower than I originally thought. The bad news is I'm probably still misunderstanding the formulas, and my project is going to go dark at 10 p.m. every night of Burning Man. :(
  * 6/7/2: **Finally** I got the SPI figured out for the serial EEPROM. For a while I was worried that I'd wired the circuit wrong. I don't know whether this is an SPI thing or an AVR thing, but for every byte you send to the SPI slave, you must read a byte from it, too. Likewise with receiving: to get the slave to send you something, you must send a byte of garbage. I guess this is because the master owns the serial clock (SCK), and it fires it off only when there's work to do (i.e., it has a byte in the latch to send). Whatever the reason is, I don't care -- it works!
  * 6/6/2: Placed THE BIG ORDER from Digikey today. Either the project's really happening now, or I'm going to be selling a lot of crap on eBay soon. Also: got max current draw for circuit down from around half-amp levels to around 180mA (20mA per LED, 20mA for logic). The brightness of the LEDs is nothing to write home about, but it'll still be quite legible, and the colors actually seem richer than before when they were all bright but had a bluish tinge.
  * 6/2/2: Got a real MOSFET power transformer and switched over to [Chester Lowrey's](http://hot-streamer.com/hilo90mhz/electronics/prop_clock.htm) inductor circuit. Same coils as yesterday. Weird -- I ended up getting around 60 volts at the secondary. Sixty volts? Where the hell did that come from if I was supplying only 4.5 volts to the primary? Then I tried a 200-turn secondary and sure enough got 122 volts out of it. After clamping the voltage with a 5.1-volt zener diode, I got *barely* enough current to run the spinner. It pretty much dies out when all eight LEDs are dual- or triple-lit, though. Next things to try: bigger coils, more careful winding.
  * 6/1/2: Experimenting with induction to power the circuits. If this works I can scratch the DC/DC converter part of the circuit and drastically reduce weight because the spinners won't need batteries. Started with 100 turns of 30-gauge magnet wire around a broom handle, about 7/8-inch in diameter. 555 timer at some unknown but high frequency switches a transistor that sinks current from the primary coil. The secondary coil, also 100 turns, was connected to a bridge rectifier. Saw 0.6 volts after the rectifier. Then I burned the crap out of my hand because I ran way too much current through the transistor (4.5 volts, no resistance).
  * 5/31/2: Motor madness. Ordered 40 motors, sight unseen, from [All Electronics](http://www.allelectronics.com/cgi-bin/category.cgi?category=400200&item=DCM-141&type=store). After a little research, I think these are some model of Johnson Motors series PC200LG "flap actuators," whatever that means (Johnson says they're automotive parts, but all discussion of them on Usenet refers to airplane flaps). Torque at 12VDC is probably from 3 to 6 mNm (milli-Newton-meters). That works out to 30-60 g-cm. Tip: to convert mNm to g-cm, multiply by 10.08. I derived this from a conversion table on the web. No idea whether it's correct, but it's at least within an order of magnitude of typical values for small but strong DC motors. I also figured out that Jameco sells bushings that convert 2mm shafts to the 0.16" gears that I'm using as a shaft coupling between the motor and the armature. Cool -- that means I can standardize on that shaft coupling no matter what motors I end up using.
  * 5/29/2: Total redesign of circuit. It's now a main board and a daughterboard. The main board contains the microprocessor and the power/communications circuitry. It'll sit in the center. The daughterboard is just LEDs, screw holes, and jumper pins. It's very light weight and will be attached to the end of the arm. Other interesting changes: Added traces for a step-down voltage regulator in case I figure out how to get power from the motor instead of batteries; ditched the RF comm link and replaced it with a 38.0KHz PWM infrared sensor; discovered that I'd used the wrong package for the Bourns resistor networks, so I fixed that.
  * 5/24/2: Talked to Chris Schardt. He advised not to underestimate the significance of g-forces at high rotational speed.
  * 5/23/2: Discovered that Jameco stopped carrying the motor I'd picked! I bought 10 of them, so I'll have to find a similar motor for the other 22.
  * 5/19/2: Assembled the board; it basically works with the following caveats and comments: 
    * The LED current consumption is **way** higher than I'd computed. According to my multimeter, it's 664 mA at full white. From the terminals of the cells, it consumes almost 900 milliamps of current, indicating 73.8% efficiency. Way over the LTC3400's ratings. This seems to have happened simply because the actual forward voltages of the LEDs aren't as specified. My daily lesson learned: if you really care about a particular component specification, measure that specification yourself -- don't just assume the datasheet is going to describe the components you actually get.
    * The mega8 resets when too many individual LEDs go high, surely because of the sudden change in current demand. Fortunately, a 0.1uF cap right across VCC and ground near the μC, as well as supplying with 2 AA cells rather than just one, solves that problem.
    * The pads for the Bourns resistor networks seem weirdly recessed, so that the chips had to be _perfectly_ aligned to match up.
    * I sanded the LEDs using 3M "Very Fine 200" sandpaper to diffuse the beam and help blend the individual colors. This works really well!
    * I know what will happen if I am bad and go to Hell when I die. I will be locked in a room soldering surface-mount capacitors.
  * 5/18/2: The inductor wasn't a problem. The extra crap on the bottom is elevated slightly so it doesn't actually touch the board. The original pads are fine.
  * 5/17/2: The last batch of components for this board arrived from Digi-Key today. Unfortunately the pin layout of the Sumida CDRH inductor doesn't look anything like its datasheet suggested, so I'll have to put a layer of insulation under it to avoid shorts. Serves me right for having the board manufactured without first physically inspecting the components.
  * 5/16/2: Circuit boards arrived! Soldered my first surface-mount component ever: a million-ohm 1206 resistor. Hey, that wasn't so hard after all!
  * 5/15/2: Announced project to snop group.
  * 5/12/2: Sent second rev of PCB prototype to [PCBExpress](http://www.pcbexpress.com/). Here are the [top](v2/sg2.top) and [bottom](v2/sg2.bot) Gerbers, as well as the Excellon [drill file](v2/sg2.dri). Current estimate for cost per fully assembled leaf is $69.65. Most expensive part is the RGB LEDs (8 per leaf @ $3.50 each), followed by the the RF receiver (Linx RXM-LC, $13.79 each). Unless someone comes up with a great idea for why the project should be interactive, the RF component has to be canned for cost reasons.
  * 5/9/2: Switched to [ LTC3400](http://www.linear.com/prod/datasheet?datasheet=787&product_family=power) for power supply. In theory this will let the circuit run on a single 1.5-volt battery. At typical load and 70% efficiency the circuit should run for 13 hours on one alkaline battery. That should be just right for one round of maintenance per day.
  * 4/28/2: Investigating step-up DC/DC converters. [Linear Technology](http://www.linear-tech.com/)'s LT1302-5 looks like a good bet. 600mA rating exceeds the estimated 480mA max current draw from the LEDs @15mA per diode (4 per LED).
  * 4/26/2: Assembled v. 0.01 of circuit board. I got the pinouts of the Kingbright LEDs upside-down. Fortunately that just means they stick out the back of the board, which one could credibly argue was done on purpose :). More important, the circuit works!
  * 4/21/2: First PCB prototype sent to boardhouse. Based on AT90S4433 μC and 7805 voltage regulator.
  * 4/8/2: Realized serious problem with RS-485 link past 2πr: the serial link's wires would never stop twisting. Now investigating RF and IR. Also discovered Atmel AVR microcontrollers. Mmmmmm, shiny.
  * 4/3/2: Conception. Massive Google binge ensues.

### Resources

  * [Digi-Key](http://www.digikey.com/)
  * [Jameco](http://www.jameco.com/)
  * [EAGLE CAD/CAM](http://www.cadsoftusa.com/)
  * More than you ever wanted to know about [Eveready](http://data.energizer.com/) batteries

本源码包内暂不包含可直接显示的源代码文件,请下载源码包。