avr atmega16 + ds18b20 + nagła padaka

Sep 11, 2007 7 Replies

Witam!



Wykonałem płytkę z Atmegą16, kwarc 12MHz, lcd, ds18b20, kilka kondensatorów, ledów i przycisków na pokładzie. Taka sobie płytka testowa do małych projektów uC. Skorzystałem z wątków umieszczonych na forum.elektroda.pl oraz mikrokontrolery.net i udało się odczytać temperaurę z ds-a. Wszystko pięknie działało 3 dni. Wczoraj wieczorem źle podłączyłem przetwornik obrotowo impulsowy i zamiast na jeden z pinów portu C mikrokontrolera podawać na przemian logiczne 0 i 1 spowodowałem kilkukrotne (5 do 8 razy) zwarcie sygnałów GND z VCC. Oczywiście poprawiłem połączenia i układ uruchomił się chyba ok (chyba, gdzyż nie zwracałem uwagi na odczyt temperatury za bardzo - patrzałem na to czy dobrze zlicza impulsy Myślę jednak, że zauważyłbym jakaś mega głupotę zamiast temperatury). Po dwóch godzinach gdy podłaczyłem znowu układ - odczyt temperatury wskazywał 85 stopni. Sprawdzałem już na 5 ds-ach - niektóre pokazują 85 stopni a niektóre 127,9375. Te które wskazują 85 stopni po przytrzymaniu ręką (nagrzaniu) też zmieniają temperaturę na 127,9375, po puszczeniu ręki po chwili wracają do 85 stopni. Dodam, że w międzyczasie nie zmieniałem nic w oprogramowaniu. Sprawdziłem nawet starsze wersje oprogramowania które na 100% działały i ściągnąłem z internetu czyjś program do obsługi ds-a. Temperatura przy odczycie obojętnie jakim programem zawsze ma tą samą wartość (85 lub



127,9375).

Co zrobiłem:



- tak jak napisałem sprawdziłem już 5 dsów,



- wymieniłem uC - miałem w domu drugą Atmegę - to samo.



- sprawdziłem kilka wcześniejszych wersji mojego oprogramowania, które na pewno działały,



Co mogę jeszcze zrobić? co sprawdzić, gdzie szukać? Czy możliwe by kwarc się jakoś... rozkalibrował? Wiem, że dsy są bardzo czułe na czasy transmisji - ale skoro coś przez 3 dni działało bez zarzutów? Poza tym coś z niego czyta... te 85 stopni to temperatura które zapisana jest w eepromie zaraz po podłączeniu do prądu - i dopiero po wykonaniu pierwszego pomiaru zamieniana jest na faktyczną. Czyli tak jakby czujnik... ale przecież sprawdzałem 5 sztuk! I w sumie tak jakby coś liczył - nagrzewam palcami czujnik i niektóre wskakują na 127 stopni... No i reszta działa nadal - wyświetlacz lcd, odczyt stanu portów sterowanie ledami, itd. Wszystko działa jak działo, tylko nagle brak odczytu z dsów.



Nie wiem czego szukać... gdyby jakaś dobra dusza zapodała pomysł będę zobowiązany. Jest to moje pierwsze starcie z uC i w sumie elektroniką a więc bedę wdzięczny za każdą radę.



Rafał


R.R.R. pisze: <ciach>

Zobacz zasilanie dla dsa, mi zwracał 85 stopni jak miał za wysokie napięcie zasilania.

MOze sproboj faktycznie na innym sofcie i jesli chodzi to oscyloskop i timingi ponoc DS' sa wrazliwe na precyzje timingow. Mam gdzies w c procedurki a teraz wlasnie walcze w ASM pod M8 Pozdro.

zoabcz moja odpowiedz na podobny problem dotyczacy DSa kilka postow nizej

Użytkownik "R.R.R." snipped-for-privacy@ubuntu.ubuntu napisał w wiadomości news:fc60mo$gt2$ snipped-for-privacy@nemesis.news.tpi.pl...

Liczysz CRC ? Jeśli nie, oprogramuj liczenie i sprawdź, czy się zgadza. Możliwe, że porozjeżdzały Ci się jakieś czasy a 3 dni temu po prostu pracowałeś "na styk".

e.

podobny problem mialem jak timingi mialem minimalnie za krótkie. Sprawdź czasy, dołóż minimalnie, w datashicie jest podane okienko w jakim musisz się zmieścić, ustawianie krańcowych wartości nie jest dobrym pomysłem, zrobiłem tak i ...d..a czytało same FF

Dziękuję za odpowiedzi i podpowiedzi. Co do kwarcu to jest zewnętrzny

12MHz. Jutro przejrzę czasy raz jeszcze.

pozdrawiam, rafał

Potwierdzam. DSy sš wrażliwe na timingi, timingi DSa samego zmieniaja się wraz z temperaturš, Sš zależne od modelu DS18S20 ma inne niz DS18B20, i sztuki. Czysta rozkosz. Poważnie sie zastanawiam nad czymœ innym w następnym projekcie.

Pozdrawiam CosteC

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required