ON/OFF button using Microcontrollers

Posted on Jan 10, 2013

Using a switch to power up your microcontroller projects may not be a good idea if you need to `wake` the PIC during some events. For example: A metal detector sends a pulse indicating a car is ready to enter into a garaje, so the user needs to type a password to open the garage door or just slide the access card. You may leave the Microcontroller ON always, 24/7 and it, someday, will fail or just freeze because a glitch in the code or just a failure caused by a voltage variation. The solution that I have is just creating a routine to turn ON or OFF the PIC by itself. Just like the handheld calculators that have the ON/OFF button and turn OFF by itself after some minutes without activity.

ON/OFF button using Microcontrollers
Click here to download the full size of the above Circuit.

How I do that? Simple: I turn off the PIC with the SLEEP instruction. While the PIC is "sleeping" it is "ON" but the clock will stop, so the program will not continue. The current consumption is only a few micro-amperes. (You need to set the I/O ports to low and disable comparators to ensure the PIC will not draw any voltage thru any port). Once the PIC is on POWER DOWN MODE (or SLEEP Mode) basically it will be OFF until: A Hardware resets occurs. A brown-out/power loss occurs. Watchdog was enabled and it generated a timeout. An extenal interrupt was generated (for example, a Peripheral interrupt) When I need a "power on/off" button, I do use the RESET pin as "on/off" button. An example of this technique is my Air Display. As you can see; when you press the RESET button, you are turning ON the PIC. When the process is done, it turns off by itself with the SLEEP instruction. Now, If you want to turn ON/OFF the PIC then you have to use a little trick: As soon the Microcontroller starts, determine the value of an specific variable is equal to 075h (75 Hex). If the value IS NOT 075h, then set the variable to 075h and continue with the normal process. If the value IS EQUAL to 075h, then set the variable to 00h and execute the SLEEP process (put the Microcontroller to sleep). Why those conditions? Just to determine if the user pressed the reset button to turn the PIC off or on. When the...

Leave Comment

characters left:

New Circuits



Popular Circuits

FM Transmitter (2N2222)
Suspended Bicore circuit for robots
555 Voltage Doubler Relay Driver
Railway Points Sequencer
High-quality ultra-linear 10W tube amp
Super lock circuit diagram