Проблема с датчиком HC-SR505
Я использую PIR-модуль HC-SR501 с моим Arduino Mega, и он довольно хорошо отслеживает присутствие.
Из-за ограничений по стоимости я решил пойти с датчиком HC-SR505 - купил их целую кучу. Спектакль очень плохой. Это почти похоже на то, что он дает случайные ВЫСОКИЕ и НИЗКИЕ значения. Из 20 с лишним датчиков, которые я купил, один или два вполне нормальны - все остальные ведут себя странно. Испытывал ли кто-нибудь подобное поведение с HC-SR505?
Они очень чувствительны к шуму в источнике питания - есть ли обходной путь для смягчения эффекта? - Помочь?
Код:
const int buttonPin = 4;
void setup() {
Serial.begin(9600);
pinMode(buttonPin, INPUT);
}
void loop()
{
if (digitalRead(buttonPin) == HIGH)
{
Serial.println("Обнаружено присутствие");
}
else {
Serial.println("Присутствие не обнаружено");
}
delay(2000);
}
@NoMadic, 👍5
4 ответа
Вы спросили, испытывал ли кто-нибудь еще подобное поведение, и из документации, которую я могу найти, ответ должен быть утвердительным.
505 поддерживает ВЫСОКУЮ производительность в течение определенного периода времени. Ни в одной документации, которую я могу найти на нем, не указано количество времени. Так что очень возможно, что вы действуете как раз вблизи этого предела. Если их контроль качества не идеален, некоторые из них могут работать правильно, а некоторые-нет.
Другими словами, я считаю, что проблема в том, что вы не учитываете встроенную временную задержку в SR505.
В этом основное различие между 501 и 505. На 501 он регулируется как по чувствительности, так и по временной задержке. С 505 эти значения заданы заранее.
В качестве обходного пути вы можете попробовать увеличить задержку с 2000 мс до тех пор, пока не найдете правильное значение, которое будет согласованно работать с вашей партией.
Чувствительность также нельзя отрегулировать, но это может быть преимуществом, если вы пытаетесь охватить меньшую площадь, чем при использовании 501. Они оба имеют одинаковую ширину обзора 90-100 градусов, но 505 сделан для более короткого диапазона, как дверной проем, в отличие от 501, который может охватывать всю комнату.
Согласно этой вики: https://www.elecrow.com/wiki/index.php?title=HC-SR505_Mini_PIR_Motion_Sensor, задержка составляет 8 секунд +/-30%.
Датчик очень чувствителен к движению. Взмах рукой перед ним "так быстро, как вы можете" (с близкого расстояния) приведет к срабатыванию датчика. Во время тестирования двух купленных мною устройств их нужно было направлять в сторону от меня, иначе возникала "ложная тревога".
У меня была та же проблема с датчиком, дающим случайные значения 1/0. Затем я присмотрелся к схеме поближе.
Контакты плохо помечены, что не говорит о больших деталях, контакт-1 помечен"+", однако слово "ВНЕ" находится между контактами 2 и 3.
Если вы подключите + к +5 В, а затем средний вывод к GND, а затем к вашему Arduino (скажем, ВЫВОД-10 вашего Arduino), вы заметите взлеты и падения, которые не соответствуют каким-либо движениям (т. Е. Сообщают вам "Плохой датчик")... однако:
Часть 1 решения:
Обмен контактами 2 и 3 датчика (т. е. + идет на +5В Arduino, в грунт стержень-3 датчика, и средний-это то, что вы должны читать (т.е. контакт-10 Ардуино)) после этого должен начать работать, но мы еще не закончили, вы получите плохие результаты...
Часть 2 решения:
Если вы читаете с вывода 10 Arduino, то в вашей функции setup() обычно будет выглядеть так:
setup()
{
pinMode(10, INPUT);
}
Этого недостаточно для этого датчика!... Я знаю,... должно быть правильно?!...
В любом случае, вы ДОЛЖНЫ сказать, чтобы этот ШТИФТ был равен НУЛЮ с самого начала, иначе это адский тормоз... Поэтому, пожалуйста, напишите pin с 0, и после этого все должно работать нормально:
setup()
{
pinMode(10, INPUT);
digitalWrite (10, LOW);
}
После вышеизложенного проблема действительно решена, датчик работал абсолютно нормально.
Один назойливый вопрос, однако, который я в настоящее время пытаюсь работать над тем, чтобы снизить датчик таймер задержки включения от 8 сек в 1-2 секунды, т. е. как только кто-то в передней части датчика я не хочу сказать, что человек был там еще когда он ушел с площади почти 7 секунд назад... Позже я мог бы опубликовать еще одну статью о том, как это сделать.
В то же время, я надеюсь, что это поможет решить эту проблему
С уважением Heider
Светя ярким светом через печатную плату, я придумал эту схему обратной связи. Насколько я понимаю, IC-это какой-то специальный операционный усилитель. Я полагаю, что можно изменить время, регулируя резистор 154 (150k) и чувствительность, регулируя резистор 335 (3,3 Мег) и/или резистор 103 (10k).
- Какова работа pulseIn?
- Сколько датчиков может поддерживать один модуль Arduino?
- Получение BPM из данного кода
- DS18B20 дает высокие показания. Как заставить его вернуть правильную температуру?
- Какой тип разъема использует система GROVE?
- Улавливают ли ультразвуковые датчики прозрачные материалы?
- Как подключить более 10 датчиков к Arduino uno r3
- В чем разница между акселерометром, гироскопом и датчиком магнитометра?