-
Вложений: 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.... ??
-
Re: Датчик дождя или датчик препятствий.
А если собирать с приемником на другую частоту, например на 36 кГц, значения переменных num и impulse какие выставлять?
-
Re: Датчик дождя или датчик препятствий.
Теоретически ничего менять не нужно
-
Re: Датчик дождя или датчик препятствий.
На практике не работает, менял значения - итог такой же.
-
Re: Датчик дождя или датчик препятствий.
Работает, ищите у себя ошибку!
-
Re: Датчик дождя или датчик препятствий.
Цитата:
Сообщение от
Chip
Перепробовал несколько вариантов датчика из интернет, все работают не правильно, чувствительность низкая срабатывают на разные помехи, например на пульты ДУ или энергосберегающие лампы.
Решил написать свой код, теперь у меня можно настроить чувствительность датчика от 1 см до нескольких метров и при этом не стабатывает на помехи.
Чувствительность регулируется резитором в цепи ИК диода, у меня примерно 1к и слабый ИК светодиод от старой мышки , срабатывают на расстоянии 30см от препятствия . Пробовал на оконном стекле (брызгал водой ) срабатывает стабильно. На автомобильном стекле еще не проверял. Carduino с нижеприведеным кодом работать самостоятельно без ПК. Индикатор (L) начинает светиться при срабатывании. Датчик ИК и ИК светодиод должны быть полностью изолированы друг от друга светонепроницаемым материалом.
ИК приемник использовал из
Кармонитор, работающий в диапазоне 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
Кто нибудь может обьяснить для чего в начале запускается цикл for?
-
Re: Датчик дождя или датчик препятствий.
Так в коде же есть коментарии
-
Re: Датчик дождя или датчик препятствий.
Это понятно, только для чего сначала зажигать и тушить диод 19 раз, а только потом считывать показания с датчика?
Я понимаю, что это частота 38 кГЦ, но датчик, получается, снимает данные не во время работы диода а после того, как он потухнет.
-
Re: Датчик дождя или датчик препятствий.
ИК приемник работает не зависимо от контроллера
-
Re: Датчик дождя или датчик препятствий.
Как?
Сначала запускается цикл for пока num меньше 20 ( то есть 19 раз), только потом контроллер переходит к считыванию показаний датчика с 11-го пина.
П. С. Я не сомневаюсь в работоспособности проекта и только учусь програмить ардуины, просто для себя хочу понять как все работает.
-
Re: Датчик дождя или датчик препятствий.
в цикле идет передача сигнала, а приемник в это время не зависимо от контроллера принимает этот сигнал и выставляет на выходе логический уровень
-
Re: Датчик дождя или датчик препятствий.
Ясно. Только если я понимаю - первый раз после включения несущая частота идет вхолостую и только когда void loop запускается по новой - приемник может принимать данные.
Поправте, если не прав.
-
Re: Датчик дождя или датчик препятствий.
И еще одно. Не совсем понятна строчка кода:
digitalWrite(Led,(val==LOW)*?*HIGH:LOW);*//если*сигнал*низкий*то*зажигаем*светодиод
*
Нельзя как нибудь упростить? Мне не понятен синтаксис.
-
Re: Датчик дождя или датчик препятствий.
Можно проверять состоянк через if() else
-
Re: Датчик дождя или датчик препятствий.
Спасибо, почти со всем разобрался.
Только не понимаю зачем запускать цикл:
for(i=0; i<num; i++) //цикл несущей
{
digitalWrite(irLed, HIGH); //зажигаем ик-диод
delayMicroseconds(impulse); //положительный полупериод
digitalWrite(irLed, LOW); //гасим ик-диод
delayMicroseconds(impulse-1); //выравниваем скважность
}
ведь к:
val=digitalRead(tsop);//Прочитать показания датчика
контроллер перейдет только по завершении цикла if
-
Вложений: 3
Re: Датчик дождя или датчик препятствий.
Всем привет, в нашем случае дворники будут просто включаться. А есть вариант сделать с учетом интенсивности дождя ? К примеру в готовых устройствах (Российских "ДДА-25") используются вот такие внутренности. Как я понимаю каждый ИК настроен на разную чувствительность, и включает определенную интенсивность - логика верна? 4-е светодиода и 4-е фотодиода ?
Интересна логика программы, наверно снимаются показания с 4 х фотодиодов и выбирается наиболее сработавшая)) - только как их настроить в зависимости от кол- воды.
Получится дешевый датчик дождя, датчик света можно прикрутить в этот же корпус (самодельный - например от корпуса антены активной, круглой, а ардуино в другое место) для включения фар автоматом например.
Надеюсь заинтересовал )
Вложение 18251
Вложение 18252
Вложение 18253
-
Re: Датчик дождя или датчик препятствий.
Я думаю, что эти датчики замеряют плотность капель на стекле и в зависимости от плотности регулируют частоту включения дворников. И чувствительность у них одинаковая, да и незачем делать разную чувствительность, если каждый диод сканирует свой участок стекла. Так что логика, думаю, проста до безобразия:
1. Если один из датчиков стал не активным (не приходит отражённый от стекла свет), тогда включаем дворники с минимальным интервалом.
2. Промежуточный вариант уже экспериментально нужно установить.
3. И если все датчики не активные - включаем интенсивную работу дворников.
На словах вроде бы просто, но нужно пробовать на практике :)
Отдельно Ардуино для такого дела - это как иметь самолёт и ездить (не летать) на нём в магазин за хлебом :) Разве что Ардуино в машине ещё другие функции выполняет.
-
Re: Датчик дождя или датчик препятствий.
В иномарках, кажется, стоит один излучатель и один приёмник и он измеряет количество отражённого от капли света. То есть, чем больше капля (или слой воды), тем интенсивнее нужно смывать.
-
Re: Датчик дождя или датчик препятствий.
Цитата:
Сообщение от
Murkur
Я думаю, что эти датчики замеряют плотность капель на стекле и в зависимости от плотности регулируют частоту включения дворников. И чувствительность у них одинаковая, да и незачем делать разную чувствительность, если каждый диод сканирует свой участок стекла. Так что логика, думаю, проста до безобразия:
1. Если один из датчиков стал не активным (не приходит отражённый от стекла свет), тогда включаем дворники с минимальным интервалом.
2. Промежуточный вариант уже экспериментально нужно установить.
3. И если все датчики не активные - включаем интенсивную работу дворников.
На словах вроде бы просто, но нужно пробовать на практике :)
Отдельно Ардуино для такого дела - это как иметь самолёт и ездить (не летать) на нём в магазин за хлебом :) Разве что Ардуино в машине ещё другие функции выполняет.
Кстати да, спасибо, в зависимости от плащади интенсивность - скорее всего так и есть, а ардуино нано - стоит копейки (130 р. китай) = не самолет а комбайн ) можно же и датчик света, комфортные поворотники и даже подогрев сиденией по термодатчику прикрутить если пинов хватит.
-
Re: Датчик дождя или датчик препятствий.
Цитата:
Сообщение от
Murkur
В иномарках, кажется, стоит один излучатель и один приёмник и он измеряет количество отражённого от капли света. То есть, чем больше капля (или слой воды), тем интенсивнее нужно смывать.
В начале темы используется ИК приемник и ИК диод, CHIP подскажи пожалуйста, можно ли через них ловить количество дождя в зависимости от качества приема?
-
Re: Датчик дождя или датчик препятствий.
Цитата:
Сообщение от
Sirox
В начале темы используется ИК приемник и ИК диод, CHIP подскажи пожалуйста, можно ли через них ловить количество дождя в зависимости от качества приема?
Я не CHIP, но с ИК кажется нельзя интенсивность ловить, только импульсы. В иномарках сделано на светодиоде и фото-приёмнике, типа оптопары. А чтобы приёмник не принимал свет от солнца или уличного освещения, можно посылать на него модулированный импульсный сигнал.
Думаю, что в ДДА-25 используются ИК-диоды, чтобы не бороться с уличным освещением и при этом измерять не толщину воды на стекле, а ещё и ширину покрытия.
-
Re: Датчик дождя или датчик препятствий.
Можно сделать, взяв за основу схему и код от бесконтактного выключателя
-
Re: Датчик дождя или датчик препятствий.
-
Re: Датчик дождя или датчик препятствий.
Цитата:
Сообщение от
Chip
#include <avr/pgmspace.h>
#include "fife.h"
#include "hi.h"
А где можно найти эти библиотеки?
-
Re: Датчик дождя или датчик препятствий.