Делаю контроллер для аквариума с кормухой и релюхами для включения фильтра, подогрева и светодиодных лент для подсветки аквариума. У меня 2 реле. Одно твердотельное, второе обычное. Вот обычное отказывается срабатывать. Замерил напряжение на выводах ардуино адресованных этому реле и там вместо положенных 5v всего 1.2v. Не пойму в чем проблема. Такая же проблема на пине с подсветкой дисплея, там 2.4v.
Код прилагаю. Схема ниже.
Код прилагаю. Схема ниже.
мой код:
#include <Stepper.h> //
#include <iarduino_RTC.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define STEPS 200 //
//#define pin_SW_SDA 4
//#define pin_SW_SCL 5
#define B 3950 // B-коэффициент
#define SERIAL_R 10000 // сопротивление последовательного резистора, 10 кОм
#define THERMISTOR_R 10000 // номинальное сопротивления термистора, 10 кОм
#define NOMINAL_T 25 // номинальная температура (при которой TR = 10 кОм)
iarduino_RTC time(RTC_DS3231);
Stepper motor(STEPS, 9, 10, 11, 12);//
LiquidCrystal_I2C lcd(0x3f, 16, 2);
const byte tempPin = A0;
void setup()
{
pinMode( tempPin, INPUT );
lcd.init(); // иницилизируем ЖК
lcd.backlight(); // включаем подсветку дисплея
motor.setSpeed(60); //
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
delay(300);
Serial.begin(9600);
time.begin();
//time.settime(30,9,18,30,01,21,6); // сек, мин, час, число, месяц, год, вторник
digitalWrite(3, OUTPUT); //Подсветка дисплея
digitalWrite(5, LOW); //красные светодиоды
digitalWrite(6, LOW); // белые светодиоды
digitalWrite(7, LOW); //Термо верхняя розетка
digitalWrite(8, LOW); //Фильтр нижняя розетка
}
void stopen()
{
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
}
void loop()
{
int a = ((time.Hours * 100) + time.minutes);
if (millis() % 1000 == 0) { // если прошла 1 секунда
Serial.println(time.gettime("d-m-Y, H:i:s, D")); // выводим время
// Время комления
if (time.Hours == 7 && time.minutes == 20 && time.seconds == 0 )// ВРЕМЯ 1 КОРМЛЕНИЯ
{
motor.step(256);
stopen();
}
if (time.Hours == 20 && time.minutes == 00 && time.seconds == 00 )// ВРЕМЯ 2 КОРМЛЕНИЯ
{
motor.step(256);
stopen();
}
//Подсветка дисплея
if (a >= 600 && a <= 2100 )//Включение Подсветки дисплея c 6 до 21
digitalWrite(3, HIGH);
else
digitalWrite(3, LOW);
//Включение фильтра
if (a >= 800 && a <= 1958 )//включение фильтра после кормления c 8 до 19.59
{
digitalWrite(8, HIGH);
}
else if (a >= 2020 && a <= 2130 )//включение фильтра после 2 кормления c 20.20 до 21.30
{
digitalWrite(8, HIGH);
}
else
digitalWrite(8, LOW);
// настройки включения лент светодиодов
// Красная подсветка
if (a >= 630 && a <= 1634 )//Включение крвсносин ленты c 6.30 - 9.30
{
digitalWrite(6, HIGH);
}
else if (a >= 1900 && a <= 2200 )//Включение крвсносин ленты c 19.0 - 21.30
{
digitalWrite(6, HIGH);
}
else
digitalWrite(6, LOW);
// Белая подсветка
if (a >= 1800 && a <= 1955 )//Включение подсветки белой c 18.00 - 19.55
digitalWrite(5, HIGH);
else
digitalWrite(5, HIGH);
{
//if (millis() % 1000 == 0) { // если прошла 1 секунда
//Serial.println(time.gettime("d-m-Y, H:i:s, D")); // выводим время
int t = analogRead( tempPin );
float tr = 1023.0 / t - 1;
tr = SERIAL_R / tr;
Serial.print("R=");
Serial.print(tr);
Serial.print(",t= ");
float settemper = 24; // установка температуры
float hyster = 1; // ширина окна гистерезиса
float steinhart;
steinhart = tr / THERMISTOR_R; // (R/Ro)
steinhart = log(steinhart); // ln(R/Ro)
steinhart /= B; // 1/B * ln(R/Ro)
steinhart += 1.0 / (NOMINAL_T + 273.15); // + (1/To)
steinhart = 1.0 / steinhart; // Invert
steinhart -= 273.15;
Serial.println(steinhart);
lcd.setCursor(0, 0);
lcd.print ("Temper" );
lcd.setCursor(8, 0);
lcd.print(steinhart);
lcd.setCursor(14, 0);
lcd.print("'C");
lcd.setCursor(0, 1);
lcd.print("Vremya");
lcd.setCursor(8, 1);
lcd.print(time.gettime("H:i:s")) ;
// настройка гестерезиса
if ((steinhart <= (settemper - hyster )) ) //при понижении до .... вкл
{ digitalWrite(7, HIGH);
} else if ((steinhart >= (settemper + hyster ))) //при повышении до .... выкл
{ digitalWrite(7, LOW) ;
}
}
}
}
// подключение шагового двигателя
// ардуино----------драйвер вращение против часовой вращение по часовой
// пин 9--------------пин in 1 4
// пин 10-------------пин in 3 2
// пин 11-------------пин in 2 3
// пин 12-------------пин in 4 1
Вложения
-
99.2 KB Просмотры: 17