Featured User: kurt
Open-source hardware project hosting is my passion. I spend most of my free time building neat gadgets or planning what I'll build next. I love building things, and I want to make Open Hardware Hub a place that inspires others to build, ...
Updates 2013 February 18
It's been a while, hasn't it? Well, that's ok because we've got a lot of updates to talk about. Most of these have been effective on the site fora couple weeks now. A few may or may not be active when this article gets posted, but they'll certainly be applied in the ...
Arduino Hardware Reset Circuit Breadboard
This circuit uses one pin to let you reset your Arduino in code. It pulls reset low for a couple milliseconds to ensure the Arduino has enough time to complete its reset cycle.
- ArduinoReset.sch - Arduino Reset EAGLE Schematic
- ArduinoReset.brd - Arduino Reset EAGLE Board
- Arduino Reset.zip - Arduino Reset Gerber
- Arduino_Reset.pde - Arduino Reset Example Sketch
Bill of Materials
|Qty||Part #||Description||Schematic ID||Source|
|1||NE555P||TIMER SINGLE PRECISION,DIP8 ,0.5MHZ||IC1||Source|
|1||CF14JT100R||1/4w 100 ohms 5% Carbon Film Resistors||R4||Source|
|1||CF14JT1K00||1/4w 1K ohms 5% Carbon Film Resistors||R3||Source|
|1||CF14JT10K0||1/4w 10K ohms 5% Carbon Film Resistors||R2||Source|
|1||CF14JT100K||AXIAL CARBON FILM RES 1/4W 100K OHMS 5% LF||R1||Source|
|1||EEA-GA1HR10||CAP ALUM 0.1UF 50V 20% RADIAL||C1||Source|
|1||SR215C103KAR||CAPACITOR, 0.01UF, 50V||C2||Source|
|1||2N3904BU||TRANSISTOR, NPN 200MA TO-92||Q1||Source|
Gather your parts. Note that the capacitors in the picture are actually a 10pF capacitor and a 100uF capacitor. It's recommended that you use 10nF and 0.1uF capacitors as shown in the schematic.
Insert the 555 timer in your breadboard. There is a small circular dent on the top of the chip that indicates pin 1. Make sure you put pin 1 on the top left side as shown.
Connect pins 4 and 8 of the IC to the +5V rail on the right side of the breadboard.
Connect pin 1 of the IC to the GND rail on the left side of the breadboard.
Place the 10nF capacitor between pin 5 of the IC and the ground rail. The value of this capacitor is not very important, and the circuit will probably still work without it.
Connect the 0.1uF capacitor between pin 6 of the IC and the ground rail. This capacitor determines how long the reset line is held low after the reset signal is received from the Arduino. Higher capacitor values make the output reset signal stay low longer.
Connect pin 6 of the IC to pin 7. I used a small jumper wire for this.
Put a 100k resistor between pin 7 of the IC and the +5V rail. Note that the board is rotated 180 degrees in this picture. This resistor determines how long the output reset pulse is (along with capacitor C1). Higher values of R1 make the output pulse longer.
Put a 10k resistor between pin 2 of the IC and the +5V rail. This resistor is used to pull up the input to the IC so that the RESET pin is normally held high even when there is no input to the reset circuit. This avoids accidental resets.
Insert the transistor like this. I prefer to put the collector of the transistor towards the top of the breadboard so it looks like the schematic. This transistor is used to invert the output of the 555 timer so that the output is active low instead of active high. The reset pin on the Arduino expects to be pulled low to initiate a reset. (You can use almost any transistor for this as long as it is NPN.)
Put a 100 ohm resistor between the emitter of the transistor and ground. This resistor limits the current that is sourced from the Arduino's reset pin. If the current got too high it could damage either the Arduino or the transistor Q1.
Insert a 1k ohm resistor between the base of the transistor and pin 3 of the IC. This resistor limits the current flowing into the base of transistor Q1. Transistors only need a small amount of current to turn on, so we limit the base current to less than 5mA with this resistor.
Pin 3 of the IC is the input of the circuit. The input should normally be held high. When you want to do a hardware reset of the Arduino, pull this pin low in your code. You can use any of the Arduino's analog or digital outputs for this.
Connect the collector of the transistor to the pin marked RESET on the Arduino.
Now the hardware is finished, and you need to program your Arduino to use this reset circuit. The code needed for this circuit is very simple.
The Arduino_Reset.pde file is a sample sketch that uses the reset circuit. It blinks a light once, and then triggers the reset circuit. If the circuit is functioning properly, then the Arduino will blink its built-in LED about once per second.
7 - fixed steps 3 and 4
6 - fixed an error in the description
5 - fixed the text for the third step
4 - none
3 - changed name to indicate this project is built on a breadboard
2 - updated description
1 - Initial project release
blog comments powered by Disqus