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

Jak odczytać ROM czujników DS18B20 przy użyciu Atmega8?

robertt_2008 10 Gru 2013 00:00 1461 3
REKLAMA
  • #1 13044297
    robertt_2008
    Poziom 10  
    Witam wszystkich. Postanowiłem ostatnio zrobić czujnik temperatury z wykorzystaniem ds18b20. Przy jednym czujniku nie było problemu wszystko poszło ok. Jednak potrzebuje użyć kilku takich czujników i z tym już sobie nie mogę poradzić . Z tego co wyczytałem to muszę odczytać id czujnika czyli romu . Nie za bardzo wiem jak to zrobić dlatego proszę o pomoc..
  • REKLAMA
  • Pomocny post
    #2 13044500
    Steryd3
    Poziom 33  
    Temat pewnie był opisany na tym forum kilkukrotnie. Najlepiej skorzystać z noty katalogowej układu. Tam wszystko jest dokładnie opisane. Rozumiem, że kilka czujników chcesz podpiąć na wspólnej magistrali 1-wire bo gdy stworzysz dla każdego czujnika osobną ten problem nie istnieje. Sposoby są ogólnie na to dwa. Pierwszy -wg. mnie prostszy ale mniej profesjonalny-to odczytać (poruszając się po "drzewie" które załączone jest w nocie) numer seryjny każdego czujnika pisząc odpowiedni program i kolejno podłączając je do magistrali. Później stworzyć już program docelowy i komunikować się z konkretnym wybranym po SN czujnikiem. To rozwiązanie jest prostszym programowo choć trochę jest tego przełączania. Daje też odpowiedź który sensor ma jaki SN.
    Drugim sposobem to wpięcie wszystkich czujników na raz i przeszukiwanie magistrali i ustalanie obecnych na niej urządzeń i ich SN. Rozwiązanie trudniejsze programistycznie i dodatkowo na końcu trzeba ustalić który SN to który czujnik.
    Kiedyś z kolegą w okresie studiów stworzyłem prezentacje traktującą o tej tematyce. Oto ona: Link
  • REKLAMA
  • #3 13044937
    robertt_2008
    Poziom 10  
    Dzięki za pomoc . Nie komplikując sobie życia zrobiłem dwie oddzielnie magistrale. Wszystko pięknie działa :)
  • #4 13047625
    tank_driver
    Poziom 17  
    Ale to właśnie jest komplikowanie sobie życia! Nie wykorzystujesz podstawowej cechy 1-wire, mianowicie możliwości swobodnej komunikacji przy wykorzystaniu tylko jednej linii portu uC. Gratis masz kontrolę numerów układów, ich ilości, stanu itp. Programując "po okrężnej" wolniej rozwijasz swoje umiejętności!

    DS18B20 mają unikalny, 64 bitowy numer ID który możemy zapisać w EEPROM-ie w tablicy 8 bajtów. Procedura odczytu: reset magistrali, wysyłamy rozkaz MATCHROM, wołamy dany układ jego numerem, sprawdzamy czy odpowiedział, zlecamy konwersję (możemy to zrobić na początku, jednym rozkazem dla wszystkich DS18B20), odczekujemy na przetworzenie rozkazu przez DS-a i odczytujemy jego temperaturę.

    W czym to programujesz?
REKLAMA