Вложений: 1
Датчик дождя или датчик препятствий.
Перепробовал несколько вариантов датчика из интернет, все работают не правильно, чувствительность низкая срабатывают на разные помехи, например на пульты ДУ или энергосберегающие лампы.
Решил написать свой код, теперь у меня можно настроить чувствительность датчика от 1 см до нескольких метров и при этом не срабатывает на помехи.
Чувствительность регулируется резистором в цепи ИК диода, у меня примерно 1к и слабый ИК светодиод от старой мышки , срабатывают на расстоянии 30см от препятствия . Пробовал на оконном стекле (брызгал водой ) срабатывает стабильно. На автомобильном стекле еще не проверял. arduino с нижеприведенным кодом работать самостоятельно без ПК. Индикатор (L) начинает светиться при срабатывании. Датчик ИК и ИК светодиод должны быть полностью изолированы друг от друга светонепроницаемым материалом.
ИК приемник использовал из https://duino.ru , работающий в диапазоне 38кГц
Скетч для Arduino
PHP код:
byte tsop = 11; //tsop
byte irLed = 10; //ик-светодиод
byte Led = 13; //осветодиод(L) на плате
byte i; // счётчик
byte num=20; //число периодов несущей 38кГц в посылаемом пакете
byte impulse=10; // длительность полупериода
byte val, old_val; //переменная для хранения сигнала с ИК приемника
void setup()
{
pinMode (irLed, OUTPUT); // разъём 10 на вывод
pinMode(Led, OUTPUT); //разъём 13 на вывод
pinMode(tsop, INPUT); // разъём 11 на ввод
Serial.begin(115200);
}
void loop()
{
for(i=0; i<num; i++) //цикл несущей
{
digitalWrite(irLed, HIGH); //зажигаем ик-диод
delayMicroseconds(impulse); //положительный полупериод
digitalWrite(irLed, LOW); //гасим ик-диод
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);
}
Вложение 6422
Re: Датчик дождя или датчик препятствий.
И как успехи ?
Сам к лету буду заморачиваться, изобретать датчики освещенности и дождя. :D
Re: Датчик дождя или датчик препятствий.
Все отлично работает,
Также отлично работает как датчик движения и препятствий , чувствительность регулируется огромных пределах
Re: Датчик дождя или датчик препятствий.
Re: Датчик дождя или датчик препятствий.
Цитата:
Сообщение от
Chip
Перепробовал несколько вариантов датчика из интернет, все работают не правильно, чувствительность низкая срабатывают на разные помехи, например на пульты ДУ или энергосберегающие лампы.
Решил написать свой код, теперь у меня можно настроить чувствительность датчика от 1 см до нескольких метров и при этом не стабатывает на помехи.
Чувствительность регулируется резитором в цепи ИК диода, у меня примерно 1к и слабый ИК светодиод от старой мышки , срабатывают на расстоянии 30см от препятствия . Пробовал на оконном стекле (брызгал водой ) срабатывает стабильно. На автомобильном стекле еще не проверял. Carduino с нижеприведеным кодом работать самостоятельно без ПК. Индикатор (L) начинает светиться при срабатывании. Датчик ИК и ИК светодиод должны быть полностью изолированы друг от друга светонепроницаемым материалом.
ИК приемник использовал из
https://duino.ru, работающий в диапазоне 38кГц
Скетч для Carduino / Arduino
PHP код:
byte tsop = 11; //tsop
byte irLed = 10; //ик-светодиод
byte Led = 13; //осветодиод(L) на плате
byte i; // счётчик
byte num=20; //число периодов несущей 38кГц в посылаемом пакете
byte impulse=10; // длительность полупериода
byte val, old_val; //переменная для хранения сигнала с ИК приемника
void setup()
{
pinMode (irLed, OUTPUT); // разъём 10 на вывод
pinMode(Led, OUTPUT); //разъём 13 на вывод
pinMode(tsop, INPUT); // разъём 11 на ввод
Serial.begin(115200);
}
void loop()
{
for(i=0; i<num; i++) //цикл несущей
{
digitalWrite(irLed, HIGH); //зажигаем ик-диод
delayMicroseconds(impulse); //положительный полупериод
digitalWrite(irLed, LOW); //гасим ик-диод
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);
}
Вложение 6422
Чип! Подскажи пожалуйста схема есть, а как запитать Carduino и как вывести, чтобы Carduino управлял стеклоочистителями без ПК?
Re: Датчик дождя или датчик препятствий.
Нужно добавить MOSFET или Реле с ключем,
После этого в перемнную led прописываем выход на котором будет реле или ключь. Должно все заработать
Re: Датчик дождя или датчик препятствий.
Цитата:
Сообщение от
Anatolyj
а как запитать Carduino
Подать 12В на вывод "VIN", ну и "землю" на "GND".
Re: Датчик дождя или датчик препятствий.
Цитата:
Сообщение от
zhserg
Подать 12В на вывод "VIN", ну и "землю" на "GND".
стабилизированный +12 или можно с проводки авто?
Re: Датчик дождя или датчик препятствий.
от бортсети в ардуино есть свой стабилизатор
Re: Датчик дождя или датчик препятствий.
В проводке авто не 12v. Бывает и 13-13.4v.... ??