Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

4x DS18b20 +LCD = Termometr

Duch__ 20 Jan 2010 17:13 303997 493
Altium Designer Computer Controls
  • #301
    zeeuss86
    Level 11  
    Z tego co mi wiadomo to najlepiej żeby podczas programowania nic nie było podłączone do nóżek 17, 18, 19 oprócz programatora. Może więc w programie i na płytce zmienić wykorzystywane nóżki uC? Moja wiedza o uC jest w najlepszym razie skromna i nie wiem pod które ewentualnie nóżki miałbym się podpiąć. Wiem że 23-28 są analogowe, więc może 3-6 na D4-D7 wyświetlacza, 12 na E i 13 na RS? To by chyba rozwiązało problem. Może jest lepsze rozwiązanie?
  • Altium Designer Computer Controls
  • #302
    Dariusz Goliński
    Level 22  
    Nie wiem, nie znam się, zarobiony jestem.
    Opisuję tylko to co faktycznie sprawdziłem.
    Zrobiłem kilka układów i jeszcze nie spotkałem się z tym problemem. Na pewno się spotkam ale jeszcze się nie spotkałem.
    Wcześniej programowałem za pomocą 4 rezystorków i LPT, ale 2 tygodnie temu dodałem
    74HC244 i też gada.
  • #303
    sziomal
    Level 11  
    Witam
    Wczoraj zmontowałem taki układzik z 4 czujnikami ale na atmega16 bo taki akurat miałem w domu i niestety nie wykrywa mi czujników a LCD działa. Zmieniłem deklaracje procesora na m16 i dalej to samo co może być przyczyną ??
  • #305
    sziomal
    Level 11  
    sprawdź czy masz dobrze ustawioną wartość zegara 16...
  • #306
    IMEX
    Level 20  
    tzn ma być 16 MHz czy ile

    powiem tak mam kwarc 16 i w programie dalem 16 i nic to nie dalo -
    ustawilem na 1 MHz osc i w programie na 1 i dalej to samo
    dalem 8 i dalej to samo 85 i koniec
    przeczytalem caly post i nikt tego nie rozwiazał
  • Altium Designer Computer Controls
  • #307
    Dariusz Goliński
    Level 22  
    85 oznacza że układ nie przesyła ci temperatury, sprawdź czujniki czy aby DS18B20 są dobrze podłączone o ile to program ducha.
    Wystaw program w załączniku.
  • #308
    IMEX
    Level 20  
    No i problem rozwiazany z 85

    Oczywiście czujniki sprawne - jest to błąd inicjalizacji temperatury

    wystarczy w programie wstawić Wait 1 i po problemie - odczekanie tej sekundy daje czas na odebranie danych przez 1wire i przekazanie dalej na lcd

    Podaje w 100% sprawny kod na 4 czujniki - ale potrzebuje przerobić część identyfikacji żeby wykluczyć programowanie na pozostale kanaly tego samego czujnika - ma pozostac tam poprostu 0.0 oC
  • #309
    savve
    Level 10  
    Witam!

    Ostatnio zacząłem interesować się tym tematem i chciałbym zbudować taki termometr, ale chciałem go oprzeć na układzie atmega16- ze względu na większą ilość pamięci. Mam już schemat wykonany, ale nie jestem pewien czy wszystko jest dobrze podłączone.

    4x DS18b20 +LCD = Termometr

    Byłbym wdzięczny za pomoc.
  • #310
    IMEX
    Level 20  
    savve - to jest tylko schemat poglądowy

    podaj konkrety i do zegara mega 16 - co ty tam zaprogramujesz - atmega 8 zalmuje z bajerami na 4 czujniki 30% a jeszcze ile da sie tam wrzucić - mega 16 to bajer i duza kosc - a moze 32 to gigant pamieci

    pozdrawiam
    podaj konkrety dla pomocy
  • #311
    savve
    Level 10  
    Chcę po prostu zastosować ten cały układ do pomiaru temperatury podzespołów PC i jednocześnie dodać układ kontroli obrotów 4 wentylatorów niezależnie od siebie (tryb auto i manual). Dlatego nie byłem pewien czy wystarczy mi pamięci. Mój schemat oparłem na schematach we wcześniejszych postach. Pominąłem tylko stabilizator napięcia- 5V będę miał z zasilacza w kompie. Ale nie byłem pewien czy wszystko dobrze podłączyłem.

    Ale z tego co mi napisałeś wynika, że spokojnie powinna mi starczyć AtMega8.
  • #312
    pepulos
    Level 11  
    Witam.
    na początku informacja żem zielony w tym temacie, ale mam pytanie
    czy na tym układzie da się zrobić obsługę zapisu pomiaru gdzieś?,
    np na kartę SD, albo do jakiegoś epromu, ale do epromu trzeba się podłączać kompem
    żeby zczytać pomiary.
    Ja bym to widział tak, że pomiary na wyświetlacz tak jak są,
    a zapis np. co 0,5 godziny.
    da się? :)

    Pozdrawiam
    PePe
  • #313
    IMEX
    Level 20  
    Witam ponownie serdecznie

    Na podstawie tego DIY postanowiłem zrobić coś własnego- inni o to pytali ludzi

    Więc tak
    Konstrukcja posiada 4 x DS plus LCD 2x16 i Alarm beeper

    Sterowanie jest za pomocą 3 przycisków "+" "-" "menu"
    Programowanie DS-ów z poziomu menu

    Sygnalizacja jest za pomocą diod led i bepera realizującego funkcję Alarmu
    Led 1 sygbalizująca alarm kanału P - oraz dioda sygnalizująca pracę Przekaźnika (triaka)
    kolejne 2 wyjścia dla P to Beeper i Przekaźnik

    Led 2 sygbalizująca alarm kanału B - oraz dioda sygnalizująca pracę Przekaźnika (triaka)
    kolejne 2 wyjścia dla B to Beeper i Przekaźnik

    A tak wygląda widok LCD
    Ekran powitalny
    4x DS18b20 +LCD = Termometr

    Menu kolejne bez zapisanych do pamięci DS-ów
    4x DS18b20 +LCD = Termometr

    Menu podczas programowania 4 kolejnych DS-ów
    4x DS18b20 +LCD = Termometr
    4x DS18b20 +LCD = Termometr 4x DS18b20 +LCD = Termometr 4x DS18b20 +LCD = Termometr

    A tak wygląda menu z zaprogramowanymi DS-ami
    4x DS18b20 +LCD = Termometr

    jest jedna i ta sama temp a to dlatego że zaprogramowałem tylko jednego DS-a na wszystkie 4 kanały

    literowka jest dowolna ale oznaczenia z życia wzięte i oznaczone tak
    P-piec B-bojler Z-temp zewnętrzna W-temp wewnętrzna

    Kolejne menu to programowanie kanału P
    u góry to zakres temperatur załączenia Przekaźnika a w dolnej części załączenia alarmu - wstępnie zaprogramowane na 25oC - zakres ustawień to 1-99oC
    4x DS18b20 +LCD = Termometr 4x DS18b20 +LCD = Termometr

    kolejne 2 menu to włączenie lub wyłączenie Przekaźników - Beepery nadal będą działały jak dotychczas
    4x DS18b20 +LCD = Termometr 4x DS18b20 +LCD = Termometr 4x DS18b20 +LCD = Termometr 4x DS18b20 +LCD = Termometr

    Poruszanie sie po menu jest za pomocą sw MENU - wielokrotne nacisnięcie przechodzimy dalej, Natomiast jak chcemy zmienić wartość ustawień wciskamy w danym menu przycisk + lub - i miga nam kursor i zmieniamy ustawienia stopni C w dol lub gore
    Programowanie DS-ów jest na zasadzie takiej
    np - programujemy P - wciskamy przycisk menu i trzymamy go, wciskamy reset lub włanczany zasilanie - trzymamy przycisk menu aż ukaże sie komunikat o zapisanym czujniku
    4x DS18b20 +LCD = Termometr

    i tak kolejno 3 pozostałe - "-" i reset lub zasilanie "+" i rset lub zasilanie i ostatni wciskamy jednoczesnie "+ i -" i reset lub zasilanie

    Beeper daje sygnał sekundowy - musi być z generatorem własnym

    hmm co więcej
    Prosze o opinie sugestie i krytyke

    Niestety nic wiecej nie weszlo bo jest zajęte 99% pamięci atmega 8

    kolejne funkcję dopisze ale przy użyciu Atmega 16 lub 32
    wiecej pamieci i wiecej pinów
  • #315
    savve
    Level 10  
    Wracając do tego układu zbudowanego na Atmega16.

    Chciałem po prostu podpiąć wszystkie elementy analogicznie do schematu z wcześniejszych postów:

    4x DS18b20 +LCD = Termometr => 4x DS18b20 +LCD = Termometr

    Wydaje mi się, że powinno być dobrze. Nie jestem tylko pewien czy dobrze jest wyprowadzone wejście na czujniki DS18b20 (PD5) i wyjście służące do kontroli wentylatorów (PA0).
  • #316
    zgf1
    Level 23  
    @IMEX
    Moze wrzucisz schemat i kod zrodlowy programu?
    Bede niedlugo robil taki termometr wiec chetnie sie pobawie.
  • #317
    akanaf
    Level 16  
    Gdzie w programie przesunąć znak stopni, znak minusa i temperatury?
    Ponieważ gdy w nocy jest poniżej zera, to cała temperatura przesuwa się o jedno miejsce (tak jak na 1 obrazku). A gdy w dzień jest temperatura dodatnia powraca do poprzedniego miejsca, i są wtedy pojawiają się dwa znaki stopni(jak na 2 obrazku).
    Jak to zmienić? Bo chcę przesunąć temperaturę do samego końca, aby zyskać jeden wolne miejsce na znak i żeby wyeliminować problem z podwójnym znakiem stopni.

    4x DS18b20 +LCD = Termometr4x DS18b20 +LCD = Termometr
  • #318
    IMEX
    Level 20  
    Najprościej to dodać spacje na końcu.

    A jeśli chcesz, żeby minus był wcześniej to trzeba dodać zależność, że jak będzie - z przodu przesuń o jedno pole - ja tam mam u siebie zrobione.
  • #319
    marcinwrc2
    Level 12  
    Witam.
    Zrobiłem właśnie ten termometr działa super.Tylko jest mały problem na wsadzie od kolegi Duch wszystko jest ok, zaś na wsadzie kolegi Imex pulsuje wyświetlacz co 1sek.Zrobiłem go na wyś. 2x16 i działa tylko na zegarze Atmegi.
    Co trzeba przekombinować?
  • #320
    Gonza
    Level 27  
    Termometr Kolegi Ducha działa na wewn. oscylatorze 1MHz (w związku z czym nie trzeba nic kombinować z fusebitami w przypadku nowego uC prosto ze sklepu) natomiast w kodzie Kolegi IMEX widzę deklarację częstotliwości oscylatora 16MHz, czyli domyślam się, że jego Atmega działa z kwarcem 16MHz, który musiałbyś dołączyć do swojej Atmegi oraz odpowiednio ustawić fusy.
  • #321
    piotruuch
    Level 14  
    A czy w tym układzie nie ma kwarcu? I co się stanie jak podłącze 3 czujniki?
  • #322
    pepulos
    Level 11  
    To zależy ile zadeklarujesz czujników w programie, a dokładnie ile się ma wyświetlać.
    jak w program jest na 4xDS to ten z najniższym adresie będzie wyświetlany 2 razy (z tego co pamiętam),
    a jak program na 2xDS to ten ostatni zostanie pominięty.
    --
    Pozdrawiam
    PePe
  • #323
    piotruuch
    Level 14  
    Witam!
    Mam jeszcze pytanie do tej wypowiedzi:
    Quote:
    Tam jest użyte słowo "może" co znaczy że błąd może wystąpić ale nie musi. Ja u siebie nie dostrzegam błędów, porównywane z kilkoma termometrami rtęciowymi.

    Dodaje fotki i wsad nowej wersji termometru oraz schemat i wzór PCB. Dodałem obsługę 2 przycisków (wyświetlanie temp. maksymalnej i minimalnej, oraz resetowanie tych wartości). Płytka PCB powstała w Eaglu. Panel przedni w Corelu.

    4x DS18b20 +LCD = Termometr

    4x DS18b20 +LCD = Termometr

    4x DS18b20 +LCD = Termometr

    Wartość MAX i MIN dla każdej z temperatur przechowywana jest w zmiennej SRAM-owej. Soft może zawierać jeszcze błędy które postaram się w najbliższym czasie wyeliminować!!! Jak będzie mi się chciało to może zrobię wykres temperatury przy pomocy bargrafa.


    Wyeliminowano błąd pokazywania prawidłowej temperatury po kasowaniu pamięci SRAM-owej. Wsad poniżej jest poprawiony


    Ta wypowiedz jest w 7 zakładce (stronie) napisana przez Ducha.. Czy ktos wykonywalem ten projekt? Czukam jaki ma być tam wlutowany kwarc, R3, C1 i C2, co jeżeli kondensatiora C3 10mikro wlutuje 100mikro lub 47mikro?

    pozdrawiam prosze o odpowiedz bo od autora nie dostalem...
  • #324
    Gonza
    Level 27  
    Kwarc wg. programu powinien mieć 8MHz, kondensatory C1 i C2 daj 22pF, R3 może być 10k. W miejsce C3 możesz dać większy kondensator.
  • #325
    piotruuch
    Level 14  
    A co jeżeli dam kwarc 4MHz lub 12MHz? Mogę zamienić kwarc na inny?

    Pozdrawiam i proszę o odpowiedz.
  • #326
    Duch__
    Level 31  
    Oczywiście, musisz tylko zmienić wtedy fusebity na odpowiedni kwarc, oraz zadeklarować to w programie.
  • #327
    piotruuch
    Level 14  
    ok. A lepszy kwarc 4mhz czy 12mhz? W programie wiem jak zmienic... A czy ktos moglby mi pokazac jak maja byc ustawione fusebity zeby pasowalo do tego wybranego lepszego kwarcu (4mhz lub 12mhz...)

    Bede bardzo wdzieczny! I pytanie do ducha Te przyciski dwa są podłączane do gniazda na płytce poprzez 3 tzn goldpiny tak?

    Pozdrawiam
  • #328
    luki55
    Level 20  
    Witam
    Jak wyświetlać pełne stopnie ( nie chce dokładności do 0,1°C) na wyświetlaczu z Ds18B20? w prezentowanych programach, probowałem z formowaniem wyniku ale nie idzie...

    Pozdrawiam

    Z góry dzięki za odp.