Witam,
robię projekt w którym używam mikrokontrolera ATMEGA-8 i termometru cyfrowego DS18S20, i chyba właśnie udało mi się skomunikować z moim termometrem, ale mam pewne wątpliwości.
odczytuje stan temperatury, ale z ciekawości w programie napisałem żeby odczytywać więcej niż trzeba bajtów no i pojawiają się tam różne wartości które chciałbym wiedzieć co oznaczają.
zgodnie z dokumentacją, a w zasadzie z przykładem (Example 3) z niej wysyłam sekwencje do termometru:
to powyżej jesli dobrze zrozumiałem dokumentacje dokonuje pomiaru i zapisuje w dwóch bajtach
następnie dusze inny klawisz i wykonuje się sekwencja:
a pozniej sprawdzam co jest w tempach i wlasnie pierwsze dwa chyba daja temperature.
wyniki przykladowe jakie otrzymywalem:
41 00 4B 46 FF FF 02 10 C7 <- termometr wewnątrz komputera
42 00 4B 46 FF FF 0A 10 74
32 00 4B 46 FF FF 0A 10 C1 <- termometr w pokoju w powietrzu
30 00 4B 46 FF FF 09 10 12
47 00 4B 46 FF FF ........... <- termometr w zaciśniętej dłoni
46 00 4B 46 FF FF ......
teraz jesli pierwszy bajt to mlodszy bajt a drugi to starszy to zgodnie z dokumentacja ta temperature czyta się tak:
czyli
00 41 = 32,5 stopnia C <- termometr wewnątrz komputera
00 42 = 33 C
00 32 = 25 C <- termometr w pokoju w powietrzu
00 30 = 24 C
00 47 = 35,5 C <- termometr w zaciśniętej dłoni
00 46 = 35 C
Tylko że nie mam pojęcia co oznaczają tamte kolejne stany na szynie 1-Wire, w moim programie po dokonaniu pomiaru nie ma żadnego polecenia które mogłoby zmieniać coś na niej. Skąd tamte stany i co one oznaczają ?
W tym temacie można pobrać dokumentacje DS18S20:
https://www.elektroda.pl/rtvforum/topic13526-120.html#506551
robię projekt w którym używam mikrokontrolera ATMEGA-8 i termometru cyfrowego DS18S20, i chyba właśnie udało mi się skomunikować z moim termometrem, ale mam pewne wątpliwości.
odczytuje stan temperatury, ale z ciekawości w programie napisałem żeby odczytywać więcej niż trzeba bajtów no i pojawiają się tam różne wartości które chciałbym wiedzieć co oznaczają.
zgodnie z dokumentacją, a w zasadzie z przykładem (Example 3) z niej wysyłam sekwencje do termometru:
reset_1w(); //wyslij na 1 Wire Reset + Presence
send_1w(0xCC); // wyslij na 1 Wire CCh
send_1w(0x44); // wyslij na 1 Wire 44h
to powyżej jesli dobrze zrozumiałem dokumentacje dokonuje pomiaru i zapisuje w dwóch bajtach
następnie dusze inny klawisz i wykonuje się sekwencja:
reset_1w(); //Reset + Presence
send_1w(0xCC); //wyslij na 1 Wire CCh
send_1w(0xBE); // wyslij na 1 Wire BEh
TEMP1=get_1w(); // tutaj odczytuje 9 bajtów
TEMP2=get_1w(); // kazda taka funkcja get_1w();
TEMP3=get_1w(); // zapisuje 8 bitow do kolejnych TEMP`ow
TEMP4=get_1w();
TEMP5=get_1w();
TEMP6=get_1w();
TEMP7=get_1w();
TEMP8=get_1w();
TEMP9=get_1w();
a pozniej sprawdzam co jest w tempach i wlasnie pierwsze dwa chyba daja temperature.
wyniki przykladowe jakie otrzymywalem:
41 00 4B 46 FF FF 02 10 C7 <- termometr wewnątrz komputera
42 00 4B 46 FF FF 0A 10 74
32 00 4B 46 FF FF 0A 10 C1 <- termometr w pokoju w powietrzu
30 00 4B 46 FF FF 09 10 12
47 00 4B 46 FF FF ........... <- termometr w zaciśniętej dłoni
46 00 4B 46 FF FF ......
teraz jesli pierwszy bajt to mlodszy bajt a drugi to starszy to zgodnie z dokumentacja ta temperature czyta się tak:
czyli
00 41 = 32,5 stopnia C <- termometr wewnątrz komputera
00 42 = 33 C
00 32 = 25 C <- termometr w pokoju w powietrzu
00 30 = 24 C
00 47 = 35,5 C <- termometr w zaciśniętej dłoni
00 46 = 35 C
Tylko że nie mam pojęcia co oznaczają tamte kolejne stany na szynie 1-Wire, w moim programie po dokonaniu pomiaru nie ma żadnego polecenia które mogłoby zmieniać coś na niej. Skąd tamte stany i co one oznaczają ?
W tym temacie można pobrać dokumentacje DS18S20:
https://www.elektroda.pl/rtvforum/topic13526-120.html#506551