1

I've bought an HC-SR501-compliant PIR motion sensor (like this one) and connected it to a Teensy 3.1. The circuit seems fine, and the LED lights up. However, when nothing is moving in front of it, the sensor keeps reporting HIGH and LOW in suspiciously constant intervals. The monitor reads like this (numbers in milliseconds)

motion detected 4113
motion stopped 7234
motion detected 4114
motion stopped 7274
motion detected 4113
motion stopped 7204
motion detected 4111
motion stopped 7184

When it detects movement, it stays on the triggered position for longer, but even then goes back to predetermined intervals, e.g.

motion detected 4113
motion stopped 17204
motion detected 4111
motion stopped 41754
motion detected 4113

This is the sketch (as found on Adafruit):

int ledPin = 13; // choose the pin for the LED
int inputPin = 1; // choose the input pin (for PIR sensor)
int pirState = LOW; // we start, assuming no motion detected
int val = 0; // variable for reading the pin status
unsigned long lastTime = millis();
void setup() {
 pinMode(ledPin, OUTPUT); // declare LED as output
 pinMode(inputPin, INPUT); // declare sensor as input
 Serial.begin(9600);
}
void loop(){
 unsigned long currentTime = millis();
 val = digitalRead(inputPin); // read input value
 if (val == HIGH) { // check if the input is HIGH
 digitalWrite(ledPin, HIGH); // turn LED ON
 if (pirState == LOW) { 
 // we have just turned on
 Serial.print("motion detected ");
 Serial.println(currentTime - lastTime);
 // We only want to print on the output change, not state
 pirState = HIGH;
 // Save time for measurement
 lastTime = currentTime;
 }
 } else {
 digitalWrite(ledPin, LOW); // turn LED OFF
 if (pirState == HIGH){
 // we have just turned off
 Serial.print("motion stopped ");
 Serial.println(currentTime - lastTime);
 // We only want to print on the output change, not state
 pirState = LOW;
 // Save time for measurement
 lastTime = currentTime;
 }
 }
}

Could this be a faulty device? I'm thinking about getting a new one for testing. While I can compensate for the gaps when triggered, I can't think of a way to make sure that it's not actually being triggered by this weird internal interval.

asked Jun 15, 2015 at 16:16

1 Answer 1

1

Try powering the PIR motion sensor with a higher voltage. I get the same problem you're seeing when powering it with the 3.3v output of an Adafruit Huzzah ESP-12, but it works just fine when I power it with the 5v USB power.

answered Jul 4, 2017 at 19:18
1
  • From the Adafruit page: "Runs on 5V-12V power (if you need to run it off of 3V you can do that by bypassing the regulator, but that means doing a bit of soldering)." So powering it from the Teensy's 3.3V may be the problem. Commented Mar 12, 2018 at 22:00

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.