Wyłącznik czasowy
: 04 lis 2021, 23:39
Wyłącznik czasowy
Prosty programator czasowy z wykorzystaniem modułu czasu rzeczywistego i jednego przekaźnika 230V. Układ będzie miał za zadanie włączać i wyłączać przekaźnik o określonych godzinach.
Wymagane elementy:
płytka Arduino, np. Arduino UNO R3
płytka stykowa z przewodami połączeniowymi
wyświetlacz LCD 2x16
potencjometr 10kΩ
moduł czasu rzeczywistego DS1307
przekaźnik 230V
Wstęp
W bieżącym poradniku wykonamy prosty programator czasowy z wykorzystaniem modułu czasu rzeczywistego i jednego przekaźnika 230V. Układ będzie miał za zadanie włączać i wyłączać przekaźnik o określonych godzinach.
Schemat układu przedstawia poniższy rysunek: Przed rozpoczęciem programowania należy połączyć wymagane elementy zgodnie ze schematem przedstawionym poniżej.
Aby przełączyć przekaźnik, należy podać stan niski (0V) na jedno z wejść (IN1, IN2). Urządzenie sterowane 230V podłączamy do wyprowadzeń COM, oraz NO. W momencie, gdy cewka jest niewysterowana przekaźnik jest otwarty i prąd nie przepływa. Po podaniu stanu niskiego następuje przełączenie się przekaźnika i urządzenie zostaje uruchomione (obwód zostaje zamknięty).
PRZED DOŁĄCZENIEM URZĄDZENIA STEROWANEGO Z SIECI 230V KONIECZNIE POPROŚ O POMOC OSOBĘ Z ODPOWIEDNIMI UPRAWNIENIAMI. PORAŻENIE PRĄDEM ELEKTRYCZNYM GROZI ŚMIERCIĄ. TESTUJĄC PRZEKAŹNIK NAJLEPIEJ SKORZYSTAĆ Z BEZPIECZNEGO NAPIĘCIA POCHODZĄCEGO NP. Z BATERII 9V.
Prosty programator czasowy z wykorzystaniem modułu czasu rzeczywistego i jednego przekaźnika 230V. Układ będzie miał za zadanie włączać i wyłączać przekaźnik o określonych godzinach.
Wymagane elementy:
płytka Arduino, np. Arduino UNO R3
płytka stykowa z przewodami połączeniowymi
wyświetlacz LCD 2x16
potencjometr 10kΩ
moduł czasu rzeczywistego DS1307
przekaźnik 230V
Wstęp
W bieżącym poradniku wykonamy prosty programator czasowy z wykorzystaniem modułu czasu rzeczywistego i jednego przekaźnika 230V. Układ będzie miał za zadanie włączać i wyłączać przekaźnik o określonych godzinach.
Schemat układu przedstawia poniższy rysunek: Przed rozpoczęciem programowania należy połączyć wymagane elementy zgodnie ze schematem przedstawionym poniżej.
Aby przełączyć przekaźnik, należy podać stan niski (0V) na jedno z wejść (IN1, IN2). Urządzenie sterowane 230V podłączamy do wyprowadzeń COM, oraz NO. W momencie, gdy cewka jest niewysterowana przekaźnik jest otwarty i prąd nie przepływa. Po podaniu stanu niskiego następuje przełączenie się przekaźnika i urządzenie zostaje uruchomione (obwód zostaje zamknięty).
PRZED DOŁĄCZENIEM URZĄDZENIA STEROWANEGO Z SIECI 230V KONIECZNIE POPROŚ O POMOC OSOBĘ Z ODPOWIEDNIMI UPRAWNIENIAMI. PORAŻENIE PRĄDEM ELEKTRYCZNYM GROZI ŚMIERCIĄ. TESTUJĄC PRZEKAŹNIK NAJLEPIEJ SKORZYSTAĆ Z BEZPIECZNEGO NAPIĘCIA POCHODZĄCEGO NP. Z BATERII 9V.
Kod: Zaznacz cały
//Dołączenie wymaganych bibliotek
#include "Wire.h"
#include "Time.h"
#include "DS1307RTC.h"
#include "LiquidCrystal.h"
#define przekaznik 6
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Definicja pinów do których podłaczamy wyprowadzenia ekranu
int godzina_ON=12;
int minuta_ON=5;
int godzina_OFF=12;
int minuta_OFF=9;
void setup() {
lcd.begin(16,2);
pinMode(przekaznik, OUTPUT);
digitalWrite(przekaznik, HIGH);
}
void loop() {
tmElements_t tm; //Inicjalizacja zegara DS1307
//Jeśli odczyt prawidłowy następuje wyświetlenie danych
if (RTC.read(tm)) {
lcd.setCursor(0,0);
print2digits(tm.Hour); //Wyswietlenie godzin
lcd.print(":");
print2digits(tm.Minute);//Minut
lcd.print(":");
print2digits(tm.Second);//Sekund
lcd.setCursor(0,1);
//Wyświetlenie daty
lcd.print(tm.Day);
lcd.print('/');
lcd.print(tm.Month);
lcd.print('/');
lcd.print(tmYearToCalendar(tm.Year));
//W przypadku problemu z modułem wyswietla odpowiedni komunikat
} else {
if (RTC.chipPresent()) {
lcd.setCursor(0,0);
lcd.print("Zegar zatrzymany!");
} else {
lcd.setCursor(0,0);
lcd.print("Blad odczytu!");
}
}
delay(1000);
if((godzina_ON==tm.Hour)&&(minuta_ON==tm.Minute))
{
digitalWrite(przekaznik, LOW);
}
if((godzina_OFF==tm.Hour)&&(minuta_OFF==tm.Minute))
{
digitalWrite(przekaznik, HIGH);
}
}
//Funkcja odpowiedzialna za wyswietlanie zer na pozycji
//poprzedzającej jesli cyfra jest mniejsza od 10
void print2digits(int number) {
if (number >= 0 && number < 10) {
lcd.print('0');
}
lcd.print(number);
}