logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Atmega8 DS18B20 - brak odczytu temperatury na wyświetlaczu 7-segmentowym

nik1197 29 Lut 2016 13:39 1152 10
  • #1 15481746
    nik1197
    Poziom 9  
    Witam od dobrych paru dni męczę się z wyświetleniem temperatury na wyświetlaczu 7-segmentowym. Sam wyświetlacz działa bez najmniejszych zarzutów :
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Znalazłem porgram obsługi czujnika gdzieś na elektrodzie i postanowiłem go przerobić na właśnie ten wyświetlacz, całość wygląda tak:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Termometr nie daje znaku życia na wyświetlaczu same zera :/
    I teraz pytanie czy ten kod do obsługi 1-wire i DS18B20 ma w ogóle jakiś sens?
    A jeżeli nie to czy macie jakiś sensowny i łopatologiczny poradnik jak uruchomić ten termometr? Albo jakiś przykładowy i działający przykład. Szukałem już na elektrodzie i w google to w większości były dodane same programy bez użytych tam bibliotek w dodatku posty były publikowane ponad 10lat temu, więc pisanie do autora raczej nie miałoby sensu. :(
    Dodam tylko że zależy mi na jak najprostszym odczycie nie potrzebuje mieć wyświetlanych informacji o błędach czy ilościach znalezionych czujników.
    Z góry dzięki za pomoc :)
  • #2 15481765
    Templarious
    Poziom 22  
    Pliczek do odczytu termometru z TEGO tematu.


    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #3 15481990
    nik1197
    Poziom 9  
    Ten plik o ile się nie mylę to jest sama biblioteka, w dodatku niekompletna ponieważ kompilator wywala całą masę błędów :/

    Edit.
    I jeszcze jedno znalazłem kolejny przykład spróbowałem skompilować i tym razem dzieją się takie cuda: http://scr.hu/8e6i/jt5tp

    kody:

    DS18B20.h
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    main.c
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    ktoś wie co to za błąd i skąd się bierze?
  • #4 15516296
    felek93
    Poziom 11  
    Proponuję najpierw wgrać gotowca i sprawdzić czy sam czujnik działa poprawnie.

    Przykład na avr jest w książce Kardasia.
  • #5 15516666
    BlueDraco
    Specjalista - Mikrokontrolery
    A poza tym masz błędną obsługę wyświetlacza - cyfry z "duchami".
    Powinno być:
    PORTB |=wyjB;
    PORTD=tab[d];
    PORTB &=~wyjA;
  • #6 15516890
    nik1197
    Poziom 9  
    felek93

    Właśnie problem w tym że nie mam i nie mogę znaleźć żadnego gotowca, oraz nie posiadam książki Kardasia, niestety :/ Jeżeli ktoś miałby sprawdzony program do obsługi tego termometru to czy mógłby mi go udostępnić??

    BlueDraco
    Może i masz racje, ale zauważ że te 3 linijki kodu nie posiadają żadnych opóźnień, pętli oczekujących itp. więc wykonują się z zawrotną prędością, niezauważalną w żaden sposób przez ludzkie oko, mówiąc krótko wyświetlacz działa bez zarzutów.
  • #7 15517010
    BlueDraco
    Specjalista - Mikrokontrolery
    Popatrz na ten wyświetlacz w ciemnym pomieszczeniu - to ZAWSZE widać. Jeśli poprawienie błędu nie kosztuje NIC, to po co go trzymać w kodzie?

    Jeśli masz dobre parametry wyświetlania, to ten błąd powoduje świecenie "duchów" z ok.1/1000 jasności cyfr poprawnych - to jest zauważalne.
    Zdaje mi się jednak, że u Ciebie wyświetlacz w ogóle cały pływa i skacze z powodu zbyt małej częstotliwości odświeżania, wtedy duchy są najmniejszym z problemów wizualnych.

    A gotowce z DS18B20 są tu pokazywane i dyskutowane ze 2 razy w miesiącu.
  • #8 15520000
    nik1197
    Poziom 9  
    Odświeżanie jest 50Hz wyświetlacz działa bez zarzutów, odnośnie kodu to racja nie ma co być upartym i skoro jest dobrze a może być jeszcze lepiej dzięki małej poprawce to jak najbardziej warto się do niej stosować tak jak powiedziałeś to nic nie kosztuje xD a odnośnie tych gotowców sprawdzałem już kilka i problem w tym że nie wszystkie kody były kompletne tz. brakowało bibliotek itp. szukałem już dużo a jeszcze nie znalazłem działającego kodu do tego termometru niestety
  • #9 15520964
    BlueDraco
    Specjalista - Mikrokontrolery
    50 Hz to jakieś ponure żarty. "Bez zarzutów"? Ja bym powiedział "nieakceptowalnie". Przecież to się nie nadaje do praktycznego użytku - skacze, drży i wkurza użytkownika.

    Kodu obsługi DS znajdziesz mnóstwo - to jeden z popularniejszych tematów, również tu, na forum - min. raz w miesiącu.
  • #10 15521398
    nik1197
    Poziom 9  
    Powiem szczerze sprawdziłem właśnie jak wygląda odczyt w z niego w ciemności i po dogłębnym przyglądnięciu się nie widziałem żadnych "duchów" ani tym bardziej drgania, ale żeby zwiększyć częstotliwość potrzeba poświęcić "kupę czasu" i zmienić aż rejestr OCR2 na mniejszy więc z tym najmniejszych problemów nie ma :D
  • #11 15521630
    BlueDraco
    Specjalista - Mikrokontrolery
    Do urządzenia załączaj zawsze imadło do usztywniania głowy obserwatora na wprost wyświetlacza - w ten sposób skutecznie wyeliminujesz drżenie wyświetacza bez modyfikacji tych dwóch linii kodu.
REKLAMA