I embarked on this project to help gain a better understanding of another part of the robotics ecosystem, and how power electronics play a part in a robotic system. As such, I will likely be using, and improving, on this design in the future, and below is a list of improvements and lessons learned from the semester's development cycle:
- Get a professionally produced PCB. Most of the PCB debugging issues were due to the production of the PCB, which I got produced at an on campus PCB mill. Milling a PCB does not normally remove all the excess copper, unlike the methods used in commercial board houses, and uses a less reliable solder mask. This can, and in this project did, lead to shorting, and component damage from traces connecting to the edges of the excess copper where the solder mask was not fully adhered. In these high current applications, it is worth the extra price to get a commercially produced PCB to not have to debug tiny trace issues.
- Add more test points. I didn't add any test points on this PCB, and I had to probe many of the pins on the SMD packages directly, leaving the potential for shorting leads together. For future projects, I would incorporate a series of small test points where the risk of shorts would be lower.
- Run the DRC checks before production. This was a rookie mistake, but I forgot to run the DRC checks in KiCAD before getting the PCB milled, leading to one trace being left unconnected.
- Find a replacement for the LM2576 and its large inductor. The inductor for the LM2576 is a 330uH 3A device that is almost a 1in (25mm) cube. I didn't realize this until I received the components, so next time I would investigate a smaller inductance switching regulator to reduce the physical footprint. Additionally, high current inductors are rather expensive, so this would help reduce the project cost.
- Substitute a smaller buck converter for the onboard 5V supply. To simplify the design, I duplicated the load buck converter for the onboard 5V supply, using mostly the same 3A rated components for a ~50mA load. For the next version, I would replace this with a smaller version, even an LM7805 with a thermal footprint would likely work in the application.
- Add a 5V jumper on the ICSP header. To prevent damage to my computer, I isolated the 5V rail on the device from the 5V line on my programmer. Although the programmer has its own power jumper, for the next version it would be prudent to add a jumper to disconnect the 5V rail from the 5V pin on the ICSP header.