FORUM

Wyłącznik czasowy

WitekR
Posty: 33
https://www.oferia.pl/wykonawca/meble-kuchenne-warszawa/1240988
Rejestracja: 24 lip 2021, 2:11
Kontakt:

Wyłącznik czasowy

Post autor: WitekR »

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:
Układ1.jpg
Układ1.jpg (164.28 KiB) Przejrzano 1290 razy
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);
}

Wróć do „4. Wyłącznik czasowy”