Homemade Hardware - Week 2: Schematics and Shields

An Introduction to Schematics, board design, and working with CadSoft EAGLE PCB Design Software:

After successfully burning the bootloader to the ATtiny85 and creating an independent sensor last week, we moved on to designing schematics for discrete circuits. Our point of entry for working with EAGLE was using a pre-existing schematic of an Arduino BootLoader Shield to physically construct the circuit using perforated circuit board. Using an Arduino as a programmer to burn the bootloader using a breadboard becomes a laborious process.  The use of a shield makes the process easier and a lot faster.  The completed shield has a slot for both the ATmega328 and an ATtiny85, adding increased flexibility.  The images below show the completed shield:

Having learnt the basics of EAGLE, it was time to create a schematic of my own.  Over summer I spent some time working for a startup in California that's developing a smart device for the commercial agriculture sector.  One of my responsibilities was designing and building test equipment.  One of the devices I designed and built was a syringe pump - which is used for dispensing small amounts of liquid in very precise volumes (with accuracies down to microliters). The pump is driven by NEMA 17 stepper motor and operated using an Arduino in conjunction with a DRV8834 driver board from Pololu.com.  The original circuit existed only on a breadboard, so I decided to create my own shield for an Arduino Uno.

Schematic of Stepper Driver Shield

I began by creating a schematic in EAGLE (as shown above).  Here I faced my first hurdle, as the Stepper Motor Driver board (DRV8834) was not readily available in eagle.  With the help of a quick Google search, I set about designing a schematic for the component. It would have been easy to draw a simple schematic, without using the correct microcontroller IC, but I wanted to use this as an opportunity to follow the correct workflow.  The workflow is as follows:

> Create a new library, or open an existing one
> Create a new Symbol (the schematic representation)
> Add, or create a new, package (this is the IC for the component)
> Create a new Device
> Connect the Package pins with the Symbol pins

The images below show my process:

After completing the design of the schematic, I set about making the actual shield.  I used an off-the-shelf protoshield and soldered on all the components in the configuration I'd worked out in my schematic.   The DRV8834 driver is a 16-pin board, so I used female header pins on my shield to allow for the removal of the board if necessary.  The stepper requires a 6V, 1.5A power supply, which is fed into the driver board, so I attached a female connector to the shield via leads.  The shield is relatively simple, as the majority of the control commands are entered into the Arduino IDE's Serial Monitor, however I plan to add some additional pushbuttons to the shield for manual control of the pump's plunger.  The images below show the completed shield and the syringe pump itself.

Uncertainties about the process:

The stepper driver board has two ground pins.  The DRV8834 chip is a 24-pin package, so 8 of the pins go unused.  I initially left one of the ground pins unconnected, as there was only one available in the 24-pin package and EAGLE didn't allow me to connect two symbol pins to the same package pin. I didn't think this would be a problem, but when I tried to add the component to the schematic, EAGLE threw an error stating that there were unconnected pins.  As a workaround,  I simply attached the symbol's extra GND pin to a random package pin.  I'd like to find out what the actual solution would be in a situation like this.