hacdc-wiki/Avr2011_kit.md

244 lines
9.7 KiB
Markdown
Raw Normal View History

2024-06-13 01:48:44 +00:00
### Kit Contents
You will need:
1\) AVR ATMega microcontroller 2) AVR Classboard printed-circuit-board
3) Eight resistors (~120 ohm) 4) Eight LEDs (I like the small square
ones) 5) 1 uF capacitor 6) 0.1 uF capacitor 7) Two push buttons 8) 6-pin
header to connect the FTDI serial cable 9) A small-signal diode for
backward-power protection (optional, but certainly won't hurt)
<figure>
<img src="_avr2011_kitContents.jpg" title="_avr2011_kitContents.jpg"
width="500" />
<figcaption>_avr2011_kitContents.jpg</figcaption>
</figure>
(D'oh! I left the AVR out of the photo. You should have one.)
### A Brief Tour of the Board
Before you start assembling anything, have a look at the printed circuit
board.
<figure>
<img src="avr2011_pcb.jpg" title="avr2011_pcb.jpg" width="500" />
<figcaption>avr2011_pcb.jpg</figcaption>
</figure>
Big and bold in the center is the location for the AVR chip. Notice the
notch in the silkscreen at one end? That corresponds to a notch on the
top of the AVR chip, and helps you get it in the right orientation when
the time comes.
Just to the outside of the AVR chip itself, you'll see two rows of holes
labelled for the port/pin combinations that appear in the datasheet. For
instance, just below the chip see the two rows labelled PORTD, and PD0
-- PD7. See how there are tiny white lines connecting the two rows of
holes, pairwise? Those indicate that the two holes are electrically
connected to each other. This was a convenience -- you can solder two
things easily to each AVR pin. One side of the chip has PD0-PD7, the
other has PB0-PB7 and PC0-PC6.
Just outside of the AVR connection points, you'll see two more rows of
holes, labelled VCC and GND respectively. GND is connected to the
board's ground plane, and so is at 0V. VCC is connected to the board's
power supply and is whatever voltage you're using to drive the whole
mess -- In class, I'll refer to this as VCC or I usually just call this
5V.
And finally, at the edge of the board is another pair of rows of holes.
These are electrically connected in pairs, and are just there to allow
you to connect things together easily. For the LED array, we'll use
these paired holes to connect the resistor to the positive end of the
LED.
Other stuff:
To the left of the AVR, there are holes for two buttons, a protection
diode, power-supply buffering capacitors, an optional power LED and its
resistor, a 3x2 SPI programming header, and the 6-pin inline FTDI cable.
Below the AVR chip area and to the right, there's more prototyping space
-- just sets of holes electrically connected to each other in ways to
facilitate soldering stuff up.
The power LED and it's associated LED are optional and included for your
creative use/abuse. Everyone should solder the coolest LED they can find
in here, with a 100-1k ohm resistor, depending on how bright you want
it.
And those white areas? They're for writing your initials on. Or notes.
Tiny, little notes.
### Assembling the Kit
0\) If you're new at soldering (or even if you're not) go spend seven
minutes with [the best soldering video
ever](http://www.youtube.com/watch?v=I_NU2ruzyc4).
1\) To get your feet wet soldering, install the two capacitors. They can
go in either capacitor position, and are non-polarized (can go in either
way). When you clip off the leads from the capacitors, save the wire for
the next step.
2\) Now install the two pushbuttons. They're oblong, but there's no top
or bottom.
3\) Solder in the protection diode. Notice that it's polarized, with a
black band on the diode itself corresponding to the little band in the
silkscreen.
4\) Above the buttons, there are two pairs of holes -- these connect the
button to the pin on the AVR when they're jumpered together. (I did this
for flexibility so that you could connect the buttons up to other pins
later as you wish.) Take two of the leads you saved in step 1) and
connect each pair of holes together.
<figure>
<img src="avr2011_jumpers.jpg" title="avr2011_jumpers.jpg"
width="500" />
<figcaption>avr2011_jumpers.jpg</figcaption>
</figure>
5\) Solder in the 6-pin header for the FTDI cable. Rather than doing it
the way I did (which covers the labels on the circuit board) why not
mount the header on the bottom side like Ed did?
<figure>
<img src="avr2011_ftdiInstall.jpg" title="avr2011_ftdiInstall.jpg"
width="500" />
<figcaption>avr2011_ftdiInstall.jpg</figcaption>
</figure>
6\) Now start on the LEDs -- in PORTB pins PB0 through PB7. They _are_
polarized, and you'll notice that one lead is longer than the other. The
short lead gets connected to ground, while the long lead will eventually
connect through a resistor to the AVR output pins. (Resistors soldered
in next step.) Place the LEDs so that their short leads are in the
ground strip (labelled GND), and the long lead is in one of the outside
rows of hookup holes. Orientation matters here. Double-check it before
soldering?
<figure>
<img src="avr1022_rowLEDs.jpg" title="avr1022_rowLEDs.jpg"
width="500" />
<figcaption>avr1022_rowLEDs.jpg</figcaption>
</figure>
For aligning the LEDs, I had success putting them all face-down on the
table, and using the fact that they have rectangular faces. Pro-tip:
solder one pin on each LED, make sure they're in a nice line, and
re-heat any that you need to wiggle into place. Then solder in the
second pin on each LED.
<figure>
<img src="avr2011_aligningLEDs.jpg" title="avr2011_aligningLEDs.jpg"
width="500" />
<figcaption>avr2011_aligningLEDs.jpg</figcaption>
</figure>
7\) Once you've done the LEDs, you can solder in their resistors. These
fit most easily and cleanly on the underside of the board, so you'll
want to trim off the extra leads from the LEDs before installing. You
want to solder each resistor to the outside strip of holes that
connected to the positive (long) pin of the LEDs, and the other end of
the resistor to the pins of the AVR. Notice that you're working on the
back-side of the board! Double-check that you're not connecting the
resistor to the VCC line that is closest to the LED.
<img src="avr2011_LEDresistors.jpg" title="avr2011_LEDresistors.jpg"
width="300" alt="avr2011_LEDresistors.jpg" />
<img src="avr2011_LEDresistors_top.jpg"
title="avr2011_LEDresistors_top.jpg" width="300"
alt="avr2011_LEDresistors_top.jpg" />
<img src="avr2011_LEDresistors_bottom_done.jpg"
title="avr2011_LEDresistors_bottom_done.jpg" width="300"
alt="avr2011_LEDresistors_bottom_done.jpg" />
8\) At this point, you can install the chip. They come from the factory
with the pins splayed out a little bit -- you can lean the chip into a
tabletop to straighten the pins out. Place the chip with the notch on
the top of the chip corresponding to the notch in the silkscreen.
Double-check. Solder.
<img src="_avr2011_chipBending.jpg" title="_avr2011_chipBending.jpg"
width="400" alt="_avr2011_chipBending.jpg" />
<img src="_avr2011_chipAlignment.jpg" title="_avr2011_chipAlignment.jpg"
width="400" alt="_avr2011_chipAlignment.jpg" />
9\) Optional fun stuff: Feel free to solder in an artistic power LED and
its resistor. (Note the polarization. Short pin downwards, or notice
that there's a flat-spot on the LED flange.) Write your name on it. Wire
up the battery (black wire to GND).
<img src="_avr2011_kitDone.jpg" title="_avr2011_kitDone.jpg" width="400"
alt="_avr2011_kitDone.jpg" />
<img src="_avr2011_kitDone2.jpg" title="_avr2011_kitDone2.jpg"
width="400" alt="_avr2011_kitDone2.jpg" />
10\) You should now be ready to flash in your first program. Hooray.
From here on it's (mostly) firmware!
### Adding the Light Sensor for Class 2 (ADC)
For the light sensor, you're creating a voltage divider with the
photoresistor and two legs of the potentiometer used as a variable
resistor. The photoresistor is connected to VCC and the AVR pin PC0, and
the variable resistor from PC0 to ground.
In the following image, the red pins represent the potentiometer, and
the blue are the leads from the photoresistor.
<figure>
<img src="_avr2011_bare_board_annotated_small.jpg" title="500 px" />
<figcaption>500 px</figcaption>
</figure>
Start out by placing and soldering the potentiometer on the underside of
the board. Make sure that the smaller center pin connects to the ground
lines. Do _NOT_ clip the leads short yet.
<figure>
<img src="_avr2011_board_bottom.jpg" title="500 px" />
<figcaption>500 px</figcaption>
</figure>
Bend one lead on the variable resistor up and over the two other holes
on the board, and plug it into PC0. Solder it in on the top side. Now
soldering the photoresistor in place should be easy.
<figure>
<img src="_avr2011_board_topside_soldered.jpg" title="500 px" />
<figcaption>500 px</figcaption>
</figure>
Flash in the light sensor firmware and turn the potentiometer until it
give you a nice range of values on the LED display. I found that turning
it up to _just_ max out in full light works well -- you'll see that
it'll get down to one or two bars when you cover the cell with your
hand. You're done!
### Schematics, etc
If you'd like to make yourself a class-board, the attached Eagle files
should get you started.
Warning: It's a good idea to socket your AVR in the board so that you
can remove/swap chips when you want to.
Also, the LEDs in port B will over-ride the SPI port. For the class, we
used AVRs with a bootloader already flashed into them, so we didn't use
the SPI most of the time. If you'd like to use the SPI instead, you can
**probably** get away with using large-value (1k Ohm?) resistors for the
LEDs. Best is to omit them if you're going to use the SPI a lot, though.
[Media:
mega_classboard_files.zip](Media:_mega_classboard_files.zip "wikilink")
Finally, if you want something with almost all of the functionality (but
none of the style!), Evil Mad Science sells a nice, very cheap, AVR Mega
breakout board.
[Category:Microcontrollers](Category:Microcontrollers "wikilink")
[Category:AVR_Class](Category:AVR_Class "wikilink")