Login / Signup

How to design a Passive Infrared (PIR)

  • user warning: Table './devemc/sessions' is marked as crashed and last (automatic?) repair failed query: SELECT COUNT(sid) AS count FROM sessions WHERE timestamp >= 1422779333 AND uid = 0 in /home/devemc/public_html/dev/includes/session.inc on line 157.
  • user warning: Table './devemc/sessions' is marked as crashed and last (automatic?) repair failed query: SELECT COUNT(DISTINCT s.uid) FROM sessions s WHERE s.timestamp >= 1422779333 AND s.uid > 0 in /home/devemc/public_html/dev/modules/user/user.module on line 790.
How to design a Passive Infrared (PIR)

This article details the hardware and software required for a fully functional passive infrared (PIR) sensor with an associated remote control unit. The remote control unit adjusts key algorithm detection parameters which are stored in the MC68HC908JK1/3 FLASH memory area.


The PIR sensor is mounted behind a Fresnel lens. The output signal from the sensor is amplified and conditioned by two elements of an operational amplifier, before being connected directly to an analog-to-digital (A/D) channel of the microcontroller (MCU) which is the conventional analog approach. Alternatively, it may be AC coupled to the input of the microcontroller via an R/C network which forms the basis for the alternative Delta Sigma method of detection. The intruder detect output is a signal that is used to indicate to the PIR units parent system that a valid intruder event has been detected. In this application, a light-emitting diode (LED) is used to indicate an alarm condition. Normally, this is an alarm trigger device, such as a relay, transistor, etc.


Features of the PIR include:

    • Infrared (IR) communications with 38 kHz tx being bit bashed and rx via the timer capture interrupt

    • RS232 tx communications, bit bashed at 38,400 bit rate

    • FLASH self-erase/program/verification using Motorola monitor routines

    • Analog initialization/read

    • Intruder detect using analog buffer scan or Delta Sigma algorithms

Using a low-cost microcontroller (MCU) like the MC68HC908JK1/3 has many advantages compared to an analog sensor circuit since the MCU can apply real-time intelligence to the sensor data it is receiving. This intelligence forms the heart of the intruder detection algorithm; the advantage is increased by the ability of the user to modify key algorithm parameters, which are stored in FLASH memory. The FLASH memory parameters are adjusted by 2-way infrared communications using a REMOTE unit. The use of an MCU also provides the designer with an alternative method of sensor amplification, which employs considerably fewer components than the op-amp approach.





One of the most important factors to consider when designing intruder alarm systems is that they should offer good sensitivity combined with a high immunity to false alarms. Pyrolytic sensors used in PIR alarm systems deliver a very low amplitude output, which is proportional to changes in incident infrared radiation falling on them. Traditionally, a multi-stage amplification has been used to condition the sensor output to provide a usable output signal.

Source Code (Abstract)

// main() //
void main( void )
while( 1 )
// by virtue of the fact that we have got to this part of //
// the software a KEYBOARD interrupt must have ’fired’. //
if ( GetPirPassword() )
do {
// 10ms do-while sync //
while ( !flags1.bit._10MS_LOOP );
flags1.bit._10MS_LOOP = 0;
} while ( ++stop_counter 

After every analog read/store operation a magnitude difference test is performed with the previous data value. If this difference is greater than or equal to pir_param.difference_band, then pir_buffer is cleared and the current and previous values are stored at locations [0] and [1] respectively. Subsequent values are stored and when pir_buffer is full a call to pir\analyse.c->Analyse_PIR_Buffer() is performed and a detect event is scanned for.

Programming procedure
    1. Ensure that the VDD switch is Off.
    2. Ensure that the 20-pin socket is occupied.
    3. Ensure that a standard 9-way RS232 cable is connected from the
    PC to the development board’s Programmer RS232 connector.
    4. Set the Osc Select switch to Program.
    5. Set VDD switch to On.
    6. Invoke c:\pemicro\ics08jlz\prog08sz.exe (assuming default installation directory).
    7. After programming is complete, set the VDD switch to Off and move the Osc Select switch from Program to Run.

Note: The PIR MC68HC908JK1/3 programming is in-circuit, there is no separate programming socket.

PIR Unit Bill of Materials

    R1 1k
    R2 10k
    R3 47k
    R4 10M
    R5 10R
    R6 680R
    R7 10k
    R8 100k
    R9 47k
    R10 100k
    R11 100k
    R12 470R
    R13 2k2
    R14 10k
    R15 10k
    R16 10k
    R17 10k
    R18 470R
    R19 680R
    R20 10k
    R40 3M3
    R42 10k
    R44 10k
    R45 47k
    R46 3M3
    R47 680k
    R48 4k7


    SW1 SPCO slide switch
    SW2 SPCO slide switch
    SW3 SPCO slide switch
    X1 4MHz resonator
    XT1 9.8304MHz Oscillator Module
    FR1 Curtain’ Fresnel lens
    IR1 GP1U28Q
    J1 9 way rt angle male ‘D’ Connector
    J2 “3pin 0.1”” header”
    J3 “3pin 0.1”” header”
    J4 9 way rt angle male ‘D’ Connector
    J5 3pin PIR Connector
    J6 1.2mm
    LED1 Infra Red transmitter
    LED2 5mm Red
    LED3 5mm Yellow
    LED4 5mm Green


    C1 100nF 50V DC
    C2 100nF 50V DC
    C3 220uF 16V DC
    C4 470uF 25V DC
    C5 100nF 50V DC
    C6 100nF 50V DC
    C7 100nF 50V DC
    C8 100nF 50V DC
    C9 100nF 50V DC
    C10 100nF 50V DC
    C11 3nF3 50V DC
    C12 100nF 50V DC
    C13 220µF 16V DC
    C14 100nF 50V DC
    C15 33µF 10V Tantalum
    C16 10µF 16V DC
    C17 10µF 16V DC
    C19 100nF 50V DC
    C20 10nF 50V DC
    C21 22µF 16V DC
    C23 10µF 16V DC


    D1 BAS16
    D2 BAS16
    D3 BAS16
    D4 BAS16
    D5 5V1
    IC1 MC68HC908JK3
    IC2 LM7805
    IC3 MAX232
    IC4 74HC125D
    IC5 LM324D
    Q1 BC818-40
    Q2 BC850
    Q3 BC850
    Q4 BC850

The PIR unit is based upon the MC68HC908JK1/3, these are 1536-bytes/4096-byte FLASH microcontrollers, the ‘9’ in the part number denotes the part as being a FLASH device. The minimum size FLASH memory that can be erased at one time is 64 bytes and the maximum size FLASH memory that can be programmed at one time is 32 bytes (row). This reference design uses the last 64-byte block of the user code space as a 32-byte nonvolatile data store. This feature alleviates the need for an external memory IC such as an 8-pin 2-wire I2C type.

If you want to know more about this Freescale product, please submit your request to Arrow Italy using this form.
NOTE: this form is valid ONLY for Companies or Customers based in Italy and working in the Italian area.

Read the Italian version: Come progettare un sensore infrarosso (PIR)

Source: Passive Infra Red (PIR) for Security Peripherals

much simpler IR

Yes, you can either do this complicated design or you can try this:


It's small, simple, and it does the job! Well, this is only regarding the hardware design. But I believe in such systems the mechanical aspects are much more critical and difficult to implement. Lenses will always be a pain and it is not the type of item you would assemble in your hobby desk, because you will never get the focal length right!


Who's online

There are currently users and guests online.

Recent comments