f
Warning: Cannot modify header information - headers already sent by (output started at /home/anderian/ftp/www_forum/db/mysql4.php:1) in /home/anderian/ftp/www_forum/includes/sessions.php on line 548

Warning: Cannot modify header information - headers already sent by (output started at /home/anderian/ftp/www_forum/db/mysql4.php:1) in /home/anderian/ftp/www_forum/includes/sessions.php on line 549

Warning: Cannot modify header information - headers already sent by (output started at /home/anderian/ftp/www_forum/db/mysql4.php:1) in /home/anderian/ftp/www_forum/includes/page_header.php on line 343
And-Tech :: Zobacz temat - EvB 5.1 v5 i DS18B20

Strona korzysta z plików cookie w celu realizacji usług zgodnie z Politykš prywatnoœci.

Możesz okreœlić warunki przechowywania lub dostępu do cookie w Twojej przeglšdarce lub konfiguracji usługi.

And-Tech Strona Główna And-Tech
Forum firmy And-Tech

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj  AlbumAlbum  DownloadDownload

Poprzedni temat «» Następny temat
EvB 5.1 v5 i DS18B20
Autor Wiadomość
shhh1s3h

Dołączył: 20 Lis 2013
Posty: 7
Wysłany: Sro Lis 20, 2013 5:24 pm   EvB 5.1 v5 i DS18B20

Witam.
Mam problem z podłączeniem dodatkowego czujnika DS18B20 do płytki EvB 5.1.
Na wbudowanym czujniku program działa poprawnie (zcztyuje numer seryjny czujnika metodą Search ROM, wyświetla poprawną temperaturę), ale po podłączeniu drugiego czujnika jak na zamieszczonym obrazku program nie wykrywa żadnych urządzeń. Jestem pewien że kod Search ROM jest dobry, ponieważ wziąłem go ze strony Maxim.

Schemat podłaczenia czujnika: http://i.imgur.com/uccWFMt.png
Miejsce podłączenia czujnika do płytki: http://i.imgur.com/n0eCcGi.jpg
 
     
piotr94 
Site Admin

Dołączył: 02 Lut 2010
Posty: 606
Skąd: Kraków
Wysłany: Sro Lis 20, 2013 7:43 pm   

Czy na pewno nie pomyliłeś polaryzacji zasilania czujnika?
_________________
http://www.piotr94.net21.pl/
 
     
shhh1s3h

Dołączył: 20 Lis 2013
Posty: 7
Wysłany: Sro Lis 20, 2013 7:49 pm   

Z pewnością jest podłączony dobrze, ponieważ kiedy na innym czujniku odwróciłem polaryzację, zaczął się szybko nagrzewać. Na szczęście miałem zapasowy... Walczę z tym już od kilku dni i przed chwilą w celu sprawdzenia wylutowałem z płytki czujnik i wstawiłem po kolei kilka swoich. Żaden z nich nie działał, a po wlutowaniu oryginalnego wszystko wróciło do normy. Nie wiem tylko, czy nie działały dla tego że wymagają jakiejś rejestracji, albo konfiguracji. Będę wdzięczny za odpowiedź.
 
     
piotr94 
Site Admin

Dołączył: 02 Lut 2010
Posty: 606
Skąd: Kraków
Wysłany: Sro Lis 20, 2013 8:38 pm   

1. Pokaż jaki masz program.
2. To, że Twoje czujniki po wlutowaniu w miejsce oryginalnego nie działają wskazuje na ich uszkodzenie i ciężką przeszłość. Prawdopodobnie każdy usmażyłeś podpinając odwrotnie zasilanie itp.
_________________
http://www.piotr94.net21.pl/
 
     
shhh1s3h

Dołączył: 20 Lis 2013
Posty: 7
Wysłany: Sro Lis 20, 2013 9:06 pm   

Wysłałem program na PW. Co do stanu czujników tylko jeden z nich podłączyłem z odwrotną polaryzacją, więc reszta powinna być dobra.
 
     
shhh1s3h

Dołączył: 20 Lis 2013
Posty: 7
Wysłany: Pią Lis 22, 2013 6:01 pm   

Witam. Dzisiaj udało mi się znaleźć i naprawić błąd w moim programie. Był on w funkcji ow_reset, która wyglądała tak:
Kod:
char ow_reset(void)
{
    char present = 0;
    ow_out();
    _delay_us(480);
    ow_in();
    _delay_us(60);
    if(ow_read() == 0)
        present = 1;
    _delay_us(80);
    if(ow_read() == 0)
        return 0;
    return present;
}

Po porównaniu jej z funkcją resetu z przykładowego programu 1-wire zauważyłem, że przerwa pomiędzy odczytami jest u mnie dużo za mała i zwiększyłem ją z 80µs na 420µs. Dodałem też wyłączanie przerwań na czas wykonywania resetu. Po tych małych zmianach program chodzi na wszystkich moich czujnikach!
Poniżej załączam poprawioną funkcję:
Kod:
char ow_reset(void)
{
    char present = 0;
    ow_out();
    _delay_us(480);
    cli();
    ow_in();
    _delay_us(60);
    if(!ow_read())
        present = 1;
    _delay_us(420);
    if(!ow_read())
        return 0;
    sei();
    return present;
}

Dziękuję Panu za chęć pomocy początkującemu. Pozdrawiam, Piotr.
 
     
piotr94 
Site Admin

Dołączył: 02 Lut 2010
Posty: 606
Skąd: Kraków
Wysłany: Pią Lis 22, 2013 7:37 pm   

Cieszę się, że udało się znaleźć błąd samemu (jak wiemy to bardziej kształcące niż rozwiązanie na tacy ;) ).
Właśnie miałem się zabierać za testowanie tego programu, ale jak widać problem jest rozwiązany.
Pozdrawiam
_________________
http://www.piotr94.net21.pl/
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group