Tag Archives: Arduino

How to Program Sparkfun Arduino Pro Mini

I just picked up a Sparkfun Arduino Pro Mini board for a project.  It’s a really nice really compact board with almost all of the pins broken out on it.  If you already own a Duemilanove you can easily program it using the Arduino software, just pull the Atmega chip off the Duemilanove and then using the shortest side of the board’s contacts, wire:

reset – grn
tx
rx
vcc
gnd
blank – blk

The words grn and blk are silkscreened on the board to denote which pins are which.  You could of course use a RS232->TLL converter to program this as well, but using the Duemilanove is really convenient as it pulls the reset pin low for you.

On the topic of this Pro Mini board, I had a few e-mails back and forth with Sparkfun trying to figure out what the actual maximum input voltage for the board is, Sparkfun’s Website lists it at 12VDC max, the EagleCAD schematics list it as 16VDC, and the datasheet for the voltage regulator list it as operational maximum 16VDC, with an absolute maximum of +/-20VDC before damage occurs.

Also noted is that the oscillator on this board is absolute crap, I have a timing critical application that I intended to use this board on, using a stopwatch and a Duemilanove and this board, both running identical software and hardware configurations:

15hours 37 minutes elapses, the Duemilanove is exactly in sync with the stopwatch still, the Pro Mini has gained 1 minute and 1 second. I ran this test several more times with identical results, the stop watch and the Duemilanove are in sync, with the Pro Mini gaining time each time, always about 20 second per 5 hours elapsed time, which is not acceptable in my application.

I swapped the Sparkfun crystal/resonator for one of my own resonators and ended up with the same crappy timing. I finally switched out the resonator for a crystal and a pair of capacitors tied to ground and was able to clean up the timing mostly, it’s still gaining a second for every 40 minutes it runs for, it was previously 15 so it’s improved, but not ideal. I’m going to ditch using the Sparkfun board for my own layout on the next iteration.

MAX6675 Thermocouple Amplifier EagleCAD

I created a little SMT board for the MAX6675 thermocouple amplifier in EagleCAD if anyone out there is in need of a board.  It’s very simple layout but it is a bit noisy, definitely expect to average samples coming from this chip (/board?).  Other improvements would be adding a thermistor as the CJC (cold junction compensation) on the board so you can accurately offset the junctions at the board where you break the thermocouple wire and transition over to copper (which creates another TC junction unintentionally so you must compensate for it).

MAX6675 TC Amplifier Board and Schematic

MAX6675 TC Board Schematic and Board (and Panelized)

I2C Communication Arduino MEGA to Duemilanove

If you’re wondering how to get I2C running from your MEGA to Duemilanove Arduino boards here’s the scoop:

MEGA Pin 20 is SDA (Serial Data)

Duemilanove Analog Pin 4 is SDA

MEGA Pin 21 is SCL (Serial Clock)

Duemilanove Analog Pin 5 is SCL

Hook up SCL to SCL and SDA to SDA across the boards, also hook up ground between the two boards.  You do NOT need to connect the +5V between boards.

You’ll need  SCL and SDA to be pulled up (to +5V with resistors, between 2.2kOhm and 47kOhm), it will run without them but its recommended to make your bus within specification.

Example bus from Instructables.
MEGA Pinout information (search for i2c on the page).

EagleCAD Layout – Arduino Base

If you’re looking for an Arduino basic layout in EagleCAD (all clock/power/ICSP lines run but nothing else) here it is:

Arduino Base Layout

The board layout is troublesome on a single layer board, most of the I/O are currently blocked with power or ground, I’ll leave that up to you to figure out what you want to do.

If you’re looking at this, you’ll probably be really interested in this single sided Arduino layout.