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

ATINY2313 - Zmiana z DS18S20 na DS1820

grzegorz.d3 27 Dec 2012 21:37 5145 36
Relpol
  • Relpol
  • #2
    Piecia
    Level 14  
    Spróbuj podmienić powinno działać.. Z tego co pamietam rejestru są takie same i podmianka bez zmian w sofcie powinna przynieść rezultat..
    Pozdrawiam
  • #3
    grzegorz.d3
    Level 14  
    To co mam pozmieniać
    Code:
    '#####################################################################################
    

    Sub Inicjuj_pomiar
      1wreset                                                   'Reset magistrali
      1wwrite &HCC                                              'Polecenie: Skip ROM
      1wwrite &H44                                              'Polecenie: Convert T
    End Sub

    '#####################################################################################

    Sub Odczytaj_pomiar
      1wreset                                                   'Reset magistrali
      1wwrite &HCC                                              'Polecenie: Skip ROM
      1wwrite &HBE                                              'Polecenie: Read Scratchpad
      Tmierzona = 1wread()                                      'Odczytujemy tylko jeden bajt -> wartość temperatury
      Shift Tmierzona , Right , 1                               'Pomijamy pół stopnia
    End Sub

    '#####################################################################################
  • #4
    Piecia
    Level 14  
    poszukaj różnic w MEMORY FUNCTION EXAMPLE. Wydaje mi sie ze w komendach są dodatkowe funkcje resetu i odczytu aktywności.. Umieść cały kod to będzie łatwiej sprawdzić..
    pozdrawiam
  • #6
    slx
    Level 19  
    Od strony programowej głowna różnica to czas konwesji temperatury. Dla DS1820 było 500ms dla DS18S20 jest 750ms, więc zmień w programie czas czekania na pomiar i powinno działać.
  • #8
    yokoon
    Level 29  
    Podałem Ci link do gotowego programu :

    termometr na ds1820 - programy bascom - zdrzala - Chomikuj.pl
  • #9
    Piecia
    Level 14  
    Wydaje mi się że brakuje Ci resetu magistrali po inicjalizacji termometru..
    I dodatkowo co kolega napisał wcześniej zmien czas oczekiwania na 750ms
    Tu masz przyklad obsługi:
    http://www.micropik.com/PDF/ds1820.pdf

    pozdrawiam
  • #12
    slx
    Level 19  
    Jak pisałem poprzednią odpowiedź to nie widziałem jeszcze kodu programu - no nie zbyt elegancko to napisane.
    Tak na szybko - powinno działać

    Code: basic4gl
    Log in, to see the code
    Tutaj chyba dość oczywiste

    Code: basic4gl
    Log in, to see the code
    Tutaj daj Waitus 11, bo 750ms/500ms*7=~11
  • #13
    grzegorz.d3
    Level 14  
    Próbowałem to jakoś powklejać wskazało na wyświetlaczu20stpni i tyle nie mierzy temperatury.
    Code:
    '###################################################################
    
    Sub Inicjuj_pomiar
    If Clock = 0 Then Inicjuj_pomiar
      1wreset                                                   'Reset magistrali
      1wwrite &HCC                                              'Polecenie: Skip ROM
      1wwrite &H44                                              'Polecenie: Convert T
    End Sub

    '#####################################################################################
    Sub Odczytaj_pomiar
    If Clock = 65535 Then Odczytaj_pomiar
      1wreset                                                   'Reset magistrali
      1wwrite &HCC                                              'Polecenie: Skip ROM
      1wwrite &HBE                                              'Polecenie: Read Scratchpad
      Tmierzona = 1wread()                                      'Odczytujemy tylko jeden bajt -> wartość temperatury
      Shift Tmierzona , Right , 1                               'Pomijamy pół stopnia
      Incr Clock
       Waitus 11
    End Sub
  • #14
    zumek
    Level 39  
    slx wrote:
    Jak pisałem poprzednią odpowiedź to nie widziałem jeszcze kodu programu - no nie zbyt elegancko to napisane.

    "Najciekawsze" jest to, że opis tego kitu odnosi się do DS1820(czas konwersji 500ms), a w treści artykułu widnieje jak byk DS18S20. Ba, nawet komentarz w kodzie mówi o DS1820 i teoretycznie, ten kit powinien współpracować z DS1820.
    Tyle teoria, a co w praktyce :?: Ano autor programu wstawił zbędne "waitus 7" w pętli głównej, a zapomniał, że 1 "obrót" pętli głównej też zajmuje "trochę czasu" mikrokontrolerowi.
    Obliczyłem, że minimalny czas wykonania się pętli głównej, to około 90 taktów zegara systemowego, a więc łatwo obliczyć ,że pomiędzy wysłaniem polecenia konwersji do DS-a, a odczytem z niego temperatury, upływa 65535*90uS, więc te "waitus 7" , to tylko taki ... kwiatek do kożucha :D
    Według mnie, nie ma różnicy czy podłączymy do tego kitu DS1820, czy DS18S20 - oba powinny działać.

    A więc drogi autorze tematu, jest wielce prawdopodobne,że to nie program w uC jest winien temu, że ten kit ci sprawia kłopoty.
  • #15
    grzegorz.d3
    Level 14  
    Wszystko zostało zmontowane zgodnie ze schematem i próbowałem innym wsadem sam termometr i wszystko działa a jak wgram soft termostatu nie działa na wyświetlaczu widnieje tylko napis -1 I +1 .

    Dodano po 17 [minuty]:

    A na termometr ds 18b20 tez będzie chodził .
  • #16
    zumek
    Level 39  
    grzegorz.d3 wrote:
    Wszystko zostało zmontowane zgodnie ze schematem i próbowałem innym wsadem sam termometr i wszystko działa a jak wgram soft termostatu nie działa na wyświetlaczu widnieje tylko napis -1 I +1 .


    To wygląda tak, jakbyś trzymał wciśnięty przycisk "Histereza"

    grzegorz.d3 wrote:

    A na termometr ds 18b20 tez będzie chodził .


    Po dokonaniu kilku poprawek - owszem.
  • #18
    zumek
    Level 39  
    grzegorz.d3 wrote:
    Nie przycisk nie jest wciśnięty .
    ...

    No to go wciśnij na chwilę.
  • #20
    zumek
    Level 39  
    grzegorz.d3 wrote:
    Nie nic nie pomaga.

    Cudów nie ma, a skoro po włączeniu widzisz ekran z histerezą, tzn, że pin PIND.3 mikrokontrolera jest w stanie niskim(zwarty do masy).
    Sprawdź czy czasem przy wlutowywaniu, nie obróciłeś przycisku "histereza" o 90 stopni.
  • #22
    zumek
    Level 39  
    grzegorz.d3 wrote:
    Nie wszystko jest ok .

    A może chodziło Ci , że "Nie, wszystko jest ok" :?:
    grzegorz.d3 wrote:
    A czy dużo jest przeróbek na ds18b20 .

    Co Ci po przeróbce, jeśli nadal będziesz widział to:
    ATINY2313 - Zmiana z DS18S20 na DS1820
  • #23
    grzegorz.d3
    Level 14  
    Problem rozwiązany było tak jak mówiłeś PIND.3 był zwarty do masy na ścieżce .Tylko teraz coś moje desy1820 są chyba uszkodzone bo pokazują na innym termometrze 10 stopni przy 22 w pokoju.
    Ale mam dwa desy 18b20 i są ok bo sprawdzałem .
    I kolejne moje zapytanie jak z tymi przeróbkami na ds18b20 .
    Czy trzeba pozmieniać
    Waitms 7
    Waitms 500
    I co jeszcze.
  • #24
    zumek
    Level 39  
    grzegorz.d3 wrote:
    Witam ponawiam moje pytanie co mam pozmieniać .


    Skoro już działa oryginalny kod, to podłącz DS1820 lub DS18S20 i sprawdź czy termostat działa prawidłowo.
  • #25
    emcom5
    Level 11  
    Mam okazję przetestować powyższy kod programu i w aktualnej formie nie współpracuje z DS18B20.

    Po dokonaniu modyfikacji w jednym miejscu zaczął poprawnie pokazywać temperaturę i zmiana typu zadeklarowanej zmiennej Tmierzona z Byte na Word

    Code: basic4gl
    Log in, to see the code


    Pobieramy 2 bajty, a następnie przesuwamy o cztery.

    Program nie potrafi poprawnie zmierzyć temperatury ujemnej.
  • #26
    zumek
    Level 39  
    emcom5 wrote:
    ... i zmiana typu zadeklarowanej zmiennej Tmierzona z Byte na Word

    Błąd:
    1. WORD jest zmienną bez znaku.
    2. Nie dziel logicznie, tylko arytmetycznie.

    Code: basic4gl
    Log in, to see the code
  • #27
    emcom5
    Level 11  
    Dziękuje za uwagi.

    Nie zajmuje się natywnie programowanie w BASCOMie (pierwsze spotkanie). A poprawki jakie zaproponował były wykonane na potrzeby uruchomienia układu.

    Kod po moich poprawka i uwzględniających część uwag ZUMEK-a (chodzi o typ zmiennej z Word na Integer)

    Funkcje dodane do regulatora;
    1. obsługa czujników temperatury serwii DS nie ważne na wersję, sterowanie odbywa się za pomocą pinu "D1" w zależności czy jest podpięty do masy czy do zasilania,
    2. wyświetlanie aktualnej temperatury na zamianę z temperaturą zadana,
    3. automatyczne wyjście z regulacji histerezy do ekranu głównego.

    Code: basic4gl
    Log in, to see the code


    ZUMEK nie mogłem skorzystać z twoje rady w sprawie dzielenie gdyż zajmuje za dużo pamięci.
  • #28
    kejza
    Level 12  
    Witam kolegów, właśnie poskładałem termostat avt 5363 wszystko działa poprawnie jednak do pełni szczęścia brakuje mi wskazania aktualnej temperatury. Próbowałem wgrać soft który zamieścił emcom5 jednak podczas programowania wyskakuje błąd. Może ma ktoś działający program który pokazuje aktualną temperaturę.
  • #29
    emcom5
    Level 11  
    Witam,

    Siedziałem, siedziałem i jeszcze raz siedziałem czemu ten program głupio pracuje. Aż w końcu postanowiłem go "przepisać" na gcc. I jak narazie działa. Test był skromy jakieś 12h pracy, ale wyświetla mi prawidłowo temperaturę i załącza stycznik.

    Jak odszukał gdzieś programik to go podrzucę.

    PS. po przepisaniu z kilku rzeczy musiałem zrezygnować.

    Dodano po 14 [minuty]:

    Hej

    Ostatnia wersja jaką stworzyłem tylko nie pamiętam na którą wersję DS-a.

    Termostat parametry techniczne:
    - zakres od 0 do max DSa (to znaczy jeśli będzie -5 to wyświetli 5)
    - histereza 0 - 5 st C
    - nastaw temp (już dobrze nie pamiętam) max 50 st C

    - na wyświetlaczu nie wyświetla się (w porównaniu do oryginału) nie wyświetla się stan pracy stycznika

    - i jeszcze coś chyba ale już nie pamiętam.
  • #30
    kejza
    Level 12  
    emcom5 dzięki za program, wrzucę go do procesora i przetestuję.