ИК-датчик для 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 мм может вывести её из строя.
Источник
Источник: