Autor: Dondu
Artykuł jest częścią cyklu: SmartPIP - Elektroniczny dręczyciel
Licznik czasu będzie potrzebny do obserwowania pomieszczenia w określonych odstępach czasu oraz pośrednio do ustalania pory dnia. Nie jest nam jednak potrzebny zegarek w stricte tego słowa znaczeniu, ponieważ zgodnie z założeniami, porę dnia ustalać będziemy na podstawie czasu względnego, który ustalany będzie na podstawie pomiarów światła. Pisałem o tym w artykule: SmartPIP - Logika - analiza wstępna
W jak dużych odstępach czasu powinien więc zliczać nasz licznik?
To zależy od zadania, które stawiamy przed SmartPIP'em, a w tym zakresie mamy ich dwa:
1. Odliczanie czasu pomiędzy pomiarami światła
Przyjąłem, że 5 minut będzie wystarczającym odstępem czasu pomiędzy poszczególnymi pomiarami. Możemy więc odliczać czas w odcinkach 5 minutowych.
Wymóg 1: odliczanie pomiaru co 5 minut
2. Odliczanie momentu ataku ofiary
Tutaj przydałby się bardziej dokładny zegar niż w przypadku pomiaru światła. Nie musimy tego czasu mierzyć w pojedynczych sekundach, ale na pewno liczenie w odcinkach kilku sekundowych przydałoby się po to, by czas ataku był trudny do przewidzenia przez ofiarę usilnie nasłuchującego i szukającą naszego SmartPIP'a.
Wymóg 2: odliczanie co kilka sekund
Skoro mamy wymóg odliczania czasu co kilka sekund oraz mamy do dyspozycji Timer2, to zastanówmy się jak go ustawimy i co osiągniemy?
Timer2 jest timerem 8-bitowym i taktowany będzie zewnętrznym kwarcem 32.768kHz podłączonym do pinów TOSC1 i TOSC2:
Mamy do dyspozycji preskaler więc sprawdźmy jakie mamy dostępne dzielniki:
Timer2 może generować przerwanie w momencie jego przepełnienia, czyli doliczenia co 256 impulsów kwarcu. Policzmy jaki musielibyśmy zastosować preskaler, aby Timer2 odliczył nam dokładnie jedną sekundę:
Mamy do dyspozycji taki preskaler więc odmierzanie czasu co 1 sekundę jest możliwe. Ale ponieważ nie ma takiej potrzeby, a zależy nam na oszczędzaniu energii, powinniśmy wybudzać mikrokontroler rzadziej.
W takim układzie policzmy, co ile sekund będzie generowane przerwanie, gdy zastosujemy maksymalny preskaler, czyli 1024. Tym razem policzymy to z wykorzystaniem proporcji:
Czyli jeżeli ustawimy preskaler Timer2 na 1024, to uzyskamy przerwanie co 8 sekund.
Czy to nam wystarczy?
Nie da się już w tym zestawieniu (ATmega8 + Timer2 + kwarc 32,768kHz + tryb Power Save) wydłużyć sprzętowo okresu między przerwaniami, więc musi nam te 8 sekund wystarczyć. W sumie to bardzo dobry interwał czasowy - nie za mały i nie za duży.
Wracamy do wymogów określonych na początku tego artykułu
Dokładność odliczania momentu ataku ofiary określiłem na kilka sekund. Mamy przerwanie co 8 sekund i to wystarczająca moim zdaniem dokładnością.
A pomiary oświetlenia?
Policzmy, ile będziemy mieć przerwań Timer2 na jedną godzinę:
Wymóg dot. odstępów pomiędzy pomiarami oświetlenia określiłem wstępnie na 5 minut, czyli 12 razy w ciągu godziny. Niestety dzieląc 450 przez 12 nie otrzymam liczby całkowitej. Liczbę całkowitą otrzymam dzieląc przez 10 lub 9. Zostawmy ten wymóg do decyzji w późniejszym czasie, gdyż być może ograniczą go inne czynniki.
Testujemy licznik czasu
Wypadałoby przetestować nasz licznik czasu zarówno pod kątem programu jak i poboru prądu przez mikrokontroler. Zrobimy to w następnym artykule: SmartPIP: Licznik czasu - testowanie
Artykuł jest częścią cyklu: SmartPIP - Elektroniczny dręczyciel
W jak dużych odstępach czasu powinien więc zliczać nasz licznik?
To zależy od zadania, które stawiamy przed SmartPIP'em, a w tym zakresie mamy ich dwa:
1. Odliczanie czasu pomiędzy pomiarami światła
Przyjąłem, że 5 minut będzie wystarczającym odstępem czasu pomiędzy poszczególnymi pomiarami. Możemy więc odliczać czas w odcinkach 5 minutowych.
Wymóg 1: odliczanie pomiaru co 5 minut
2. Odliczanie momentu ataku ofiary
Tutaj przydałby się bardziej dokładny zegar niż w przypadku pomiaru światła. Nie musimy tego czasu mierzyć w pojedynczych sekundach, ale na pewno liczenie w odcinkach kilku sekundowych przydałoby się po to, by czas ataku był trudny do przewidzenia przez ofiarę usilnie nasłuchującego i szukającą naszego SmartPIP'a.
Wymóg 2: odliczanie co kilka sekund
Skoro mamy wymóg odliczania czasu co kilka sekund oraz mamy do dyspozycji Timer2, to zastanówmy się jak go ustawimy i co osiągniemy?
Timer2 jest timerem 8-bitowym i taktowany będzie zewnętrznym kwarcem 32.768kHz podłączonym do pinów TOSC1 i TOSC2:
Mamy do dyspozycji preskaler więc sprawdźmy jakie mamy dostępne dzielniki:
Timer2 może generować przerwanie w momencie jego przepełnienia, czyli doliczenia co 256 impulsów kwarcu. Policzmy jaki musielibyśmy zastosować preskaler, aby Timer2 odliczył nam dokładnie jedną sekundę:
Mamy do dyspozycji taki preskaler więc odmierzanie czasu co 1 sekundę jest możliwe. Ale ponieważ nie ma takiej potrzeby, a zależy nam na oszczędzaniu energii, powinniśmy wybudzać mikrokontroler rzadziej.
W takim układzie policzmy, co ile sekund będzie generowane przerwanie, gdy zastosujemy maksymalny preskaler, czyli 1024. Tym razem policzymy to z wykorzystaniem proporcji:
Czyli jeżeli ustawimy preskaler Timer2 na 1024, to uzyskamy przerwanie co 8 sekund.
Czy to nam wystarczy?
Nie da się już w tym zestawieniu (ATmega8 + Timer2 + kwarc 32,768kHz + tryb Power Save) wydłużyć sprzętowo okresu między przerwaniami, więc musi nam te 8 sekund wystarczyć. W sumie to bardzo dobry interwał czasowy - nie za mały i nie za duży.
Wracamy do wymogów określonych na początku tego artykułu
Dokładność odliczania momentu ataku ofiary określiłem na kilka sekund. Mamy przerwanie co 8 sekund i to wystarczająca moim zdaniem dokładnością.
A pomiary oświetlenia?
Policzmy, ile będziemy mieć przerwań Timer2 na jedną godzinę:
Wymóg dot. odstępów pomiędzy pomiarami oświetlenia określiłem wstępnie na 5 minut, czyli 12 razy w ciągu godziny. Niestety dzieląc 450 przez 12 nie otrzymam liczby całkowitej. Liczbę całkowitą otrzymam dzieląc przez 10 lub 9. Zostawmy ten wymóg do decyzji w późniejszym czasie, gdyż być może ograniczą go inne czynniki.
Testujemy licznik czasu
Wypadałoby przetestować nasz licznik czasu zarówno pod kątem programu jak i poboru prądu przez mikrokontroler. Zrobimy to w następnym artykule: SmartPIP: Licznik czasu - testowanie
Artykuł jest częścią cyklu: SmartPIP - Elektroniczny dręczyciel
Brak komentarzy:
Prześlij komentarz