Close
0%
0%

Breaduino

Something to keep you busy for a couple of hours!

Similar projects worth following
A variation of the breadboard Arduino.

A breadboard Arduino

Two years ago I bought these ATMega328-PU chips and resonators:

They were preprogrammed with the "Optiboot bootloader".

A mini-project

Anyway I thought I should do something with them so I thought a "Breadboard Arduino" would be a good start.

Checking on the resonator, it is a low drift 16 MHz crystal with built in loading capacitors. Unfortunately the pinouts don't exactly match the ATMega328 pins.

Checking the ATMega's they are actually ATMega328P-PU, the "pico current" version.

So here is my design:

The only variation to what can be found on the Internet, is that I forgot the reset switch (not essential as I just use a wire to short reset to ground) and the analog low pass filter.

For the analog bypass filter I used a 10R resistor instead of the 10uH inductor and increased both bypass capcitors from 100n to 1uF. This should give the same attenuation to clock noise as the recommended configuration.

Designing with the breadboard is easier than stripboard and no tracks need to be cut.

What is missing?

No USB interface and no power supply. No big deal as I can use a USB to RS232 adapter:

This one is nice as it has a 3.3v and 5v switch. I am not sure if this also switches the 5v power supply as well (nice if it did).

Did it work?

When fired up, the pre-installed Blink program worked but I could not upload a sketch from the Arduino IDE. After an hour or so of trying, I installed the Arduino IDE bootloader using the "Arduino as ISP" sketch and a spare Arduino Uno. Read the help guide carefully as the board has to be changed to "Nano ATMega328" after the uploading the "Arduino as ISP" but before the bootloader can be burnt.

After installing the Arduino IDE boot the USB-RS232 adapter worked fine (I was using the "Nano ATMega328" model).

Issues

The main issue with the breadboard is that the plate though holes are exposed on the top side of the breadboard. I had to carefully lift all the bare wires to clear the top surface. Other boards have the plate through holes on the top surface counter sunk.

I would include a reset switch next time and use this board:

Update

An update version with a reset switch and solder pads cleared on the edge:


Magic

  • Layout update

    agp.cooper01/31/2018 at 06:04 0 comments

    Update layout

    Here is an update of the layout with hookups for the FTDI and the "Arduino (Nano) as IPS":

    The resonator (i.e. crystal and loading capacitor package) has been replaced with a conventional (i.e. larger) crystal. The schematic shows an 8 MHz crystal but a 16 MHz is still okay proving the power supply is 5v.

    Note that the 10R resistor now shares a hole with a wire link (red) so that ARef equals AVcc (a previous oversight).

    Magic

  • Power Test 2

    agp.cooper01/30/2018 at 15:01 0 comments

    Revisited the Power Test

    Spent some time burning the 1 MHz bootloaders I found on the Internet. I was able to burn them but they would not upload a sketch. I could use the Arduino As ISP  to upload a sketch but the delay timing was well off. About 16x faster so a general fail for 1 MHz operation.

    I had better success for 8 MHz (internal RC clock). Need only a fuse modification to use and external oscillator. Not that surprising that the 8 MHz works as it is the default for 3.3v ATMega328 operation.

    Here are the current readings for 5V operation:

    • 8 MHz     8.88 mA
    • 4 MHz     7.05 mA
    • 2 MHz     4.75 mA
    • 1 MHz      4.28 mA
    • 500 kHz   4.06 mA
    • 250 kHz   3.96 mA
    • 125 kHz    3.91 mA
    • 62.5 kHz  3.89 mA

    Here are the current readings for 3.3V operation:

    • 8 MHz     3.35 mA
    • 4 MHz     2.10 mA
    • 2 MHz     1.20 mA
    • 1 MHz      0.75 mA
    • 500 kHz   0.49 mA
    • 250 kHz   0.36 mA
    • 125 kHz    0.30 mA
    • 62.5 kHz  0.27 mA

    Magic

  • Power Consumption

    agp.cooper01/29/2018 at 00:34 2 comments

    Power Consumption

    While searching the Internet for the auto-reboot solution, I came across a lot of low power Arduino projects. Given "coin battery" projects are the favour of the month, I though I would test the power consumption of the breadrino using the clock divide settiling.

    Here is the test code:

    /* Clock divide power consumption test */
    void setup() {
      pinMode(LED_BUILTIN, OUTPUT);
    }
    
    void loop() {
      int i;
    
      // Signal start of loop
      cli();
      CLKPR=0x80;
      CLKPR=0;
      sei();
      digitalWrite(LED_BUILTIN,HIGH);
      delay(1000);
      digitalWrite(LED_BUILTIN,LOW);
      
      // Loop through Clock divides (1/1 to 1/256)
      for (i=0;i<=7;i++) {
        cli();
        CLKPR=0x80;
        CLKPR=i;
        sei();
        delay(8192>>i); // Enough time for the multimeter to settle
      }
    }

    Pretty simple, flash the builtin LED to signal the beginning of a loop and then progressively lower the clock speed. Hold the clock spped for about 8 seconds to allow the multimeter to settle.

    Here are the results:

    • 16 MHz    13.54 mA
    •  8 MHz     9.26 mA
    •  4 MHz     7.36 mA
    •  2 MHz     5.76 mA
    •  1 MHz      4.98 mA
    • 500 kHz  4.53 mA
    • 250 kHz  4.31 mA
    •  125 kHz  4.20 mA

    It looks like 1 MHz is a sweet spot for low power consumption using a 16 MHz crystal and no other power saving options.

    Note: with a commerical Arduino board you probably have a power LED burning 5-10 mA on top of these reading (no wonder some people remove the power LED).

    Slowing down the clock has other consequences. Off the top of my head: millis(), delay(), delayMicroseconds(), micros(), Serial, SPI, tone(), servo() etc. and any other timing related code will need to be adjusted. You can always adjust the code by going back to full clock speed for those sections of code.

    However, there is generic board information and bootloader hex files available for 1 MHz operation on the Internet. Worth having a look!

    Magic

  • Auto-Reboot

    agp.cooper01/28/2018 at 23:16 0 comments

    Adding auto-reboot

    After some digging I found out how they auto-reboot the Arduino upon sketch upload.

    They use the FTDI DTR line via a 0.1uF capacitor to reset the Arduino. Some suggest a 10k pullup on the DTR line is sometimes necessary depending on the FTDI chip.

    Here is my updated layout:

    Magic

View all 4 project logs

Enjoy this project?

Share

Discussions

agp.cooper wrote 01/31/2018 at 02:22 point

I have quite few Digisparks that use this bootloader. So I have played with V-USB before.

An FTDI adapter is a whole lot easier to deal with than the temperamental V-USB interface.

The FTDI adapter also services as a power supply. Still I appreciate the USBreadrino concept.
AlanX

  Are you sure? yes | no

danjovic wrote 01/28/2018 at 12:43 point

Cool.

Add V-USB bootloader[1] and rename it again to USBreaduino, lol!!!

[1] https://www.obdev.at/products/vusb/usbasploader.html

  Are you sure? yes | no

agp.cooper wrote 01/28/2018 at 02:11 point

Nice! I will change the title.

  Are you sure? yes | no

Ted Yapo wrote 01/28/2018 at 01:28 point

Breaduino?

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates