0x08: Arduino Nano Experimenter’s Board

Background

Some animated character once said: “Trying is the first step towards failure“.

Correcting wiring mistakes in early prototyping phases is a well-known source of frustration for people tinkering with electronics and probably has scared too many youngsters away from pursuing a career within natural sciences.

The 0x08 design mitigates this risk of frustation by implementing rugged snap-in terminal blocks from Phoenix Contact thereby eliminating the use of loose wires with header connectors, screw terminals, and other ill-designed ways of making electrical connections in situations, where frequent physical connection/disconnection of wires is necessary.

 

Function

This design allows an Arduino Nano to connect with sensors, actuators etc. using the ingenious screw-free snap-in terminals from Phoenix Contact.

Simply press the orange button, insert wire (stranded), release the button, and you have a robust electrical connection without the need for using tools and without the risk of loosing small screws associated with screw terminals. For solid wires you simply stick in the wire; no need to push the button. This approach makes (fast) prototyping a charm and also carries huge potential for applications in teaching, where time for correcting annoying wiring mistakes is limited.

 

Phoenix_ContactThe terminal block used in the 0x08 design; Phoenix part no. FFKDSA1/H-2,54-16

 

A power supply based on the classical 7805 linear voltage regulator is included. Note the possibility to add more regulators in parallel thereby increasing the output current in steps of 500 mA for each regulator. Also note that cooling of the regulators is limited, but copper pour on both sides of the PCB serve as heat sink thanks to the static vias placed under the 78M05 regulators. Add some heat transfer paste under the heat sinks of the regulators (between regulators and the PCB) to improve heat transfer to the copper pour on the backside of the PCB.

The Grätz bridge acts as failsafe measure in relation to accidentially switching polarity on the input power lines. Simply connect any power supply available specified at minimum 8 VDC (6 VAC) and the circuit is powered. The voltage of the electrolytic capacitors sets the limit for the input voltage.

Power jacks with 2.1 mm pin/5.5 mm hole are becoming de-facto standard, so this is also included. Alternatively use the screw terminals. The power supply can be excluded, if a stabilised DC power supply rated at 5 VDC is available. Connect to the screw terminals labelled “VCC” and “GND”.

Surface mount electrolytic capacitors are an option, but a more sturdy PTH component is recommended, if this design is to be used for teaching purposes. The two pads with “+” and “-” indicate, where to connect an axial capacitor.

An eight channel Darlington transistor array (ULN28o3LW) allows the digital outputs of the ATmega328 MCU to sink reasonable loads of up to 500 mA per channel; the output stage in the Darlington array is equipped with clamp diodes, so relay coils and other inductive loads will not damage this particular circuitry. Normal DIO operation (direct access to the ATmega328 MCU pins) or buffered output via the Darlington array is selected channel-wise with jumpers.

Eight LEDs indicate the state of each of the digital pins D2 through D9. These LEDs are driven directly by the ATmega328 MCU.

The Arduino Nano form factor further allows for an ENC28J60-based Ethernet controller board to be plugged in effectively giving you IoT capabilities and facilitating easy connection of sensors and actuators to LAN or web-based services.

Inside the Arduino Nano socket there is a DIP-28 socket and a quartz oscillator. This allows ATmega328P in the plastic dual inline package to be used instead. Note that analogue channels A6 and A7 are not available on the ATmega328P package.

License terms
The 0x08 design is published under the Creative Commons Unported 3.0 License.  I do not profit from this design, neither should you. You are welcome to adapt, modify, and redistribute this design as long as the license terms are respected.

Physical size of PCB

100 mm (length) by 50 mm (width). Double-sided.

Rendering and photos

0x08rev3_front_wo_compDipTrace 3D rendering of PCB front side without components (Rev. 3)

0x08rev3_back_wo_compDipTrace 3D rendering of PCB back side without components (Rev. 3)

0x08rev3_front_w_compDipTrace 3D rendering of PCB front side with components (Rev. 3)

0x08rev3_front_tilt_w_compDipTrace 3D rendering of PCB front side, tilted, with components (Rev. 3)

 

0x08_assembledPhoto of an assembled PCB (Rev. 0) with an Arduino Nano and an ENC28J60 Ethernet shield

 

Bill of materials

4 pcs. rectifier diode, 1N4007, 1A, 1 kV, DO-214

3 pcs. 220 uF, 25 V, electrolytic capacitor, 8.35 mm x 8.35 mm, SMD

or

1 pcs. axial electrolytic capacitor, 1000 uF, 25 V, PTH

1 (up to 3) pcs. LM78M05, linear voltage regulator, 5 VDC, 500 mA, TO-252

1 (up to 3) pcs. 100 nF ceramic capacitor, 1206

1 pcs. ULN2803LW, eight channel Darlington array, SOIC-18, 300 mil

1 pcs. LED, green, 1206

8 pcs. LED, yellow, 1206

9 pcs. resistor (current-limiting resistors for LEDs), 715R, 1206

8 pcs. jumper. 2.54 mm (0.1″)

1 pcs. 8×3 male header, 2.54 mm (0.1″)

2 pcs. 15-pin female header, 2.54 mm (0.1″)

2 pcs. 2-pin terminal block connector, 5.08 mm (0.2″)

1 pcs. 5.5 mm hole/2.1 mm pin, power jack

2 pcs. Phoenix 16-pin terminal block (Phoenix part no. FFKDSA1/H-2,54-16)

Optional parts allowing ATmega328P to be used:

2 pcs. 22 pF ceramic capacitor, 1206

1 pcs. 16 MHz quarz oscillator, HC49S

1 pcs. DIP-28 dual inline package IC socket

Estimated cost

Terminal snap-in connectors, terminal blocks, power jack, headers, jumpers, resistors, capacitors, diodes, LEDs, and linear voltage regulators should not cost more than EUR 15,-.

Downloads

DipTrace v. 3.0.0.0 PCB design file: 0x08Rev3_ratlined

Gerber files: Gerber_0x08rev3

Datasheet: Phoenix Contact part no. FFKDSA1/H-2,54-16

LabVIEW interface

In the past I have used LabVIEW for research and development. I have some old code and coding ideas that I gladly share for inspiration.

An intuitive and graphically oriented way of controlling the ATmega328 MCU is provided by the LINX framework, which is a free toolkit for the commercial software LabVIEW. Note that a personal copy of LabVIEW (not for commercial or research use) can be obtained for a mere USD 50,- (in Denmark it sells for DKK 416,25 equivalent to EUR 56,-). Trial versions can be downloaded from National Instruments website. Otherwise team up with somebody, who has a licensed copy.

The LabVIEW coding is quite straight-forward and not very challenging for most purposes. The learning curve compared to text based programming should be quite steep.

The LINX toolkit is downloaded and installed via the NI Package Manager. See the LabVIEW Makerhub website for details. There are also some old LIFA community websites worth skimming.

 

One nice thing about the graphical programming environment is the intuitive handling of errors generated, when the program executes. Using a simple case structure and wiring the error terminals appropriately, a starting point for your code could look like this:

001

Note the red colour on the border of the case structure. The three inputs on the lefthand side are controls/constants that tell the software, which interface type (serial or TCP), which serial port (COMxx), and which technology platform (LINX/Arduino or myRIO) the software should expect. The output device_name tells, which ATmega MCU is connected. This requires firmware to be uploaded to the ATmega MCU prior to executing the LabVIEW code. This tool (along with the firmware HEX-files) is part of the installation of the LINX toolkit.

The other case, “no error” in green colour, then handles all the code, when the first sub-routine does not report errors, i.e. communication to the ATmega MCU has been established  succesfully. I have added routines for Analogue Read, Digital Read, and Digital Write in the following:

003The blue block, before the Analogue Read, defines, which analogue channels/pins to scan. Similarly, the two blue blocks before Digital Read and Digital Write respectively defines, which digital channels/pins to read or write to.

 

The corresponding faceplate holding the graphical user interface (GUI) could look like this:006

Adding functions for logging data to a .txt-file, sending data over Ethernet/Internet etc. is trivial, so I will not repeat it here at present time.

Links

Comments are closed.