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

Problem z wystartowaniem nowego pomiaru na DS18B20

09 Sie 2004 17:44 1944 13
  • Poziom 12  
    Przeczytałem chyba wszystkie posty dotyczące problemów z DS18B20 i nie znalazłem rozwiązania dla swojego problemu. W większości rozwiązaniem jest zastosowanie podłączenia trzyprzewodowego i obniżenie wartości rezystora podciągającego magistralę 1Wire, niestety w moim przypadku zastosowałem trzy przewodowe podłączenie a rezystor podciągający to 3k3 a pojawia mi się dziwny problem polegający na braku możliwości zainicjowania pomiaru (wysłanie ConvertT). Oczywiście objawia się to odczytywaniem wciąż tej samej temperatury. Niestety nie mogę dokładnie sprawdzić co wywołuje ten stan ponieważ jest to w moim przypadku losowe tzn. na kilka (około 30) takich samych układów pojawia się to w jednym układzie a zmiany czujnika DS18B20 nie pomagają. Przy czym po wyłączeniu zasilania przez losowy czas układ działa poprawnie i z jakiegoś powodu przechodzi w stan w którym nie przyjmuje polecenia ConvertT. Wszystkie inne instrukcje DS18B20 działają a jedynie nie przyjmowane jest polecenie ConvertT. Pomiaru dokonuję przy rozdzielczości 12bit i sprawdzam zakończenie pomiaru przez odczyt magistrali. Pierwsze sprawdzenie dokonywane jest po ok. 1 sek i przy prawidłowo pracującym układzie po tym czasie zawsze wykrywana jest jedynka na magistrali co świadczy o zakończeniu konwersji temperatury.
    Przy układzie pracującym niepoprawnie po 1 sek zawsze sygnalizowana jest konwersja w toku przez czasem nawet kilka sekund po czym magistrala sygnalizuje zakończenie konwersji a nie zostaje ona zakończona, ponieważ brak jest zmiany temperatury odczytywanej z ScratchPad. Starałem się przez wysyłanie różnych kombinacji komend i utrzymywaniu magistrali w stanie niskim i wysokim "wyjść" z tego stanu i nic nie pomagało. Jedynie odłączenie zasilania od DS18B20 powodowało że wszystko wracało do normy i po pewnym czasie znowu "wpadało" w taki stan.
    Jeśli ktoś miał podobny problem a może i go rozwiązał to proszę o informacje, bo mi skończyły się już pomysły. Jedyne co mi przychodzi do głowy to zmiana trybu zasilania na zasilanie przez linię DATA. Wtedy można przed każdym pomiarem dokonać "wyłączenia" układu. Nie chcę jednak przebudowywać układu, jeśli ktoś ma podobne doświadczenia z dwuprzewodowym sterowaniem DS18B20 lub inne które mogą w podobny sposób skomplikować pomiar temperatury tym bardziej jeśli mierzy się temperaturę w termostacie który ma utrzymywać dokładną temperaturę a "zawieszenie" termometru grozi tragedią.
  • Poziom 32  
    przy DS18b20 uzywam tylko lini dwu przewodowej i w odleglosciach od 10cm do 50m dziala bezproblemowo jedymie co jakis czas resetowal mi sie ds i wyskakiwala temperatura 85stC obszedlem to najlatwiej przez ignorowanie przez sterownik tej temperatury linie data podciagam rezystorem 4k7 lub tez robilem podciaganie tranzystorem w czasie konwersji temperatury i zdawalo to egzamin chociaz krzaczylo sie czasami jak odczyt z dallasa byl czastszy niz 3 sekundy dodam ze program pisalem w bascomie na atmelka 8515
  • Poziom 12  
    Ja odczytuję temperaturę co 1.5sek. dlatego chętnie usłyszę o "krzaczeniu". Na czym to polegało. Jeśli chodzi o te 85st to tylko przez to że przy resecie stan niski musiał być dłuższy niż ok. 900us wg datasheet Dallas-a. Wtedy następuje obniżenie napięcia, które wywołuje temperaturę jak po Powerup czyli 85st.
  • Poziom 15  
    Witam
    Zastosowalem identyczny czujnik w swoim termometrze. Program napisany w BASCOMIE (ze wzgledu na prostote i brak czasu). Uzywam 3 przewodow i rezystora podciagajacego 4,7k. Odczyt temperatury ciagly tzn. po pomiarze nastepuje wyswietlenie wartosci na LCD i nastepny pomiar - dziala bez zarzutow.
  • Poziom 42  
    Tomcio112 napisał:
    Pomiaru dokonuję przy rozdzielczości 12bit i sprawdzam zakończenie pomiaru przez odczyt magistrali. Pierwsze sprawdzenie dokonywane jest po ok. 1 sek i przy prawidłowo pracującym układzie po tym czasie zawsze wykrywana jest jedynka na magistrali co świadczy o zakończeniu konwersji temperatury.
    Nie wiem skąd to kolega wyczytał, może to jest przyczyną problemów?
  • Poziom 12  
    Poniżej cytat z datasheet :
    "CONVERT T [44h]
    This command initiates a single temperature conversion. Following the conversion, the resulting thermal
    data is stored in the 2-byte temperature register in the scratchpad memory and the DS18B20 returns to its
    low-power idle state. If the device is being used in parasite power mode, within 10 µs (max) after this
    command is issued the master must enable a strong pullup on the 1-wire bus for the duration of the
    conversion (tconv) as described in the POWERING THE DS18B20 section. If the DS18B20 is powered
    by an external supply, the master can issue read time slots after the Convert T command and the
    DS18B20 will respond by transmitting 0 while the temperature conversion is in progress and 1 when the
    conversion is done. In parasite power mode this notification technique cannot be used since the bus is
    pulled high by the strong pullup during the conversion."
  • Poziom 32  
    co do krzaczenia to zauwazylem ze wystepuje ono przy zastosowaniu wyswietlaczy led z multipleksowaniem na lcd tego niezauwazylem efekt polegal na okrezowym wyswietlaniu roznych glupot na wyswietlaczu
  • Poziom 42  
    Hmm, to jeszcze mam takie pytanko, czy układy z sampli czy ze sklepu i czy czujnik jest jeden czy kilka sztuk?
  • Poziom 12  
    Układy kupione w sklepie. Partia jak w pierwszym poscie ok. 30 szt.
  • Specjalista - oświetlenie sceniczne
    -> Jacur, bzura, u mnie B20 bez problemu (a nawet lepiej chodzą na trzech przewodach!. Jedyne co zauważyłem to nie wielka róznica w odczytanej temperaturze

    -> Tomcio112 proponuej Ci odpuscić sprawdzane zakończenia konwersji temperatury. Zrób sobie najprostrzy program z rozkazem konwersji naprzemian z odczytem temperatury co powiedzmy 2 sekundy- musi działać. na 100% jestem pewien że wina lezy po Twojej stronie :wink:
  • Poziom 12  
    Ja też tak uważam, że wina leży po mojej stronie (zakładam że chłopaki z Dallasa nie pomylili się), tylko że wersja z naprzemiennym startem konwersji i odczytem też była i był ten sam problem (od tego się zaczęło). Wersja którą opisałem jest ostatnia (po wielu innych z różnymi czasami oczekiwania pomiędzy startem konwersji a odczytem).
  • Poziom 32  
    Właśnie oddałem do użytku tablicę która wyświetla z pięciu różnych DS18B20 temperaturę. Na szeć użytych czujników jeden pokazuje mi temperaturę zawyżoną o około 70 stopni. Pozostałe pracują poprawnie. Zasilanie dallasów mam trzy przewodowe a odstęp pomiędzy odczytami mam około 1,5 sek. Jak na razie nie zauważyłem żadnych problemów z odczytem temperatury. Procek odczytujący to AT89c2051
  • Poziom 18  
    Hmm też tak miałem. Jeden z DS18B20 uparcie pokazywał temperaturę pokojową 90C. Co ciekawsze po podgrzaniu pokazywał wyższą temperaturę (czyli coś tam działał). Inny egzemplarz najpierw działał normalnie, a potem zamiast 40C pokazywał -20C. Często Wam się zdarzają takie egzemplarze?

    myrcioch
  • Poziom 32  
    Ja jeszcze jeden kupiłem z innego zródła ale ten działa poprawnie. Być może że są nieodporne na złe zasialanie.