(1 głosujący) Układ został zbudowany w celu automatycznego uruchamiania pompy gdy temperatura na kolektorze słonecznym osiągnie ustawiony poziom. Urządzenie to jest prostym sterownikiem, nie posiada funkcji sprawdzania temperatury w zbiorniku. Całość jest zbudowana w oparciu o mikrokontroler AT89C2051 i kilka elementów pomocniczych. W roli czujnika temperatury wykorzystano popularny DS18S20 przez co pomiar jest dokładny a program dla procesora nie jest skomplikowany. Dodanie drugiego czujnika nie stanowi problemu gdyż pracują one na magistrali 1-Wire ale konieczna jest modyfikacja programu.
Działanie:Schemat Sterownika przedstawia poniższy rysunek: Głównym elementem sterownika jest mikrokontroler U1 (AT89C2051) oraz kondensatory C3 (33pF) i C4 (33pF) wraz z rezonatorem kwarcowym X1 (12MHz). Elementy Br1, stabilizator U2 (7805) oraz kondensatory C1 (1000uF) i C2 (47uF) tworzą zasilacz dostarczający napięcia dla całego układu. Kondensator C5 (4,7uF) pracuje w obwodzie resetu mikrokontrolera i zapewnia jego poprawną pracę po włączeniu zasilania. Rezystory R1 - R8 (220R) ograniczają prąd wyświetlaczy LED. Złącze SW (goldpin) służy do podłączenia dwu przyciskowej klawiatury, natomiast 1W jest złączem czujnika DS18S20. Tranzystory T1 - T3 (BC557) wraz z rezystorami R12 (2,7k), R13 (2,7k) i R14 (2,7k) oraz R15 (3,3k), R16 (3,3k) i R17 (3,3k) sterują pracą anod wyświetlaczy i diodami sygnalizacyjnymi. Elementy R9 (470R), R11 (220R) oraz optotriak OPT (MOC3042) i triak T (TIC226) stanowią prosty układ wykonawczy uruchamiający pompę. Na rysunku poniżej znajduje się schemat wyświetlacza: Budowa:Sterownik można zmontować w oparciu o płytkę drukowaną dostępną tutaj. Rysunek płytki w odbiciu lustrzanym można ściągnąć tutaj. Montaż płytki jest bardzo łatwy, należy go rozpocząć od wlutowania jednej zworki. Kolejność pozostałych elementów nie ma znaczenia. Pod mikrokontroler należy bezwzględnie zastosować podstawkę, gdyż w przeciwnym wypadku niemożliwe będzie jego zaprogramowanie. W miejsce złącz GP1 i COM, zapewniających kontakt sterownika z wyświetlaczem można zastosować kawałek przewodu wstążkowego wlutowanego bezpośrednio w obie płytki. Pomocą przy konstrukcji może okazać się dostępny tutaj schemat montażowy. Płytkę wyświetlacza można wykonać w oparciu o rysunek dostępny tutaj. Rysunek płytki w odbiciu lustrzanym można ściągnąć tutaj. Montaż wyświetlacza należy rozpocząć od wlutowaniu wszystkich zworek. Pod wyświetlacz dobrze jest zastosować połowę podstawki DIP40. Diody LED należy umiejscowić trochę wyżej niż wyświetlacz, aby wystawały nieco z płyty czołowej obudowy. Pomocą przy budowie może okazać się schemat montażowy dostępny tutaj. Wykaz Elementów:Sterownik:2x Złącze ARK2 3x Listwa Goldpin 1x3 1x Listwa Goldpin 1x8 9x 220R 2x 33pF 1x Rezonator Kwarcowy 12MHz Wyświetlacz:1x Listwa Gold Pin 1x3 1x Listwa Gold Pin 1x8 1x Wyświetlacz podwójny 7 segmentowy Programowanie:Mikrokontroler do sterownika został zaprogramowany w wersji demo programu BASCOM 8051 firmy MCS Electronics (http://www.mcselec.com/). Program przedstawiony jest poniżej: $large Config Timer0 = Timer , Gate = Internal , Mode = 2 'okres Timera0 250*12*Tosc=250us Load Timer0 , 250 On Timer0 Przerwanie Enable Interrupts Enable Timer0 Start Timer0 Config 1wire = P3.2 '******************************************************************************* 'Zmienne '******************************************************************************* Dim Lsb As Byte Dim Msb As Byte Dim Co4ms As Byte , Co100ms As Byte , Co1s As Byte Dim Wysw As Byte , Wysw1 As Byte , Wysw10 As Byte Dim Tempa As Byte , Tempu As Byte , Hister As Byte , Tempw As Byte Dim Mux As Byte Dim Liczmig As Byte , Liczmig2 As Byte Dim Autopowrot As Byte Dim Ustawianie As Byte Dim Przycisk1 As Byte , Przycisk2 As Byte , Przycisk3 As Byte Dim Zezw_przyc As Bit , Zezw_wysw As Bit , Zezw_uruch As Bit Dim Praca_automat As Bit , Stan_reczny As Bit Dim Mig As Bit , Mig2 As Bit Dim Pompa As Bit Dim Pomiar_odczyt As Bit '******************************************************************************* 'wartosci '******************************************************************************* Ustawianie = 0 Tempu = 40 Hister = 4 Set Praca_automat Set Stan_reczny Reset Pomiar_odczyt Set Pompa '******************************************************************************* 'Petla glowna '******************************************************************************* Do If Zezw_wysw = 1 Then 'wyswietlanie Reset Zezw_wysw '***************************************** 'co 4ms Incr Mux If Mux = 3 Then Mux = 0 Select Case Ustawianie Case 0: 'temp akt Wysw = Tempa Case 1: 'Temp ustawiona If Mig2 = 1 Then Wysw = Tempu Else Wysw = 253 Case 2: 'przedzial If Mig2 = 1 Then Wysw = Hister Else Wysw = 253 Case 3: If Praca_automat = 1 Then Wysw = 251 Else Wysw = 252 End Select Gosub Przelicz Select Case Mux Case 0: Set P3.3 P1 = Wysw10 Reset P3.5 Case 1: Set P3.5 P1 = Wysw1 Reset P3.4 Case 2: Set P3.4 Select Case Ustawianie Case 0: P1 = 255 If Mig = 1 Then P1.6 = P3.7 Else P1.6 = 1 P1.7 = Praca_automat Case 1: P1 = &B01111111 Case 2: P1 = &B10111111 Case 3: P1 = 255 End Select Reset P3.3 End Select '***************************************** End If If Zezw_przyc = 1 Then Reset Zezw_przyc '***************************************** co100ms Incr Liczmig If Liczmig = 5 Then Liczmig = 0 Mig = Not Mig '2Hz miganie End If Incr Liczmig2 If Liczmig2 = 2 Then Liczmig2 = 0 Mig2 = Not Mig2 '5Hz miganie End If If Ustawianie <> 0 Then Incr Autopowrot If Autopowrot = 100 Then ' po 10s wracaj do pokazywania temperatury Autopowrot = 0 Ustawianie = 0 End If End If 'przyciski P3.0 = 1 P3.1 = 1 If P3.0 = 0 And P3.1 = 1 Then 'tylko minus wcisniety Incr Przycisk1 If Przycisk1 = 5 Then Przycisk1 = 0 Autopowrot = 0 '*********************** Select Case Ustawianie Case 0: If Praca_automat = 0 Then Set Stan_reczny 'gdy tryb reczny wylacz pompe Case 1: If Tempu > 20 Then Decr Tempu 'zmniejsz ustawiona temp Case 2: If Hister > 0 Then Decr Hister 'zmniejsz przedzial temp Case 3: Reset Praca_automat 'zalacze prace reczna i wyl pompe Set Stan_reczny End Select '*********************** End If Else Przycisk1 = 0 End If If P3.1 = 0 And P3.0 = 1 Then 'tylko plus wcisniety Incr Przycisk2 If Przycisk2 = 5 Then Przycisk2 = 0 Autopowrot = 0 '*********************** Select Case Ustawianie Case 0: If Praca_automat = 0 Then Reset Stan_reczny 'gdy tryb reczny wlacz pompe Case 1: If Tempu < 90 Then Incr Tempu 'zwieksz ustawiona temp Case 2: If Hister < 20 Then Incr Hister 'zwieksza przedzial temp Case 3: Set Praca_automat 'zalacza prace automatyczna i wyl pompe Set Stan_reczny End Select '*********************** End If Else Przycisk2 = 0 End If If P3.1 = 0 And P3.0 = 0 Then 'wcisniety plus i minus Incr Przycisk3 If Przycisk3 = 8 Then Przycisk3 = 0 Autopowrot = 0 '*********************** Incr Ustawianie If Ustawianie = 4 Then Ustawianie = 0 '*********************** End If Else Przycisk3 = 0 End If '***************************************** End If If Zezw_uruch = 1 Then Reset Zezw_uruch '***************************************** co 1s If Tempa < 100 Then Tempw = Tempu - Hister If Tempa >= Tempu Then Reset Pompa If Tempa < Tempw Then Set Pompa Else Set Pompa End If If Praca_automat = 0 Then Pompa = Stan_reczny If P3.7 <> Pompa Then P3.7 = Pompa '***************************************** End If Loop End '******************************************************************************* 'Przerwanie Timera '******************************************************************************* Przerwanie: 'co 250us Incr Co4ms If Co4ms = 16 Then Co4ms = 0 '*************************************** co 4ms Set Zezw_wysw Incr Co100ms If Co100ms = 25 Then Co100ms = 0 '*************************************** co 100 ms Set Zezw_przyc Incr Co1s If Co1s = 10 Then Co1s = 0 '*************************************** co 1s Pomiar_odczyt = Not Pomiar_odczyt Disable Interrupts 1wreset If Pomiar_odczyt = 1 Then 1wwrite &HCC 1wwrite &H44 Else If Err = 0 Then 1wwrite &HCC 1wwrite &HBE Lsb = 1wread(): Msb = 1wread(): If Msb = 0 Then Tempa = Lsb / 2 'dokladnosc 1 stopien Else Tempa = 254 'LA wyswietli low alert End If Else Tempa = 255 'Er wyswietli wyswietlacz potem End If End If Set Zezw_uruch Enable Interrupts '*************************************** End If '*************************************** End If '*************************************** End If Return '******************************************************************************* 'procedura przeliczajaca zmienna wysw na dwie zmienne odpowiadajace wyswietlaniu na dwoch wyswietlaczach '******************************************************************************* Przelicz: If Wysw < 100 Then Wysw1 = Wysw Mod 10 Wysw1 = Lookup(wysw1 , Tabela) If Wysw > 9 Then Wysw10 = Wysw / 10 Wysw10 = Lookup(wysw10 , Tabela) Else Wysw10 = 255 ' znika 0 na pierwszym miejscu End If Else If Wysw < 251 Then Wysw1 = 136 'A Wysw10 = 137 'H End If If Wysw = 251 Then Wysw1 = 136 'A Wysw10 = 140 'P End If If Wysw = 252 Then Wysw1 = 175 'r Wysw10 = 140 'P End If If Wysw = 253 Then Wysw1 = 255 'nic potrzebne do migania Wysw10 = 255 'nic End If If Wysw = 254 Then Wysw1 = 136 'A Wysw10 = 199 'L End If If Wysw = 255 Then Wysw1 = 175 'r Wysw10 = 134 'E End If End If Return '******************************************************************************* 'Tabela do wyswietlania na wyswietlaczu '******************************************************************************* Tabela: Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144 'znak: 0 1 2 3 4 5 6 7 8 9 '******************************************************************************* Zdjęcia Projektu:
|
|||||||||||||||||||||||||||||||||
ATMEL
Witaj.
Pewnie że można poszukaj na necie opisu wyprowadzeń np, dla 2313 przypisz mu odpowiednie wyprowadzenia portów zmień ustawienia $regfile.Myślę że Mirley się odezwie to jego copyright.
Pozdrawiam.
ziko.
Re: sterownik kolektora
W programie trzeba zrobić zmiany, tak poprostu to nie zadziała. Konfiguracja timera jest całkiem inna, trzeba dopisać konfigurację na początku i zmienić nazwy pinów. Szczerze mówiąc zastosował bym układ minitermometru uniwersalnego, który jest na tiny i ma program do termostatu. Nie ma co prawda ustawień temperatury ale można to ustawić na sztywno a napewno będzie działać lepiej
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.
program
Witam.
Czy mógłby pan mi pomóc albo sam przemienić ten kod, jeśli chodzi o procki ta ja jestem dopiero na etapie diod, więc wiele nie zdziałam.
Pozdrawiam.
Re: Sterownik pompy
Co ma robić program, którego potrzebujesz? do czego go potrzebujesz?
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.
nie proszę o to abyś zrobił
nie proszę o to abyś zrobił cały proszę o to abyś zmodyfikował lub pomógł mi zmodyfikować istniejący a potrzebuję go do pompy CO.
Pozdrawiam.
program
Nie proszę o to abyś napisał nowy kod tylko zmienił lub pomógł mi zmienić istniejący.
Pozdrawiam.
Re: Sterownik do CO
Jak potrzebujesz sterownika do CO, tylko do sterowania pompy to jak najbardziej minitermometr uniwersalny to to co Cię interesuje. Wystarczy do programu z termoststem trochę dopisać.... następne pytania pisz pod projektem minitermometr bo będą jego dotyczyć.
------------
Patrzyłem na kod mojego termostatu o którym mówiłem.... nie musisz nawet nic zmieniać poza ustawieniem na początku programu temperatury domyślnej na np 40 stopni (Tu=400) potem układ będzie włączał pompkę jak zostanie przekroczona temperatura 41 a wyłaczy jak spadnie do 39
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.
program
dobrze ale czy w tym sterowniku temperaturę załączania i wyłączania ustawia się w programie czy już jak się zrobi sterownik?
Re: temperatura
Temperaturę startową ustawia się w programie, tą jaka ma się ustawić po włączeniu zasilania. Potem możesz przestawić przyciskami i zostanie ona taka do wyłączenia zasilania. Zapisu do pamięci nieulotnej za bardzo nie da sie zrobic bo chyba braknie miejsca w programie. Można jednak sprawdzić
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.
jak zamontowałeś czujnik
Witam, jak zamontowałeś czujnik temperatury do solara? Włożyłeś go do obudowy od solara , nałożyłeś na rurę która do niego dochodzi czy jeszcze inaczej?
Re: Solar
Przytaśmowałem czujnik do rurki, miedzianej blisko wyjścia z kolektora. Lepszym rozwiązaniem jest wstawic czujnik do specjalnej obudowy wkręcanej w kolanko zaraz przy solarze. Są takie specjalne obudowy na czujnik dzięki czemu płyn bezpośrednio opływa czujnik, czy tez jego obudowę
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.
Program
Witam.
Czy znalazłby kolega czas, aby napisać kod pod attiny2313? Taki sterownik baaaardzo się przyda, a takie ze sklepu są dużo droższe w porównaniu z tym.
Pozdrawiam.
Kod atiny2313
Witam czy masz jakieś doświadczenie w programowaniu "Atmeli"np. Atmega 8,16,32 i czy sprawdzałeś datasheet układu 2313 i porównałeś go z innymi atmelami?
Pozdrawiam ziko63.
AT89S2051
Witam, czy gdybym użył układ AT89S2051 i zaprogramował USBasp to trzeba coś przerabiać w programie lub płytce?
odp. AT89S2051
To chyba odpowiednik tyle że ma dodatkowo ISP. Hex pasuje na pewno. Dopiero w AVRach reset jest na odwrót i porty by trzeba było przepisać i ustawić.
BARTek
Moja strona
Dzięki wielkie ;) Żeby go
Dzięki wielkie ;) Żeby go zaprogramować trzeba Bascoma '51 ?
Wsad do procesora
Wsady, już skompilowane masz przecież pod projektem w postaci Hex i Bin do wyboru. To ładujesz prosto do programatora..no już nie rób się taką nogą :)
BARTek
Moja strona
Weryfikacja kodu pod attiny2313
Pomógłby ktoś zweryfikować przerobiony przeze mnie kod pod attiny 2313?
Jestem początkujący i bardzo prosiłbym o pomoc przy przerobieniu kodu
Odp. Sterownik Pompy Kolektora - kod dla Attiny2313
Proszę. Przetestuj bo ja nie testowałem.
Kod po poprawnym nazwaniu portów i poprawnym skonfigurowaniu Timera zajmował 108% i nie zmieściłby się w mikrokontrolerze. Pomogło użycie Bajtów zamiast Bitów i poprzenoszenie niektórych elementów.
Trochę się nagimnastykowałem :D
Gwarancji nie ma żadnej :D Może trzeba by to po prostu napisać na nowo, ale równie dobrze może działać :P
P.S. Wymień kondensator (C5 4,7uF) przy pinie RESET na rezystor 10k-15k
BARTek
Moja strona
kod
Dzięki za pomoc.
Przy kompilowaniu kodu wywala mi:
Odp.kod
To wina tego, że masz jakaś stara wersję Bascom. One nie miały zaimplementowanych Timerów w trybie CTC.
Darmowa wersja Bascom Demo to teraz wersja 2075 i ta by sobie na pewno poradziła ;)
Pod tym linkiem jednak znajdziesz gotowy skompilowany wsad do testów. Do wyboru BIN lub HEX
Miłego dnia
BARTek
Moja strona
Bascom
No właśnie ja mam Bascom 2075
Ale wielkie dzięki za gotowe wsady.
Jak przetestuję dam znać co i jak.
Pozdrawiam
Odp. Bascom
Mam też 2075 i sprawdziłem. Kompiluje się bezbłędnie. Problem może leżeć w tym ze Bascom tworzy dla listingu plik config. W nim zapisany jest typ mikrokontrolera.
Czasem więc kiedy kopiujesz plik z internetu to lepiej utworzyć nowy plik naciskając w Bascom "białą kartkę" i tam go wkleić i nazwać na nowo.
Wklejenie kodu do starego projektu może powodować własnie takie komunikaty ponieważ kompilator może dalej sprawdzać kod pod kątem poprzedniego mikrokontrolera..a, jak wiesz, w 89C2051 na pewno takiego trybu dla Timera nie było.
Jeśli chcesz wiec wprowadzać zmiany w tym kodzie to utwórz nowy i tam go wklej. Gdyby Bascom zapytał czy "Leave settings?", albo coś podobnego to odpowiedz "No". Ten kod na pewno kompiluje się na 2075
BARTek
Moja strona