The design for the
project comes from a number of requests for a low cost HOME ALARM.
Everything is done with a single 8-pin microcontroller and it reduces
the chip-count and component-count to a minimum.
That's the advantage of a micro.
It can be programmed to monitor 4 inputs and produce a tone and
wailing siren when an intrusion is detected. It also has all the "timing
delays" and remembers which sector was detected.
This is the cheapest kit on the market and has some interesting
features, never seen in an alarm.
The siren is activated when a door is opened or an item is touched and
it starts very softly so that if it is a false alarm, you have time to
reset the siren.
Most people hate turning on a house alarm as a false alarm is very
frustrating and embarrassing. This design avoids that.
The second feature is the tamper switches.
Two of the inputs can be taken to items that are used as "bait" for the
burglar. One of them can be money on a table. A small amount of money is
left under a clip. When it is removed, the contacts touch each other and
set-off the alarm.
The other "trap" is a drawer that is never used. When it is opened, it
sets off the alarm.
Another feature is the 4 PIEZO SIRENS. This is an "add-on" future. The
circuit contains one siren output. You can parallel 3 more driver
circuits to get the 4 PIEZO SIRENS feature.
If you mount 4 x 80dB piezo sirens on the ceiling of a room, the sound
is so deafening and disturbing that you cannot remain in the room. There
is a phenomenon called "fringing" and the sound from each siren creates
a "beat" of low frequency as well as the high-pitched sound. This is so
annoying.
Because the burglar cannot hear if someone is approaching, he leaves
immediately.
INSTRUCTIONS FOR USE
The 4 inputs must
be CLOSED via the 4 test switches
provided in the kit.
Turn the ALARM on.
The two "ON" LEDs will illuminate as well as one
of the INDICATOR LEDs.
If the first indicator LED flashes once, the
alarm will produce CONSTANT WAILING
If the second indicator LED flashes 4 times, the
alarm will wail for 5 minutes.
To change the wailing, turn alarm OFF and push
button A.
Turn alarm ON and wait for indicator LED to
flash either once or 4 times. Wait to hear the
beeps and turn the alarm off.
Turn alarm ON and the other indicator LED will
flash.
The exit piezo will now beep-beep-beep for 45
seconds to allow you to exit the premises.
None
of the sensors will activate the alarm during
this time.
After 45 seconds, open one of the switches and
the Piezo Siren will beep-beep-beep for 10
seconds then wail for 5 minutes or constantly.
The alarm is now ready for installation.
|
The CIRCUIT
The circuit is very simple. All
the work is done by the micro.
The micro is designed to work on 5v and the supply to it must not be more than
5.6v.
The alarm is supplied from a 12v battery and a very clever
voltage-dropping arrangement has been provided to delver a maximum of
5v6 to the micro.
This is the section of the circuit that will be taking current when the
project is turned ON. That's why we have taken special care to keep the
current very low, so the circuit can operate on a rechargeable battery
or even two lantern batteries.
The supply contains two high-brightness LEDs to drop the 12v supply by
1.7v for each LED. This delivers 12.6v - 1.7v - 1.7v = 9.2v to the right
end of the 1k5 resistor. The left side is a maximum of 5v6 and the
difference is 3.6v. This produces a current of 2.4mA.
This current is available for the micro.
When the micro is in the "detection mode" is takes less than 1mA and the
remainder of the current flows though the 5v6 zener.
When one of the indicator LEDs is flashing, or button A is pressed, or
the piezo buzzer is sounding, or the piezo siren is active, the 5v
section takes more than 1mA and can take up to 2.4mA. At this point the circuit
takes all the current that is available via the 1k5 resistor and the voltage drops to 5.5v.
This takes the zener out of conduction and the micro consumes all the
current.
The flashing LEDs will take more than 2.4mA for a short
period of time and the 100u electrolytic will deliver this extra current
and charge during the "off time."
This arrangement takes the least current from the battery as a 78L05
requires 10mA and you would need to use a special low-current regulator
to achieve what we have done.
The circuit has been designed around easy-to-obtain components.
There are two clever features that need describing.
The 4 inputs are monitored by turning on the 47k pull-up resistors
inside the micro and this creates a voltage-divider between the external
resistors and the internal 47k's.
The 1k resistor across the LEDs keeps the "bottom resistor" in the
divider very low and prevents 1.7v developing across the LEDs as this
would be detected as a HIGH (the chip detects anything above about 1v5 as
a HIGH).
The 22n across switch A is charged by the program for a very short
period of time then the pin is turned into an input to see if the
capacitor is still charged. SwA will discharge the 22n very quickly if
it is pushed.
This is the only way to detect if SwA is pressed. The internal 47k's
cannot pull the input high enough to record a HIGH when the 10k is used
as a base resistor.
The siren piezo has a transistor driver to produce maximum output and
the
buzzer piezo has a transistor driver and 10mH choke to increase the
output. This allows you to use low-cost piezo diaphragms for both.
CONSTRUCTION
You can build the circuit on
matrix board or use the ALARM 4-ZONE Printed Circuit board included in
the kit.
The kit of components comes with all the parts you need to get the
project working, including a pre-programmed chip.
If you want to burn your own chip or modify the program, you will need a PICkit-2 programmer and this comes
with 2 CD's containing all the software needed for In-Circuit
Programming.
You will also need a lead (comes with PICkit-2) to connect the programmer to your lap top via
the USB port and an adapter we call 6pin to 5 pin
Adapter to connect
the PICkit-2 to your project.
FITTING THE ALARM
The board comes with screw terminals for the 4 inputs and a set of
terminals for the 12v supply as well as the leads to the piezo siren.
This makes it easy to install.
Simply build the circuit and mount it inside a cupboard where it will
not be seen.
2 x 6v lantern batteries will last 3,000 hours (125 days) or a 12v gel
cell will last 6 months. But the alarm is only active for a few hours
each day and the battery-life will not be a problem.
Mount the siren piezo some distance from the alarm in a high location.
It will be so loud that the burglar will leave the premises.
You can add a second siren piezo and mount it outside.
Any unused inputs need to have a "shorting link" added across the
terminals of the unused input.
Cover the hole in the piezo to reduce the sound when initially testing
the project.
The alarm will wail constantly if you have chosen the first flashing LED
via the mini tactile switch "A." or it will only sound for 5 minutes if
the middle LED is flashing.
PROGRAMMING THE
CHIP
The kit comes with a pre-programmed PIC chip but if you want to program
your own chip or modify the program, the .hex file is available as well
as the assembly file, so you can see how the program has been written
and view the comments for each line of code.
The PIC12F629 is one of the smallest micros in the range but you will be
surprised how much can be achieved with such a tiny micro.
The program contains sub-routines to produce delays, sequences on the
display and both read and write EEPROM; jobs that require accurate code
- including a special sequence - called a handshaking sequence that
prevents the EEPROM being written due to glitches.
Even a program as simple as this is not easy to put together and to
assist in this area, we have provided a whole raft of support material.
Not only do we provide a number of programs with full documentation but
our approach to programming is simple.
It involves a method of "copy and paste" whereby sub-routines
are taken from previously written code and copied into your program. Any modifications are
made in very small steps so that each can be tested before adding more
code.
This is exactly how we produce a complex project. Each step is written
and tested before adding the next step.
This saves a lot of frustration as it is very easy to add a line
of code that is incorrect and get an unsuspected result.
If you follow our suggestions you will buy a programmer ("burner")
called a PICkit-2 if you are using a laptop. It is the cheapest and best on the market
and comes with
a USB
cable and 2 CD's containing the programs needed to "burn" the chip.
If you are using a desk-top and/or tower with a serial port, you can use
a cheaper programmer called MultiChip Programmer from Talking
Electronics. You
will also need NotePad2 to write your .asm program. This can be
downloaded from Talking Electronics website. You will use
Alarm4Zone.asmm or
Alarm4Zone-asm.txt as a
basis and it is best to change only a few lines at a time to see what
effect is created. You will also need a 6 pin to 5 pin connector that fits between the burner
and the project. This is also available on Talking Electronics website.
As we said before, this project is for medium-to-advanced programmers as
it is very compact and does not have in-circuit programming pins.
To be able to modify the chip you will need a programming socket and
this can be obtained from one of our other projects that contains the 5
pins for in-circuit programming. Or you can build a programming socket
by adding a socket to a surface-mount PC board and solder 5 pins to one
edge and connect the socket to the pins.
You can then put the chip into the socket and program it.
PROGRAMMING LANGUAGE
There are a number of kits, programs and
courses on the market that claim and suggest they teach PIC Programming.
Most of these modules and courses use a PIC microcontroller as the chip carrying out
the processes, but the actual programming is done by a proprietary
language invented by the designer of the course.
Although these courses are wonderful to get you into "Programming
Microcontrollers" they do not use any of the terms or codes that apply
to the PIC microcontroller family.
All our projects use the 33 instructions that come with the PIC
Microcontroller and these are very easy to learn.
We use the full capability of the micro and our pre-programmed chip is
less than the cost of doing it any other way.
In addition, anything designed via our method can be instantly
transferred to a PIC die and mass produced. And we use all the input
pins and all the memory of the chip. The other approaches
use less than 25% of the capability of the memory and one of the pins is not available.
In fact it would be difficult to reproduce this project via any of the opposition
methods. It would require a larger chip and more expense.
You can use our method or the opposition. Just be aware that the two are
not interchangeable.
Ours is classified as the lowest "form" (level) of programming - commonly called
machine code - invented in the early days of microprocessors - and now
called mnemonic programming as each line of code is made up of
letters of a set of words. The opposition uses a higher level language
where one instruction can carry out an operation similar to a
sub-routine.
But you have to learn the "higher level language" in order to create a
program. And this requires a fair amount of skill and capability.
It sounds great and it is a good idea. But if you want to learn PIC
programming, it does not assist you. It is "a step removed" from
learning PIC language. The other disadvantage of the opposition is the
"overhead." The 1,000 spaces allocated for your program is filled with
pre-written sub-routines. You may require only 10 of these sub-routines but ALL
of them are loaded in the memory space. And they take up all the memory.
You have no room for your own program.
To get around this the opposition uses the 128 bytes in EEPROM to deliver
instructions on how to apply the sub-routines. This provides about 30 powerful instructions using their
language called BASIC (or a similar language).
It's a bit like selling a diary filled with all the paragraphs you need
to express yourself, and leaving a few blank pages at the back for you
to write single lines such as: see page 24, paragraph 7, see page 63
paragraph 4, to create your diary entries.
It depends on how much you want to be in charge of writing a program. Using
our method is like writing your own auto-biography. Using the opposition
is like getting a "ghost writer."
When using a higher level language to create a program, you have absolutely no
idea how the code is generated for the micro.
In some of the developmental kits, the code is "locked away" and you are
NEVER able to access it.
Everything runs smoothly until a fault appears. With our method you can
see the code. With the other methods, you cannot see the code - it's
like doing key-hole surgery without the advantage of an
illuminated endoscope to see what you are doing.
Everything has its place and our method of hand-assembly is only
suitable for very small micros and you will eventually need to "learn a
high level language." The PIC12F629 has over 1,000 locations for code
and this equates to more than 20 pages when printed, so this is about
the limit to doing things by hand.
But our drive is to show how much can be done with the simplest devices
on the market, at the lowest cost.
Anyone can show you high-technology at a high price but this is not
where you start and this is not where you get enthusiasm.
We provide the things to get you started. That's the difference.
BURGLAR ALARM
4-ZONE
This circuit uses a dedicated alarm chip from Talking Electronics (TE555-BA4).
The chip costs $2.50 and contains a 4-zone Burglar Alarm circuit. All
you need are the surrounding components to complete the project. These
components are available as a kit for $20.00 including the dedicated
chip and this makes it one of the cheapest kits on the market (postage
for kit $6.50). Click
HERE
to order the chip or the kit.
The only additional parts you require are 4 reed switches. These can be
purchased on eBay for $5.38 for a set of 5 Normally Open switches (post
free).
Here is the link:
http://www.ebay.com/itm/5-Set-Door-Or-Window-Safety-Contact-Magnetic-Alarm-Reed-Switch-NO-with-Screws-/290746194636?pt=LH_DefaultDomain_0&hash=item43b1d2dacc
Build the circuit on a piece of matrix
board (or the Circuit Board included in the kit) and connect the inputs
to the screw terminals. 6 separate 2-screw terminals are provided in the
kit to make it easy to wire-up the alarm. The alarm takes about 1mA when
monitoring a house and about 100mA when activated.
The siren is only activated ONCE for 5 minutes when a break-in occurs as
this is the maximum allowable time for a siren to wail in Australia.
If you want the alarm to constantly wail after a break-in, push button A
when the alarm is turned on (and the exit beep is being produced). The
constantly wailing LED will flash. Push the button again and the 5
minute LED will flash. The button toggles between the two features.
You can use reed switches for the input devices for doors and drawers.
You can also trap the burglar by placing money under a clip and have a
very thin length of tinned copper wire wound around two pins. When the
money is removed, the wire is pulled off the pins. A single strand of
wire can be obtained from a length of hook-up flex.
POWER SUPPLY
The alarm can be connected to a 12v gell cell with a rating of 1.2AHr
and it can be automatically charged using our
Automatic Battery Charger in 101 Transistor Circuits.
http://www.talkingelectronics.com/projects/200TrCcts/101-200TrCcts.html#84
HOW THE CIRCUIT WORKS
Any of the inputs can be used for the Entry/Exit.
It is connected to the door you will use to enter or exit the property.
The alarm gives you 45 seconds to exit.
When you enter the property, the buzzer turns on as soon as you open the
door and beeps for 45 seconds to allow you to turn off the alarm.
If the alarm is not turned off, the main piezo siren produces a soft
tone for 30 seconds and then a piercing wailing sound.
This allows you to turn off the alarm
before the loud wailing is produced and is one of the best features of
the alarm as the worry of false-triggering an alarm prevents many
householders setting their alarm.
Any unused inputs must be connected with a link so the alarm can be set.
When the circuit is turned ON, you have 45 seconds to exit the premises.
The chip then flashes either the 5-min LED or the Constant LED to
indicate if the siren will wail for 5 minutes or constantly. You can
change the setting by pressing the button. The circuit then beeps for 45
seconds to give you time to exit the property. It then monitors all 4
inputs.
Alarm 4-Zone PCB
The main chip contains an internal
oscillator to drive a piezo diaphragm and also a wailing oscillator for
the Piezo Siren. The Piezo Siren is an 80dB piezo diaphragm driven by a
BD679 Darlington transistor with a 10mH choke to produce a high voltage
for the diaphragm.
The chip operates on 5v and the rest of the circuit uses 12v. A very
simple voltage-dropper consisting of 2 LEDs and 1k5 drops the 12v to
5v.
TESTING
Four switches are paced on the 4 inputs and pushed so the contacts
are CLOSED.
The project can now be tested by going through the INSTRUCTIONS FOR USE
(above).
Here are the files you will need:
Alarm4Zone.asm
Alarm4Zone-asm.txt
Alarm4Zone.hex
;*************************************************************
;;Alarm 4-Zone.asm
;*************************************************************
; Alarm4Zone.asm for PIC12F629 16-12-2013
;; Alarm4Zone.asm for PIC12F629 6-1-2014
;
;
radix dec
include "p12f629.inc"
errorlevel -302 ; Don't complain about BANK 1
;Registers during assembly
__CONFIG _MCLRE_OFF & _CP_OFF & _WDT_OFF &
_INTRC_OSC_NOCLKOUT ;Internal osc.
STATUS equ 3
PC equ 2
#define CARRY STATUS,0
#define ZERO STATUS,2
;Files:
flags equ 20h ;flags file
tempA equ 21h
delA equ 22h
delB equ 23h
delC equ 24h
dwell equ 25h
steps equ 26h
count equ 27h
temp1 equ 28h
loops equ 29h
store equ 2Ah ;stores triggered input No
loop30 equ 2Bh ;loops for 5 minute siren
org 0
goto SetUp
nop
SetUp
movlw 07h ;Set up W to turn off Comparator ports
movwf CMCON ;must be placed in bank 0
goto Main
;**************************
;* Delays *
;**************************
_1mS movlw .40 ;reduced to 40/255 of 1mS
movwf delA
decfsz delA,f
goto $-1
retlw 00
;240mS delay
_240mS nop
decfsz delA,1
goto $-2
decfsz delB,1
goto $-4
retlw 00
_500mS goto $+1
goto $+1
decfsz delA,1
goto $-3
decfsz delB,1
goto $-5
retlw 00
;****************************
;* Sub-routines *
;****************************
;beep-beep-beep to siren for soft start
beep
movlw .50
movwf tempA
bsf gpio,5
movlw .40
movwf delA
nop
decfsz delA,f
goto $-2
bcf gpio,5
movlw .240
movwf delA
goto $+1
decfsz delA,f
goto $-2
decfsz tempA,f
goto $-13
call _240mS
retlw 00
;Charge 22n
Charge bsf status,rp0 ;Bank 1
movlw b'00101111'
movwf trisio ;Make GP0,1,2,3,5 input GP4 output
bcf status,rp0 ;bank 0
bsf gpio,4
call _1mS ;charge 22n
bsf status,rp0 ;Bank 1
movlw b'00111111'
movwf trisio ;Make GP0,1,2,3,5 input GP4 input
bcf status,rp0 ;bank 0
bcf gpio,4
call _1mS ;time for swA to discharge 22n
retlw 00
;Indicate
;flash 1 time for constant wailing or 4 times for 5 minutes wailing
Indicate
bsf status,rp0 ;Bank 1
movlw b'00111001'
movwf trisio ;Make GP1,2 output
bcf status,rp0 ;bank 0
clrf gpio ;make outputs low to turn off LEDs,
call read ;read 0 or 1 from EEPROM location 1
btfss temp1,0
goto Ind_1
bsf gpio,2 ;temp1 = 1 = contant siren
call _500mS
bcf gpio,2
call _500mS
retlw 00
Ind_1 bsf gpio,1 ;temp1 = 0 = 5 minute siren
call _500mS
bcf gpio,1
call _500mS
bsf gpio,1
call _500mS
bcf gpio,1
call _500mS
bsf gpio,1
call _500mS
bcf gpio,1
call _500mS
bsf gpio,1
call _500mS
bcf gpio,1
call _500mS
retlw 00
;read takes the value 0 or 1 from EEPROM location 0 and puts in temp1
read
movlw .0
bsf status,rp0
movwf EEADR
bsf EECON1,0 ;starts EEPROM read operation result in EEDATA
movf EEDATA,w ;move read data into w
bcf status,rp0
movwf temp1 ;temp1 has the value 0 or 1 to flash a LED
retlw 00
;SIREN - WAILING SIREN
Siren movlw 7 ;number of steps
movwf steps
Siren1 movlw 5 ;dwell
movwf dwell
bsf gpio,5
movf count,0
movwf tempA
decfsz tempA,1
goto $-1
bcf gpio,5
movf count,0
movwf tempA
goto $+1
goto $+1
goto $+1
decfsz tempA,1
goto $-4
decfsz dwell,1 ;
goto $-14
movlw 5
subwf count,1 ;
decfsz steps,1 ;
goto Siren1
retlw 00
;Siren Beeps for 10 seconds
SirenBeep
bsf status,rp0 ;Bank 1
movlw b'00011111'
movwf trisio ;Make GP0,1,2,3,4 input GP5 output
bcf status,rp0 ;bank 0
movlw .50 ;number of loops (cycles)
movwf tempA
SirenBeep1
bsf gpio,5 ;siren BD679 HIGH
movlw .40
movwf delA
nop
decfsz delA,f
goto $-2
bcf gpio,5 ;siren BD679 LOW for: 255 delA
nop
decfsz delA,f
goto $-2
decfsz tempA,f
goto SirenBeep1
call _240mS ;silence
retlw 00
;exit tone to piezo buzzer
tone ;524Hz for 250mS
bsf status,rp0 ;Bank 1
movlw b'00101111'
movwf trisio ;Make GP0,1,2,3,5 input GP4 output
bcf status,rp0 ;bank 0
movlw .50 ;number of loops (cycles)
movwf tempA
tone1 bsf gpio,4 ;buzzer BD679 HIGH
movlw .40
movwf delA
nop
decfsz delA,f
goto $-2
bcf gpio,4 ;buzzer BD679 LOW for: 255 delA
nop
decfsz delA,f
goto $-2
decfsz tempA,f
goto tone1
call _240mS ;silence
retlw 00
write
bsf status,rp0 ;select bank1
movwf EEDATA
bcf status,rp0 ;select bank0
movlw .0
bsf status,rp0 ;select bank1
movwf EEADR
bsf eecon1,wren ;enable write
movlw 55h ;unlock codes
movwf eecon2
movlw 0aah
movwf eecon2
bsf eecon1,wr ;write begins
bcf status,rp0 ;select bank0
writeA btfss pir1,eeif ;wait for write to complete
goto writeA
bcf pir1,eeif
bsf status,rp0 ;select bank1
bcf eecon1,wren ;disable other writes
bcf status,rp0 ;select bank0
retlw 00
;****************************
;* Main
;****************************
Main ;45 second exit with button A detect
;exit beep produced
clrf store ;stores triggered input No
movlw .180 ; 180 x 250mS = 45 seconds
movwf loops
call Indicate ;flash LED 4 times
M1 call Charge
btfsc gpio,4 ;is button A pressed?
goto M2 ;not pressed
call read ;0 or 1 will be in temp1
btfss temp1,0
goto $+4
clrf w
call write
goto M2
movlw 1
call write
M2 call tone ;call exit tone
decfsz loops,1
goto $-2
;monitors 4 inputs
Monitor bsf status,rp0 ;select bank1
movlw b'00101111'
movwf trisio ;Make GP0,1,2,3,5 input GP4 output
bcf 81h,7 ;turn on pulls-ups in option_reg
movlw b'00000111'
movwf 095h ;WPU register for GP0,1,2
bcf status,rp0 ;bank 0
btfsc gpio,0
goto Mon1
btfsc gpio,1
goto Mon1
btfsc gpio,2
goto Mon1
btfsc gpio,3
goto Mon1
goto Monitor
Mon1 bsf status,rp0 ;select bank1
bcf trisio,5 ;Make GP5 output
bcf status,rp0 ;bank 0
;soft-start siren with beeps for 10 seconds
movlw .40
movwf loops
call SirenBeep
decfsz loops,1
goto $-2
;constant siren if temp1,0 = 1
;5 minute siren if temp1,0 = 0
btfss temp1,0
goto Siren5min
call Siren ;constant siren
goto $-1
Siren5min
movlw .30 ;30 loops
movwf loop30
movlw .185 ;inner loop = 10 seconds
movwf loops
call Siren
decfsz loops,1
goto $-2
decfsz loop30,1
goto $-6
goto $
;************************************
;*EEPROM *
;************************************
org 2100h
de 00h
END
|
|
3 - 1k
resistors
2 - 330R
1 - 1k5
resistor
2 - 10k resistor
1 - 47k resistor
1 - 22n
1 - 100n capacitor
1 - 100u electrolytics
2 - BD679 transistors
1 - 5v6 400mW zener diode
4 - 3mm super-bright red LEDs
1 - SPDT mini slide switch
1 - mini tactile switch
1 - 8 pin IC socket
1 - PIC12F629 chip (Alarm routine)
1 - mini piezo diaphragm
1 - 80dB piezo transducer
2 - 10mH chokes
6 - 2-screw terminals or 2x3
and 3x2-screw
1m fine screened lead for piezo
20cm very fine solder
1 - Alarm 4-zone PC board
4 -
Switches to test the
project |
|
5/1/2014 |