Micro-FOBO Fall 2019
Micro-FOBO: Circuit and PCB Design
Author: James Spane
Table of Contents
Introduction
The Micro-fobo project requires a custom PCB in order to control eight separate servos motors with a limited number of I/O pins available as well as allow external power for the servo motors. The design and implimentation of the PCB will be compatible with the 3DoT Board.
Bread Boarding
The initial design of our PCB is based off of projectbiped and Renbotics use of the CD4017 decade counter. We are limited by the number of available I/O pins to run Micro-fobo and by using their design of the CD4017 we only need to use two pins. The shield design provided by both Project Biped and Renbotics is based around an Arduino Uno and has a large amount of code already written, that would take minor editing to adapt to the 3DoT hopefully allowing our project to save time. Using their design we breadboarded and tested a prototype, which is shown in the fritzing diagram below. The original breadboarding was done with the Arduino Uno for our V1 demo and later it was updated to be done with the 3DoT for the V2 demo. The initial breadboarding was successful with a constant power supply applied externally, so we proved that this simple design works.
Designing In Eagle
First Iteration: Board and Schematic
Once we have proved the circuit is functional and works as intended, I set out to design and build the custom PCB as required. The design we needed to build was fairly simple, so after following through Arxterra’s Eagle guide provided I set out designing it.
The PCB needed to fit pins for all eight servo motor connectors, as well as three pins for the ultra sonic, the CD4017 decade counter, and a JST mount to connect the external battery. I was able to avoid building a buck connector by buying an external one that overall will be more reliable than anything I can most likely build or fit on the PCB.
My first iteration of the PCB and Schematic has some simple errors that needed fixing. For starters I used all through hole components as I am inexperience with soldering. This took up a lot of unnecessary room as well as failed to meet all of the requirements of the PCB design which requires at least one SMD IC. I also failed to include any filter capacitors to help with the noise. Another issue that is easy to overlook is that I failed to properly snap all of the components to my grid, let alone set the grid size to a useful size, as it was 0.001 mil. My first iteration, including my original schematic and board are shown in figure 2 below.
Final Iteration: Board and Schematic
The second iteration and the third iteration of the PCB and Schematic had only minor differences so I will only discuss the final iteration and how we improved it.
To start, the 3 x 8 array of pins for the eight servo motors was composed of eight 1×3 header pin components. This made them difficult to lay out evenly and use our limited space to it’s maximum potential. To fix this, I designed a custom component that has all of eight of the servo connectors in an even 3×8 set up. They are all spaced evenly with 2.54 inches between them as that is what I read is the necessary space for the common servo connector. I also choose an CD4017 IC that is an SMD. Once I picked one from digikey, I was actually able to download a component designed for Eagle that are the exact dimensions of that component to make sure I was using the correct one. This cleared up an enormous amount of space on the 3DoT board. Next I installed a JST SMD component connector to allow for the external power to mount cleanly to the board. As for adding filter capacitors, I was unsure if I would be successfully soldering the SMD style, so I included one through hole and one SMD version between the 5V of the JST and ground, and between the 5V going into the CD4017 IC and ground. The updated and final iteration of the schematic and PCB are shown in figure 3 below.
Print Results
Once the final iteration was complete, I submitted it to JLC to be printed. The soldering took a rather long time for the SMD pins. I start with the SMDs as those require baking in an oven. My simple board took a total of about 4 hours, most of which was cleaning off the solder paste and reapplying it repeatedly until it was laid just right. Once done, I finished soldering the rest of the pins. Before testing the custom PCB we had to remove the solder point on the bottom of the 3DoT due to the external battery we are connecting. Once that was complete we were ready for testing.
Conclusion
Overall the PCB design was proved to be successful, it did leave room for improvement for future iterations. For example, the through hole capacitor that I used could easily be swapped for a SMD style capacitor, clearing up even more space on the board. With that extra space the orientation of the CD4017 could be rotated to optimize the routing of the signal wires. The JST connector polarity should also be reversed given as the cables I bought that connect to it are the opposite color, and that would minimize possible faults in the future. Lastly the custom component I created that is the 3×8 servo array, should be spread out width wise to leave more room between each set of connectors as it turns out that servo connectors aren’t as universally sized as I believed before.