Witam
Muszę stworzyć układ w którym bedę używał 8 czujników DS18B20 , i każdy musi pracować na osobnym pinie. Nie mogę podpiąć wszystkich na jednej linii i odpytywać ich po ich ID.
Kiedyś robiłem sterownik w którym odczyty robiłem w ten sposób:
itd.
Czyli za każdym razem na nowo konfigurowałem port pod odpowiedni czujnik:
Wiem że wg. bascomowego helpa nie powinno się tak robić ale mi to działało i to nawet bez oczekiwania na konwersję 750ms.
Jak powinienem zrobić odczyt z takich czujników. Muszę zacząć projektować PCB (na wczoraj) i nie chciałbym popełnić serii błędów.
Urządzenie będzie miało "dopinane" czujniki pod każdy port. Tak że w razie uszkodzenia czujnika po prostu odpina się jeden i wpina zapasowy.
Muszę stworzyć układ w którym bedę używał 8 czujników DS18B20 , i każdy musi pracować na osobnym pinie. Nie mogę podpiąć wszystkich na jednej linii i odpytywać ich po ich ID.
Kiedyś robiłem sterownik w którym odczyty robiłem w ten sposób:
Sub Odcz_temp1
Config 1wire = Portb.0
1wreset 1wwrite &HCC 'opuszczenie zapisu numeru ID
1wwrite &H44 'start pomiaru temperatury
'Waitms 150 'opóźnienie na czas pomiaru
1wreset 'reset magistrali 1-Wire
1wwrite &HCC 'opuszczenie zapisu numeru ID
1wwrite &HBE 'komenda odczytu zmierzonej temperatury
Temperatura(1) = 1wread(2) 'odczyt zmierzonej temperatury do tablicy Temperatura
1wreset 'reset magistrali 1-Wire
If Temperatura(2) > 0 Then 'jeśli zmienna Temperatura(2)
'> 0, to temperatura ujemna
'przeliczenie temperatury
'ujemnej
Temperatura(1) = 256 - Temperatura(1)
End If 'koniec warunku
Temperatura(1) = Temperatura(1) / 2
'dalsze przeliczenie odczytanej
'temperatury dodatniej jak
'i ujemnej
End Sub 'koniec procedury pomiaru
Sub Odcz_temp2 'procedury pomiaru temperatury
Config 1wire = Portb.1
1wreset 'reset magistrali 1-Wire
1wwrite &HCC 'opuszczenie zapisu numeru ID
1wwrite &H44 'start pomiaru temperatury
'Waitms 150 'opóźnienie na czas pomiaru
1wreset 'reset magistrali 1-Wire
1wwrite &HCC 'opuszczenie zapisu numeru ID
1wwrite &HBE 'komenda odczytu zmierzonej temperatury
Temperatura(3) = 1wread(4) 'odczyt zmierzonej temperatury do tablicy Temperatura
1wreset 'reset magistrali 1-Wire
If Temperatura(4) > 0 Then 'jeśli zmienna Temperatura(2)
'> 0, to temperatura ujemna
'przeliczenie temperatury
'ujemnej
Temperatura(3) = 256 - Temperatura(3)
End If 'koniec warunku
Temperatura(3) = Temperatura(3) / 2
'dalsze przeliczenie odczytanej
'temperatury dodatniej jak
'i ujemnej
End Sub 'koniec procedury pomiaru
Sub Odcz_temp3itd.
Czyli za każdym razem na nowo konfigurowałem port pod odpowiedni czujnik:
Config 1wire = Portb.1Wiem że wg. bascomowego helpa nie powinno się tak robić ale mi to działało i to nawet bez oczekiwania na konwersję 750ms.
Jak powinienem zrobić odczyt z takich czujników. Muszę zacząć projektować PCB (na wczoraj) i nie chciałbym popełnić serii błędów.
Urządzenie będzie miało "dopinane" czujniki pod każdy port. Tak że w razie uszkodzenia czujnika po prostu odpina się jeden i wpina zapasowy.
