• Featured User: kurt

    Ohh_avatar

    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, ...

    Learn More

  • 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 ...

    Find Out More

Arduino Hardware Reset Circuit Breadboard


Download this project


Ohh_avatar

By: kurt

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.

Download project description w/o images
Download project description w/ images

Files

Download all project files

Bill of Materials

Qty Part # Description Schematic ID Source
1 C14ff4b26e5b0d93cd1a4d9208acb56b9634d2bf NE555P TIMER SINGLE PRECISION,DIP8 ,0.5MHZ IC1 Source
1 8d17dc6357d99d17730430c3718a0a959d650925 CF14JT100R 1/4w 100 ohms 5% Carbon Film Resistors R4 Source
1 6ff6f1f238f6d58bf3404a4f2e252ec33d9a96cc CF14JT1K00 1/4w 1K ohms 5% Carbon Film Resistors R3 Source
1 D9a682fef3ecbdda1662c8ac0511fc8fe76d9200 CF14JT10K0 1/4w 10K ohms 5% Carbon Film Resistors R2 Source
1 4868eeaa367d124a5137abfd3185be624e37bef6 CF14JT100K AXIAL CARBON FILM RES 1/4W 100K OHMS 5% LF R1 Source
1 D1ab4aa047eff1b9c25b19a978b5f76604582418 EEA-GA1HR10 CAP ALUM 0.1UF 50V 20% RADIAL C1 Source
1 679f7dae6acf00a1d38d970c8e80263aa7d6d8d4 SR215C103KAR CAPACITOR, 0.01UF, 50V C2 Source
1 5456f27d24da35477b2d27b2da40d3216ffa1904 2N3904BU TRANSISTOR, NPN 200MA TO-92 Q1 Source
loading total from bomfire.com...

Download BOM w/o images
Download BOM w/ images

Steps

1. Gather parts

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.

Img_0326

2. Insert 555 timer

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.

Img_0327

3. Connect 555 timer to +5V

Connect pins 4 and 8 of the IC to the +5V rail on the right side of the breadboard.

Img_0329

4. Connect 555 timer to GND

Connect pin 1 of the IC to the GND rail on the left side of the breadboard.

Img_0330

5. AC couple pin 5 of the timer to ground

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.

Img_0332 Img_0333

6. Insert timing capacitor C1

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.

Img_0336 Img_0337

7. Short pin 6 to pin 7 on the 555 timer

Connect pin 6 of the IC to pin 7. I used a small jumper wire for this.

Img_0339 Img_0338

8. Insert timing resistor R1

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.

Img_0340 Img_0342

9. Insert input pull-up resistor

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.

Img_0345

10. Insert transistor Q1

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.)

Img_0346

11. Insert current-limiting resistor R4

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.

Img_0348

12. Insert base resistor R3

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.

Img_0350

13. Connect input signal

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.

Img_0351

14. Connect output reset signal

Connect the collector of the transistor to the pin marked RESET on the Arduino.

Img_0352 Arduinouno_r2_front

15. Completed hardware

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.

Img_0354 Img_0356

16. Sample Code

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.

Reset%20code

Download steps w/o images
Download steps w/ images

Revisions


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
Add revision




blog comments powered by Disqus
Back