Arduinos from Scratch

In the last meetup, Dan Hienzsch presented his latest series of blog posts about designing an Arduino from Scratch. The results of this series were full schematics with BOM (Bill of Materials) of an Arduino UNO in KiCAD.

Dan started his talk by giving a short overview about the building blocks of an Arduino UNO. Arduino is open-source hardware and this means, that you can download its schematic. (By the way, many years ago, schematics came often as form of documentation when you purchased a product, this site has still a nice collection.)

An Arduino board has mainly 3 parts: A power supply, a USB-to-serial converter for programming, and a microcontroller. All blocks consume power. As Dan measured, a lot of current is consumed by the peripherals of an Arduino. If you want to run an ATmega on a battery, it can make sense, to only use the Arduino UNO board for programming, and have the MCU running in a different board for the “real” application. As it looks from the schematics, the Arduino UNO was mainly engineered for manufacturing instead of power consumption or number of parts.

After the overview on the different design decisions of the building blocks, Dan explained the 2 usages of Opamps on the Arduino: Comparators and buffers. Learning more details on Opamps was interesting to many, and it feels like it would make a good topic for another meetup. To work with Opamps, you often need resistors for biasing. One option is to use resistors from a resistor network or array.

Last, Dan got more into details of using a microcontroller on a PCB. The hardest thing to learn is about using crystals to provide a stable clock to the controller. Then, providing a reset pulse for programming a board is not easy too. On the Arduino a circuit with a capacitance is used.