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.

Termostat na Atmega8 bez czujnika temperatury

asembler 28 Sty 2008 10:47 3128 12
  • #1 28 Sty 2008 10:47
    asembler
    Poziom 32  

    Zrobiłem prosty termostat. Atmega8 jest docisnieta do bojlera.
    Prograsm mierzy czestotliwość zegara wewnętrznego i na tej podstawie wyświetla temperature wody. Wyświetlacz najpierw był LCD do prób docelowo ma to byc kolumna 5 diod LED o róznych kolorach od 40 do 80 stopniach niebieskiego do czerwonego. Rozdzielczosć wskazan 5 stopni C. Wprowadzanie temperatury za pomocą potencjometru.
    Układ posiada procedurę samokalibracji. i gotowy jest do dzialania po pierwszym podgrzaniu wody do maksymalnej temperatury
    A przede wszytkim działa i to nieżle.

    0 12
  • #2 28 Sty 2008 11:43
    markosik20
    Poziom 33  

    asembler napisał:

    Prograsm mierzy czestotliwość zegara wewnętrznego i na tej podstawie wyświetla temperature wody.


    Mnie zawsze uczono że pomiar to porównanie wartości mierzonej ze wzrocową. A jak u ciebie to wyglada, co u Ciebie jest wzorcem?

    asembler napisał:
    Układ posiada procedurę samokalibracji


    Mógłbyś opisać w skrócie jak rozwiązałeś algorytm samokalibracji?

    0
  • #3 28 Sty 2008 11:53
    Dr_DEAD
    Poziom 28  

    markosik20 napisał:
    asembler napisał:

    Prograsm mierzy czestotliwość zegara wewnętrznego i na tej podstawie wyświetla temperature wody.

    Mnie zawsze uczono że pomiar to porównanie wartości mierzonej ze wzrocową. A jak u ciebie to wyglada, co u Ciebie jest wzorcem?

    Wzorcem mósi być kwarc. CPU chodzi z kwarcu a licznik znlicza zegar z DCO. Nie wiem czy tak można w Atmega8 ale w MSP430 tak robiłem. Czasem można wykorzystać zegar WatchDoga do tego, a samego WatchDoga jako licznik. Uzyskana w ten sposób informacja o zmianie temperatury jest bardzo przydatna, na jej podstawie można zrobić naprzykład kompensację temperaturową całego urządzienia.

    Dodano po 2 [minuty]:

    I tu pytanie do zaznajomionych z Atmelem. Czy w Atmega i Atiny da sie peryferia (liczniki, ADC, ...) zasilać z DCO podczas gdy CPU chodzi z kwarcu?

    0
  • #4 28 Sty 2008 11:54
    asembler
    Poziom 32  

    Po krótce program wygląda tak.
    1. Próba wykrycia DS18B20 jezeli jest to odczyt wartosci progrma znajduje sie w pętli samokalibracji, jeżeli nie ma w pętli termostatu
    2. Pomiar wewnętrznnej czest.
    3. Jezeli kalibarcja to zapisanie wartosci w EEPROM oscylacji w danej temperaturze
    4. Wyswietlenie wartosci na diodach
    5 Pomiar napiecia z potencjometru
    6. Usypiam na 8 sek

    Po zapełnieniu całej tablicy wypinam DS-sa i uklad gotowy do pracy. Wzorcem do pomiaru jest kwarc 32768 dołączony do licznika 2.

    0
  • #5 28 Sty 2008 12:26
    markosik20
    Poziom 33  

    Dr_DEAD napisał:
    Uzyskana w ten sposób informacja o zmianie temperatury jest bardzo przydatna, na jej podstawie można zrobić naprzykład kompensację temperaturową całego urządzienia.
    Czy w Atmega i Atiny da sie peryferia (liczniki, ADC, ...) zasilać z DCO podczas gdy CPU chodzi z kwarcu?


    I tu pojawia się mały problem bo niestety CPU i peryferia są taktowane z jednego źródła (chyba że źle doczytałem :wink:). I jeżeli nasz układ komunikuje się ze światem zewnętrznym np: przez UARTA to wszelkie zmiany Fclk mogą spowodować spore błędy w komunikacji jak również jej całkowitego wyłączenia.

    asembler napisał:
    Próba wykrycia DS18B20


    A jednak musimy podłaczyć czujnik temperatury (do kalibracji):wink:.
    Jeżeli dokładnośći +-5st.C jest wystarczająca oraz układ nie musi "meldować się" jednostce nadrzędnej to taki termostat wydaje się wystarczający.

    0
  • #6 28 Sty 2008 12:35
    asembler
    Poziom 32  

    Jeżeli chodzi o komunikację przez UART to w takich przypadkach wysyłam przez port tylko dwie wartosci ktore odpowiadajace 1,0 logicznemu inaczej mówiac jeden bajt informacji wysyłany jest jako 8 bajtów. Stosując tą metodę odchyłki czestotliwosci CPU mogą wynies nawet do 20%
    Czujnik DS18b20 dołączony tylko na czas samokalibracji.
    Dokładność pomiaru 1 stopień
    Dokładność wyświetlania 5 stopni mozna oczywicie dołączy wiekszą ilośc diodek LED z tym ze po co:)
    Zmiany czestotliwosci to około 400kHz i nawet zwykła transmisja jezeli sie ustawi oscylator na wartosc srodkową to odchylki wyniosą -/+ 2 %

    0
  • #7 28 Sty 2008 12:42
    Dr_DEAD
    Poziom 28  

    markosik20 napisał:

    I tu pojawia się mały problem bo niestety CPU i peryferia są taktowane z jednego źródła (chyba że źle doczytałem :wink:).

    Uuuuu, no to cieniutko. W MSP430 to mamy 3 źródła zegarowe do wyboru.

    0
  • #8 28 Sty 2008 12:51
    asembler
    Poziom 32  

    Jakby dobrze policzyc to Atmega8 ma ich 4 jezeli wejscie T0 i T1 mozna zaliczyc do zródel zegarowych.

    0
  • #9 28 Sty 2008 12:52
    markosik20
    Poziom 33  

    Dr_DEAD napisał:

    Uuuuu, no to cieniutko. W MSP430 to mamy 3 źródła zegarowe do wyboru.

    Tylko że za cenę MSP430 mamy trzy atmegi :wink: (jak nie więcej)

    0
  • #10 28 Sty 2008 13:01
    asembler
    Poziom 32  

    Doktorku podeślij note katalogową MSP430

    0
  • #11 28 Sty 2008 13:51
    Dr_DEAD
    Poziom 28  

    asembler napisał:
    Doktorku podeślij note katalogową MSP430

    Nota katalogowa -> http://www.ti.com/litv/pdf/slau049f
    A to wycinek dotyczący zegarów:
    Termostat na Atmega8 bez czujnika temperatury
    Czyli przykładowo mogę mieć dostępne:
    ACLK - 32kHz
    MCLK - 4MHz
    SMCLK - programowo przestrajalne DCO.
    A co do ceny to wynika ona z małej popularności, przykładowo MSP430F149 z TME jest za 60zł, ale na tej aukcji za 15zł.
    http://www.subasta.pl/item-100716_msp430f149__16_bit_mikroprocesor_risc_60k_flash.html

    0
  • #12 28 Sty 2008 14:06
    Fyszo
    Spec od GSM

    To już prościej zrobić mostek z 3 rezystorów i drutu stalowego i badać rezystancje drutu za pomocą wbudowanego A/C. Skoro i tak trzeba kalibrować to może byc czyjnik nieliniowy jak fale dunaju (dowolny kawałek drutu).

    0
  • #13 28 Sty 2008 14:21
    asembler
    Poziom 32  

    Termostat zrobiony raczej po to, żeby sprawdzić czy to ma prawo działać.
    Z drugiiej strony moznaby po skalibrowaniu jednego układu poprostu przepisac tablice z EEPROM i sprawdzic czy na innym procku bedeiz dzialać?. Podejrzewaz ze na wiekszosci bedą podobne wyniki a przy założonej dokładności moze to dzialac.

    0