Help Validating PCB Design - Page 1
Forum section: electronics / beginners

author: microcompiler
author_rank: Newbie
timestamp: May 02, 2017, 01:08:14 am
content: I’m new to PBC design and in general the hardware side of electronics is a hobby. I’ve had a couple of collage classes in electronics and that’s it. I have much more experience on the software side of electronic devices. This is my first real PCB that I plan to have Seeed fabricate and assemble using Ublox’s new dead reckoning GPS unit. To save on costs I would like to use as many components as I can from Seeed’s “OPL list”.I’m asking for assistance validating my Raspberry HAT design. This design is pushing my hardware knowledge to the limits but I really want to see a working version of this board running on Windows IoT core. It's now become a personal mission. Therefore, I’m reaching out to this form for help!I have created this project using Altium Circuit Maker and it’s published under the project nameRaspberry Pi GPS Dead Reckoning HAT. I included several project screen shots below for review. I think I’m getting close to a final design but not confident enough to send for fabrication. The down side to this project is the NEO-M8U modules are $40 a piece in small quantities. Therefore I can’t afford screwing it up. Any advice you are willing to provide would be great!Here are the specific areas that I would like to get feedback around:Am I using right capacitors and resistors values on theNEO-M8U,BNO005,ADS1115chips?Is the overall circuit design solid?Power will be supplied in two ways. From the Raspberry directly with the usb port or usingthisbattery module. What is the simplest/cleanest IC to prevent an issue if both power sources are connected at the same time? Both are clean power sources but I want to prevent smoking the device if power is connected both ways at the same time.Do I have the battery correctly designed to charge the rechargeable battery properly once power is restored to the device? I think it’s laid out correctly from a design perspective but I’m not confident it’s correct on the PCB.Do you see any issues with the PCB traces or layout?What other items do you I need to change/fix to increase my chances for a working HAT the first time?I’m actively developing code for a breadboard versions of theNEO-M8U,BNO005,ADS1115chips therefore at this point I would be stepping backwards if I used other chips. However, I’m open to changing other components. Would you change any of the other components and why?

author: sokoloff
author_rank: Super Contributor
timestamp: May 02, 2017, 01:44:16 am
content: The GPIO connector needs to come off the bottom of the board, not the top. (The 3D model shows it coming off the top.) I don't like how the pads for that connector are laying out. (It could just be my unfamiliarity with CircuitMaker. What does the top layer of the board look like without the components? Just the top copper, soldermask, and silkscreen.)I don't see any fiducials to aid in pick-n-place. (Doesn't matter for hand-assembly.)If you're doing one-off prototyping, all of that could be reasonably hand-soldered, reducing the risk of wasting the $40 modules. Once you know it works and (ideally) there's a market, then you can have it made by a contract manufacturer.I'd plan on a hand-assembled test run of a couple boards (maybe more than one spin at that, recycling the module if you need to) before calling the design "done".

author: theatrus
author_rank: Frequent Contributor
timestamp: May 02, 2017, 02:15:46 am
content: Quote from: microcompiler on May 02, 2017, 01:08:14 amFirst off, congrats on a well labeled schematic with an easy to follow design.1: Since you're pulling power from the RPi, you may want to add a bulk capacitor (1.0uF-4.7uF) on the board to board connector. A ceramic MLCC X7R would be ideal IMO. This also includes on your power input.2: Didn't really spend any time here. The reality of getting a full usable 16bits from that ADC may not be possible (just the nature of it). The PGA presumably buffers it so you don't need to buffer further.3: The simplest is a diode on each input path, though it will drop the voltage to below what the RPi 5V rail expects. There are a number of "ideal diode" controllers, for example:http://www.ti.com/lsds/ti/power-management/oring-and-smart-diodes-overview.page4: C4/R4 have air wiresAlso, it looks like your ground pour on both layers is more or less randomly connected to components. Think about how this connects to clean it up. Also, is the antenna trace to the recommendation from uBlox? RF traces are critical - they should provide some guidance on width, clearance to the ground planes and bottom plane depending on board thickness.

author: ziggyfish
author_rank: Regular Contributor
timestamp: May 02, 2017, 04:10:11 am
content: Quote from: microcompiler on May 02, 2017, 01:08:14 amI would make sure you have 50-ohm impedance (this depends on your PCB stack up as well as the width of the trace) on your antenna, also you according to theHardware Integration Manual (Section 2.4)you will get better sensitivity when it has an external LNA and SAW filter.Also, make sure you have the right antenna.ThanksBrendan

author: microcompiler
author_rank: Newbie
timestamp: May 02, 2017, 07:05:15 am
content: Regarding the connector on the top of the board I'm trying to stick to theHATstandard as close a possible. This type of connector has two parts allowing you to stack boards if you by the long pin header.Yes at this point this is just a prototype and I can try and solder it However, it takes me forever to do right and I normal destroy a few components at the same time. I'm would like to try the Seeed PCBA to do this board if it doesn't cost me an arm and a leg. It looks like it's only a $25 setup fee plus another$10 in components labor. This way I can spend the time working on the Windows IoT drivers.

author: cgroen
author_rank: Unknown
timestamp: May 02, 2017, 07:17:18 am
content: Regarding the BNO055, I would add the possibility to reset it from the Raspberry (connect a GPIO pin to the RST pin on BNO055). I also add a 6.8 nF capacitor parallel to the 100 nF (on the 3.3V line). This is shown in the datasheet for the BNO055 and this has worked perfect for me on all my BNO055 designs.The RST line is a "nice to have", in seldom cases the BNO055 can come up after poweron in a suspicious state, issuing the hardware reset makes wondersI have never used the external xtal (32.768 KHz) on it, in the datasheet it just says "to get the best performance use an external crystal". No mentioning on how this improves things, and also nothing about "how much" it improves things....

author: Fortran
author_rank: Regular Contributor
timestamp: May 02, 2017, 07:21:38 am
content: You'll need thermal reliefs on your ground connections. Not just a hole in the soldermask.It's gonna be damn near impossible to solder as-is.You should find the relief settings in Design Rules.

author: microcompiler
author_rank: Newbie
timestamp: May 02, 2017, 07:33:24 am
content: @theatrus - Thanks again for the feedback and have updated the project with your recommended changes. For the protection circuit would I use two LM5050 and MOSFET in each of the power rails. I think I get the concept where when power is detected by the LM5050 it then flip the MOSFET but I'm having trouble visualizing how I would build the circuit. A little more detail would be great. Could you also recommend a MOSFET that would be good for this application.Ok, can you help me understand your comments about the ground a little more. I'm using a ground copper polyfill on the bottom and top of the board. This way I don't have to put copper traces all over the place. I was under the impression this is the better way to do it. Is this not the case? Or do I just have to isolate/clean up some other ground? I want to get it right but I'm not sure what to clean up.@ziggyfish - I also made the changes to account for anactive antennalike this. However, I'm not so sure I understand your comments about the 50-ohm impedance. Would I just start with the 10-ohm that the datasheet suggests and then test the impedance once I get my first board and adjust R11.I have uploaded new images with the pollyfil turned off so you can see the traces better.

author: microcompiler
author_rank: Newbie
timestamp: May 02, 2017, 07:58:19 am
content: I like your idea about the hooking up a gpio to the rest pin. I will make that change. It looks like this Reset is activated on "low" so I should choose a GPIO that Power-on Pull is set to "high". Correct? Otherwise I'm guessing it would just keep resetting it's self until I forced the gpio to "high". Yeah, not really sure what the crystal will do to enhance performance but I figured I would do it just in case. I also noticed that the Adafruit breakout board has this same crystal I would give it a try.

author: cgroen
author_rank: Unknown
timestamp: May 02, 2017, 08:02:04 am
content: Correct about the reset signal (although I guess it would be no problem if the GPIO came up active low, you are not going to use the BNO055 until your software runs anyway ?)OK on the external crystal, could be interesting to know what exactly it has does with regard to "performance".Don't forget the extra decoupling cap of 6.8 nF....

author: Fortran
author_rank: Regular Contributor
timestamp: May 02, 2017, 08:12:42 am
content: Both the battery and the diode seems to be hooked up backwards.

author: microcompiler
author_rank: Newbie
timestamp: May 02, 2017, 08:43:52 am
content: Quote from: Fortran on May 02, 2017, 08:12:42 amYes, fixed... Thank you!

author: theatrus
author_rank: Frequent Contributor
timestamp: May 02, 2017, 02:08:51 pm
content: Quote from: microcompiler on May 02, 2017, 07:33:24 amPage 15 of the LM5050 datasheet describes the selection process: N-channel, logic level, meeting continuous current and voltage ratings for the circuit, with a low but not the lowest Rds(on). However, I realized you were discussing both the Pi and the board being powered, so ORing rails doesn't buy you much since the Pi will always be powered - at best you'd isolate the supply to just the hat board and prevent powering the Pi from the HAT - not sure it's worth it.Re: grounding. Planes are best, but you have two and very few points (1? 2?) connecting them. Ideally, the ground plane is unbroken (no or minimum number of tracks interrupting it). This is especially critical around the RF section. My suggestion would be to move as many traces to one layer as possible, and sink one or more vias directly adjacent to any ground pin to the ground plane. You can also do via stapling of the planes (unsure if the free Altiums have this as an automatic tool).Re: RF: this looks far worse than before from what I expect. NWhen they say "50 ohms" they mean impedance and 1.5GHz, not at DC. Tuning this ideally uses a VNA, which is not likely something you have kicking around. However, manufacturers generally offer reference designs which includes board layouts - follow these exactly (spacing, dimensions, component size, widths, angles, etc) if they meet the board stackup you are using (0.062 two layer).

author: theatrus
author_rank: Frequent Contributor
timestamp: May 02, 2017, 02:13:29 pm
content: Quote from: cgroen on May 02, 2017, 08:02:04 amIf the GPS module has a reasonable local time (and current ephemeris data), time to first lock or reacquiring signals can go way down.

author: cgroen
author_rank: Unknown
timestamp: May 02, 2017, 02:37:04 pm
content: Quote from: theatrus on May 02, 2017, 02:13:29 pmI was talking about the BNO055, not the GPS (but you are still right about the GPS and fix time)

author: pigrew
author_rank: Frequent Contributor
timestamp: May 02, 2017, 03:16:38 pm
content: For the antenna track, it looks short enough that being exactly 50 ohms may not be so important. Find a coplanar waveguide calculator online, and adjust your track width/spacing to match its result. However, I would move the inductor so that its pad rests directly in the middle of the RF line, so you do not have a stub.I also see a few acute angles on the board that you should get rid of.

author: sokoloff
author_rank: Super Contributor
timestamp: May 02, 2017, 03:18:32 pm
content: Quote from: microcompiler on May 02, 2017, 07:05:15 amThat makes sense, but you still need the female part on the bottom of the board and male pins on the top of the board if I'm thinking about the problem correctly.

author: theatrus
author_rank: Frequent Contributor
timestamp: May 02, 2017, 04:17:12 pm
content: Quote from: pigrew on May 02, 2017, 03:16:38 pmYeah, agree - the super short length is going to forgive any minor mistakes. For a CPW (grounded) calculation on 2 layer FR-4, a width of about 35mil with a spacing of 8mil gets you to ~53 ohms, which is plenty close enough (as the FR-4 isn't consistent, etc etc). The current design looks more like 10/10 spacing/width which is 82ohms - not great.Second the stub elimination advice.

author: h00p
author_rank: Newbie
timestamp: May 02, 2017, 07:16:50 pm
content: You have a typo in the UART/ACD/IO silkscreen.

author: ziggyfish
author_rank: Regular Contributor
timestamp: May 03, 2017, 03:42:15 am
content: Quote from: microcompiler on May 02, 2017, 07:33:24 amThe impedance I am referring too, and many commentators are referring to is the trace impedance.To calculate the impedance of that trace, use this tool.Microstrip Impedance Calculator

author: microcompiler
author_rank: Newbie
timestamp: May 04, 2017, 01:51:00 am
content: I was reviewing the datasheet for the BNO055 and I fined this tidbit of info on page 100 "When an internal clock is used, both pins XIN32 and XOUT32 can be left open. The internal clock of the BNO055 can have clock deviation up to +3%". I'm not sure how much this would throw off the actual measurements from the sensor.

author: microcompiler
author_rank: Newbie
timestamp: May 04, 2017, 02:03:24 am
content: Quote from: theatrus on May 02, 2017, 04:17:12 pmI think I have everything finalized and now know more about CPW calculation the when I started this project after some google searching I was able to calculate a trace with 56ohms. Using dielectric constant: 3.95 / width: .8mm /gap: .152mm thickness: 1.5mm. Thanks for your feedback.

author: microcompiler
author_rank: Newbie
timestamp: May 08, 2017, 02:25:08 am
content: I would like to start by thanking everyone for the advice and feedback on this project. This last week has been almost entirely consumed (other then work) by reviewing every datasheet from start to finish and YouTube videos on PCB design principals. Here are the items I have hopefully addressed from everyone's comments.1. Cleaned up the active antenna traces and calculated CPW of the trace to be 56ohms and added components for an active antenna .2. Cleaned up the grounding and added vias at several points on the board.3. Switched CAP and RES to 0805 package size (I'm going to try to hot plate my first prototype board).4. Finalized my BOM and would love any feedback you might have on component selection.Here is what hopefully should be my final version. Any feedback would be great.

author: pigrew
author_rank: Frequent Contributor
timestamp: May 08, 2017, 03:25:05 am
content: Quote from: microcompiler on May 08, 2017, 02:25:08 amIC3 looks like it has no solder mask between the pins. I'd reduce its solder mask expansion until you have maybe about 6.5 mil (depends on the pcb fabricator) of mask between the pins. My fabricator usually suggests an expansion value of 1mil for 0.5mm pitch parts.

author: stevelup
author_rank: Regular Contributor
timestamp: May 08, 2017, 11:50:13 am
content: Watch your current limiting resistors on the RGB LED - it's unlikely that you want them all to be the same. The red diode has a forward voltage of 2V, the green and blue 3.2V

author: LouisPi
author_rank: Newbie
timestamp: March 10, 2019, 10:00:22 am
content: Hello, this looks like a great board although the BNO055 wouldn't be my choice due to the clock stretching bug with the Raspberry Pi. Is there any more information on your HAT available?Thanks,Louis