8
\$\begingroup\$

I must admit I'm rather ignorant of all things electric, so I got an Arduino with the intent of filling this gap in my education, and also learning more about the physics behind programming and do low-level stuff, but I've not found a proper theoretic introduction to exactly what's going on within the device. I can only find plug-things-like-this type tutorials.

So, for example, here is a breadboard diagram of the blinking LED tutorial (pdf)

It seems to me like the wire connected to the 5v pin is connected to the + pins of the breadboard... which are connected to nothing. There's nothing else on the + column.

So isn't this an open circuit? What exactly is that + -- 5v connection doing?

That connection is not drawn in the schematic diagram.

schematic diagram

Nor is it clear to me how pins are connected within the arduino itself.

I know this is a basic "google it" question, but probably due to the fact that I don't have the vocabulary to do so I've not been able to find a description of current flow in an Arduino.

\$\endgroup\$
  • \$\begingroup\$ The schematic of the arduino board is available on arduino.cc; I'm sure someone will post it before long. In the AVR microprocessor itself, the digital IO pins are connected to the internal circuitry using a CMOS tristate buffer like this one: iue.tuwien.ac.at/phd/schrom/img748.gif \$\endgroup\$ – drxzcl Jul 22 '12 at 7:14
9
\$\begingroup\$

To know how things are connected on the Arduino itself you have to take a look at the schematic. This one is the Arduino Uno's. At the bottom right you can see how the board's I/Os are connected to the microcontroller:

enter image description here

So following the line from pin 13 you go to PB5 of the microcontroller. That means bit 5 of port B. If you set that pin to output and make it high you're supplying 5 V to the LED circuit. The series resistor will limit the current to about 5 mA, which is an OK value for the microcontroller.

So, since the 5 V comes from the Arduino's I/O pin the 5 V wire on the breadboard isn't needed.

\$\endgroup\$
7
\$\begingroup\$

You are right, the 5V wire is not connected to the circuit.

It probably was left there just because other experiments for that series of tutorials require it, but is not required for this circuit to work.

\$\endgroup\$
  • \$\begingroup\$ This is quite probably correct. The first thing I do when I get out a breadboard is connect power and ground, regardless of whether the circuit I'm working on needs them. \$\endgroup\$ – drxzcl Jul 22 '12 at 7:27
1
\$\begingroup\$

In general, the schematic you supplied essentially uses a "block-diagram" type of schematic, in that things are abstracted to ease implementation. In this case, the Arduino is depicted as a block, and it is assumed that all of its functions work as documented.

The Arduino is a development board based around an Atmel AVR microprocessor. In general, a microprocessor isn't "wired" in one way internally, it is designed to handle many different tasks. In order to implement so many different things, the internal "wiring" changes constantly inside the MCU according to what task it is currently processing (thank you, transistors!).

Compare this to hardware-implementations of logic (FPGAs), where they are "programmed" once to implement one specific function, and then the "wiring" inside stays constant.

I say "wiring" in quotes because even the logic level (AND and OR gates, etc) diagrams are still abstracted from what physically resides inside of the processor. Logic gates can be made out of different designs of transistor circuits.

The reason for all the abstraction is that it would be entirely asinine (and so far beyond impossible, I can't describe it in words) to deal with the low-level. So once the lowest level is designed and abstracted, the next level can be used with certainty it will do what it is said to. Repeat the cycle, and we go from transistors and logic gates all the way to high-level programming and graphical interfaces!

I'm kind of beating around your question, mainly because I couldn't tell you how the current flows through the Arduino. For a more solid reasoning of why, look into Integrated Circuits, VLSI (Very Large-Scale Integration) and related topics that are sure to pop up in your search.

\$\endgroup\$
  • \$\begingroup\$ If anything, this answer made me more confused. It does not answer the question but muddies the waters by introducing a bunch of unrelated concepts. \$\endgroup\$ – drxzcl Jul 22 '12 at 7:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.