Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[ATMega8][BASCOM] Odczyt temperatury DS18B20 + HD44780 -krzaki

dudi_lol 25 Oct 2011 18:13 3399 15
Altium Designer Computer Controls
  • #1
    dudi_lol
    Level 9  
    Witam
    Mam następujący problem z termometrem DS18B20. Oto mój kod:


    Code: basic4gl
    Log in, to see the code


    Otóż, po skompilowaniu programu, wgraniu go do procesora i uruchomieniu, temperatura pokazuje się prawidłowo przez ok. 10 sekund (różnie to bywa, czasami pochodzi minutę), po czym na wyświetlaczu zaczynają pokazywać się różne dziwne (mam na myśli krzaki, niewiele mające wspólnego z temperaturą) rzeczy przez następne 10 sekund (około), po czym wyświetlacz robi się cały biały (nic się nie wyświetla). Dodam, że kabel łączący DS 'a z procesorem ma ok. 2 m i tyle samo ma taśma łącząca wyświetlacz z procesorem. Wymiana czujników na inne nic nie daje. Mam już za sobą podobny projekt, który działa bez zarzutu do dnia dzisiejszego jako komputer pokładowy do skutera. Zasilanie posiada podwójną stabilizację, chociaż i tak to nic nie zmienia.

    Z góry dziękuję i pozdrawiam.
  • Altium Designer Computer Controls
  • #2
    opamp
    User under supervision
    Jaki masz kwarc? Przed loop daj 100ms przerwy.
  • #3
    dudi_lol
    Level 9  
    Kwarcu brak, pracuje na wewnętrznym oscylatorze.
    100 ms niestety nie pomogło.
    A te kable to mogą być takie długie? Wiem, że dla 1 Wire moze być nawet 100 m a dla HD44780?
  • #4
    opamp
    User under supervision
    Do 30 cm testowałem dla LCD i ok. Spróbuj rozkręcić do 8MHz i włącz watchdoga :)
  • #5
    tronics
    Level 38  
    Po odczycie bajtów Msb i Lsb spróbuj dać 1wreset.
  • Altium Designer Computer Controls
  • #7
    dudi_lol
    Level 9  
    @opamp: rozkręciłem za pomocą wewnętrznego oscylatora do 8MHz (za pomocą mkavrstudio) i nic to nie dało. Po włączeniu watchdoga "ucina" mi kawałek temperatury, np. kiedy temperatura powinna wynosić 022.3 'C pokazuje mi się 022. albo 3 'C. Tak na marginesie to jednak 30 cm a 2 m to jest lekka różnica ;)

    @tronics: niestety nie pomogło

    @dondu: schematu jako takiego nie ma, siedzi on w mojej głowie, ale mogę zamieścić rysunek płytek w KiCadzie, albo zrobię screena i wstawię jeżeli jest taka potrzeba.
  • #8
    dondu
    Moderator on vacation ...
    dudi_lol wrote:
    @dondu: schematu jako takiego nie ma, siedzi on w mojej głowie, ale mogę zamieścić rysunek płytek w KiCadzie, albo zrobię screena i wstawię jeżeli jest taka potrzeba.

    Masz opracowane płytki w KiCAD, a nie masz schematu?
    Wstawiaj co masz.
  • #9
    tronics
    Level 38  
    A może podejść do problemu inaczej, np. dodać locate 1,1 na początku i dajmy na to co 20 pętli robić Cls?

    @poniżej - po prostu to wskazuje nie tyle na zwalony czujnik co na to, że w pewnym momencie LCD dostaje nie to co trzeba lub nie tak szybko/wolno jak trzeba i zaczyna się sypać to co jest na wyświetlaczu.
  • #10
    dudi_lol
    Level 9  
    No widzisz, zawsze tak robię, nawet przy skomplikowanych projektach. Na płytce jest wiele innych rzeczy, m.in RTC i zasilanie do niego. Te 2 elementy po lewej stronie uC to są przyciski do ustawiania godziny. I nie mam zwyczaju osobnego nazywania każdego elementu, także na płytce jest "lekki" chaos... :|


    @tronics: docelowo ma tam być wyświetlana jeszcze jedna temperatura i zegar, także miganie będzie uciążliwe...
  • #12
    dudi_lol
    Level 9  
    1. Kondensatory filtrujące zasilanie to są 2 elementy za elementem BORN_2 i jeszcze jeden za TO220_VERT o wartościach odpowiednio 2200uF , 330nF i 100nF. Trzeba coś jeszcze?
    2. Nie jest podłączony bo... w sumie to nie wiem czemu... zaraz pomajstruję i zobaczę...
  • #13
    dondu
    Moderator on vacation ...
    dudi_lol wrote:
    1. Kondensatory filtrujące zasilanie to są 2 elementy za elementem BORN_2 i jeszcze jeden za TO220_VERT o wartościach odpowiednio 2200uF , 330nF i 100nF. Trzeba coś jeszcze?

    No nie jest to szczyt szczęścia. Naprawdę poświęć czas poczytaj artykuły z linku który podałem wyżej, bo po co sobie generować potencjalne miejsca problemów po stronie elektroniki. Po prostu szkoda czasu na szukanie błędów.

    I nadal nie rozumie jak możesz nie mieć schematu, skoro masz płytkę w KiCAD?
    Gdybyś go miał to mogłeś go skonsultować wcześniej i oszczędzić sobie problemów, a tak stoisz na na pierwszym stopniu Piekła początkujących.
  • #14
    dudi_lol
    Level 9  
    Ehh... Pomajstrowałem z tym GND i dalej to samo.
    Wpadłem jeszcze na pomysł, żeby to cudo podpiąć do akumulatora, gdzie zakłócenia są stosunkowo mniejsze, ale dalej to samo... Już nie wiem co mam robić.
    A w tym linku bardzo ciekawe rzeczy są :D nie wiedziałem, że przed ADC warto dać dławik.
    Schemat można łatwo "pominąć" wyłączając kontrolę reguł projektowania i wtedy ręcznie rysujemy ścieżki i umieszczamy elementy.
    Ale w temacie, jak nie ruszam czujnika, to wszystko jest w porządku, dopiero gdy dotknę czujnika to zaczyna się krzaczyć ale wtedy watchdog się włącza i ratuje. Temperatura się normalnie zmienia ale kiedy dotknę czujnika to się krzaczy...
  • #15
    dondu
    Moderator on vacation ...
    dudi_lol wrote:
    Ale w temacie, jak nie ruszam czujnika, to wszystko jest w porządku, dopiero gdy dotknę czujnika to zaczyna się krzaczyć ale wtedy watchdog się włącza i ratuje. Temperatura się normalnie zmienia ale kiedy dotknę czujnika to się krzaczy...

    Po raz trzeci i ostatni sugeruję ci DOKŁADNE przeczytanie WSZYSTKICH artykułów w dziale podanym w linku wyżej.
    Znajdziesz tam odpowiedzi na ten i wiele innych Twoich problemów, w tym także dotykania.
    Pozwodzenia!
  • #16
    dudi_lol
    Level 9  
    Dziękuję wszystkim serdecznie za pomoc, problem znalazłem sam. Okazał się nim wadliwy tranzystor przy wyświetlaczu do włączania podświetlenia.
    @dondu: Swoją drogą ciekawe rzeczy są w tym linku, wiele się stamtąd dowiedziałem.
    Jeszcze raz dzięki i pozdrawiam.