ATMega644 and DEV32 board running at 3.3vWhat happens when you need 3.3V controller board and spare DEV-32 board lying around? Well, you end up converting one into 3.3v logic friendly controller board.

The process is not too complicate but requires extra hardware such as ATMega324p or ATMega644, a couple of 3.3V voltage regulators in TO-92 form-factor and some patience. You could use any other newer micro-controllers that support lower voltages and are pin compatible with ATMega32.

 Benefits of running DEV-32 at 3.3V

  • you can easily interface with 3V logic level components such as XBee, EM408 GPS, Copernicus GPS, etc. without extra voltage level-shifting components;
  • you reduce your power requirements;
  • you can use one of the lighter/smaller LiPo batteries to power your micro;

Conversion process

The board comes standard with 5v voltage regulators. However, since we want our dev-board to run at 3.3V we will replace stock voltage regulators with a couple of LM2950-3.3 from National Semiconductor. We will need  to replace both of them if we are planning to power 3V peripheral off the board 's power pins. Now once voltage regulators are soldered into place, we would like to test voltage level on 10th pin from the top left side of the socket (JTAG socket should be top-left when you looking at the board). It's always better to be safe then sorry - therefore make sure to unplug ATMega micro-controller before powering the board. Once you verified that the levels are correct, we can turn off power supply to the board and plug-in ATmega324p/ATmega644 into the socket. Turn it back on and you should be able to upload some sort of test program to the ATMega 324p/644 controller and verify that it works.

 ATMega644 and DEV32 board running at 3.3vTest software

This program is written in Arduino IDE. The purpose of the software is run in the infinite loop and print statements to serial line including loop number.

void setup()
{
  Serial.begin(38400);
  Serial.print("Setup entered...");
  Serial.println();
  delay(5000);
  Serial.print("Setup done...");
  Serial.println();
}

void loop()
{
  Serial.print("Main loop entered...");
  Serial.println();  
  int counter = 0;
  while(true)
  {
  Serial.print("Main loop iteration ");
  Serial.print(counter, DEC);
  Serial.println();  
  delay(5000);
  counter++;
  }
}

In order to validate the output on TX line of the microcontroller you will need one of the USB-to-serial bridges running at 3V (not 5V ;-). Any of the following will do: