Pir датчик и модуль силовой ключ -- затык

himikat
Offline
Зарегистрирован: 21.06.2016

Добрый день , проблема заключается в том что,  есть код который снимает данные с датчика и посылает его на транзистор тот в свою очередь открывается и подает напряжение на светодиодную ленту. Все просто но,3 ий раз переделываю - с тремя датчиками - собираю схему с новым датчиком работает нормально сутки , следующим днем начинает тупить все . Посылает постайнно либо True либо False с датчика на транзистор . Менял датчики, менял пины для датчика и транзистора . Менял с самопальной макетной платы на сенсор шилд для нано . Датчики стандартные 

HC-SR505 и HC-SR501

unsigned long tim_e=0;
boolean transPin = 4;  // инициализируем пин для транзистора
boolean PirPin = 3;  // PIR инициализируем пин для получения сигнала от пироэлектрического датчика движения
boolean pirState = LOW;  // состояние датчика
boolean Pirsensor = LOW;  // переменная для чтения состояния пина
int fadeValue = 0; // переменная для плавного вкл ленты
byte count = 0;

void setup() {
  Serial.begin (9600);
  pinMode(transPin, OUTPUT);  // объявляем светодиод в качестве  OUTPUT
  pinMode(PirPin, INPUT);  // объявляем датчик в качестве INPUT
}
void loop() {
 //if (millis() - tim_e > 2000) { // каждые 5 секунд смотрим
 //tim_e = millis (); // приравниваем текущее с настоящим
 Pirsensor = digitalRead(PirPin);  // считываем значение с датчика
 switch (Pirsensor){ // сравниваем значения  переменной val
  case (HIGH) :
    Serial.println(Pirsensor);
    return;
    digitalWrite(transPin, HIGH); // выводим цикл на контакт транзистора
        //for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 20) // цикл на плавное вкдючение
  //  {
   //   analogWrite(transPin, fadeValue); // выводим цикл на контакт транзистора
   //   delay(50);// задержка для плавного вывода
    // }
    // delay (5000); // ждем 15 сек
     break;
  case (LOW):
   Serial.println(Pirsensor);
   digitalWrite (transPin, LOW);
   break;
  }
  //}
}
//}

 

himikat
Offline
Зарегистрирован: 21.06.2016

Заметил что при открытии serial порт шлет сначала какой то иероглиф или строку иероглифов

 

himikat
Offline
Зарегистрирован: 21.06.2016

Пробовал отдельно датчик движения и светодиод на 13 пине , такая же беда. Проблема думаю именно в датчиках, вопрос почему они умирают спустя сутки . При том что я могу 15 минут подержать вкл, а след день начинаються глюки

b707
Offline
Зарегистрирован: 26.05.2017

Думаю, вам надо выложить схему, причем максимально точно отобразить что и как подключено именно у вас, без оговорок типа "схема стандартная"

Боже мой, код-то зачем такой накрутили? Зачем для boolean использовать switch? :)

Весь ваш код loop() можно переписать в одну строку

digitalWrite (transPin,digitalRead(PirPin));

 

himikat
Offline
Зарегистрирован: 21.06.2016

Код изначально был на плавное включение светодиодной ленты написан, ну и в силу малого опыта. Схему подключения выложу чуть позже, когда доберусь до компьютера

slider
Offline
Зарегистрирован: 17.06.2014

Приметил что 501 сразу юстируется при включении . а 505му надо несколько секунд затишья после включения , а то потом косячить будет , плохо реагировать.
Рисуйте схему и выкладывайте фото экспоната , а то бывает в схеме одно , а собрали с косяками .

himikat
Offline
Зарегистрирован: 21.06.2016

 не могу во фритзинге найти модуль irf 520

himikat
Offline
Зарегистрирован: 21.06.2016

himikat
Offline
Зарегистрирован: 21.06.2016

himikat
Offline
Зарегистрирован: 21.06.2016

Извените как смог , смысл в том что ардуина и лента питаються от блока + 12 V 2 A - сама ардуина запитываеться на VIN  дальше 5V идут на PIR и на шим Модуля транзистора , он в свою очередь регулирует ленту

himikat
Offline
Зарегистрирован: 21.06.2016

После схода с ума датчиков пробовал без модуля транзистора , просто подавал вкл выкл на 13 пин. Но нет Pir всегда выдает HIGH. Значит проблема именно в Pir. У меня есть еще 1 нс 505 , но думаю он тоже а след день с ума сойдет. Может нельзя 2 A давать на VIN ?Хотя дуина работает адеватно я ее потом проверял другими датчиками дальномер НСR 04

himikat
Offline
Зарегистрирован: 21.06.2016

Схема выложена 

himikat
Offline
Зарегистрирован: 21.06.2016

Земля должна быть общая для всех датчиков и модулей ? Пины GND на NANO  общие ? имеет ли значение с одной стороны на землю идет от источника питания а модули заземлены на другой стороне Nano GND 

himikat
Offline
Зарегистрирован: 21.06.2016

Достал новый датчик 505 работает нормально на sensor shield nano подожду сутки посмотрю

sadman41
Offline
Зарегистрирован: 19.10.2016

Вы сами-то можете найти суть хоть какой-либо проблемы по описанию "начал тупить"?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

himikat пишет:

Схема выложена 

Это не схема, а наскальный рисунок питекантропа. 

sadman41
Offline
Зарегистрирован: 19.10.2016

Причем подключающего IRF520 напрямую к ардуине.

slider
Offline
Зарегистрирован: 17.06.2014

ктото запретил рисовать (цветными) карандашами руками на бумаге ? и сфотать , проще паренной репы.

народ так и не увидел фото вашей поделки .   

himikat
Offline
Зарегистрирован: 21.06.2016

а что не так в подключении модуля ? 

himikat
Offline
Зарегистрирован: 21.06.2016

макетную плату я распаял  , все подключил на shield nano

sadman41
Offline
Зарегистрирован: 19.10.2016

Уберите модуль, подключите светодиод. Погоняйте пару дней.

himikat
Offline
Зарегистрирован: 21.06.2016

убрал , ставил на 13 пин (светодиод) . Со старыми датчиками всегда HIGH

himikat
Offline
Зарегистрирован: 21.06.2016

с новым пока все нормально работает как надо в купе с модулем , проблема именно в том что горят pir датчики

himikat
Offline
Зарегистрирован: 21.06.2016

ПОВТОРЯЮ ВОПРОС

Земля должна быть общая для всех датчиков модулей и источника питания  ? (ЗАЗЕМЛЕНА от одного пина GND или можно например блок питания идти на один GND а датчики и модули на другой GND , на ардуино их 2 пина) 

sadman41
Offline
Зарегистрирован: 19.10.2016

Возьмите мультиметр и УБЕДИТЕСЬ в том, что эти два пина звонятся накоротко. Но лучше, конечно, свести все в одну точку.

slider
Offline
Зарегистрирован: 17.06.2014

himikat пишет:

ПОВТОРЯЮ ВОПРОС

Земля должна быть общая для всех датчиков модулей и источника питания  ? (ЗАЗЕМЛЕНА от одного пина GND или можно например блок питания идти на один GND а датчики и модули на другой GND , на ардуино их 2 пина) 

Есстественно !

и внутри ардуины есстественно gnd соеденены.

gnd нагрузки должно подключаться к ардуине , мосфет как можно ближе и желательно вообще без проводов к ардуине если токи свыше 0.5 ... 1А

himikat
Offline
Зарегистрирован: 21.06.2016

Как можно подключить мосфет без проводов?

himikat
Offline
Зарегистрирован: 21.06.2016

я думаю проблема была в распайке макетной платы . Но странно почему сначала работало примерно сутки а потом умерало.

gfx125
Offline
Зарегистрирован: 27.05.2017

Цитата:

Посылает постайнно либо True либо False с датчика на транзистор

ну а что он должен посылать, если у вас

boolean transPin = 4;  // инициализируем пин для транзистора
boolean PirPin = 3;  // PIR инициализируем пин для получения сигнала от пироэлектрического

 

 

 

 

himikat
Offline
Зарегистрирован: 21.06.2016

Дурной какой то, я говорю постоянно. Неважно есть ли движение или нет

gfx125
Offline
Зарегистрирован: 27.05.2017

himikat пишет:
Дурной какой то

это ты сейчас о ком?

 

himikat
Offline
Зарегистрирован: 21.06.2016

slider пишет:

ктото запретил рисовать (цветными) карандашами руками на бумаге ? и сфотать , проще паренной репы.

народ так и не увидел фото вашей поделки .   

himikat
Offline
Зарегистрирован: 21.06.2016

Пока сутки погоняю нану с датчиками запитанный от компа 

himikat
Offline
Зарегистрирован: 21.06.2016
int transPin = 7;  // инициализируем пин для транзистора
int PirPin = 5;  // PIR инициализируем пин для получения сигнала от пироэлектрического датчика движения
byte Pirsensor ;  // переменная для чтения состояния пина
int Pinled  = 13; // переменная для плавного вкл ленты
void setup() {
  Serial.begin (9600);
  pinMode(transPin, OUTPUT);  // объявляем светодиод в качестве  OUTPUT
  pinMode(PirPin, INPUT);  // объявляем датчик в качестве INPUT
}
void loop() {
 //if (millis() - tim_e > 2000) { // каждые 5 секунд смотрим
 //tim_e = millis (); // приравниваем текущее с настоящим
 Pirsensor = digitalRead(PirPin);  // считываем значение с датчика
 if (Pirsensor == HIGH){ // сравниваем значения  переменной 
    digitalWrite(transPin, HIGH); // выводим цикл на контакт транзистора
   Serial.println(Pirsensor);
   //delay (2000);
   }
        //for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 20) // цикл на плавное вкдючение
  //  {
   //   analogWrite(transPin, fadeValue); // выводим цикл на контакт транзистора
   //   delay(50);// задержка для плавного вывода
    // }
    // delay (5000); // ждем 15 сек
   else {
      digitalWrite (transPin, LOW);
    }
    Serial.println(Pirsensor);
  }
//}
//}

 

b707
Offline
Зарегистрирован: 26.05.2017

gfx125 пишет:

ну а что он должен посылать, если у вас

boolean transPin = 4;  // инициализируем пин для транзистора
boolean PirPin = 3;  // PIR инициализируем пин для получения сигнала от пироэлектрического

да, это высший пилотаж :)

как оно вообще могло работать при таких вводных? :)

ТС, я вижу в последней редакции вы эту дичб убрали - заработало? - может все дело именно в этом и было?