Well, not always.
During the development of this smoker controller, I did the usual steps. I started with breadboarding sections, making them work, then gathering all the circuits together on a PCB design that I had made at OSH Park.
I am using DipTrace as my PCB software, and, like most of them, the process starts with a schematic.So, I happily drew the schematic, putting together all the parts from my breadboarding experiments. After the schematic was done, I generated the board. This is the point where the problem occurred.
The speed control for the fan consists of an IRF630 MOSFET driven by a PWM signal from the MCU. I supply the fan with +12V and switch the negative return with the transistor. Since I had tested the circuit on the breadboard, I knew it worked. All I did when I built the PCB was test it with the ‘scope to see if it was functioning. When I finally hooked up the fan to try it, very strange things were happening. I was getting low voltage warnings, and one of the thermocouples was signalling failure. What happened? This all worked when it was on the breadboard!
Autorouting is what happened. On the breadboard, the source of the transistor was connected directly to negative through a piece of wire.On the PCB version, autorouting had taken the source, routed it through VSS on a few chips, and finally meandered back to power supply negative. I think that the PWM signal switching on and off at 20Khz was putting noise on the ground return and driving other IC’s on the board crazy.
I solved the problem by removing the speed control from the main board and making a small ‘satellite board’, connected by direct wires. When I do the new version of the PCB, I will pay attention to this and manually route things like the speed control. Then I will allow autorouting to take care of the simple stuff.