Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.10.2010, 20:23   #1
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Датчик препятствий или автоматический выключатель

Перепробовал несколько вариантов датчика из интернет, все работают не правильно, чувствительность низкая срабатывают на разные помехи, например на пульты ДУ или энергосберегающие лампы.
Решил написать свой код, теперь у меня можно настроить чувствительность датчика от 1 см до нескольких метров и при этом не стабатывает на помехи.
Чувствительность регулируется резитором в цепи ИК диода, у меня примерно 1к и слабый ИК светодиод от старой мышки , срабатывают на расстоянии 30см от препятствия . Пробовал на оконном стекле (брызгал водой ) срабатывает стабильно. На автомобильном стекле еще не проверял. arduino nano с нижеприведеным кодом работать самостоятельно без ПК. Индикатор (L) начинает светиться при срабатывании. Датчик ИК и ИК светодиод должны быть полностью изолированы друг от друга светонепроницаемым материалом. С таким датчиком выключатель будет включенным даже если вы не двигаетесь.

ИК приемник использовал, работающий в диапазоне 38кГц


Скетч для Arduino UNO / Nano
PHP код:
byte tsop 11;   //tsop
byte irLed 10;  //ик-светодиод 
byte Led 13;   //осветодиод(L) на плате
byte i;     // счётчик
byte num=20//число периодов несущей 38кГц в посылаемом пакете
byte impulse=10;  // длительность полупериода
byte valold_val;   //переменная для хранения сигнала с ИК приемника

void setup() 
{
  
pinMode (irLedOUTPUT); // разъём 10 на вывод
  
pinMode(LedOUTPUT);   //разъём 13 на вывод
  
pinMode(tsopINPUT);   // разъём 11 на ввод
  
Serial.begin(115200);
}

void loop()
{
  for(
i=0i<numi++) //цикл несущей
  
{
    
digitalWrite(irLedHIGH); //зажигаем ик-диод
    
delayMicroseconds(impulse); //положительный полупериод
    
digitalWrite(irLedLOW); //гасим ик-диод
    
delayMicroseconds(impulse-1); //выравниваем скважность
  
}
  
 
val=digitalRead(tsop);//Прочитать показания датчика
 
if (val==old_val)     //сравнить показания с предидущей посылкой
 
{
  
digitalWrite(Led,(val==LOW) ? HIGH:LOW); //если сигнал низкий то зажигаем светодиод
  
if (val==LOW)   delay(300); //время свечения светодиода (L) при срабатывании
 
}
old_val=val;

delay(30); //пауза между пакетами.  
  // Serial.println(val, DEC);

Название: NANO_Rain_sens.PNG
Просмотров: 5974

Размер: 7.9 Кб
Admin вне форума   Ответить с цитированием
 


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 07:14. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика