Feedback on my first pcb - Page 1
Forum section: electronics / beginners

author: tyrel
author_rank: Contributor
timestamp: October 08, 2016, 08:07:08 pm
content: Hey guys,I have just finished to design and build my first pcb.It is functionnal (as far as i can tell), but with my limited experience, i would like to have an external feedback/criticism on it.It is an Arduino shield for the dynamixel servomotors from Robotis (http://www.robotis.com/xe/dynamixel_en).Those servos use a half-duplex serial protocol to control them.The schematic is simple, it simply power the servos from a 12V power source, and convert between the arduino uart lines and the half-duplex line of the servo using two 74s components.The 74s also do level conversion , so both 5v and 3.3v arduino models can be used.There is a reverse voltage protection, and an overcurrent protection (a fuse) on the power line.According to the specs, the max current of one motor is 900mA, but they mention up to 1.5A when stalled.I have dimensionned the board (traces, reverse protection mosfet and input screw terminal) for 10A max, but each motor connector can take maximum 3A.Is it ok to use a 10A fuse in these conditions, as long as i make sure that each connector does not have more than 3/4 motor connected (this is what Robotis is doing in their control boards)?More generally, do you see any rookie error in the design, or something that should be improved?Thank you very much for your answers!For those interest, the board design is available athttps://github.com/descampsa/DynamixelShield, and the code athttps://github.com/descampsa/ardyno.

author: tautech
author_rank: Super Contributor
timestamp: October 08, 2016, 08:57:45 pm
content: Welcome to the forum.Not too bad for a first effort at all.I see some attempt to identify Gnd pins on some connectors, fine but they look a little unusual. Maybe you'd be better with "Gnd" on the overlay.The X (cross) in the traces from P8 to P9 is the classic acid trap and need be changed so those traces don't meet the other at the same point. Run a trace up the face of P6 to P7 and a branch to P9.IF you didn't have a solder mask, a small neckdown on the trace where it passes on through the centre pin of P4 might be preferred to alleviate the chance of a solder bridge. One of the outside pads of both P4 and P5 is smaller, why?Try to keep all TH pads as large as possible and adjust the shape of them to provide clearances required. Think in terms of robustness should the need for rework arise and a lower chance of lifting pads from excessive soldering times.For both diodes and polarized caps indicate polarity on the overlay or on the copper with a clear symbol such as a "K" or "+".Not too much to change really.

author: tyrel
author_rank: Contributor
timestamp: October 09, 2016, 07:49:20 am
content: Hey tautech, thanks for your answer and your tips!QuoteI am not sure what you are referring to here?QuoteOkay, i have checked the pcbs (from seeedstudio), and they seem perfect, but i will change it anyway , better safe than sorry.QuoteThis is an artifact of the rendering process, all pads are the same (the small size). I used the rendering fromhttps://kitnic.it/boards/github.com/descampsa/dynamixelshield/.I still have to figure out how to get an acceptable rendering out of kicadQuoteI should probably increase their size on the motor connectors, you are right, they are small compared to the other connectors (other connectors were standard kicad footprints).QuoteYep, i noticed that when soldering my board, when i had to look at the traces to know the polarity.Any thought about the overcurrent protection? By the way, is a simple glass fuse good enough for that kind of application, or is it better to use a ceramic fuse?

author: tautech
author_rank: Super Contributor
timestamp: October 09, 2016, 08:18:13 am
content: Quote from: tyrel on October 09, 2016, 07:49:20 amI guess this is the reason:QuoteQuoteAs the energy levels are low (compared to mains) a plain glass fuse will be sufficient.But they're never fast enough to protect semiconductors.....usually.

author: bktemp
author_rank: Super Contributor
timestamp: October 09, 2016, 08:27:56 am
content: I would connect the mosfet after the fuse: When the fuse fails, there will be a voltage spike. Since there is no load except the mosfet gate, the voltage spike will damage the mosfet, maybe even shorting gate-source and therefore the input supply. If the gate is connected after the fuse, is will be connected in parallel with C1, providing some protection for the sensitive gate.

author: tyrel
author_rank: Contributor
timestamp: October 09, 2016, 06:05:14 pm
content: Hey bktemp, thanks, i add not considered that in the design.I guess that it depends of the exact power supply characteristics, and that the only way to be sure would be to test it, but do you think that the C1 value (47uF) can be enough to limit the voltage spike ?I noticed that i should also add a protection resistor on the rx line, in case the arduino rx pin would be set in an output state.Without that, i could have the 74AHC125 output and the atmega pin trying to drive the line simultaneously, it could be a problem...Finally, i would like to add the possibility to program the arduino when the shield is plugged in (currently not possible on some arduino models where the usb connection is shared with the uart).A first easy step would be to put a pull down resistor on the direction port, to disconnect TX by default and avoid the programming protocol data to go to the motor and possibly mess with their configuration (i should have done that anyway..)On the RX side, the best option i see is to add a second 74AHC126 with the enable line connected to the reset line of the arduino, so that the RX would be in high impedance when reset is active (low).Sounds correct? Maybe i am missing a simpler option?

author: tyrel
author_rank: Contributor
timestamp: October 09, 2016, 07:21:14 pm
content: By the way, the capacitor and led had silkcreen polarity markings ... on the padsOne more thing to be carefull to when using kicad footprints.

author: kasbah
author_rank: Contributor
timestamp: October 10, 2016, 12:11:15 am
content: Quote from: tyrel on October 09, 2016, 07:49:20 amKiCAD is not to blame here and neither is the renderer that I use onkitnic.it.I double checked with gerbv andviewer.tracespace.ioand it is an accurate render of what you will get on the board. Since you have connected the middle pin with a very wide trace the solder resist margin exposes copper and makes the pad look bigger (see attached image). On the ground pads you have thermal relief connections which are showing up in the margin as well and giving them the odd looking shapes. None of this should cause you any problems though.Do feel free to report any issues you encounter with the renderer athttps://github.com/tracespace/pcb-stackup/issues. I might not stumble across your reports on here.

author: tyrel
author_rank: Contributor
timestamp: October 10, 2016, 05:53:08 am
content: Yes, you are absolutely right, kasbah.At a first look, the two round pads looked exactly the same, but looking closer, the middle pad is indeed bigger due to the margin. My bad.I didn't really blame kicad for the rendering, i just explained that i used this renderer because it was better than anything i managed to get out of kicad.Thanks for the link to the github repository, i was going to report the issue with inkscape, but i see that you beat me to it.

author: bson
author_rank: Unknown
timestamp: October 10, 2016, 06:00:32 pm
content: I'd give it a few vias between the two ground planes, beyond ground pins. Don't need to go overboard, just one here and there to keep them electrically close.To do this in KiCAD (to save you half an hour of googling): use a 30mil or such trace size. Start a trace (X key, click on either top or bottom zone), draw a short trace, switch to the other side (V key for a via), and draw a short trace to that zone (click to finish the trace). The reason the trace segments are needed is that KiCAD doesn't know how to join two zones with a via directly and although you can place a via there it won't be connected to anything. Refill the zones and check that all your vias are properly connected. Be aware that many of the "cleanup" operations (like removing redundant or unconnected trace segments) will remove your ground stitches. Hence I always do this last - of course it doesn't make sense to stitch ground planes until done with the layout anyway! If you want to keep them you need to define nets for them (PITA) or enter them as 1 pin components connected to ground only via the schematic (also PITA and will give you a plated hole rather than a tiny via). And since any change to the schematic is likely to require updating the stitching there's little reason to make them overly permanent.

author: tyrel
author_rank: Contributor
timestamp: October 10, 2016, 10:19:47 pm
content: Thanks for the detailled explanation , bson.You have to connect at least one of the traces to a ground pad, right?If i don't do it, it works at first, but when i reopen kicad and refill the zone, it doesn't work anymore... That's a PITA, indeed.I hadn't even notice the cleanup tool, not sure i like this feature anyway, it would be better if it would point to possible errors, like the drc, rather than silently 'fixing' them. I had a look to open an issue about that, but someone already did it :https://bugs.launchpad.net/kicad/+bug/1571305, so there is hope.