Witam, na tym forum miałem już multum pomysłow z termostatem ale jednak sie zdecydowałem:)A więc tak wykonałem Termometr uniewrsalny z tej stronki i działa świetnie.Zamierzam pod goldpin, który byl pod diode LED(miała się świecić przy ujemnych temperaturach) podepne kable do płytki z przekaźnikem na oddzielnej płytce:)Ale żeby byl termostat trzeba dopisać kawałek kodu to Termometru uniewrsalnego:)Termostat mam działać na tej zasadzie:uruchomieniu układu ma się załączyć termostat i wyłączyć przy 40 C, ta temperatura będzie na stałe w programie,histereza 1 C tesz na stałe w programie, przerobiłem troche kod na podstaiwe poprzednich kodów z porzednich tematów,ale nie wiem czy to zadziała tak jak opisywałem wyżej:) '**************************** 'Konfiguracja '**************************** $regfile = "attiny2313.dat" $crystal = 12000000 Config Portb = &B11111111 : Portb = &B11111111 Config Portd = &B11111111 : Portd = &B11111111 Config 1wire = Pind.5 Config Timer0 = Timer , Prescale = 64 Enable Timer0 : On Timer0 Przerwanie0 Enable Interrupts '**************************** 'Zmienne '**************************** Dim Lsb As Byte Dim Msb As Byte Dim Co4ms As Byte , Co100ms As Byte , Co1s As Byte Dim Wysw As Word , Wysw1 As Byte , Wysw10 As Byte , Wysw100 As Byte Dim Wysw_pomoc As Word Dim Tempa As Word Dim Mux As Byte Dim Zezw_wysw As Bit Dim Pomiar_odczyt As Bit Dim Minus As Bit Dim Ur As Bit '**************************** 'Wartosci Poczatkowe '**************************** Reset Pomiar_odczyt Reset Ur Wysw1 = 191 Wysw10 = 191 Wysw100 = 191 Histereza = 20 Tempu = 400 '**************************** 'Petla glowna '**************************** Do If Zezw_wysw = 1 Then Reset Zezw_wysw 'co 4ms Wysw = Tempa If Ur = 1 Then Gosub Przelicz Gosub Wyswietl If Pind.6 = 0 Then 'jezeli jest wlaczony przekaznik If Tempa >= Tempu Then Portd.6 = 1 'jezeli tempa dochodzi do ustawionej to wyl przekaznik Else 'jezeli wyl przekaznik Tempp = Tempu - Histereza 'punkt wylaczenia If Tempa < Tempp Then Portd.6 = 0 'jezeli tempa mniejsza niz ustawiona temp. - histereza to wlacz przek. End If Portd.0 = Pind.6 Portd.1 = Not Pind.6 End If Loop End '**************************** 'Przerwanie timer0 '**************************** Przerwanie0: Timer0 = 5 Incr Co4ms If Co4ms = 3 Then Co4ms = 0 '*************************************** co 4ms Set Zezw_wysw Incr Co100ms If Co100ms = 25 Then Co100ms = 0 '*************************************** co 100 ms 'ew flaga obslugi przyciskow Incr Co1s If Co1s = 7 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(): Minus = Msb.7 Tempa = Msb * 256 Tempa = Tempa + Lsb If Minus = 1 Then Tempa = Not Tempa Tempa = Tempa + 1 End If Tempa = Tempa * 10 'temperatura *10 Tempa = Tempa / 16 If Ur = 0 Then Ur = 1 Else Tempa = 10000 'Er wyswietli wyswietlacz potem End If End If Enable Interrupts '*************************************** End If '*************************************** End If '*************************************** End If Return '**************************** 'Inne Etykiety '**************************** Przelicz: If Wysw < 1000 Then Wysw_pomoc = Wysw Mod 10 Wysw1 = Wysw_pomoc Wysw = Wysw / 10 Wysw_pomoc = Wysw Mod 10 Wysw10 = Wysw_pomoc Wysw = Wysw / 10 Wysw_pomoc = Wysw Mod 10 Wysw100 = Wysw_pomoc If Wysw100 = 0 Then Wysw100 = 10 'wygaszenie zera wiodącego Wysw1 = Lookup(wysw1 , Tabela) Wysw10 = Lookup(wysw10 , Tabela2) Wysw100 = Lookup(wysw100 , Tabela) Else Wysw1 = 175 'r Wysw10 = 175 'r Wysw100 = 134 'E End If Return Wyswietl: Incr Mux If Mux = 3 Then Mux = 0 Portd.6 = Not Minus Select Case Mux Case 0: Set Portd.0 Portb = Wysw100 Reset Portd.2 Case 1: Set Portd.2 Portb = Wysw10 Reset Portd.1 Case 2: Set Portd.1 Portb = Wysw1 Reset Portd.0 End Select Return '**************************** '**************************** '******************************************************************************* 'Tabele do wyswietlania na wyswietlaczu '******************************************************************************* Tabela: Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144 , 255 'znak: 0 1 2 3 4 5 6 7 8 9 pusty Tabela2: Data 64 , 121 , 36 , 48 , 25 , 18 , 2 , 120 , 0 , 16 , 255 'znak: 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. pusty '******************************************************************************* '******************************************************************************* Ale przy wciśnięciu F7 wywala mi takie błędy: Proszę o pomoc:) Pozdro:)
|
|||
Re: Termostat
Nie masz zadeklarowanych zmiennych Histereza i Tempu itp. Wstaw to tam gdzie pozostałe zmienne są deklarowane, na początku programu
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.
Termostat
Witam,zobilem tak jak Pan pisał i kod wygląda tak:
Ale i są błędy:(
Error : 31 Line : 62 Invalid datatype [[0007]] , in File : D:\ssssssssss.bas
Error : 242 Line : 63 Source variable does not match the target variable [ 0] , in File : D:\ssssssssss.bas
Error : 7 Line : 0 IF THEN expected [ 63] , in File :
Error : 123 Line : 0 END IF expected , in File :
Proszę o pomoc :)
Pozdro :)
Re: Ale i są błędy:(
- nie ma zadeklarowanej zmiennej Tempp
- w związku z tym że nie jest zadeklarowana to drugi błąd pokazuje że zmienna źródłowa nie pasuje do zmiennej docelowej,
- trzeci błąd jest gdzieś w pętli głównej, o tu brakuje co najmniej dwóch End If
Moja strona w powijakach
:(
Witam, a czy można by było tak te błędy poprawić bo ja w tym avr nic się nie orientuje prawie, a chcem tylko ten projekt skończyć i zapomnieć o avr:)
Bardzo proszę o pomoc:)
Pozdro :)
Re: czy można by było tak te błędy poprawić
z pewnością się da, ale ja niestety nie pomogę, bo nie mam na to czasu. musiał bym analizować cały kod ponieważ wstawianie end if'ów gdziekolwiek nie daje rezultatu. trzeba znać zamierzenia autora. jak pisałem wyżej, nie bardzo mam na to czas, bo z jednej strony praca a z drugiej dom i rodzina. sory.
Moja strona w powijakach
Re; termostat
Dodaj jeszcze:
Musisz mieć zadeklarowane wszystkie zmienne które używasz bo potem się głupie błędy pojawiają. U mnie po tym wszystko się skompilowało bezbłędnie
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.
Termostat
Witam
Też chciałem sobie zbudować termostat na bazie termometru uniwersalnego i jak będzie wyglądał kod w ostateczności, niestety nie znam się na pisaniu programów.
Re: Termostat
Kod do termostatu jest dostępny.... nie trzeba go pisać. Popatrz w załącznikach pod termometrem uniwersalnym
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.
Termostat
Widziałem, ale chciałem kod pod Attiny2313 tak jak kolega na początku napisał na stale temperaturę i histerezę
Re: Termostat
Weź oryginalny program od termometru uniwersalnego i napisz w miejscu pod Gosub Wyswietl kod:
550 i 570 to progi włącz i wyłacz 550 odpowiada 55.0 stopnia a 570 to 57.0 stopnia
zamiast portx.y musisz wpisac odpowiedni port na którym chcesz wyjście.
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.
termostat
Nie ma potrzeby osuwać tej linijki ,,Portd.6 = Not Minus,, z oryginalnego kodu? bo pod ten port podłączyłem bazę tranzystora od przekaźnika.
Re: termostat
Oczywiście że trzeba to usunąć, port na którym jest wyjście ma być sterowany tylko w jednym miejscu i tylko według temperatury a nie znaku minus
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.
termostat
Mam problem z podłączeniem tranzystora pod port PD6. Polutowałem tak jak na zdjęciu niżej, ale sytuacja wygląda tak. Wpisałem w programie odpowiednie temperatury i gdy mierze miernikiem napięcie to się zgadza wszystko kiedy przekroczy ustaloną tem. napięcie znika i gdy spadnie to się załącza, ale przekaźnik cały czas jest wł. co może być źle?
Re: Termostat
To proste... popatrz co zrobiłeś tranzystor Q5 na emiterze ma 12V a na baze podajesz 0 lub 5V, więc będzie on zawsze przewodził, wystarczy aby napięcie na bazie spadło do około 11.4V a złacze tranzystora zacznie przewodzić. Nie ma się co dziwić że przy 5V zawsze przewodzi.
najprościej jest dać tranzystor NPN a przekaźnik podłączyć względem +12V a kolektor tranzystora. Emiter do masy. Wtedy 5V otworzy tranzystor a 0V zamknie i trzeba będzie zanegować stan portu w programie.
Drugie wyjście to przekaźnik na 5V i podłączenie emitera tranzystora do 5V
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.
Termostat
Proste jak ktoś to wszystko wie, a ja cały czas się uczę, bo niestety nie kończyłem elektroniki.
Dałbym przekaźnik na 5V, ale niestety nie posiadam takiego, więc dam tranzystor NPN, ale znowu jest pytanie jak zanegować stan portu?
Chodzi o coś takiego?
#define PIN_ON() PORTD |= (1<
#define PIN_OFF() PORTD &= ~(1<
Termostat
W tym programie co wyżej wystarczy zmienić:
To co napisałeś wyżej może by było dobre ale w C a nie w bascomie
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.
Termostat
Wyszło mi coś takiego:
Zastanawiam się jeszcze czy w tym miejscu powinny być ustawione temperatury na stałe?
Re: temperatury
250 to 25 stopni a 350 to 35 stopni. Są to temperatury wyłączenia (więcej niż 35 stopni) i włączenia (poniżej 25)
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.
Termostat
Wgrałem ten kod co wyżej, ale nie wyświetla się cyfra po przecinku.
Za to ten kod działa dobrze tyle że, trzeba zmienić stan portu PD.6 ale nie wiem co dopisać.
Re: Termostat
Poszukaj problemu sprzętowego na nie dzialanie wyświetlacza... program wygląda dobrze. Nie widzę w nim problemów. Jak chcesz sterować pinem d.6 to kod podałem już wyżej, tylko trzeba wkleić w pętli głównej pod obsługą flagi wyświetlacza tak jak w przykładowym kodzie wyżej
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.
Termostat
Mam pytanie dotyczące wyświetlacza. Czym może być spowodowane lekkie migotanie ledów?
Re: Migotanie LED
Jak migają tak co okolo 1s to jest wina odczytu ds'a. Trzeba by było program sprytniej napisać aby tego uniknąć
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.