(1 głosujący) Ten sterownik umożliwia ustawienie dwóch niezależnych przedziałów czasu w których ma pracować pompa. Możliwe jest także ręczne włączenie lub wyłączenie pompy. Urządzenie działa nieprzerwanie już kilka lat uruchamiając dwa razy dziennie fontannę, pompę do filtra i lampe UV, czyli podstawowy sprzęt do oczka wodnego. Układ może z powodzeniem sterować pracą dowolnego innego odbiornika zasilanego z sieci energetycznej. Sterownik posiada zasilanie bateryjne do podtrzymywania liczenia czasu po zaniku napięcia zasilającego, przez co pompa (odbiornik) działa w poprawny sposób zaraz po powrocie zasilania.
Działanie:Schemat ideowy płytki sterującej przedstawia poniższy rysunek: Sercem układu jest mikrokontroler U1 (AT89C2051) wraz z rezonatorem kwarcowym X1 (12MHz), kondensatorami C4 (10pF) i C5 (33pF) oraz trymerem C6 (4...40pF). C6 daje możliwość ustawienia częstotliwości pracy procesora aby wynosiła dokładnie 12MHz. Ma to wpływ na dokładność odliczania czasu. Mostek Br1 (1A) prostuje napięcie z transformatora przyłożone do złącza Zas. Elementy C0 (1000uF), C1 - C3 (22uF) oraz D1 (1N4007) i D2 (1N4007) współpracują ze stabilizatorami U0 (7812) i U2 (7805) dostarczając napięć do zasilania całego obwodu. Rezystor R1 (10k) i przycisk S1 umożliwiają reset mikrokontrolera w dowolnej chwili. Tranzystor T0 (BC547) wraz z elementami R2 (100k) i R3 (20k) wykrywa zanik napięcia zasilającego. Złącze Sw zapewnia połączenie sterownika z przyciskami. Tranzystor T10 (BC547) i rezystor R20 (1k) zapewniają poprawne działanie dodatkowych diod led podczas multipleksowania wyświetlacza. Elementy R4 (470R) i R5 (220R) wraz z optotriakiem OPT2 (MOC3042) i triakiem Tc (TIC226) stanowią typowy układ wykonawczy uruchamiający pompę. Rezystory R6 (100k) i R7 (100k) podciągają wyprowadzenia mikrokontrolera do plusa zasilania. Kostka U3 (4028) zamienia kod binarny na stan aktywny na jednym ze swoich wyjść i współpracując z buforem U4 (4504), dzięki tranzystorom T1 - T6 (BC547) umożliwia multipleksowanie wyświetlacza. Układ scalony U5 (4543) jest dekoderem kodu BCD na kod wyświetlacza siedmiosegmentowego i dzieki buforowi inwerteowi U6 (ULN2803) zaświeca poprawnie cyfry. Rezystory R8 - R15 (100R) ograniczają prąd wyświetlaczy. Złącza GP2 (goldpin) i GP3 (goldpin) zapewniają połączenie z płytką wyświetlacza. Na rysunku poniżej przedstawiono schemat ideowy wyświetlacza: Budowa:Sterownik można zbudować korzystając z płytki drukowanej dostępnej tutaj. Rysunek w odbiciu lustrzanym dostępny jest tutaj. Montaż sterownika nie jest trudny ale za to dość pracochłonny ze względu chociażby na bardzo dużą liczbę zwór. Kolejność montażu jest dowolna ale należy zwrócić uwagę na fakt że niektóre elementy leżą pod układami scalonymi. Pod wszystkie układy scalone zalecam zastosować podstawki a pod procesor jest ona bezwzględnie konieczna. Stabilizatory należy wyposażyć w radiator. Pomocą w konstrukcji może okazać się schemat montażowy dostępny tutaj. Wyświetlacz można zmontować posługując się płytką drukowaną dostępną tutaj. Rysunek w odbiciu lustrzanym dostępny jest tutaj. Montowanie należy rozpocząć od zworek. Pod wyświetlacze dobrze jest zastosować kawałki podstawek DIP40. Złącza GP2 i GP3 najlepiel wlutować od strony druku i/lub w ich miejsce zastosować przewody taśmowe bezpośrednio lutowane w płytkę. Pomocą przy budowie może okazać się schemat montażowy dostępny tutaj. Po uruchomieniu całego urządzenia należy, jeżeli zajdzie taka potrzeba, skorygować błąd odliczania czasu za pomocą trymera C6. Po dokładnym ustawieniu według fabrycznego zegara i kilkukrotnej korekcie za pomocą C6 da się uzyskać dokładność ok 1-2s/tydzień. W większości zastosowań nie jest konieczna tak duża dokładność (i tak dwa razy do roku trzeba przestawić czas, z letniego na zimowy a potem na odwrót). Wykaz Elementów:Sterownik:3x Złącze ARK2 1x Listwa Gold Pin 1x6 1x Listwa Gold Pin 1x8 1x Listwa Gold Pin 1x4 1x uSwitch 8x 100R 1x 4...40pF Trymer 1x Rezonator Kwarcowy 12MHz Wyświetlacz:1x Listwa Gold Pin 1x8 1x Listwa Gold Pin 1x6 1x 220R 3x Wyświetlacz podwójny 7 segmentowy (wsp. anoda) Programowanie: $large '******************************************************************************* 'Zmienne '******************************************************************************* Dim Flaga_praca As Bit , Wygaszenie As Bit , Stan_triak As Bit Dim Reczne_ster As Bit , Wygaszenie2 As Bit , Wyg_dziel As Byte Dim Co2ms As Byte , Co4ms As Byte , Co1sek As Byte Dim Dzielnik_pomocniczy As Byte , Stan_portu As Byte , Auto_powrot As Byte Dim Aktualny_czas As Word , Czas_zal As Word , Czas_wyl As Word Dim Sekundy As Byte , Minuty As Byte , Godziny As Byte Dim Min_t1 As Byte , Godz_t1 As Byte Dim Min_t2 As Byte , Godz_t2 As Byte Dim Min_t3 As Byte , Godz_t3 As Byte Dim Min_t4 As Byte , Godz_t4 As Byte Dim Poz_wyswietlana As Byte , Tryb_wysw As Byte , Ustawianie As Byte Dim Przycisk As Byte , Przycisk2 As Byte , Przycisk3 As Byte Dim P_plus As Bit , P_minus As Bit , P_menu As Bit , Stan_led As Bit '******************************************************************************* 'stawienia Pocztkowe '******************************************************************************* Enable Interrupts Config Timer0 = Timer , Gate = Internal , Mode = 2 Load Timer0 , 250 'okres Timera0 250*12*Tosc=250us Enable Timer0 Start Timer0 On Timer0 Przerwanie_timer '******************************************************************************* 'Nazwy Wyprowadze? '******************************************************************************* Triak Alias P3.5 Miganie_led Alias P3.7 Test_napiecia Alias P3.0 Diody_led Alias P3.1 Prz_plus Alias P3.2 Prz_minus Alias P3.3 Prz_menu Alias P3.4 '******************************************************************************* 'Wartosci poczatkowe '******************************************************************************* Triak = 1 P1 = 255 Prz_plus = 1 Prz_minus = 1 Prz_menu = 1 Diody_led = 0 Test_napiecia = 1 Poz_wyswietlana = 6 Ustawianie = 0 Tryb_wysw = 0 Auto_powrot = 0 Reczne_ster = 0 Stan_led = 0 '******************************************************************************* 'Program Glowny '******************************************************************************* Do If Test_napiecia = 1 Then P1 = 255 Triak = 1 Diody_led = 0 Idle Else If Flaga_praca = 1 Then Gosub Praca End If Loop End '******************************************************************************* 'Przerwanie Timera '******************************************************************************* Przerwanie_timer: Incr Co2ms If Co2ms = 8 Then Co2ms = 0 Set Flaga_praca 'co 2ms Incr Co4ms If Co4ms = 2 Then Co4ms = 0 Incr Co1sek If Co1sek = 250 Then Co1sek = 0 Incr Sekundy If Sekundy >= 60 Then Sekundy = 0 Incr Minuty If Minuty >= 60 Then Minuty = 0 Incr Godziny If Godziny >= 24 Then Godziny = 0 End If End If End If End If End If End If Return '******************************************************************************* 'Wykonywane co 2ms '******************************************************************************* Praca: Flaga_praca = 0 Incr Poz_wyswietlana If Poz_wyswietlana = 7 Then Poz_wyswietlana = 0 Gosub Obsl_przyciskow Gosub Sterowanie Incr Dzielnik_pomocniczy If Dzielnik_pomocniczy = 124 Then Dzielnik_pomocniczy = 0 Wygaszenie = Not Wygaszenie Incr Wyg_dziel If Wyg_dziel = 3 Then Wyg_dziel = 0 Wygaszenie2 = Not Wygaszenie2 End If If Ustawianie > 0 Then Incr Auto_powrot If Auto_powrot >= 40 Then Auto_powrot = 0 Ustawianie = 0 End If Else If Tryb_wysw > 0 Then Incr Auto_powrot If Auto_powrot >= 20 Then Auto_powrot = 0 Tryb_wysw = 0 End If End If End If End If If Tryb_wysw = 0 Then Miganie_led = Wygaszenie Else Miganie_led = 0 If Poz_wyswietlana = 0 Then Stan_portu = 255 If Poz_wyswietlana = 1 Or Poz_wyswietlana = 2 Then Select Case Tryb_wysw Case 0: Stan_portu = Sekundy Stan_portu = Makebcd(stan_portu) Case 1: Stan_portu = &B11110001 Case 2: Stan_portu = &B11110010 Case 3: Stan_portu = &B11110011 Case 4: Stan_portu = &B11110100 End Select If Poz_wyswietlana = 1 Then Gosub Przesuwanie_bitow If Ustawianie = 3 And Wygaszenie = 0 Then Stan_portu = 240 End If If Poz_wyswietlana = 3 Or Poz_wyswietlana = 4 Then Select Case Tryb_wysw Case 0: Stan_portu = Minuty Case 1: Stan_portu = Min_t1 Case 2: Stan_portu = Min_t2 Case 3: Stan_portu = Min_t3 Case 4: Stan_portu = Min_t4 End Select Stan_portu = Makebcd(stan_portu) If Poz_wyswietlana = 3 Then Gosub Przesuwanie_bitow If Ustawianie = 2 And Wygaszenie = 0 Then Stan_portu = 240 End If If Poz_wyswietlana = 5 Or Poz_wyswietlana = 6 Then Select Case Tryb_wysw Case 0: Stan_portu = Godziny Case 1: Stan_portu = Godz_t1 Case 2: Stan_portu = Godz_t2 Case 3: Stan_portu = Godz_t3 Case 4: Stan_portu = Godz_t4 End Select Stan_portu = Makebcd(stan_portu) If Poz_wyswietlana = 5 Then Gosub Przesuwanie_bitow Else Stan_portu = Stan_portu And &B11110000 If Stan_portu = 0 Then Stan_portu = 240 End If If Ustawianie = 1 And Wygaszenie = 0 Then Stan_portu = 240 End If Stan_portu = Stan_portu And &B11110000 Stan_portu = Stan_portu Or Poz_wyswietlana Stan_led = 0 Select Case Poz_wyswietlana Case 1: If Reczne_ster = 1 Then Stan_led = 1 Else Stan_led = Wygaszenie2 Case 2: If Tryb_wysw = 4 Then Stan_led = 1 Case 3: If Tryb_wysw = 3 Then Stan_led = 1 Case 4: If Tryb_wysw = 2 Then Stan_led = 1 Case 5: If Tryb_wysw = 1 Then Stan_led = 1 Case 6: If Tryb_wysw = 0 Then Stan_led = 1 End Select Diody_led = 0 P1 = Stan_portu Diody_led = Stan_led Return '******************************************************************************* 'Obsluga Przyciskow '******************************************************************************* Obsl_przyciskow: If Prz_plus = 0 Then Incr Przycisk If Przycisk = 30 Then Set P_plus Else Reset P_plus Else Przycisk = 0 Reset P_plus End If If Prz_minus = 0 Then Incr Przycisk2 If Przycisk2 = 30 Then Set P_minus Else Reset P_minus Else Przycisk2 = 0 Reset P_minus End If If Prz_menu = 0 Then Incr Przycisk3 If Przycisk3 = 30 Then Set P_menu Else Reset P_menu Else Przycisk3 = 0 Reset P_menu End If If P_menu = 1 Then Auto_powrot = 0 If Ustawianie = 0 Then Incr Tryb_wysw If Tryb_wysw = 5 Then Tryb_wysw = 0 Else Incr Ustawianie If Ustawianie = 3 And Tryb_wysw > 0 Then Ustawianie = 0 If Ustawianie = 4 Then Ustawianie = 0 End If End If If P_plus = 1 And P_minus = 0 Then Auto_powrot = 0 Select Case Ustawianie Case 0: Ustawianie = 1 Case 1: Select Case Tryb_wysw Case 0: Incr Godziny If Godziny = 24 Then Godziny = 0 Case 1: Incr Godz_t1 If Godz_t1 = 24 Then Godz_t1 = 0 Case 2: Incr Godz_t2 If Godz_t2 = 24 Then Godz_t2 = 0 Case 3: Incr Godz_t3 If Godz_t3 = 24 Then Godz_t3 = 0 Case 4: Incr Godz_t4 If Godz_t4 = 24 Then Godz_t4 = 0 End Select Case 2: Select Case Tryb_wysw Case 0: Incr Minuty If Minuty = 60 Then Minuty = 0 Case 1: Incr Min_t1 If Min_t1 = 60 Then Min_t1 = 0 Case 2: Incr Min_t2 If Min_t2 = 60 Then Min_t2 = 0 Case 3: Incr Min_t3 If Min_t3 = 60 Then Min_t3 = 0 Case 4: Incr Min_t4 If Min_t4 = 60 Then Min_t4 = 0 End Select Case 3: Sekundy = 0 End Select End If If P_plus = 0 And P_minus = 1 Then Auto_powrot = 0 Select Case Ustawianie Case 0: 'reczne wylaczanie i uruchamianie Reczne_ster = Not Reczne_ster Case 1: Select Case Tryb_wysw Case 0: Decr Godziny If Godziny = 255 Then Godziny = 23 Case 1: Decr Godz_t1 If Godz_t1 = 255 Then Godz_t1 = 23 Case 2: Decr Godz_t2 If Godz_t2 = 255 Then Godz_t2 = 23 Case 3: Decr Godz_t3 If Godz_t3 = 255 Then Godz_t3 = 23 Case 4: Decr Godz_t4 If Godz_t4 = 255 Then Godz_t4 = 23 End Select Case 2: Select Case Tryb_wysw Case 0: Decr Minuty If Minuty = 255 Then Minuty = 59 Case 1: Decr Min_t1 If Min_t1 = 255 Then Min_t1 = 59 Case 2: Decr Min_t2 If Min_t2 = 255 Then Min_t2 = 59 Case 3: Decr Min_t3 If Min_t3 = 255 Then Min_t3 = 59 Case 4: Decr Min_t4 If Min_t4 = 255 Then Min_t4 = 59 End Select Case 3: Sekundy = 0 End Select End If Return '******************************************************************************* 'Przesuwanie bitow '******************************************************************************* Przesuwanie_bitow: Clr c Rotate Stan_portu , Left , 4 Return '******************************************************************************* 'Sterowanie pompa '******************************************************************************* Sterowanie: Stan_triak = 1 Aktualny_czas = 60 * Godziny Aktualny_czas = Aktualny_czas + Minuty Czas_zal = 60 * Godz_t1 Czas_zal = Czas_zal + Min_t1 Czas_wyl = 60 * Godz_t2 Czas_wyl = Czas_wyl + Min_t2 If Sekundy = 0 Then If Aktualny_czas = Czas_zal Or Aktualny_czas = Czas_wyl Then Reczne_ster = 0 End If If Czas_zal <= Czas_wyl Then If Aktualny_czas >= Czas_zal Then If Aktualny_czas < Czas_wyl Then Stan_triak = 0 End If Else If Aktualny_czas >= Czas_zal Then Stan_triak = 0 If Aktualny_czas < Czas_wyl Then Stan_triak = 0 End If Czas_zal = 60 * Godz_t3 Czas_zal = Czas_zal + Min_t3 Czas_wyl = 60 * Godz_t4 Czas_wyl = Czas_wyl + Min_t4 If Sekundy = 0 Then If Aktualny_czas = Czas_zal Or Aktualny_czas = Czas_wyl Then Reczne_ster = 0 End If If Czas_zal <= Czas_wyl Then If Aktualny_czas >= Czas_zal Then If Aktualny_czas < Czas_wyl Then Stan_triak = 0 End If Else If Aktualny_czas >= Czas_zal Then Stan_triak = 0 If Aktualny_czas < Czas_wyl Then Stan_triak = 0 End If If Reczne_ster = 1 Then Stan_triak = Not Stan_triak Triak = Stan_triak Return '******************************************************************************* Zdjęcia Projektu:
|
|||||||||||||||||||||||||||||||||
o co chodzi z tymi
o co chodzi z tymi przedzialami czasowymi ?? - wł / wył
Re: Sterownik
Sterownik posiada dwa ustawiane przedziały czasu i pompa pracuje od godziny zał1 do wył1 i od zał2 do wył2. Jeżeli czasy zał i wył są jednakowe to pompa się nie włącza.
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Czy dużo by było roboty w
Czy dużo by było roboty w przerabianiu programu pod ATtinny2313? Ewentualnie jakie to były by zmiany. Domyślam się, że chcąc zamienić procesor AT89c2051 na ATtiny 2313 nie trzeba zmieniać płytki a tylko program. Pozdrawiam.
Re: sterownik
tab było by duzo roboty..... popatrz sobie na układ Uniwersalny sterownik czasowy, jest prostszy i na M8 - nie trzeba niczego przerabiać
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.