Всем день добрый. Подскажите неразумному по подключению питания датчика влажности через реле. Вопрос заключается в следующем: почему при подаче +5В через реле (+5 берется с самой Ардуино) датчик влажности перестает работать, если +5В подключать минуя реле, то все работает.
Как-то так. Реле только в программе другое. Поэтому управляющий провод (зеленый) приткнут на реле куда придется.
Проблема вроде как решилась (проблема в коде). Решение только оказалось странным. Может кто-то пояснить, почему digitalWrite(SensorsRealayPin, LOW) замыкает реле, digitalWrite(SensorsRealayPin, HIGH) размыкает. Вроде как наоборот должно быть. Код (C++): #include <Adafruit_GFX.h> #include <Adafruit_PCD8544.h> #define SensorPin A0 //Настраиваем пин А0 на Ардуино для работы с датчиком #define SensorsRealayPin 8 //Настраиваем пин 8 для управления реле подачи питания на датчик #define thresholdUp 400; //верхний предел влажности #define thresholdDown 250; //нижний предел влажности Adafruit_PCD8544 display = Adafruit_PCD8544(6, 5, 4, 3, 2); unsigned int SensorValue; void setup() { // Настройка констант влажности зависит от условий внешней среды, в которой используется датчик //Установка выходов для управления реле pinMode(SensorsRealayPin, OUTPUT); // установить порт как исходящий для подачи питания на датчики влажности digitalWrite(SensorsRealayPin, HIGH); Serial.begin(9600); // Инициализируем дисплей display.begin(); // Делаем его пустым display.clearDisplay(); display.display(); // Устанавливаем контраст display.setContrast(60); // display.println("Ready"); display.display(); delay (10000); } // uint32_t old_ts; void loop() { //Выводим значения на экран //Подаем питание на датчик digitalWrite(SensorsRealayPin, LOW); delay (1000); // SensorValue = analogRead (SensorPin); // SensorValue = analogRead (SensorPin); display.setCursor(0, 0); // Устанавливаем размер текста display.setTextSize(1); // Выводим текст //Выводим значения на экран display.clearDisplay(); display.display(); display.setTextSize(1); display.setTextColor(BLACK); display.setCursor(0,0); display.println("Moisture:"); display.println(SensorValue); display.display(); //SensorValue = analogRead (SensorPin); //Снимаем питание с датчиков digitalWrite(SensorsRealayPin, HIGH); delay(10000); }
Просто во всех примерах, которые мне попались HIGH включено / LOW выключено. Вот я по наивности и подумал, что везде так.
На какой прибор читать документацию? На реле? http://www.ebay.com/itm/1pcs-5V-2-C...229770?hash=item5d5c9509ca:g:cJgAAOxy86RSY-Jq или на Ардуино? http://www.ebay.com/itm/Mega-2560-A...600329?hash=item20fe5f1f89:g:9HsAAOSw~gRVkjRA
Спасибо за внятный ответ. А то некоторые выражаются абстрактными фразами. Я так понимаю на другом реле может быть с точность до наоборот? К сожалению в электронике не силен, и школьный курс физики в котором изучали работу транзистора прочно забыт. Видимо придется учить заново.
Для блока реле обычно указывается каким сигналом он управляется, 1 или 0. (есть разные варианты) Нужно внимательно читать описание на модули.
На реле перемычка обычно есть и 3 контакта для нагрузки. На центральный контакт подаешь питание, правый и левый управляются. У меня 10-ти амперные реле при подаче HIGHT на пин замыкает правый контакт, при LOW - левый. А на 30-ти амперном наоборот. Поэтому я поменял положение перемычки. Т.е. есть 3 варианта. Поменять в коде HIGHT и LOW местами, перебросить провод питания на другую клему, поменять положение перемычки. Речь идет о таком реле: