Elektroda.pl
Elektroda.pl
X
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 5145 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
    About Author
    spectomek
    Level 11  
    Offline 
    spectomek wrote 59 posts with rating 82. Live in city Ciechanów. Been with us since 2003 year.
  • 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.
  • Altium Designer Computer Controls
  • #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.