My Senior Independent Project is on the design of Printed Circuit Boards (PCBs) and just Circuits in general. I've chosen to do this project due to my interest in computer/electrical engineering and also computer science which becomes important due to the coding aspect of such projects. For my project, I've opted to design 3-4 different circuits and PCBs, and I plan to print 2-3 of them to showcase.
Here are some of the PCBs that I have decided to design alongside some descriptions of their purpose and why I've chosen those specific PCBs:
I chose to focus my project on PCB & Circuit Design due to a project that I am working on in my Projects in Science & Tech class. In that class, I am working on a Hyperloop and one implementation of the hyperloop that I found online utilized a self-designed PCB to drive and control the Hyperloop and all of it's individual components.
Although the complete hyperloop PCB would be too much to learn, design, test, and implement in 5 weeks worth of time. I hope that this introduction to PCB & Circuit Design will help me in the future if I decide to build anything like the hyperloop PCB pictured below. Through this project, I wish to learn more about designing schematics to ensure that everything is connected and working as intended, researching & sourcing components, and learning the parameters of good PCB design while accounting for factors such as heat dissipation, steady power supply, and protection from electromagnetic waves.
In this project, I will build a very basic circuit that would make LED's blink on and off using a 555 timer. It is relatively simple and I've worked with all the components beforehand, therefore, I should be familiar with everything. I believe this is a good place to start.
In this project, I will build a pretty cool PCB/Gadget that will be capable of turning on/off and changing colors through physical touch from anyone's finger. This will also allow me to build something cool while learning about new components.
In this project, I plan to build a small version of a traditional Arduino Motor Shield. This will help me learn the fundaments of an H-Bridge which are often used to flip the charge of an output and as the name suggests, it is pretty important to drive DC Motors.
This PCB will mostly be to experiment and test things on while I work on the other 3 proposed designs. This is for me to do everything on my own while experimenting with all aspects of PCB & Circuit Design.
Before the official start of SIP, I spent some time researching and getting prepared with everything. I did research to select a software which I would use to design the schematic and PCB. I also figured out websites and services to print and manufacture my PCB designs; I opted to use lcsc.com to order parts, and jlcpcb.com to order the PCB themselves. I also did crucial research to figure out the certain parameters that I would have to consider throughout my design process. This part was essential because it was the main thing that I wanted to learn throughout this process. Now, I have a pretty good theoretical idea of the parameters to consider when designing circuits, but I have yet to apply my theoretical knowledge in a practical sense.
During the first week of my Senior Independent Project (SIP), I spent much of my time watching YouTube tutorials, reading articles on PCB Design, and playing around with CircuitMaker to familiarize myself with the two different design interfaces (Schematic & PCB). I have also finalized the 3-4 PCBs that I want to focus on and complete before the end of the year. The 4 PCBs that I chose are outlined above. Once I got my PCB ideas together, I started the process of looking through parts to ensure that I have all the correct components to build 2-3 of the PCBs that I mentioned above, and from there I reached out to Mr. Lanier to check for component availability. Lastly, I designed a rough paper schematic of PCB #4 just to familiarize myself with the thought process of developing a circuit design. I also found some parts using the websites that I mentioned beforehand.
In the second week of my Senior Independent Project (SIP), I continued to work on my PCB designs. My main goal for this week was to complete the designs for PCB#1 and PCB#2. Although I did not fully achieve my goal, I made significant progress and gained a lot of experience working with different PCB CAD software. I encountered some challenges while designing the power input/output components for my PCBs. Through some research and looking at how other people have applied the power supplies of their PCB, I was able to get some idea of how to implement it. I also faced issues with different variants of IC chips and electrical components, as every PCB CAD software is different. During this week, I also put together a basic blinking LED circuit that uses a 555 timer to make 10 different LEDs blink on and off. This helped me to understand how the different components of a circuit work together to produce a desired outcome. Additionally, I worked on a draft of PCB#2 in which I used an ATMEGA328P-AU IC Chip to control the light functionality of the entire PCB.
Since I ran into problems when there were more than one variant of the IC chips that I wanted to use, I plan to overcome this issue by meeting with Mr. Lanier to discuss the differences, and complete the designs for PCB#1 and PCB#2 with his assistance. Overall, I learned a lot about troubleshooting and designing complex circuits during this week. I am excited to continue working on my PCB designs and to learn more about PCB manufacturing and assembly in the coming weeks.
In the third week of my Senior Independent Project, I truly entered the stages of designing my own PCB alongside understanding IC Chips. In my first project (PCB #1) I used a 555 timer IC Chip to theoretically design a circuit that will make LED lights blink on and off. In week 2, I faced multiple issues in my design as I struggled to understand the UI of Altium CircuitMaker. Turns out that Altium CircuitMaker is not the best PCB CAD software for beginners, and due to that I tried to test out Fritzing. Fritzing is another software that I've used in the past, specifically in my Robotics class last year, but Fritzing was just far too simple, and did not have all the functionality that I needed. Lastly, I came across EasyEDA. EasyEDA is the perfect balance as it allows me to apply everything I need, while not making it too complicated. The UI is easy to get used to. and its massive parts library is directly synced with lcsc.com. Then, I completed the schematic and PCB design for PCB #1 (Blinking LED's Using 555 Timers.) The Schematic, PCB, and a 3D View of the design is available in the image to the left.
I've also started to work on PCB #2 (Touch Capacitive PCB Controlling a RGB Neopixel LED.) This project has proven to be much more complicated than I originally thought. Although this project has been done before, I still do not understand four key concepts in terms of PCB design:
The use and integration of touch capacitive buttons that are built right into the PCB and are not seen in the schematic?
A common grounding pad and why it is necessary?
The use of programming pins/headers and how they are built into the design and how to use them?
Connecting separate sections using headers in the schematic design into one coherent PCB?
These four issues led to me to return to the internet, and do some research and figure out solutions. I haven't been able to find a solution to all my problems, but I have a pretty decent idea of what needs to be done for each.
To create a touch capacitive button, we use a small capacitor and a resistor to make a capacitive sensing circuit. When we touch the button, our body changes the capacitance of the circuit, which we detect by measuring the voltage across the capacitor. The resistor discharges the capacitor to prevent it from retaining a charge after we release the button.
From research from this website, I was able to understand the different types of grounding (Floating, AC, Chassis, Earth, & Virtual). I was also able to understand why a common ground is important: because it reduces signal noise between components. And also how to integrate a common ground: connect a copper pad to ground and having the copper serve as a common ground.
I want to program an ATmega328 chip that is on a PCB. To do this, I know I need a programming device that is compatible with the chip and programming protocol. I've learned that popular options for the ATmega328 include the AVR ISP and USBasp.
Pretty self explanatory as seen in the image above. The output of 5V from the power chip goes directly to the ATMEGA328 power input. It would be very similar to me directly connecting the output to the input, but for visualization purposes; people use headers instead.
With a solid understanding of how to tackle the above problems, I am confident that I can continue designing PCB #2. As a practice run, I will order PCB #1 and assemble the components. Within the next week, I plan to finish designing PCB #2, allowing me to order it and shift my focus to the motor driver. The lessons learned from designing PCB #2 will be invaluable, not only for future iterations, but also for PCB #3. By taking my time and thoroughly understanding these obstacles, I will be better equipped to solve them with ease in the future.
My biggest advice to future seniors who are interested in pursuing a senior independent project is to start earlier if possible. Five weeks to do a complete project is usually not enough, especially at the end of senior year when you have different events like ISAS and SPC. Just start early and make sure that any problems you face are tackled before the initial start.
In the fourth week of my Senior Independent Project, I made significant progress in addressing the challenges from week 3 and continued to refine my PCB designs. I successfully ordered PCB #1 through JLC PCB, and it is expected to arrive this weekend. With this delivery, I will be able to assemble, solder, and test the components. Hopefully my design works and I will have a working PCB that I can showcase.
Throughout this week, I managed to find solutions to problems #2, #3, and #4, which involved grounding, programming headers, and connecting separate sections using headers, respectively. I am also nearing the solution to Problem #1 from week 3, which pertains to touch capacitive buttons. I have pretty much grasped the concept of capacitance-operated buttons and their implementation. I now need approximately 1-2 more hours to complete the PCB design. This was definitely the biggest challenge as I couldn't find many clear ways to do this online, and it is just a weird concept in general. Anyways here are some updates on how I found solutions to my problem:
Problem #2 - Grounding: After extensive research, I was able to create a simple copper pad area to serve as a common ground, connecting all components and reducing signal noise between them.
Problem #3 - Programming Headers: I adopted a slightly different approach to solve this issue. I opted to use "A2006WV-2X3P_C375178" (can be seen on the 3D rendered PCB) programming headers, which will connect to the ATmega328 and allow programming through 6 dedicated inputs (RST, RX, TX, 5V for power, GND for grounding, and ARF).
Problem #4 - Connecting Sections with Headers: With thorough research and a valuable conversation with Mr. Lanier, I finally grasped the concept of wiring separate components (Mics, Buzzers, etc.). To connect the different components to the appropriate pins and components, I utilized "M3025V-1X5P" (can be seen on the 3D rendered PCB) connectors.
After about 2-3 more hours of work on PCB #2, I think I will be done. Lastly, I will run tests to ensure the design functions as intended and send it off for manufacturing before the weekend. In order to confirm the functionality of my PCB, I will utilize Design Rule Checking (DRC) to identify and correct any potential issues in the design. DRC is an essential step in verifying the adherence of my PCB layout to the established design rules and tolerances. Due to time constraints, I will pay JLCPCB.com to assemble the PCB for me using their assembly service, this will make it so my PCB comes fully assembled and I won't have to solder anything. And since machines will do it, there is a much lower chance that I make an error in the soldering process.
A key accomplishment this week has been the implementation of touch capacitive buttons, which I have achieved through the use of resistors and capacitors to create capacitive sensing circuits. The principle behind these buttons is that when a user touches the button, their body alters the capacitance of the circuit. This change in capacitance is detected by measuring the voltage across the capacitor. To prevent the capacitor from retaining a charge after the button is released, a resistor is utilized to discharge the capacitor. This approach has allowed me to incorporate touch-sensitive functionality into my PCB design.
With the coming arrival of PCB #1 and the progress made on PCB #2, I am pretty satisfied with my PCB learning process given the 5 weeks. And although I am a little behind where I would like to be, considering the technical challenges I have overcome, especially with the touch-capacitive buttons, I am still pretty happy with my progress as I learned a lot about PCB design and how to read/understand schematics and then translate them into fully working PCBs. I would call this project an overall success as I learned a lot about PCB design and if I were asked to create a new PCB from scratch, I definitely could.