ИК-датчик для Arduino и не только

Датчик, предложенный автором Instructables под ником AdnanA61, позволяет обнаруживать коротковолновое ИК-излучение от таких источников, как пульты ДУ, огонь, лампы накаливания, солнце. Он не реагирует на другой вид ИК-излучения — длинноволновое, источниками которого являются все объекты, нагретые до обычных температур. Самоделка вырабатывает два вида сигналов: аналоговый и дискретный, второй из них формируется компаратором, порог срабатывания которого сделан регулируемым. Оба сигнала можно подать как на Arduino, так и на другие устройства как с микроконтроллером, так и без него. Далее показано другое исполнение платы, схема при этом не отличается:

Датчик выполнен на одном из двух компараторов микросхемы LM393, второй можно при желании задействовать для решения другой задачи. Если же им не пользоваться, лучше соединить оба его входа с общим проводом, а выход оставить неподключённым.

Схема составлена так, что читать её не очень удобно. Три точки, обозначенные как A0, необходимо соединить между собой. Две точки, обозначенные как D0 — тоже. Вот и становится понятно, что с чем соединено и как работает. Никаких загадок. Если собирать датчик из конструктора, цоколёвка гребёнки на плате, входящей в комплект, будет следующей:

Конечно, на самодельной плате, печатной или макетной, эту цоколёвку можно сделать такой, какая будет вам удобна. Проверить плату в действии и отрегулировать порог срабатывания компаратора можно сразу после сборки, просто подав питание, благодаря светодиоду на борту. Второй светодиод при поданном питании светится постоянно. Затем можно соединить датчик с Arduino и проверть работу аналогового выхода таким скетчем:

//copy this code in the ide of arduino from this line

//note:- this code is for analog value

int sensor=A0; //initializing the analog pin

int buzzer=3; // initializing buzzer pin

int value;

void setup(){

Serial.begin(9600);

pinMode(sensor, INPUT); // assing the pin mode type of the pin as input or output

pinMode(buzzer, OUTPUT);

}

void loop(){

value=analogRead(sensor); //reading the valus from the sensor

value=map(value,0,1023,0,255); // mapping the value from 0 to 1023 b/w 0 to 255

digitalWrite(buzzer, value); // switching the buzzer on or off by the mapped value

}

А цифрового — другим скетчем:

//copy this code in the ide of arduino from this line

//note:- this code is for digital value

int sensor_digital=2; // initializing the digital pin

int buzzer=3;

int value;

void setup(){

Serial.begin(9600);

pinMode(sensor_digital, INPUT);

pinMode(buzzer, OUTPUT);

}

void loop(){

value=digitalRead(sensor_digital); // reading the digital dat from the sensor

digitalWrite(buzzer, value); // switching buzzer on or off

}

Когда всё заработает, можно написать и программы, реализующие алгоритмы большей сложности. Например, для робота, «боящегося» приближаться к пламени или мощной лампе накаливания, чтобы не испортиться. И правильно делающего, так как поднесение платы датчика к источникам сильного нагрева на расстояние менее 100 мм может вывести её из строя.

Источник

Источник: usamodelkina.ru

Добавить комментарий