Witam Wszystkich!
Jestem początkującym użytkownikiem platformy Arduino. Mam kilka książek na jego temat, ale w żadnej nie mogę znaleźć podpowiedzi jak mierzyć czas za pomocą Arduino. Nie chodzi mi o budowę zwykłego zegara, tylko o pomiar czasu pomiędzy dwoma (i więcej) zdarzeniami. Potrzebny jest do tego Zegar Czasu Rzeczywistego (RTC) czy obejdzie się bez tego?
(07-09-2018, 13:36)Mick_SQ6IYV napisał(a): [ -> ]pomiar czasu pomiędzy dwoma (i więcej) zdarzeniami. Potrzebny jest do tego Zegar Czasu Rzeczywistego (RTC) czy obejdzie się bez tego?
Jakiej długości czasy chcesz mierzyć?
Z jaką rozdzielczością?
Z jaką dokładnością?
W zasadzie chodzą mi dwa projekty:
Projekt 1 związany z pomiarem czasu o długości około 10 - 20 sekund, rozdzielczość i dokładność na poziomie 0,01 s.
Projekt 2 związany z pomiarem czasu o długości powyżej 1 minuty, rozdzielczość i dokładność na poziomie 1 s.
Oczywiście, jeśli można poprawić rozdzielczość o jeden rząd (w obu projektach), to też będzie dobrze
W funkcji obsługi pierwszego zdarzenia musisz zapisać do zmiennej aktualny czas:
Kod:
unsigned long czasStart = millis();
W funkcji obsługi drugiego zdarzenia, tez musisz spojrzeć na zegarek:
Kod:
unsigned long czasStop = millis();
Różnica w pomiędzy naszymi zmiennymi, to właśnie zmierzony czas:
Kod:
unsigned long Czas = czasStop - czasStart;
Dokładność 0.001s.
(07-09-2018, 14:38)Robson Kerman napisał(a): [ -> ]Dokładność 0.001s.
Rozdzielczość administratorze, rozdzielczość. I raczej nie 1ms w Arduinio, bo są tam milisekundy "przestępne" i faktyczna rozdzielczość jest mniejsza.
Ogólnie pojęta dokładność będzie na poziomie 20..50ppm, ogólnie, bo jest dokładność krótko i długoterminowa. Jaka interesuje kolegę Mick_SQ6IYV? Czy potrzebna większa np 2ppm? Bez tego nie można odpowiedzieć, czy potrzebny będzie zewnętrzny układ, np precyzyjny RTC.. A może trzeba bardzo dużej dokładności np 100bpm lub więcej?
Super, już jakaś podpowiedź
Nadal jednak nurtują mnie dwie kwestie:
1. Potrzebuję używać do obu celów zegara RTC czy nie? Oba projekty to szeroko pojęte minutniki, zegary do mierzenia czasu (pomiędzy dwoma zdarzeniami).
2. Komendy, o których mówi Robson Kerman, są elementami biblioteki standardowej czy innej (jeśli tak, to jakiej)?
Ten przykład z millis() jest w standardowych przykładach już wbudowanych w IDE Arduino i nie wymaga żadnego dodatkowego elementu czy biblioteki:
https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay . Podobną funkcją dla us jest micros().
Jakie książki masz, że nie jest to opisane? Chyba, że tylko je masz, przeczytałeś?
(07-09-2018, 15:31)Mick_SQ6IYV napisał(a): [ -> ]1. Potrzebuję używać do obu celów zegara RTC czy nie?
Szklana kula mi się zepsuła, napisz w końcu jakiej dokładności oczekujesz. 20..50ppm? 2ppm? 1ppm? 100bpm?
1. es2 - W projekcie 1 dokładność na poziomie 0,01 sekundy. W drugim projekcie dokładność na poziomie 1 sekundy. To będą najmniejsze wartości, jakie będą mierzone i wyświetlane.
2. Kaczkat - Przyznam się "bez bicia", że nie do końca je czytałem. Może też dla tego, że mam pomysł jak poprawić w pracy jedną rzecz za pomocą Arduino. Chciałem więc od razu zająć się tym projektem. Zajrzałem do książek trochę pobieżnie, gdyż zabrakło mi w indeksie i spisie treści nie widziałem konkretnego hasła "POMIAR CZASU" lub czegoś podobnego. Mam następujące książki:
1. BOXALL JOHN - Arduino. 65 praktycznych projektow
2. MASSIMO BANZI - Wprowadzenie do Arduino
3. Tytułu i autora nie pamiętam...
(07-09-2018, 15:24)es2 napisał(a): [ -> ]Rozdzielczość administratorze, rozdzielczość.
Moderatorze, a nie administratorze.
Ja tu tylko pilnuję, abyście nie używali mowy nienawiści, i nie dyskutowali nie na temat.
A co się tyczy tematu, to pewnie przejęzyczenie, pisałem w pracy pod presją opierniczu od szefostwa.
Faktycznie chodziło o rozdzielczość. Przepraszam, że wprowadzam w błąd.
Możesz kolego Mick_SQ6IYV napisać, między jakimi zdarzeniami ma być mierzony czas?
Wewnętrznymi, czyli w programie, czy może coś z zewnątrz będzie informowało sprzęt, na przykład zmianą poziomu na pinie?