• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Przepływomierz, po dodaniu DS18B20 pomiary skaczą
#3
sensors.requestTemperatures(); - przy domyślnej dokładności czujników DS 12bitów to polecenie trwa około 750ms.
Należy włączyć w setup tryb asynchroniczny dla ONE WIRE. Robisz odczyt i zlecasz pomiar, po sekundzie (lub rzadziej) powtarzasz. Odczyt temperatury jest wtedy sprzed sekundy. Im rzadziej tym lepiej. Można np. w każdej dziesiątej sekundzie zlecać pomiar i odczytywać w kolejnej. Komunikacja z ONE WIRE i tak zabierze wtedy dużo z życia uC, ale będzie to 20ms z każdej sekundy (czy wybranego interwału) zamiast 750ms.
DS18B20.setWaitForConversion(0); - po tym poleceniu samemu dbasz o to by nie pytać o temperaturę zanim nie minie czas konwersji, taki tryb asynchroniczny.
Ewentualnie w setup można dodać pierwszy odczyt i jeden delay(1000) by po uruchomieniu nie pokazał głupot z tej odwrotnej kolejności.
A całość dla DS (i całej reszty programu) powinna być zrobiona jak to:
" if((millis() - oldTime) > 1000) // Only process counters once per second
{
"
Można też sekundę podzielić na odcinki po 50-100ms i w każdym zlecić jakiś zestaw zadań do wykonania. Tak często jak to jest niezbędne do działania, ale nie częściej.
Jak złożysz do kupy czas komunikacji I2C i ONE WIRE to program jest jedną wielką czkawką.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Wiadomości w tym wątku
RE: Przepływomierz, po dodaniu DS18B20 pomiary skaczą - przez kaczakat - 16-01-2022, 04:14

Skocz do:


Przeglądający: 1 gości