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.

[ATMega32] [Bascom]Termometr - przypisanie czujników.

majki1995 02 Lis 2012 13:11 2139 10
  • #1 02 Lis 2012 13:11
    majki1995
    Poziom 10  

    Witam
    Ostatnio zacząłem robić termostat na ds18b20 i ATmega 32 w bascomie. Program z odczytem temperatury z dwóch czujników działał, ale pojawił się problem, ponieważ jeden czujnik umieściłem na polu a drugi w pokoju. I w pewnym momencie pojawiło mi się „pok 3,6oC” „zew 21,3oC”. programowo zamieniłem czujniki, ale po resecie Nie zawsze to działa. Znalazłem w sieci, że można przypisywać po kolei czujniki (podłączam 1 i wczytuje się jego adres, potem 2) ale nie znalazłem opisu jak to zrobić mógłby ktoś pomóc, dać jakąś wskazówkę?
    Kod

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Pozdrawiam

    0 10
  • Pomocny post
    #2 02 Lis 2012 13:55
    piotrva
    Moderator na urlopie...

    Po prostu raz odczytujesz id termometrów i potem na stałe zapisujesz je w odpowiednich tablicach, zamiast stosować instrukcji wyszukujących układy na magistrali.
    ---
    Choć z tego co wiem o magistrali 1wire czujniki powinny być zawsze wyszukiwane w tej samej kolejności, stąd może masz jakieś błędy w komunikacji (np. poprzez za długi kabel złej jakości - jak zasilasz czujniki - pasożytniczo czy normalnie). Na pewno w Twoim programie brakuje bardzo ważnej sprawy jaką jest liczenie sumy kontrolnej CRC dla każdej transmisji.

    0
  • #3 02 Lis 2012 15:54
    majki1995
    Poziom 10  

    Podłączyłem teraz obydwa czujniki na krótko ( bezpośrednio do avr ok. 10cm kabla i do zasilania) i nie zauważyłem już tego problemu.
    Piotrva napisał:

    Cytat:
    Na pewno w Twoim programie brakuje bardzo ważnej sprawy jaką jest liczenie sumy kontrolnej CRC dla każdej transmisji

    Rzeczywiście zapomniałem o tym

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Ale pojawił się kolejny problem, po podłączeniu drugiego czujnika na ekranie pojawiają się dwie temperatury 85,0 ; 85,0 , po odłączeniu czujnika dalej się to wyświetla pomaga dopiero wgranie jeszcze raz programu , sprawdzałem na kilku różnych czujnikach co może być przyczyną ?

    0
  • Pomocny post
    #4 02 Lis 2012 16:11
    MArSTER_1
    Poziom 18  

    Jeśli pojawia się 85 stopni to znaczy, że nie została uruchomiona i poprawnie zakończona konwersja temperatury. Wartość 85 stopni mają czujniki "w sobie" po włączeniu zasilania. Można ją odczytać.I ty to robisz. :D

    0
  • #6 02 Lis 2012 19:11
    majki1995
    Poziom 10  

    Piotrva napisał:

    Cytat:
    No właśnie. Wysyłaj do czujników komendę convrt_t z pominięciem ID.


    Przyznam się że nie bardzo rozumiem o co chodzi kiedy mam wysyłać to polecenie?

    0
  • #7 07 Lis 2012 19:26
    MArSTER_1
    Poziom 18  

    Czujniki DS18B20 nie wysyłają same zmierzonej temperatury do procesora. Robią to na rozkaz z procesora. Ten rozkaz można wysłać na przykład co godzinę i po wysłaniu rozkazu następuje proces pomiaru i konwersji odczytanej temperatury na postać binarną. W zależności od tego jak dokładnie chcemy mierzyć temperaturę (po włączeniu zasilania domyślnym ustawieniem jest dokładność do 1/16 stopnia) czas konwersji jest różny. Dla największej dokładności (czyli 1/16 stopnia) wynosi około 750 milisekund. Tyle trzeba poczekać po wysłaniu rozkazu pomiaru temperatury , żeby można było odczytać wynik. W twoim programie nie ma rozkazu pomiaru i konwersji temperatury. Robisz

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Myślę, że musisz spróbowac dodac instrukcje nastepujące:
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    No i napisz czy działa, czy nie działa.

    0
  • #8 07 Lis 2012 20:35
    majki1995
    Poziom 10  

    MArSTER_1 napisał:

    Cytat:
    Czujniki DS18B20 nie wysyłają same zmierzonej temperatury do procesora. Robią to na rozkaz z procesora. Ten rozkaz można wysłać na przykład co godzinę i po wysłaniu rozkazu następuje proces pomiaru i konwersji odczytanej temperatury na postać binarną. W zależności od tego jak dokładnie chcemy mierzyć temperaturę (po włączeniu zasilania domyślnym ustawieniem jest dokładność do 1/16 stopnia) czas konwersji jest różny. Dla największej dokładności (czyli 1/16 stopnia) wynosi około 750 milisekund. Tyle trzeba poczekać po wysłaniu rozkazu pomiaru temperatury , żeby można było odczytać wynik. W twoim programie nie ma rozkazu pomiaru i konwersji temperatury.

    Nie wiem, co robię dalej źle, ale dalej nie działa, usunąłem drugi czujnik i na ekranie wyświetla się mi cały czas 0,0OC, co może być przyczyną?
    Kod
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #9 08 Lis 2012 08:04
    MArSTER_1
    Poziom 18  

    Usuń komentarz przed instrukcją 1wreset.

    0
  • #10 08 Lis 2012 14:56
    majki1995
    Poziom 10  

    Usunąłem

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #11 25 Paź 2014 16:50
    ---trafopowielacz---
    Poziom 23  

    Przepraszam że odkopuję temat, ale sam już któryś raz z kolei mam identyczny problem. Propozycje w temacie były prawidłowe tylko polecenia:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Należało wpisać po odczytach temperatury, a przed obliczeniami.

    0