First PCB design, would like a critique

This is my first PCB and arduino shield, designed for a specific project. It is a refrigerator controller to keep the freezer and fridge at set temperatures. Using an arduino pro 5v, I’m controlling up to 2 relays, a servo, and eventually a serial lcd screen. For input I have a couple of onewire temp sensors in powered mode (faster readings) and will be logging to an sd card. The relay is to cut power to the servo, since I won’t be using it constantly and it shouldn’t move when the power is cut.

Some thoughts I’ve considered for improvement are incorporating the serial backpack design onto the shield, adding the relays directly to the shield, adding a reset button and using a couple pots for analog inputs. I am curious, would it be better to use voltage divider resistors or the hex convertor to shift the 5v logic to 3.3 for the sd card?

[Board

[Schematic

*Edited 3/23/11: changed to new board/schematic](https://picasaweb.google.com/lh/photo/BcrXvAehs2Wp0__2oq6UMw?feat=directlink)](https://picasaweb.google.com/lh/photo/jfn_8rSlAIY2jvXJqXwHtA?feat=directlink)

If the red tracks running underneath the LD33V are not of the same net then they ought to be moved or may short to the LD33V case.

Why does the Blue track from the relay to the middle pin of the serv01 connector go around the back and not straight into it?

I’m going to blame the auto router for the relay and myself for using it. As for the lv33 how would you recommend fixing it? I had a difficult time with that one.

A few comments:

Schematic:

  • You need decoupling capacitors. Add a 100n cap for the level shifter and the SD card

  • The LD33 needs at least 100n on the input and 10u on the output; I would add another 100n on the output as well

  • Make sure your 5V source can handle the current load of the servos and relays. You may need a separate supply for them (don’t forget to have a common ground)

  • You may need some bulk capacitance on the 5V rail to help with the spikey current draw of the servos and relays.

  • The relay needs a flyback diode across the coil

  • Depending on the relay, you may need a transistor or relay driver

  • Depending on your level shifter, you may need to tie the unused inputs either high or low

  • The Arduino has multiple ground pins; I would tie them all to ground

PCB:

  • Power and ground traces need to be much wider, both for current handling capacity and to reduce impedance. In this board, I would consider running a separate ground and 5V trace to handle the digital side (level shifter, regulator, SD card) to keep servo noise separate.

  • As mentioned, the backside of the regulator is conductive, and is tied to Vout. Don’t run any traces other than 3.3V under there or there’s a chance they will short out. You can’t count on the solder mask as an insulator.

  • Your pinout for the LD33 is wrong. According to the data sheet, it is GOI, not IGO like a 7805

  • There is silkscreen outside the board boundary; some houses like BatchPCB will charge based on the largest outline, and others may even use the silk as the outline.

  • I prefer having traces run straight into pads to avoid acid traps.

  • I like to add the boad name, revision, and your (or your company) name on the silk.

/mike

Thanks a ton n1list! A lot of good information in there. I’ll try to incorporate that into my board and schematic and post that later. I was working on it last night and did some rearrangements, added a reset button, and a grounded copper pour on the bottom. I’m not worrying about silk screening at the moment since if I produce this board it will most likely be me trying to etch it. If I send it off to a batchPCB house, it will likely cost way more than simply getting the SFE SD shield and soldering on what I want.

I’m still wondering if I should just go with some voltage dividers instead of the level shifter.

For the relays, I drive the 2 off board relays with transistors, but chose the relay for the servo because it is requires a min switching load of 10mA. I might go with this reed relay I’ve had for a while from radio shack, but if I’m reading the “specs” correctly, it says it has a max switching power of 10 watts, which at 5v is 2 amps? Doesn’t sound right. The servo is a very tiny servo that currently runs fine on the arduino’s power on a breadboard without the relays, so I’ll check on that. I was thinking about tying in the power supply to the board anyway, but wasn’t sure how I should do that. The supply I have is an old cell phone charger and it has caps and some other circuits on board to even out the power, but do you think I should still throw on some caps and a regulator? It reads 5.07v on my multimeter, but I don’t have an oscilloscope to see its wave. I’ll take the power from that supply to feed the relays and servos and then to vin on the arduino.

As for the trace width for power, my power supply is a max of 700mA. I plan on using a radio shack 2 sided PCB, which a quick google reveals a guess of 1 oz/ft thickness of copper, and http://www.4pcb.com/index.php?load=content&page_id=95 estimates at least 7.23 mil width in the air. I’ve never used these equations, so would 8 mil traces for power be adequate?

On a side note, should I be worried about condensation since this will be inside a refrigerator? I plan on it being kept above 50 degrees F 99.9% of the time. Also, would it be wise to connect my circuit’s ground to the fridge’s AC ground?

I uploaded my current changes.