Go Down

Topic: Dual element PIR for motion tracking (Read 5734 times) previous topic - next topic


Hi guys, I want to set up a circuit based around a dual element PIR sensor (D203S, datasheet here: http://www.electronikdreamz.com/data/sensor/d203s.pdf)

The idea is to be able to build a device with a servo in order to follow someone around a room. This is why I bought a dual element PIR sensor, in order to sense if the person is moving from left to right and vice versa, and to step the servo accordingly, following the person around the room by keeping them centralized in the sensor.

I assumed this could be done using analogRead in order to get a base number when nothing is in view of the sensor, and a higher(lower) number when someone is to the left of it, and a lower(higher) number when someone is to the right of it.

I don't seem to be seeing any change in value from the sensor though, could this be the code or the hardware wired up wrong?

Here is the code i am using:

Code: [Select]
int calibrationTime = 10;

int pirPin = A0;
int ledPin = 13;
int pirVal = 0;

void setup(){
  pinMode(pirPin, INPUT);
  pinMode(ledPin, OUTPUT);
  digitalWrite(pirPin, LOW);

  //give the sensor some time to calibrate
  Serial.print("calibrating sensor ");
    for(int i = 0; i < calibrationTime; i++){
    Serial.println(" done");
    Serial.println("SENSOR ACTIVE");

void loop(){

     pirVal = analogRead(pirPin);

The code is very basic at the moment, this is just to test if I have wired the device up correctly, and to see the changes in values when I move my hand near it.

Am I doing something wrong?


The code looks fine. How have you got it wired up, the data sheet suggests you need a 72dB gain amplifier, that is a lot of gain you won't get any signal connecting it directly to the arduino. Your amplifier could be saturated with the DC offset if you don't design it correctly.


Connected using the arduinos 5v out to a LM358N op-amp using a 10k and a 100k resistor for the amplification.

The sensor itself has a V in of the arduinos 3v3 output, and the op-amp is using the 5v output, which i would hope allow for enough gain to show any significant change in input.

I have the sensor connected up to the Analog input (as shown in the code above) which i hoped would allow me to have a little leeway before performing any action (a sort of jitter elimination method) should this work? does the sensor need to be digital?

Thanks for the reply :)


With those two resistors you can only have a gain of 10, to get what is recommended you need a gain of over 6000 so it is no wonder you are seeing nothing.


Ok, it appears to be working, I swapped out the PIR for a D203B sensor instead of the D203S, and swapped out the resistors for a 1ohm and a 10k ohm resistor.

Am I correct in saying this will give me 10000 times gain?

Many thanks, n00bz0rz.


Am I correct in saying this will give me 10000 times gain?

Only in theory. 1R is too low for the op-amp's output impedance and you are probably just getting the open loop gain. I wouldn't put R1 lower than 100R but R2 can be up to 1M, still you might be limited by the real open loop gain of the amplifier.

Go Up