Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Rejestrator temperatury Atmega8 + ds18b20 by spectomek

spectomek 07 Jul 2015 21:02 5097 9
Altium Designer Computer Controls
  • Witam ponownie. Ze względu na częstą potrzebę wykonywania pomiarów temperatury w dość długich procesach postanowiłem ulżyć sobie i stworzyć coś co zrobi to za mnie. Efektem moich przemyśleń jest urządzenie oparte o mikrokontroler Atmega8 i czujnik temperatury DS18b20. Dodatkowo urządzenie wyposażone jest w wyświetlacz, na którym można odczytywać mierzoną temperaturę. Samo urządzenie nie jest rejestratorem. Biorąc pod uwagę, że analizy danych łatwiej jest dokonywać na komputerze, postanowiłem napisać program, który będzie komunikował się układem, pobierał z niego zmierzoną wartość temperatury i zapisywał ją w bazie danych, łącznie z czasem i datą jej zaistnienia.

    Rejestracja odbywa się poprzez transmisję danych przez interfejs szeregowy w komputerze i uc. Program mikrokontrolera jest dość prosty. W głównej pętli programu uC komunikuje się przez magistralę 1-wire z czujnikiem temperatury, z którego pobiera wynik pomiaru. Po małym przeliczeniu wartość temperatury wyświetlana jest na wyświetlaczu. Komunikacja szeregowa z komputera polega na wysyłaniu zapytań do układu i oczekiwaniu właściwej odpowiedzi na zadane pytanie :) Przewidziałem 4 zapytania wysyłane do układu:

    „1” – odbiór aktualnej temperatury
    „2” – zwiększenie temperatury progowej o 0,5°C
    „3” – obniżenie temperatury progowej o 0,5°C
    „4” – zapytanie zwracające aktualną temperaturę progową.

    Program poza zbieraniem danych ma możliwość zmiany temperatury progowej. Układ wyposażyłem również w wyjście z regulacją termostatyczną działające w oparciu o zadaną temperaturę progową. Dzięki temu mamy możliwość zdalnego sterowania urządzenia (np. grzałki) w zależności od temperatury. Sam program został napisany w DELPHI. Wykorzystuje bazę danych MySQL, w której zapisywane są wyniki. W programie wyświetlane są temperatury: obecna, najmniejsza, największa. Tak samo, mamy możliwość filtrowania zbieranych danych według daty, godziny, numeru pomiaru. Dodatkowo możemy oglądać wyniki w formie wykresu, który może być aktualizowany na bieżąco. W programie jest również eksport wyników do pliku CSV. Temperatury można rejestrować min. co jedną sekundę, ze względu na przetwarzanie pomiaru przez czujnik DS trwające ok 750ms + dodatkowe operacje wyświetlania na lcd - założyłem, że 1s będzie bezpieczna i w zupełności mnie satysfakcjonuje.

    Widok układu:
    Rejestrator temperatury Atmega8 + ds18b20 by spectomek Rejestrator temperatury Atmega8 + ds18b20 by spectomek Rejestrator temperatury Atmega8 + ds18b20 by spectomek Rejestrator temperatury Atmega8 + ds18b20 by spectomek Rejestrator temperatury Atmega8 + ds18b20 by spectomek
    Widok okna programu:
    Rejestrator temperatury Atmega8 + ds18b20 by spectomekRejestrator temperatury Atmega8 + ds18b20 by spectomek


    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    spectomek
    Level 11  
    Offline 
    spectomek wrote 59 posts with rating 82, helped 0 times. Live in city Ciechanów. Been with us since 2003 year.
  • Altium Designer Computer Controls
  • Altium Designer Computer Controls
  • #3
    Czang16
    Level 12  
    Dołączam się do post kolegi wyżej :). Paczuszka z wsadem jak i PCB mile widziana. Był bym wdzięczny.
  • #5
    spectomek
    Level 11  
    dondu wrote:
    Oj kolego, poważny błąd - zasilaj prawidłowo mikrokontroler: http://mikrokontrolery.blogspot.com/2011/04/minimalne-podlaczanie-pinow.html


    Dzięki za upomnienie, faktycznie gdzieś to przeoczyłem, na schemacie ideowym nawet masa wisi :) Poniżej zamieszczam poprawiony schemat ideowy i płytkę w EAGLE. Widząc duże zainteresowanie kodem wrzucam wsad w BASCOM. Załączam również program współpracujący z urządzeniem. Program może działać bez instalacji danych, wtedy progam zaczytuje z urządzenia temperaturę, którą można eksportować do CSV, oglądać na wykresie lub wydrukować. Do pełnego działania programu konieczna jest instalacja MYSQL w wersji 3.23.49 (załączona w paczce) oraz stworzenie bazy z tabelą z załączonego pliku. Po utworzeniu tabeli należy w pliku conf.ini wpisać nazwę stworzonej bazy danych, hasło dostępu i adres bazy danych. Dopiero tak skonfigurowany program będzie rejestrował w bazie czytane wartości. Konfigurację można również przeprowadzić z poziomu programu w menu Ustawienia. W pliku conf.ini można też wybrać używany port COM i jego parametry oraz czas próbkowania. Czas próbkowania jest iloczynem parametru czas i mnożnik. Mnożniki: s, m, h - sekundy, minuty godziny. Do działania programu konieczne jest również skopiowanie zawartości folderu system32 do katalogu ..\windows\system32\ (dla windows XP) są to biblioteki użyte przy pisaniu programu.

    Rejestrator temperatury Atmega8 + ds18b20 by spectomek

    Code: vbnet
    Log in, to see the code


    dondu wrote:
    PCB nadal ma niepodłączony AVcc :)

    Plik z PCB został zmieniony zgodnie z uwagą.
  • #7
    mateusz1806
    Level 9  
    Czy warstwa opisowa jest laminowana? Bo chcem sobię też tak wykonać i nie wiem czy podczas lutowanie nie będzie topił plastik.
  • #8
    spectomek
    Level 11  
    mateusz1806 wrote:
    Czy warstwa opisowa jest laminowana? Bo chcem sobię też tak wykonać i nie wiem czy podczas lutowanie nie będzie topił plastik.


    Akurat płytka widoczna na filmie i zdjęciach zawiera warstwę papieru z wydrukiem widoku elementów, oklejonego folią bezbarwną. Przy lutowaniu nie zauważyłem problemu z topieniem się taśmy. Sam papier nie jest przyklejony do płytki, jedynie przytrzymywany jest przez elementy przewlekane.
  • #10
    spectomek
    Level 11  
    Strumien swiadomosci swia wrote:
    CZy można dane wyeksportować do pliku i obrobić w excelu.


    Jest możliwość eksportu do pliku CSV. W programie znakiem oddzielającym wartości jest #. Jak najbardziej ten plik można wczytać do excela i tam obrabiać wyniki.