loading

This instructable will show you how to build your own development board from scratch! This method is simple and doesn't require any advanced tools, you can even do it at your kitchen table. This also gives a better understanding of how Ardruinos and other development boards really work.

You can design your development board to fit your specific purpose. This development board shown in the picture was used to control the rpm of a DC-motor. The DC-motor was controlled from a computer using the serial port. The LEDs were used to assist when debugging was needed.

In this Instructable I will show how to build a versatile development board, therefore the part list will not be the same as the one shown in the picture.

Step 1: Parts

Part list:

  • 1 Atmel ATmega88 (or any processor that best fits your needs)
  • 1 Dip IC socket 28
  • 1 10k ohm resistor
  • 1 100 ohm resistor
  • 1 diode
  • 3 0.1 μF capacitor
  • 1 10 μF capacitor
  • 1 LED-diode
  • 1 330 ohm resistor
  • Some jumpers
  • Some male-pins (or female)
  • A piece stripboard (use one with strips and not matrix, see picture)

To later be able to program your microcontroller you will need an ISP programmer (In-System programming). I used AVRISP mkII (http://www.atmel.com/tools/avrispmkii.aspx). There is a lot of different ISP-programmers to choose from, or you can build your own. There is also some ways to configuration an arduino to act as a ISP-programmer.

Step 2: Teori

To build and program a development board from scratch you will need to read some datasheets. It can sometimes be hard to find the thing you are looking for but I will provide the most important stuff.

ATmega88 datasheet

Hardware design consideration

First we need to look at the pinout of the ATmega88 which can be found in the datasheet.

Some important ports that need extra consideration are the following:

  • Pin 1. This is the reset pin that will reset the processor when it is low. This pin will need a pull-up, so the the pin always is high unless you want to reset. (This will be shown later)
  • Pin 7 and 20 is where the Vcc should be connected, 5V.
  • Pin 9 and 10: To these pins an external crystal can be connected, but we will use the internal oscillator. We can therefore treat these pins as usual digital pins.
  • Pin 17,18 and 19: These will be used for programming (this will be shown later).

Step 3: Stripborad Layout

To create the circuit diagram we will be using StripCAD, follow link to download the program.

This program can be a bit hard to use since it isn't user friendly, but it is effective when you know how to use it. Play around with it a bit and you will soon master it. Some good tips are the following.

  • Press c to search for components
  • Press v to obtain different variants
  • Press left mouse click between two dots horisontal to get a disruption
  • Press left mouse click between two dots vertical to get a solder bridge

When searching components:

  • "DILxx" will give you a Dual In-Line followed by the number of pins
  • "SILxx" will give you a Single In-Line followed by the number of pins

Otherwise just search for that component you are looking for.

Step 4: Pull-up Reset Pin

From the hardware design consideration document on side 6 we find the circuit in the picture. Read the text in the document to get a better understanding. This is the step were we handle the pull-up for pin 1.

It can be good to insert a manual reset for the microcontroller. This can be used by connecting a SIL2 in line with a 100 ohm resistor to ground. Short circuit the SIL2 with a jumper and the microcontroller will reset. The 100 ohm resistor will prevent the capacitor from short-circuiting. Otherwise just follow the circuit diagram from the document.

In the second picture the pull-up connection is illustrated in StripCAD

Step 5: Power Supply

To avoid interference a capacitor 10 μF is placed near the voltage input on the board. To avoid interference that is caused in the board 0.1 μF capacitor is placed between pin 7 and 8, and between pin 20 and 22. These capacitors will act as a low-pass filter. The small capacitor should be placed as close to the pins as possible for best effect.

It is also possible to add some kind of voltage regulator e.g. 78L05, to make it run on a battery.

Step 6: ISP Programmer

To program the processor you will need an ISP programmer. There is different connectors available, 6 pins or 10 pins. I used one with six pins, look at the hardware document to see how the connection should be designed.

ISP-programmer stands for In-System programming. The convenience with this type of a programmer is that you can program your device when it is installed in a complete system, rather than to have your chip installed before installing it to the system. It is also easy to reprogram once it is installed to the system.

See next step for how the ISP connection should be made.

Step 7: Layout

When the design is complete, press print to save it as a PDF (Or use attached file). Open the PDF-file and print it. Be aware that the printer setting should be set to actual size, otherwise the design will not match with the stripboard.

It is always a good idea to include a LED that shows if the power to the development board is on. That simple tip can save a lot of unnecessary debugging.

Steps to manufacture your own development board:

  1. Print out the circuit diagram, and use scissors to cut it out.
  2. Cut out a big enough piece of the stripboard, so the piece of paper fits on top.
  3. Position the paper over the stripboard so the holes corresponds, use an ordinary glue stick to attach the paper to the stripboard. Glue the paper to the side without copper strips.
  4. Start by making the disruption at the red crosses
  5. Follow up to build and solder from the lowest components to the highest, that will make the assembly easier.
  6. Hook it up to power supply (5V) and start to program.

Now the hardware of the development board is done!

Step 8: Programming

I used Atmel Studio for programming in C. Download the program and start to create awesome project with your own development board. It will be possible to boot-load arduino, but if you want a better understanding of what is hiding deep below in the arduino language try some examples in C. For example test out some timers,interrupts and analog reading.

In the ATmega88 datasheet you can find a lot of example codes for different specific tasks that your microcontroller can do.

As you can see this is a simple way to construct different prototypes for electronical devices. It is easy, cheap and doesn't require special tools.

<p>Thank you all for pointing out my misstake regarding the misleading title. The title is now changed and I hope you all will understand the Instructable better. </p>
The title states quite clearly you are building a microcontroller from scratch which most people would realise it's unlikely before even opening the instruction and then when you read that it is without any special tools you know something is not right. What you have done is create a development board for an existing microcontroller. Call me pedantic but if you are providing instructions to less experienced individuals then you need to be accurate. I don't want to put a downer on this as clearly you have put in much effort hopefully learning a thing or two along the way but if others are to truly learn from your effort then accuracy is essential and this needs to be corrected.
<p>really</p>
&quot;really&quot; what ?
<p>Yes, really your comment!?!<br>No, you are wrong, and probably doesn't even understand it.</p>
<p>Absolutely right, as how can anyone trust what is explained if the facts are inaccurate. I wish more people would take the time to get facts and spelling correct. </p>
<p>I have been using veroboard since it was invented (I am that old!!) and I have never seen or thought of putting a printed over plan on it as shown in your picture. What a great idea! Much respect if it is your idea.</p>
<p>Agreed that this is a development board that uses a micro-controller. If you want to learn how to build your own micro-controller, look at the Small Experimental Computer System, built in 1973, (yes.. the SECS machine). I designed the software programming language for it. I also wrote the diagnostics in micro-code for it. Another student designed and built the memory from scratch. Entire machine was built from scratch, including the power supply and assembler. Not many can claim to have done this type of work.</p><p>Mike</p>
<p>I have built Sim RAM and a CPU from scratch back in University. Does that mean I get to be in the cool kids club? </p>
<p>I am officially inducting you and tom-LI (next post) in the &quot;COOL Before Our Time&quot; MASTERS CLUB. </p><p>Yes....Building a CPU, wiring up your RAM, Wrting a BOOTLOADER, these are the things the MASTER does and hopefully the Grasshoppers appreciate. You see computing differently when you code at the Micro-code level. Intel 8080's, Motorolla micro-processor's...these really required real knowledge of logic circuits. one-shots and other things at the boot level that today's computer scientists are less likely to understand. I wrote micro-level host slave code that was early networking codes. I wrote diagnostics for tape drivers, printers, serial ports, disks and other devices, so my understanding of computers is different that someone who graduates today with a Computer Science degree. They don't need to know this stuff because it is done for them, so they can concentrate on high level phone apps and take advantage of what was done before them.</p><p>Personally, I liked writing assembler code and Basic and Fortran and Focal and Algol. Serial, non-oriented programming made more sense to me and my code was extremely high quality with little to no bugs.....and I'm talking several million lines of code.</p><p>So WELCOME!!! It is nice to see there are other Masters oiut there!</p><p>Master Mike</p>
<p>Anybody remember Intel's very first &quot;compatible&quot; competitor Zilog with <br>the Z-80? We had several S-100 bus systems based on it as well as the <br>8080 (pre-IBM PC with the 8088).<br>Televideo Terminals - those were the days. . . . .sigh.<br>What a great article this was though - really took me back.</p>
<p>We used Z80-MCB ( http://rio.early8bitz.de/hw/hw-boards-mcb.htm ) as a development platform for controlling a speech synthesizer in 1981-1982. It was later replaced by a Swedish Zilog based computer ABC-80. The first languages we used were Assembler and PL/M. I remember bending and disconnecting the timer interrupt pin from the CPU to stop it causing problem :)</p>
<p>Congrats!!</p><p>You are now a member of the </p><p>&quot;COOL Before Our Time&quot; MASTERS CLUB.</p><p>Welcome!! I still have a copy of the CPM source, did 8008 and 8080 before doing PDP-8 and PDP-11 code. Mike</p>
<p>I built an 8080 with 32k of memory, a bootloader (remember the SDK86?), a serial and parallel port. Used a VT100 or terminal program to access it.</p><p>Had to write the assembly code for the bootloader myself. It worked much like an SDK86.</p><p>https://en.wikipedia.org/wiki/Intel_System_Development_Kit</p>
<p>In the early 80's I built a &quot;Big Board&quot; Z-80 computer system, wrote a bootloader for the CPM op sys. The power supply weighed 20 lbs. I used 3 - 8&quot; SSSD floppy disks. One ran CPM, one ran the current program and the 3rd was for data. The system weighed 70+ lbs. What fun...</p>
<p>Aaa yes! The good old S-100 days. I had a S-100 chassi that weighed about 50lbs, and another chassi for two 8&quot; floppy that weighed another 40lbs!</p><p>Back when a &quot;desktop&quot; system required 20amps and weighed 100lbs.</p>
<p><a href="https://www.instructables.com/member/kvonborstel" rel="nofollow">kvonborstel..... You also have been inducted into the :<br></a></p><p>&quot;COOL Before Our Time&quot; MASTERS CLUB.</p><p>At 70lbs for the PC you probably didn't have to go to the gym to work out!!</p><p>Thanks for adding your comments! I'm glad to see that us old guys are watching what the young grasshoppers are doing. We led the way... Mike</p><p><br> <br> <br> </p>
This remember me when I have a components and a bread board in plastic and not make it due to beuatifull of the bread board withou components. And not put all togheder<br>But with this simple layout inspire to make the old microcontroller from 1971/2
<p>Please post your stripcad file :)</p>
<p>Wow... You've made it look so easy .... This could be the most fun I've had since I accidentally reversed the 12v supply on a TRS80-mod3 in 1978 and popped a few transistors..</p>
<p>hey, can you tell us how you calculate and why you need a 0.1&mu;F capacitor 10k, 100ohm and 330oh resistor ? why these values ?</p>
<p>Answering in a general way, many digital components can start oscillating on their own when they shouldn't. A few 0.1 uF <br>capacitors, preferably ceramic, across the power lines and in selected signal areas will <br>often stop the undesired oscillation. You put them in because they're <br>cheap insurance. They're 0.1 uF because you bought a pack of 100 of <br>them cheap so you'd have them handy. The old 7805 voltage regulator COULD oscillate in very rare circumstances and a 0.1 from output to ground would prevent it. </p><p>The 330 ohm resistors are a <br>common size to limit current through a cheap LED in a 5 volt circuit. <br>Again, it's this value because you bought a bag of 100 or 500 when you <br>bought the big bag of cheap LEDs, so you would have them on hand. You probably <br>wouldn't notice the difference if you used 270 ohms or 390 ohms. The <br>10K resistors are a common size to hold an unused input high or low. <br>The 100 ohm resistors are also a common size, with lots of uses. If you<br> have an input with a 10K resistor holding it high, a 100 ohm resistor to ground<br>can be used to pull it low when you need it. </p><br>
<p>Why are the decoupling capacitors not ceramic? The ones you used are not very effective.</p>
<p>Awesome Build...</p>
<p>Great article for beginners! </p><p>Don't listen to people complaining about the title. Makers use the terms &quot;microcontroller&quot; and &quot;microcontroller board&quot; interchangeably. Anybody who knows the difference knows enough of what you mean and is being overly nit-picky. </p>
<p>Very good write-up - and a useful addition to folks wanting to understand the topic at a deeper level than just buying the latest dev-board du jour.</p><p>Congrats - you got my vote.</p>
Serial ports, where?
Serial means the bits goes in series and not in paralel! A usb uses a serial protocol so you can call it a serial port in fact
<p>Pin2 and Pin3 of the microcontroller chip are used as the RxD and TxD pins, in the chip support serial I/O block. Notice that these are TTL-level, not RS232 level signals.</p>
<p>I agree with some of the comments. If you would have used a microprocessor (e.g. a 6502 that was used in the Apple II) and you would have added additional chips for example a UART, some buffers, shift registers, memory, etc. then you are building a microcontroller.</p>
I'm glad there are comments regarding the title and the use of words as I have many problems with their usage. I have pretty much given this the distinction as micro- and macro-perspective. E.g. Make your own pancakes: &quot;Get some pancake mix, and add water.&quot; vs. making them from scratch. Not being in the electonics design industry, I initially did not find it questionable (probably due to the degree of completeness of the IC.) But after reading, I thought &quot;well the chip does most everything. This is wiring and programming&quot;. He about the current use and understanding of articulate, semantics and pronunciation. This all brings up much frustration to me. Thanks for the instuctable. There are things I occasionally would like to make-work, (furnace operation counter and temperature difference recorder), but I see it gets quite involved. (Currently it the metering is accomplished by an analog clock that goes on with the blower motor.)<br><br>Thames again.
<p>The title should be changed to &quot;Build Your Own Microcontroller Board&quot;</p><p>Building a microcontroller would be an interesting instructable but it would consist of many MSI parts or an FPGA. This is a good writeup on what a microcontrlolller is:</p><p>https://learn.mikroe.com/ebooks/picmicrocontrollersprogramminginassembly/front-matter/introduction-to-the-world-of-microcontrollers/</p>
<p>My idea of a microcontroller is a chip that contains a microprocessor and peripherals. That is program memory, RAM, i/o, UART, A/D, etc.</p>
<p>too nit-picky, any board with a microcomputer, is called a microcomputer. and in many cases, is shortened to just plain computer.</p><p>any board with a microcontroller, can be called a microcontroller. if it can be used for general purpose, no need to specify any dedicated purpose.</p><p>it, does not matter how simple or complex a microcontroller is. it's purpose is to control something, depending on the programming.</p>
<p>An inapt analogy, I'm not sure you would confuse &quot;microprocessor&quot; in the same way. There are microcontrollers, and there are boards. This build describes a board. </p>
<p>I see the reason for people complaining about the title, but for me as a complete novice, the very clear explanation of assembly and and purposes of the components was very important for me to understand the circuits.</p>
Step #8 seems unclear from perspective of the beginners this 'ible is aimed at. You cannot &quot;boot-load&quot; an AVR microcontroller. If you first install the Arduino bootloader, yes. But then you have built an Arduino board.
I Think the titel Are a bit misleading, as you USE a microprocessor, but thanks for sharing.
<p>I agree with the others, this is a development board or breakout board for a microcontroller. </p><p>However, I do think this is a valueable instructable concept. You don't have to buy a development board to use a microcontroller, I've used small 8 pin PICs in prototypes with just a voltage regulator, pull up resistor, and a cap. You really don't need any of the extra hardware in most cases. It makes things easier, but in production type products, keeping the parts count low can make a huge difference.</p>
<p>And you probably ended up spending more. I can buy an Arduino nano from China for about $3, including USB and bootloader or I can buy an ATmega328 from Farnell, Digikey or RS for $2 + S&amp;H, but I would need at least a programmer, Vreg, caps and more.</p><p>It's a hobby, ok, but wiring and checking even an ATtiny25 on a breadboard for ICSP &amp; power is not the most entertaining way to spend half an hour.</p>
<p>For cutting traces on stripboard, a rotary (Dremel) tool with a small cutting disc is useful. But, wear protective eyewear.</p>
<p>Isn't that a bit over kill for vero/strip board? I found a drill bit held by hand and a couple of twists and the trace is cut. I eventually bought the right tool for the job but after wondered why I had payed &pound;25 for something that was not radically different from my hand held drill bit.</p>
<p>I am fairly new to electronics, and the title did not confuse me much. At least not for very long. I soon realized that the microcontroller was just a part in the project as a whole. It's OK to point out that the title needs work but damn guys, how many of you need to jump on that band wagon? This is a good tutorial. It's a little bit over my head, but with some research I think I could build one. And I don't need the title fixed to make that happen.</p>
<p>I see that your are a student at LTH, applied Mechatronics. Been there done that! ;)</p><p>Nice tutorial!</p>
<p>Another good program for designing stripboard projects is Abacom's LochMaster.</p><p>Although it does cost 50 Euros.</p><p>http://www.abacom-online.de/uk/html/lochmaster.html</p>
<p>Look at &quot;opencores&quot; for really building a microcontroller instead of wiring up an existing one.</p>
The ATmega88 is the microcontroller. HUGE title mistake. Call it microcontroller development board or something.
<p>I think the tile is a huge mistake! Getting confused almost all beginners</p>
<p>gracias por el proyecto</p>
<p>I think this is a really good tutorial on setting up a circuit that uses a microcontroller outside of a dev board. This is something I encourage people to do often, instead of incorporating their dev board in the end product. However, I must agree with others in pointing out that the title is incorrect and misleading. This is not about creating a microcontroller, it's about using a microcontroller outside of a dev board. I really wish the author would clarify this, because I think this is a good instructable.</p>

About This Instructable

80,565views

504favorites

License:

More by Karlstrom:Build Your Own Development Board 
Add instructable to: