Archive for May, 2009

Reinventing the Wheel (watcher)

Wednesday, May 27th, 2009

( this is a repost of http://blog.tempusdictum.com/index.php/don/uncategorized/reinventing-the-wheel-watcher)

Its not very often that you get to go back to old designs and make improvements. But when you do its nice. Recently I got to rework a design from last year and build on the collective knowlege of 2 design teams and 3 design cycles.

Does practice make perfect? We shall see.

The first run.

Last year I got to build the electronics for a stationary bike racing system. The system had a large ballfield style clock with four hands that were run by these monster stepper motors The initial design was for two bikes done by Percor: a company that makes excercize equipment. Their design used these industrial (expensive and very bulky) cherry hall effect sensors which they loaned us for a race at Lance Armstrong’s bike shop in Austin (http://www.mellowjohnnys.com/). My job for that cycle was to replace Percor’s pic based board with a 4 bike setup.

I broke the stepper driver section into four individual boards. For the processor I built a custom mega128 based board and did the programming in wiring.

Second iteration.

When the Austin race was over Percor needed their parts back so I got to rebuild the sensors. I found some allegra hall effect sensors which were a small fraction of the cost of the cherry’s (like (75c<$25.00)X4). As an attempt to get a zero indicator on the clock I experimented with a triangle based design

While I never did get this particular part of the clock to work correctly the triange stuck as a shape that I liked working with.

I also wanted to replace the cat5 wire used in the Percor design with with less expensive phone cord. (I got a panicked phone call from Texas and had to remotely direct someone how to get some very expensive ethernet cable on a weekend: it was not cool). To do this I put a non inverting buffer on the sensors and since buffers come in 6s I put an indicator led on the sensors output. In the practice of setting this up for the next race, the blinking lights were invaluable.

Third Time Charm.

A few weeks ago I was asked about another race setup in SanFrancisco. They were going to use a system called open sprints for the display but the open sprints people were out of their hardware for the sensors. So I got a 3 week timeline to put together a sensor and hardware interface that would be compatible with open sprints.

Open sprints (www.opensprints.org) is an open source ruby based software which takes information from an arduino and presents the race data in a way that can be projected instead of having a physical race clock. The only thing that needed to be built was the input side.

So I went back to what I liked and didn’t like about my earlier design and compared and contrasted the opensprints, the percor and my designs to come up with a new system which I could then have fabbed by our local pcb fab (sunstone.com). Looking at the opensprints design I revisited the hall effect sensors and found a set of sensors to experiment with and began to lay out my boards.

I had intended to use the dart design with a through hole led and a throuch hole (sip) sensor and then have some laser cut transparent plastic which could then be “lit” up by the led on the board. A second piece of opaque plastic would be cut to insulate the bottom of the board.

After talking to some of my ee freinds I decided to replace the on board drivers with a single schmidt trigger on the other end of the sensor cable (the percor design used these as well) When selecting the parts I found myself looking at a few options for the rj11 connectors. I ordered a few of each as well as both sip and the origional smt sensor from last year.

Who needs plastic?

When I got the parts I started looking at these rj11 connectors and rethinking things. The connectors were surface mount and shielded. The shielding wasn’t needed but they matched the un-soldermasked boards in texture in color they were about 7 cents more expensive apiece but they looked futuristic.

I went back to surface mount only. If I got rid of the sips and used the surface mount rj11 mounts then the bottom of the board would be shield/ground no insulation needed. The metal from the surface of the board and cable connector would reflect the light from the led and if any attention were payed to the layout of the traces it would look cool!

Even in the hand rolled prototype!

Who needs an Arduino?

At this point given Paul Stoffregon’s (pjrc.com) “teensyduino” software and his 90usb based boards there is no reason to buy any other arduino or arduino clone. ( at least in cases where you need usb to serial solution — in cases where usb-serial is not needed the dorkboard rules ๐Ÿ™‚ My first thought was to do a carrier board for on of Paul’s boards and adapt the opensprints code for the inverted inputs. The opensprints code needs to be adapted to invert the input signal and to adjust the registers for the different processor but using the teensyquino codebase that should be simple enough.

In this application however, the board was so simple that it made more sense to just adopt the eagle design for my at90usb162 board (the benito).

Tomorrow I get the boards from sunstone and I should have the hardware built out by late friday. The customer will be in portland saturday.

Does practice make perfect? We will let you know by next week.

Reinventing the Wheel (watcher)

Wednesday, May 27th, 2009

Its not very often that you get to go back to old designs and make improvements. Recently I got to rework a design from last year and build on the collective knowlege of 2 design teams and 3 design cycles.

Does practice make perfect? We shall see.

The first run.

Last year I got to build the electronics for a stationary bike racing system. The system had a large ballfield style clock with four hands that were run by these monster stepper motors The initial design was for two bikes done by Percor: a company that makes excercize equipment. Their design used these industrial (expensive and very bulky) cherry hall effect sensors which they loaned us for a race at Lance Armstrong’s bike shop in Austin (http://www.mellowjohnnys.com/). My job for that cycle was to replace Percor’s pic based board with a 4 bike setup.

I broke the stepper driver section into four individual boards. For the processor I built a custom mega128 based board and did the programming in wiring.

Second iteration.

When the Austin race was over Percor needed their parts back so I got to rebuild the sensors. I found some allegra hall effect sensors which were a small fraction of the cost of the cherry’s (like (75c<$25.00)X4). As an attempt to get a zero indicator on the clock I experimented with a triangle based design

While I never did get this particular part of the clock to work correctly the triange stuck as a shape that I liked working with.

I also wanted to replace the cat5 wire used in the Percor design with with less expensive phone cord. (I got a panicked phone callย  from Texas and had to remotely direct someone how to get some very expensive ethernet cable on a weekend: it was not cool). To do this I put a non inverting buffer on the sensors and since buffers come in 6s I put an indicator led on the sensors output. In the practice of setting this up for the next race, the blinking lights were invaluable.

Third Time Charm.

A few weeks ago I was asked about another race setup in SanFrancisco. They were going to use a system called open sprints for the display but the open sprints people were out of their hardware for the sensors. So I got a 3 week timeline to put together a sensor and hardware interface that would be compatible with open sprints.

Open sprints (www.opensprints.org) is an open source ruby based software which takes information from an arduino and presents the race data in a way that can be projected instead of having a physical race clock. The only thing that needed to be built was the input side.

So I went back to what I liked and didn’t like about my earlier design and compared and contrasted the opensprints, the percor and my designs to come up with a new system which I could then have fabbed by our local pcb fab (sunstone.com). Looking at the opensprints design I revisited the hall effect sensors and found a set of sensors to experiment with and began to lay out my boards.

I had intended to use the dart design with a through hole led and a throuch hole (sip) sensor and then have some laser cut transparent plastic which could then be “lit” up by the led on the board. A second piece of opaque plastic would be cut to insulate the bottom of the board.

After talking to some of my ee freinds I decided to replace the on board drivers with a single schmidt trigger on the other end of the sensor cable (the percor design used these as well) When selecting the parts I found myself looking at a few options for the rj11 connectors. I ordered a few of each as well as both sip and the origional smt sensor from last year.

Who needs plastic?

When I got the parts I started looking at these rj11 connectors and rethinking things. The connectors were surface mount and shielded. The shielding wasn’t needed but they matched the un-soldermasked boards in texture in color they were about 7 cents more expensive apiece but they looked futuristic.

I went back to surface mount only. If I got rid of the sips and used the surface mount rj11 mounts then the bottom of the board would be shield/ground no insulation needed. The metal from the surface of the board and cable connector would reflect the light from the led and if any attention were payed to the layout of the traces it would look cool!

Even in the hand rolled prototype!

Who needs an Arduino?

At this point given Paul Stoffregon’s (pjrc.com) “teensyduino” software and his 90usb based boards there is no reason to buy any other arduino or arduino clone. ( at least in cases where you need usb to serial solution — in cases where usb-serial is not needed the dorkboard rules ๐Ÿ™‚ My first thought was to do a carrier board for on of Paul’s boards and adapt the opensprints code for the inverted inputs. The opensprints code needs to be adapted to invert the input signal and to adjust the registers for the different processor but using the teensyquino codebase that should be simple enough.
In this application however, the board was so simple that it made more sense to just adopt the eagle design for my at90usb162 board (the benito).

Tomorrow I get the boards from sunstone and I should have the hardware built out by late friday. The customer will be in portland saturday.

Does practice make perfect? We will let you know by next week.

Using the dorkboard with other peoples programmers.

Thursday, May 21st, 2009

When I developed the dorkboard I was working in conjunction with brian riley and paul badger. The dorkboard was an attempt to take the things I liked about the original really bare bones arduinofreeduino and refine them. Although I intended my design to be used with my programmer I tried to make it compatible with brian rileys programmers and the programming header pins are ordered according to the standard that paul and brian were working on. I will try to clarify some of this and show you how to use the dorkboard with other programmers.

DTR and the Auto Reset Hack.

The ftdi chipset that the arduino community adopted presetnts the dtr signal by default. The underlying standerd asserts dtr whenever a host computer begins to talk to a usb serial device. The device aserts dtr by pulling this signal low. If you pass this signal through a .1uf capacitor it gives you the pulse below.

http://farm3.static.flickr.com/2468/3552514364_919fff07da.jpg?v=0

The benito produces a straight pulse which is suitable to reset the avr directly.

The Dorkboard reset jumper.

The dorkboard was designed to work with either system. To use the dorkboard with the benito you simply jumper the reset directly using the solder jumper at the bottom corner of the board.

http://farm4.static.flickr.com/3596/3552470118_1480fc8443.jpg?v=0

The pads of the jumper were designed to also accomodate a surface mount capaciter of the 805 size such as part 399-1168-1-ND from digikey . If you are using a programmer which just presents the dtr pulse then you simply solder the cap to the two pads as shown below.

confused at a highter level.

Tuesday, May 19th, 2009

will write more here later.

burning a bootloader with the avr-dragon

Thursday, May 7th, 2009

I generally dont use my dragon. Its notoriously fragile and complicated compared to my trusty avrisp-mk2. However somewhere between loaning it out and taking it to dorkbot meetings my mark2 has gone awol for several months now.
bootloader programming setup.
And since I am stuck using the dragon I might as well share a little.

Avrdude.

If you are going to be building or burning bootloaders you need to get a toolchain for your platform. On the mac I recommend that you get the latest CrossPack-AVR from objective devlopment (formerly AvrMacPack). It will have a complete set of tools to program the avr which is kept in sync with winavr which is the definitive tool-chain. Included in this is Jeorg Wunch’s avrdude the definitive open source avr programmer.

Asking the tools.

To get avrdude to tell you about what programers are avaliable you tell it to use something you know it doesnt support.

$ avrdude -c junk

avrdude: Can't find programmer id "junk"

Valid programmers are:
c2n232i  = ...blah blah blah ...
dragon_dw = Atmel AVR Dragon in debugWire mode [/usr/local/CrossPack-AVR-20090415/etc/avrdude.conf:540]
dragon_hvsp = Atmel AVR Dragon in HVSP mode  [/usr/local/CrossPack-AVR-20090415/etc/avrdude.conf:532]
dragon_pp = Atmel AVR Dragon in PP mode    [/usr/local/CrossPack-AVR-20090415/etc/avrdude.conf:524]
dragon_isp = Atmel AVR Dragon in ISP mode   [/usr/local/CrossPack-AVR-20090415/etc/avrdude.conf:516]
dragon_jtag = Atmel AVR Dragon in JTAG mode  [/usr/local/CrossPack-AVR-20090415/etc/avrdude.conf:508]
...

We can see here that there are 5 entries listed as dragon entries; one for each of the 5 modes which is supported. In this case I am only going to use the isp mode (dragon_isp).

Burning bootloaders

Most AVR parts have two different programming areas and a set of fuses and locks to configure how the chip is to behave. In order to program the bootloader we need to set the fuses to unlock that area and while we are there we want to set some other fuses telling it to use the external crystal, the size of the boot section and to boot to the bootloader so we use the following command line.

$avrdude  -pm168 -cdragon_isp -Pusb -e \
-Ulock:w:0x3F:m -Uefuse:w:0x00:m -Uhfuse:w:0xdd:m -Ulfuse:w:0xff:m

“-cdragon_isp” says to use the dragons 6 pin isp header. the “-Uxxxx:w:0xNN:m” writes the fuse values and the -e tells avrdude to erase the chip first. Erasing the chip is the only way to unset most lock and many flag bits.

How did I get this particular set of fuses? I asked the tools — I went to the arduino and I told it to burn a bootloader and watched what it tried to do. A careful read of the datasheet will get you to the same place and there are also several “avr fuse calculator” sites as well. In this particular case I “cheated”.

Now that the boot section has been unlocked, we burn the bootloader and while we do this we also re-lock the boot section. This prevents the bootloader from getting overwritten untill we mean it.

$avrdude  -v -v -v -v -pm168 -cdragon_isp -Pusb \
-Uflash:w:ADABOOT_8h13_16MHZ.hex:i \
-Ulock:w:0x0F:m

And were done (except for the part where you use/test it)

And if you wanted to do this more than once you can make it into a make file like the one attached here (http://dorkbotpdx.org/files/ADABOOT.zip)

One thing I did notice with OSX and avrdude with the dragon is that osx doesn’t let avrdude see the dragon if called immediately after you are done with it. In the makefile I resolve this by sleeping for a few seconds between the two steps listed above.

See also….

fiddle~ test

Monday, May 4th, 2009

This is my first real pd patch.

The noise gate was stolen from the samples. I would like to stuff more of the cruft in the right hand corner into the noisegate chunk so it will look nice.

In the one chanel It makes my bass sound like a cheap toy keyboard. In the other I can hear how closely it is tracking.