22
\$\begingroup\$

Part one of a three part series on transitioning from Arduino to a plain AVR microcontroller and minimum supporting components (part two, part three)

I've built up a project on my Arduino Uno to control various aspects of my beer brewing system. At this point it seems to be doing what I want, but I would like to reuse my Uno for another project. How should I move my project from the Uno and breadboard to a PCB, perfboard, or whatever? Any good solutions out there?

\$\endgroup\$
  • 1
    \$\begingroup\$ Hey, I've got a two-part series (arduino.stackexchange.com/q/207/6, arduino.stackexchange.com/q/221/6) on transitioning from the Arduino to plain ATmega development. It may be a nice idea to add this question to the series as the new part 1, since it's one of the important steps of shifting to atmega. Want to do that? \$\endgroup\$ – Manishearth Apr 11 '13 at 16:14
  • \$\begingroup\$ Sure! Should I just edit my question to be part one and point to part two and three? \$\endgroup\$ – Pete Apr 12 '13 at 14:08
  • \$\begingroup\$ I'll do it, I'll have to keep the other ones in the same format :) \$\endgroup\$ – Manishearth Apr 12 '13 at 14:10
  • \$\begingroup\$ ... and, it's done. While each question has wider applications outside of transitioning from Arduino to pure microcontroller programming, having a linked series lends some flow to the process :) \$\endgroup\$ – Manishearth Apr 12 '13 at 14:16
23
\$\begingroup\$

Here are some instructions. If you just want to know what goes where in your perfboard, read on.

Here's the pinout for the ATmega328:

enter image description here

Firstly, you'll need a LM7805 or something similar to get a 5V. If you don't know how these work, refer to this image.

Power

Now, connect the + end of your 12V battery to the IN of 7805, and - to the COM. Hereafter, I shall refer to any connection from COM as "GND" and any connection from OUT as "Vcc".

Reset

Connect Vcc to Pin 7 and 20 of the ATmega328, and GND to pin 8 and 22. Connect Vcc to a ~10 kiloohm resistor, and connect the other end of that to the RST pin (pin 1). Also, connect GND to a reset switch, and the other terminal of the reset switch to pin 1. When the reset switch is on, the Arduino will restart. If you don't want a reset switch, just connect Vcc directly to pin 1.

enter image description here

Clock

Connect GND to the negative terminals of two 22 picofarad capacitors. Connect one capacitor to pin 9, and the other capacitor to pin 10.

Now, connect a 16MHz clock between pins 9 and 10:

enter image description here

enter image description here

Analog reference

If you use the AREF pin, just connect your AREF to pin 21.

Rest of the pins

These are labelled in the diagram above. Pins 23-28 are A0-A5. Pins 2-6 are digital 1-4, 11-19 are digital 5-13. Use these normally. Note that digital pin 13 (pin 19 on the microcontroller) won't have an LED anymore, but if you wish to connect one, connect it to an LED, followed by a 200-300 ohm resistor, followed by ground:

enter image description here

Programming

If your Arduino is a DIP Arduino (the ATmega is removable), then just program it using the IDE, remove the ATmega, and place it in your perfboard circuit (I assume you're using an IC holder). If the Arduino has a surface mount ATmega, see How can I use my SMD Arduino to program a separate DIP ATmega328?.

That's it! Now you can easily take an Arduino project to a perfboard!

Here's the final schematic:

enter image description here

\$\endgroup\$
9
\$\begingroup\$

Your project sounds like what many people would call for a shield to handle. In that case, I would buy an inexpensive variant arduino clone and replace it for the Uno. It really depends on what functionality you need.

There are so many clones out there, and I fear starting to sound like a spammer for mentioning clones I have used and like in many of my responses. But...

If you do need USB serial monitoring, seeed studio has a couple models that seem perfectly adequate and have a mini USB jack. Varying slightly, the teensy boards are small and cheap.

If you don't need USB serial monitoring, you can use a clone that only has an ttl/FTDI interface. The digistump digispark is very small, very cheap. The emsl diavolino is great, as is the modern device BBB.

If you choose this path and pick a clone that maintains the "standard" arduino pin locations, you can pick up any of the half dozen "protoshields" out there. Here's one that looks pretty cool if your circuit involves chips at all:

Arduino Compatible Protoshield Prototyping Shield ... but of course cheaper alternatives can be found. Depends on what kind of circuit conveniences you need for your design... power and ground rails, leads for chip pins, etc.

\$\endgroup\$
5
\$\begingroup\$

Here's one idea, I'm sure there will be others:

You can download and use Express PCB to design the printed circuit board. The software is free and they provide a service where they will manufacture the board for you. For a single board though, that will be pricey. Alternatively you can print the design (directly from that software) to a laser printer and then there are ways you can use the laser printed diagram to etch a PCB yourself. Here's one YouTube video that shows you how to do that.

\$\endgroup\$
  • \$\begingroup\$ How hard is it to design a PCB for someone with an intro level to electronics? \$\endgroup\$ – taco Apr 10 '13 at 22:43
  • \$\begingroup\$ @taco: Not too difficult to design a basic PCB using, e.g., EagleCAD software (free). You can start with this video tutorial series and work your way up. Alternatively, Jeremy Blum also has a couple of tutorials on his webpage that are pretty good. \$\endgroup\$ – boardbite Apr 12 '13 at 0:35
  • 3
    \$\begingroup\$ @Taco The easiest program for begginers is fritzing.org . You can design it on a breadboard, and then you can just arrange all the parts on the PCB and it will tell you where you need to add traces. It has very good graphics too, so it's user friendly. It even is what Arduino uses for their breadboard pictures. The best part: It is free and open source! \$\endgroup\$ – Anonymous Penguin Apr 18 '13 at 22:58
  • \$\begingroup\$ Thanks @Annonomous Person, I've downloaded Fritzing. I'll give it a go. \$\endgroup\$ – taco Apr 19 '13 at 4:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy