What is the best practice to make my Arduino circuit more robust against prototyping mistakes (like shorting pins)? I don't want the controller to release its blue magic smoke while experimenting with it, what precautions can I make while designing a circuit?
Not best practices, but an alternative approach:
Consider the Ruggeduino instead of a standard Arduino. At a price ($39.95) comparable with the equivalent Arduino, the Ruggeduino offers:
- Resettable fuse on each GPIO pin, i.e. all GPIO pins are protected from short-circuit to ground or other pins
- All GPIO pins withstand 24 Volts
- Reverse voltage protection (-30 V) on Vin
- Microcontroller overcurrent protection
- 3.3V and 5V outputs on the board are over-current and short-circuit protected
Besides the above points specific to the question, the boards are designed to survive harsh environments and various mistakes. Also, the clock is more precise than on the Arduino.
I don't know if there's one best practice, but the following might be helpful:
- Limit the voltage on input pins to 5.5 V maximum.
- Do not short IO pins.
- Use pullup or pulldown resistors when conecting switches or pushbuttons.
- Respect the current limits (for each pin and in total). Use resistors.
- The Arduino is just the brain, not the power station. If you have to drive higher loads, use simple transistors, Darlington arrays, etc.