Feedback on my project

I would like some feedback on my project. This was made for FRC(FIRST Robotics Competition) and the RoboRIO. This device is designed and coded to plug into the MXP port of the RIO and convert I2C into UART for 2 color sensors to communicate with the RIO.

That is just a brief explanation of what this device is meant to do, but I would like someone to take a look at my PCBs and give any feedback or improvements it needs.

V2 is the original design
V2.1 is the original design but 4 layer
V2.5 is V2.1 but with a MXP passthrough

First, the design looks quite acceptable, It’s quite good for a first project. So don’t interpret the list below in a “negative” way. It’s just things I would do a bit differently myself.

  1. You do not have to put the fp-info-cache into git. (It should not even be in the project directory, but that is the job for a kicad developer). That saves 3MB of backup.
  2. Why put 3 separate versions on Gitlab? You can put them all in a single GIT repository and tag them.
  3. You do have a date on the PCB, but not the version. I usually don’t work with version numbers at all but prefer to use date strings in ISO_8601 format, and also put them on the PCB.
  4. Adding a PDF version of the schematic can be handy for people who do not have KiCad installed.
  5. Schematic is almost too simple to write much about, but still…
  6. I usually tug the mounting holes in some corner, not on the top of the schematic.
  7. You have not added the values for the I2C resistors.
  8. Why rotate the connectors? Reading the text makes my neck hurt.
  9. Drawing texts over each other is extremely ugly (See GND symbols on the connectors)
  10. You have not added the “No Connect” crosses to unused pins. Do you use ERC?
  11. I always break out programming pins to some connector (or at least pads). You never know when you need them.
  12. You have not mentioned the type of the diode.
  13. Drawing a 4 layer PCB seems a bit excessive for a simple design like this, but it does make your job a lot easier.
  14. Dedicating a full layer as a GND plane is a very good thing. I would make the clearance of the GND net smaller though. The goal is to have the zone sneak in between all pins to improve the GND zone. You can also use PCB Editor / Tools / Remove Unused Pads for this. The name is a bit misleading, it does not remove pads, it only removes unused annular rings from pads, with the result that the via’s use less space on the inner layers and the GND can sneak in between pins even without reducing the clearance.
  15. If you use the same clearance for tracks and zones, then you will not see tracks going through the clearance around pads, especially in the area around the bottom of the 4 resistors and the diode.
  16. I would rotate the text on the PCB for the I2C connectors so the labels line up better with the pins. You can also consider moving the texts to where the resistors are now. The goal is to have the text still readable when you’ve plugged in wires.
  17. The text labels near the JST connectors are also overlapping with the mounting holes. You can’t read them if there is a screw in them.
  18. I like to have a big “test pad” like thing for GND. Something to connect the GND clip of my scope or logic analyzer to.
  19. Maybe add a KiCad and/or OSHW logo to the back side? (They are in the “Symbol” footprint library.
  20. 45 degree text is always a bit difficult to align. I prefer to have a corner of the text labels align with the pads (instead of the center of the texts). But why use 45 degree labels on the Pico here in the first place?
  21. There is plenty of empty space on the PCB. It can be very handy to add a small prototype area so you can make modifications easily. This is especially true for prototypes.
1 Like

I appreciate all the feedback you have given and I plan on implementing some of the things you mentioned but overall, would my design work as is?

1 Like

After some simple fixes both ERC and DRC were reasonably happy.

I have not looked at things like I2C pins are mapped to appropriate things or if the diode generates a problem for the power supply voltage of the pico.

I am missing decoupling and buffer capacitors, but I assume they are already present on the Pico itself (I have not looked into those details). Adding some extra never hurts though, and you can leave the pads open if you don’t need them.

Power supply is also always a point of concern for uC’s. It does not have to be particulary clean, but there is a lot of very nasty stuff out there. Power supplies for uC’s always need some kind of ferrite core inductor to keep high frequency stuff out. I’ve hat too many spurious resets caused by external things such as switching the halogen of CFL lights. But because there is no power supply on this PCB, I assumed it’s coming from somewhere else.

Same for other obvious things. your uC won’t work without programming it.

This website is dedicated to KiCad and PCB design and it’s not a general electronics website. I have never used a Pico. What do the 3V3 pins do on that thing? Why is there a “RUN” pin?
If you want to get some more confidence, I suggest you get it working on a breadboard before ordering a PCB.

Hah. FRC. I was a mentor on my son’s team years ago. Still using the roborio are they? I also made a board to plug into the mxp port – I used a teensy to talk to java code I wrote for the rio and the teensy talked i2c to a few tof lidar pods on the corners of the robot that daisy-chained with 6-conductor modular cable (easy to cut to length and crimp connectors on, just don’t reverse the connector, and interleave power and grounds between the signal wires for emc). The lidar returned distance-to-wall estimates.
fwiw:
teensyRIO.zip (142.1 KB)

Anyway, back to your project: looks quite good. As Paul pointed out adding bypass caps and a ground plane is a very good idea. The motors and solenoids generate crazy emf so you want to mitigate noise everywhere you can. EMC control is not just about minimizing radiating crapola but the the same techniques minimize pickup. Every trace is an antenna for both tx and rx. Flood fill ground plane on both sides and stitch together with vias.

Have fun! gil

Did y’all download my PCB and take a look at it or is this just general feedback? Just wondering. Thank you though!

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.