element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Open Arduino
  • Challenges & Projects
  • Project14
  • Open Arduino
  • More
  • Cancel
Open Arduino
Blog BirthdaySpecial: MEGATRON32 - AVR Dev Board
  • Blog
  • Forum
  • Documents
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Open Arduino to participate - click to join for free!
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: sunnyiut
  • Date Created: 14 May 2018 3:19 PM Date Created
  • Views 1804 views
  • Likes 10 likes
  • Comments 4 comments
  • ardexpert
  • openarduinoch
Related
Recommended

BirthdaySpecial: MEGATRON32 - AVR Dev Board

sunnyiut
sunnyiut
14 May 2018
image

Open Arduino

Enter Your Project for a chance to win a grand prize for the most innovative use of Arduino or a $200 shopping cart! The Birthday Special: Arduino Projects for Arduino Day!

Back to The Project14 homepage image

Project14 Home
Monthly Themes
Monthly Theme Poll

 

Happy Birthday to Project14 [April 14th, it's been a month already image]

and to ARDUINO

 

This blog post is to celebrate the ARDUINO day and Project14 Birthday.

 

However, I am not the guy who likes to use Arduino in almost every project, I am more comfortable with the raw use of Microcontroller. But I do appreciate the way Arduino changed the concept of open source hardware and firmware. The most glorious part of Arduino is that it own the heart of everyone from enthusiasts, hobbyists to professionals.

To pay my tribute to Arduino I decided to share an old project based on AVR microcontroller, Atmega32.

 

This project does not directly related to Arduino, but stays with the themes suggested for Birthday Special.

 

Theme:     DIY Your Own Arduino - build your own AVR dev board that can be programmed using a C or C++ compiler.

 

Yep, this blog is about an AVR Development Board that I designed and named it MEGATRON32 image

this is the first time I am posting a blog on this development board.

 

Project timeline:     around the end of 2010 and the beginning of 2011.

image

 

 

Megatron32:    

 

It's a Development Board based on Atmega32 AVR microcontroller.

However Atmega16 and similar 40 pin AVR MCUs can be used too.

 

This board can be programmed using a C compiler.

I have used various IDEs like AVR studio, Bascom and MikroC Pro for AVR.

Recently I came to know and checked that Arduino IDE can also be used in case of Atmega32 and Atmega16 with additional header files.

 

It uses on board USBasp programmer to down load the hex file.

 

This board has some builtin sensors, displays, motor drivers but all the pins are accessible to the user through IDC10 terminals.

It can be directly powered by USB, whereas external supply can be used too.

 

 

 

 

Top and Bottom views -

 

imageimage

 

Side views-

 

imageimage

 

Why do I need to design something which is readily available?    

 

Ok, actually I was not intended to design a development board. After completing my Bachelor on December 2009 I started working on embedded system based design. I found that developing a proto board for R&D in every project is time consuming and boring. Therefore, I started to design modular boards which can be connected together for experimenting with the MCU. Now a days this sort of modular boards for sensors, displays etc are available in local market, but at that time it was not that much familiar in my region.

Later on, in my leisure time, I started joining all the modules in a single board. My intention  was to use it in training purpose, if I need it in future by any means.

Meanwhile, I got an opportunity to conduct a workshop on 'embedded system design' arranged by IEEE student branch in my University. To facilitate the workshop we needed development boards so that students can easily execute and modify the sample codes which makes the demonstration easier.

Somehow, a large number of students registered for the workshop because of the intense publicity of the organizers and I decided to go for a set of my own development board customized for that workshop.

 

So, let's check out what are the features MEGATRON32 has...

 

 

Features:    

 

 

  • Supported Microcontrollers
    • AtMega32, AtMega16 and similar 40 pin MCUs
    • AtMega8, AtMega48 and similar 28 pin MCUs with adapter board
    • All the AVR MCUs supported by USBasp can be programmed through CON_PROG header [beneath LCD display].

 

  • Peripheral Interfacing
    • RS232 communication
    • IR communication
    • PS2 AT keyboard / mouse interfacing
    • L293D motor driver, can drive up to 4 DC motors
    • 6v Relay
    • Buzzer

 

  • Display
    • 8 7Segment display
    • 8x8 Dot Matrix display
    • 16x2 Alphanumeric LCD

 

  • Analog Devices [on ADC port]
    • LIN POT 1KOhms
    • LDR
    • LM35 temperature sensor
    • Photodiode [IR]
    • Selectable AREF connection
    • Microphone

 

  • Other On Board Features
    • 8x4 LED logic display for 4 Ports
    • 10x4 IDC 10 Port pin connectors for interfacing with external device with Vcc and GND pins
    • Selectable 8x4 DIP Switches for Pull up and Pull down Port pins
    • 8x2 Button Keys for Port A and D with selectable Pull up or Pull down
    • BCD to 7seg driver, 4 to 16 multiplexer, 8 channel high current 0v provider by ULN 2803A IC with open connectors for interfacing with external devices
    • 5v regulator [ac/dc 7v – 30v input]

 

  • Burner
    • USBASP [by Thomas Fischl]
    • External programmer can also be connected

 

  • Power Supply [DC 5v operation]
    • External AC/DC input from 7v to 30v
    • USB Port

 

 

Hardware Layout:    
image

 

1. Atmega 32 mounted on zif socket

2. 16x2 alphanumeric display

3. 8x8 Dot matrix display

4. 8 seven segment LED display

5. Buzzer

6. Relay

7. 8x4 LED for indication of PORT pins status

8. IDC10 header to connect external devices

9. DIL 8 switch to pull up or down PORT pins

10. Jumper to select PORT pin pull up or down

11. DIL 8 switch to enable onboard modules

12. Analog sensors and transducers

13. 8x2 button switches for digital input

14. Jumper to select button pull up or down

15. PS2 port

16. 8 jumpers to isolate analog circuitry from digital i/o of PORTA

17. Reset switch

18. Terminal blocks to connect external power and Dc motor [4]

19. RS232 port

20. USB port for USBasp programmer

21. External 5v 2A supply

 

 

Circuit Diagram:    

 

The detail circuit diagram is separated in several parts -

 

MCU main unit                                                                LEDs and Buttons                                                            Analog

imageimageimage

 

Display                                                                           Peripherals                                                                      Programmer

imageimageimage

 

 

Compilers / IDEs:    

 

It's a development board with an USBasp programmer on board, which needs *.hex file. Any compiler which can produce a hex file can be used with it.

However, I have used Atmelstudio, Bascom and mostly MikroC Pro for AVR so far.

 

When I thought about posting this blog on Arduino day, I was thinking to figure out a way to setup the MEGATRON32 board to be used with Arduino IDE.

I searched the internet and found it's quite easy to do and no modification is needed.

 

  • that there are header files for ATmega32 and ATmega16 to be used in Arduino IDE.
  • USBasp is already supported by Arduino IDE
  • libraries work fine [like LCD], but pin configurations need to be changed according to the circuit diagram

 

To use the USBasp programmer with ATmega32 in Arduino IDE, I followed this tutorial - Using Atmega32 With Arduino IDE

 

Arduino IDE [sample codes]:    

 

I tried some basic codes using Arduino IDE. It works fine. But the USBasp programmer was not detected by the IDE, therefore I used the hex output option [export compiled binary] and AVRdude to burn the hex into the board.

I think the reason why the programmer is not detected by the Arduino IDE can be the firmware version. I have to check it out, and will post an update on the result.

 

 

Blink LEDs -image

 

As usual the very first code is to blink LEDs. image Target is to toggle all the PORT pins on every 0.5 seconds.

 

/*Blink
  Turns on an LED on for 0.5 second, then off for 0.5 second, repeatedly.
 */

byte SET = B11111111;
byte CLEAR =  B00000000;

// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  DDRA = 255;
  DDRB = B11111111;
  DDRC = 0XFF;
  DDRD = B11111111;    
}

// the loop routine runs over and over again forever:
void loop() {
  PORTA = SET;                // turn the LED on
  PORTB = SET;
  PORTC = SET;
  PORTD = SET; 
  delay(500);                // wait for a second
  PORTA = CLEAR;              // turn the LED off
  PORTB = CLEAR;
  PORTC = CLEAR;
  PORTD = CLEAR;
  delay(500);                // wait for a second
}

 

 

 

 

 

 

hello, world! -image

 

The 2nd code is the LCD library  project. It displays the "hello, world!" on the 16*2 LCD display and scrolls through out the screen.

 

/*
  LiquidCrystal Library - scrollDisplayLeft() and scrollDisplayRight()

 Demonstrates the use a 16x2 LCD display.  The LiquidCrystal
 library works with all LCD displays that are compatible with the
 Hitachi HD44780 driver. There are many of them out there, and you
 can usually tell them by the 16-pin interface.

 This sketch prints "Hello World!" to the LCD and uses the
 scrollDisplayLeft() and scrollDisplayRight() methods to scroll
 the text.

  The circuit:
 * LCD RS pin to digital pin 2
 * LCD Enable pin to digital pin 3
 * LCD D4 pin to digital pin 4
 * LCD D5 pin to digital pin 5
 * LCD D6 pin to digital pin 6
 * LCD D7 pin to digital pin 7
 * LCD R/W pin to ground
 * 10K resistor:
 * ends to +5V and ground
 * wiper to LCD VO pin (pin 3)

 Library originally added 18 Apr 2008
 by David A. Mellis
 library modified 5 Jul 2009
 by Limor Fried (http://www.ladyada.net)
 example added 9 Jul 2009
 by Tom Igoe
 modified 22 Nov 2010
 by Tom Igoe
 modified 7 Nov 2016
 by Arturo Guadalupi

 This example code is in the public domain.

 http://www.arduino.cc/en/Tutorial/LiquidCrystalScroll

*/

// include the library code:
#include 

// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("hello, world!");
  delay(1000);
}

void loop() {
  // scroll 13 positions (string length) to the left
  // to move it offscreen left:
  for (int positionCounter = 0; positionCounter < 13; positionCounter++) {
    // scroll one position left:
    lcd.scrollDisplayLeft();
    // wait a bit:
    delay(250);
  }

  // scroll 29 positions (string length + display length) to the right
  // to move it offscreen right:
  for (int positionCounter = 0; positionCounter < 29; positionCounter++) {
    // scroll one position right:
    lcd.scrollDisplayRight();
    // wait a bit:
    delay(250);
  }

  // scroll 16 positions (display length + string length) to the left
  // to move it back to center:
  for (int positionCounter = 0; positionCounter < 16; positionCounter++) {
    // scroll one position left:
    lcd.scrollDisplayLeft();
    // wait a bit:
    delay(250);
  }

  // delay at the end of the full loop:
  delay(1000);

}

 

 

 

 

 

ADC example -
image

 

The third code that I tried is the analog input project. It reads the voltage from a Potentiometer connected to ADC[2] and then toggle PortB.0 [digital pin 0 in Arduino].

The delay between the output switching/toggling depends on the analog voltage [ADC value], which is displayed on the LCD.

In this board, PORTB.0 [digital pin 0 in Arduino] is connected to a buzzer, so this code will generate a pulsatile sound which can be varied by the potentiometer.

 

/*
  Analog Input

  Demonstrates analog input by reading an analog sensor on analog pin 2 and
  turning on and off a light emitting diode(LED) connected to digital pin 0.
  The amount of time the LED will be on and off depends on the value obtained
  by analogRead().
  The same digital pin 0 is connected to a buzzer. It will produce a pulsatile
  sound where on/off time depends on the analog input value.
  The 16*2 LCD will show the ADC value.

  The circuit:
  - potentiometer
    center pin of the potentiometer to the analog input 2
    one side pin (either one) to ground
    the other side pin to +5V
  - LED and Buzzer
    anode (long leg) attached to digital output 0
    cathode (short leg) attached to ground

  created by David Cuartielles


  This example code is in the public domain.

  http://www.arduino.cc/en/Tutorial/AnalogInput
*/

int sensorPin = 2;    // select the input pin for the potentiometer
int BUZPin = 0;      // select the pin for the LED
int sensorValue = 0;  // variable to store the value coming from the sensor

// include the library code:
#include 

// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);


void setup() {
  // declare the ledPin as an OUTPUT:
  pinMode(BUZPin, OUTPUT);

  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("ADC EXAMPLE");
}

void loop() {
  // read the value from the sensor:
  sensorValue = analogRead(sensorPin);
  // turn the ledPin on
  digitalWrite(BUZPin, HIGH);
  // stop the program for  milliseconds:
  delay(sensorValue);
  // turn the ledPin off:
  digitalWrite(BUZPin, LOW);
  // stop the program for for  milliseconds:
  delay(sensorValue);

  lcd.setCursor(0, 1); // bottom left
   String stringOne =  String(sensorValue);
   lcd.print(stringOne);
   lcd.print("  ");
}

 

 

Attached video contains the demonstration of some sample codes for MEGATRON32.

Codes are written Using Arduino IDE and MikroC Pro for AVR.

 

You don't have permission to edit metadata of this video.
Edit media
x
image
Upload Preview
image

 

Well, that's all about it so far.

Don't know whether this is worth posting this blog or not,

just hoping some of you may find it interesting.

 

It's a tribute to Arduino Day image

  • Sign in to reply

Top Comments

  • balearicdynamics
    balearicdynamics over 7 years ago +1
    It's a great project for a robust and complete dev board. You say it's an old project but it seems really actual! Enrico
  • sunnyiut
    sunnyiut over 7 years ago in reply to balearicdynamics +1
    Thank you Enrico. I designed this board on around 2010, 2011. that's why i said, it's an old project
  • DAB
    DAB over 7 years ago +1
    Nice board. You can explore many options with that amount of peripherals and sensors. Very nice post. DAB
Parents
  • balearicdynamics
    balearicdynamics over 7 years ago

    It's a great project for a robust and complete dev board. You say it's an old project but it seems really actual!

     

    Enrico

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
Comment
  • balearicdynamics
    balearicdynamics over 7 years ago

    It's a great project for a robust and complete dev board. You say it's an old project but it seems really actual!

     

    Enrico

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
Children
  • sunnyiut
    sunnyiut over 7 years ago in reply to balearicdynamics

    Thank you Enrico.

     

    I designed this board on around 2010, 2011. that's why i said, it's an old project image

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube