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

Rejestrator temperatury Atmega8 + ds18b20 by spectomek

spectomek 07 Lip 2015 21:02 4488 9
  • 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


    Link


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz pendrive 32GB.
  • Metal Work Pneumatic
  • #2 07 Lip 2015 21:57
    RigelInOrion
    Poziom 11  

    Gdybyś tak jeszcze udostępnił kod źródłowy.

  • Metal Work Pneumatic
  • #3 18 Lip 2015 17:27
    Czang16
    Poziom 11  

    Dołączam się do post kolegi wyżej :). Paczuszka z wsadem jak i PCB mile widziana. Był bym wdzięczny.

  • #5 19 Lip 2015 19:26
    spectomek
    Poziom 10  

    dondu napisał:
    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

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


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

    Plik z PCB został zmieniony zgodnie z uwagą.

  • #6 19 Lip 2015 19:49
    dondu
    Moderator Mikrokontrolery Projektowanie

    Teraz znacznie lepiej, ale tylko na schemacie - PCB nadal ma niepodłączony AVcc :)

  • #7 19 Lip 2015 20:44
    mateusz1806
    Poziom 8  

    Czy warstwa opisowa jest laminowana? Bo chcem sobię też tak wykonać i nie wiem czy podczas lutowanie nie będzie topił plastik.

  • #8 19 Lip 2015 20:59
    spectomek
    Poziom 10  

    mateusz1806 napisał:
    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 19 Lip 2015 21:56
    spectomek
    Poziom 10  

    Strumien swiadomosci swia napisał:
    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.

  Szukaj w 5mln produktów