An analysis of the Arduino schematics

A project log for PIC-On-The-Go

PIC Microcontroller dev boards, in unusual cases

JarrettJarrett 07/31/2015 at 17:513 Comments

The first version of this project was intended to be cheap, fast, and use the bare minimum number of components. I have a bunch of those boards now, so I'm good on that front.

A good way to up my game on the reliability stand-point is to take lessons from the Arduino itself. I checked out the schematic before, but was mainly looking for cool features or maximising compatibility. It's time to revisit that a bit.

Starting from here:

This is a pretty bad schematic!

Here is a quick and not-complete analysis of it. It's not The Worst Schematic In The World or anything, but it could be way better.

The first, most obvious thing is readability. For an open source project that is designed to ease people into hardware, just shitting the components all over the page like that is a big "fuck you".

If you treat the top and bottom portions like separate entities, it's easier to read.

I have counted *six* power rails:

Other than the first and last ones, if you can identify the function from net name alone, I will give you a cookie.

Then the top left quadrant of the schematic:

First of all, that bypass cap is just kinda sitting there with some unidentified floating pins. I suspect they're for the op amp, but I shouldn't have to guess at these things.

The op amp circuit could (and probably should) have been separated into two distinct portions, split at the +5v section

The op amp itself turns on the P-FET when VIN / 2 is greater than 3v3. VIN is only active when the DC jack (PWRIN) is on. So what that circuit does is backfeed the 5v rail into the USB power rail when the DC jack is being used.

That's fine, but the only point of that is to power on the USB portion of the programmer chip when the DC jack is plugged in and USB is not. Why?

That logic is completely opposite (and probably broken) on the first rev of the UNO, which is funny:

Those are my big complaints, I guess.

I also don't like how the fiducials are just big unlabelled dots hangin' out, and the jumper pads (for RESET and GROUND) are a little weird.

Also not really sure why there's an overvoltage protection diodes on both of the chip resets, unless that's a recommended layout somewhere.

The protection circuitry for the USB side is getting used in my design for sure, I am not an expert on that bit. Probably not going to include the DC jack or power components, does anybody use those?

Edit: When only USB is plugged in, the entire board is getting powered through the reverse polarity protection of the P-FET. WTF.


zakqwy wrote 10/12/2018 at 00:29 point

I helped run a classroom exercise awhile back where we recreated the Leonardo from schematics. The schematic documentation could definitely use some work, particularly the net names and functional blocks. I also couldn't easily find machine-editable schematics, like a KiCad *.sch file; just *.pdfs. Ah well. I suppose it's an open source project, so I should do it and submit a PR.

  Are you sure? yes | no

Jan wrote 10/11/2018 at 09:37 point

You miss a point here: It started as a open source project, but no-one in the beginning cared about the schematic or why it works. They gave you a board, a maximum-reduced "IDE" and off you go. Got your first program working in seconds. Even if there are quirks in the schematic even now. those boards work like a charm. They do exactly what they are built to do.

It's really the same about all the "anti" articles and stuff... And it's not even you are forced to use this or that layout. You can choose from dozens of boards.

The barrier to start programming with PIC, ARM etc. is much higher, even today. Arduino has its definite downsides but come on, it isn't that popular because it's shit and doesn't work!

  Are you sure? yes | no

Jarrett wrote 10/11/2018 at 16:35 point

I did choose to use another board :)

This schematic has nothing to do with how it was in the beginning - It would take a day or two to make a cleaner schematic that would be easy to read and good for teaching people the hardware itself.

Speaking as a professional, if one of my underlings came to me with this schematic, I'd make them redo it.

That's really the whole point of this log. I'm not speaking to Arduino as an ecosystem, or comparing it to any other kind of microcontroller, just talking about this schematic out on its own.

  Are you sure? yes | no