Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[ATMEGA8] [BASCOM] - Termostat + czasówka

kimi9 19 Sty 2014 20:11 2085 5
  • #1 19 Sty 2014 20:11
    kimi9
    Poziom 10  

    Zbudowałem sobie pół roku temu termostat i bardzo ładnie się sprawdza, lecz po tym czasie muszę dołożyć do tego wyłącznik czasowy.

    Przykładowo czas pracy 5min, przerwa 40min i znowu praca przez 5min itd. Czas pracy i przerwy do ustawienia.
    A w menu na samym początku wybieramy który tryb chcemy (temperatura czy czasówka).

    Prosiłbym o pomoc bądź nakierowanie jak to poprawnie zrobić.

    Dodatkowo dodaję kod z teraźniejszego programu.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0 5
  • #2 21 Sty 2014 22:54
    kimi9
    Poziom 10  

    Napisałem coś sam, nie wiem czy coś jest dobrze ale spróbowałem..

    Prosiłbym o jakieś rady/wskazówki.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    1
  • #3 22 Sty 2014 01:31
    emarcus
    Poziom 35  

    kimi9 napisał:
    Napisałem coś sam, nie wiem czy coś jest dobrze ale spróbowałem..

    Prosiłbym o jakieś rady/wskazówki.


    Czy włączanie ventylatora/ów ma jakikolwiek związek ze zmianami temperatury?
    Jeżeli processor obsługuje/wykonuje pomiar czasów włączenia i wyłączenia vents, to kiedy robi pomiar temperatury? (!)
    Stosując instrukcje "Waitms" albo "Wait" - jak myślisz; kto to liczy i w jaki sposób ten czas jest naliczany?......

    Obsługa ventylatorów winna być sterowana którymś z timerów; najlepiej timer1 (jest najdłuższy), pomimo to będziesz musiał zliczać krótsze (równe) odcinki czasu aby "złapać' 1 sekundowe/minutowe przedziały (taką zakładasz rozdzielczość), do przyjętej zmiennej upływu czasu; jak również dla zadanych zmiennych.
    Tą wartość wtedy stawiasz w instrukcji warunkowej prównania z czasem zadanym. Te interwały będą długie więc nie będą kolidować z pomiarem temperatury.

    Ponieważ będziesz odliczał czas timerem, masz okazję wyeliminować ten niepoprawny sposób czekania na konversję temperatury w DS18B20 (waitms 750).
    Również zweryfikuj realną potrzebę częstotliwości 'odświerzania' pomiaru temperatury.
    Zaimplementuj flagę w sensownych odstępach czasu dla tego pomiaru.

    e marcus

    0
  • #4 22 Sty 2014 13:33
    kimi9
    Poziom 10  

    Tak, oczywiście że temp ma związek z włączaniem wentylatorów w pierwszym "trybie". Drugi (ten który chce dołożyć), ma za zadanie włączać went na określony czas i później przerwa na również określony czas, bez względu na temp (przy temp 10st jak i przy 40st).

    0
  • #5 16 Kwi 2014 12:10
    kimi9
    Poziom 10  

    Byłby ktoś w stanie mi z tym pomóc? Miałoby to wyglądać tak:
    * sterowanie wentylatorami czasowo
    * sterowanie poprzez odczyt temeratury

    2 osobne funkcje (działa albo jedno albo drugie).

    Do tego co mam dołożenie wł/wył czasowego (w zupełności wystarczy najprostsze z możliwych)

    0
  • Pomocny post
    #6 18 Kwi 2014 07:40
    emarcus
    Poziom 35  

    kimi9 napisał:
    Byłby ktoś w stanie mi z tym pomóc? Miałoby to wyglądać tak:
    * sterowanie wentylatorami czasowo
    * sterowanie poprzez odczyt temeratury

    2 osobne funkcje (działa albo jedno albo drugie).

    Do tego co mam dołożenie wł/wył czasowego (w zupełności wystarczy najprostsze z możliwych)

    OK, Popatrz na swój program; sterujesz ustawienia trzema przyciskami, z których tylko jeden (PC.3) jest aktywny w programie głównym i tyko pozostałe dwa w podprogramie "menu".
    Przrobiłem troche ten program do pracy w trybie timera, zmieniając taktowanie na 1 MHz aby łatwiej odmierzyć 1 min (co jest bez wpływu na pracę termometru).
    Uaktywniony jest w programie głównym przycisk PC.5 (DN) do zatrzymania i wznowienia pracy timera w stylu toggle. Przycisk PC.3 (ENT) służy do zatrzymania programu w dowolnym miejscu i wejście do menu (w programing mode) oraz po zakończeniu - wyjście z menu, wpis zmian do eeprom i powrót do poczatku programu w trybie timera. Podobnie jak masz z termostatem.
    Twoim zadaniem byłoby połączyć te dwa fragmenty w całość wykorzystując alternatywną/ dodatkową funkcję przycisku PC.4 (UP)- dotychczas nieaktywny w programie głównym i posługując się dodatkowymi zmiennymi lub flagami kierować pracą processora do odpowiednio wybranej funkcji: termostatu lub zwykłego timera, zarówno podczas pracy jak i programowania.

    Oto code:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Przeanalizuj i dokończ.

    Powodzenia

    e marcus

    0