Nastawny dzielnik częstotliwości Lorda Voldemorta

Nastawny dzielnik częstotliwości Lorda Voldemorta
5 (100%) 1 vote

nastawny dzielnik częstotliwości w fazie budowy i testów Heh tytuł może trochę tajemniczy lub zakręcony, ale niech tam. Zaprezentuję programowalny dzielnik częstotliwości, do zastosowania przy pracy z nie dużymi częstotliwościami. Powstał na potrzeby jednego znajomego o ksywce Lord Voldemort  😉  jako moje urozmaicenie od … powiedzmy codzienności.
Układ ma dostosować częstotliwość zbieranych impulsów do możliwości przetworzenia ich przez urządzenie kolekcjonujące – RFX, i jest kontynuacją tematu odczytu zużycia energii elektrycznej.

Kilka słów wstępu.

Głównym założeniem było dopasowanie częstości wysyłanych impulsów, do potrzeb – nie częściej niż jeden na 5 sekund. Oczywiście zbierane w tym czasie kolejnie następujące po sobie impulsy nie mogły przepadać, więc tym samym zrodziła się idea zbudowania dzielnika częstotliwości. Następnie czas trwania impulsu wyjściowego musi być dostatecznie długi by końcowe urządzenie kolekcjonujące mogło go prawidłowo zinterpretować. Dzielnik częstotliwości zasilany ma być ze stałego źródła 5V DC. Reszta funkcjonalności przedstawionych po niżej to moja „radosna twórczość” w myśl zasady ma być niezawodnie, funkcjonalnie i jasno oraz komunikatywnie dla użytkownika.

Standardowo do podobnego zastosowania nadawała by się dekada licząca bądź podobny scalak z odpowiednim wyjściem podłączonym do pinu reset dla uzyskania różnego stopnia podziału. No tak, a gdy zaplanuje się podział do wyboru w zakresie: 2, 4, 5, 8, 10, 16, 20, 25, 32, 40, 50 i 64, to takich scalaków musiało by być kilka … Na szczęście dawno dawno temu wymyślono stwory zwane mikrokontrolerami  😉 Więc funkcjonalność układu rozrosła się do sygnalizacji odebrania i nadania impulsu za pomocą diody świecącej, możliwości wyboru czasu trwania sygnału wyjściowego, jak i oczywiście stopnia podziału, z pośród zaplanowanych wartości. Modyfikacji wszystkich nastaw dokonuje się jednym przyciskiem, a nastawy zapamiętywane są w pamięci nieulotnej. Więc po zaniku zasilania nie trzeba nastawiać parametrów pracy na nowo. Diody nie zostały podłączone do wyjścia i wejścia dzielnika z uwagi na fakt, że krótko trwające sygnały nie spowodowały by pożądanego efektu – zauważalnego dla ludzkiego oka. Dodatkowo diody LED informują użytkownika o jego poczynaniach w trakcie wprowadzanych nastaw.

Tym sposobem powstało zapotrzebowanie na dwa piny jako wejście i wyjście, dwa piny na diody sygnalizacyjne, oraz jeden pin na przycisk (w pierwszym planie miały być 2 guziki). Razem 5 szt. + zasilanie i pin reset daje w wyniku 8 pinów. Wybór padł na ATtiny13  :mrgreen: Po oprogramowaniu podstawowej funkcjonalności – wizualizacje i wybór stopnia podziału, mały tiny13 stał się nie wystarczający. Została jeszcze do stworzenia funkcja wyboru czasu trwania sygnału wyjściowego. Funkcjonalność może wydać się zbędna. Niemniej nie mając dostępu do urządzenia zbierającego impulsy, nie miałem możliwości dokonania pomiarów lub testu i ta właśnie funkcjonalność stała się konieczna.

Maksymalna częstotliwość pracy układu w chwili obecnej ograniczona jest czasem trwania impulsu wyjściowego, i kolejnie, wybraną niską częstotliwością pracy oscylatora taktującego sam µC. Czas trwania impulsu wyjściowego można modyfikować w zakresie ustalonym w zbudowanym urządzeniu, dzięki zaimplementowanej funkcji nastawy.

Obsługa tego wynalazku.

Najistotniejsze to pozałączać odpowiednio wejście i wyjście i podłączyć prawidłowe zasilanie. Praktycznie to koniec. Jakby ktoś lubił to można obserwować beztroskie mruganie LEDami sygnalizującymi odbiór i wysyłanie impulsów.
I to by było na tyle … ale jak wiemy układ posiada przycisk z funkcjonalnością zadajnika nastaw.

Aby ustawić stopień podziału z przygotowanego zakresu (2, 4, 5, 8, 10, 16, 20, 25, 32, 40, 50 i 64) należy:
wyłączyć zasilanie, przytrzymać naciśnięty przycisk,
– kolejnie załączyć zasilanie,
– przycisk należy puścić dopiero po zaświeceniu się obu diod LED,
– teraz mamy 5 sekund na zmianę nastaw, interwał zostaje przedłużony po każdym naciśnięciu przycisku w trakcie konfiguracji,
– by ustawić odpowiedni stopień podziału należy kliknąć przyciskiem wybraną ilość razy:

1x klik – stopień podziału 2
2x klik – stopień podziału 4
3x klik – stopień podziału 5
4x klik – stopień podziału 8
5x klik – stopień podziału 10
6x klik – stopień podziału 16
7x klik – stopień podziału 20
8x klik – stopień podziału 25
9x klik – stopień podziału 32
10x klik – stopień podziału 40
11x klik – stopień podziału 50
12x klik – stopień podziału 64

w trakcie klikania będzie mrugała dioda obsługujące wejście, tak by użytkownik miał pewność, że układ dobrze zinterpretował kliknięcie,
– po tej czynności należy chwilę poczekać, po czym układ zaprezentuje wybraną nastawę, mrugając odpowiednią (wyklikaną) ilość razy,
– gotowe, ustawienie automatycznie zostanie zapisane w pamięci nieulotnej µC,
– w razie pomyłki operację nastawy rozpoczynamy od początku,
– każdorazowo po modyfikacji stopnia podziału zostanie uaktywnione mruganie diodami podczas łapania i wysyłania impulsów.

Aby nastawić czas trwania impulsu wyjściowego, należy podczas pracy układu przytrzymać przycisk wciśnięty około dwóch sekund, aż do czasu zaświecenia się dwóch diod świecących. Kolejnie mamy 5 sekund na rozpoczęcie klikania, by tym sposobem wybrać jeden z czasów trwania impulsu wyjściowego:

1x klik – impuls o czasie trwania ~60ms
2x klik -impuls o czasie trwania ~160ms
3x klik -impuls o czasie trwania ~260ms
4x klik -impuls o czasie trwania ~500ms

Tak jak wcześniej, każde użycie przycisku wydłuża czas aktywności trybu ustawień o kolejny interwał 5 sekund. Podczas klikania, układ potwierdzać będzie zrozumienie polecenia mrugnięciem „diody wyjściowej”.  Po zakończeniu klikania układ zaprezentuje wybrany tryb mrugając stosowną ilość razy diodą potwierdzającą generowanie sygnału na wyjściu. Również po tej operacji aktualna nastawa zapisywana jest w pamięci nieulotnej.

W obydwu przypadkach jeśli nie podejmiemy akcji klikania po uaktywnieniu dowolnej opcji nastaw zaprezentowana zostanie poprzednio wybrana aktywna opcja. Układ posiada ustawienia „fabryczne”, gdzie stopień podziału nastawiony jest na 10, a długość impulsu wyjściowego wynosi 50ms. I przyjmie je jako bieżące po każdorazowym stwierdzeniu wartości nieprawidłowej odczytanej z pamięci nieulotnej.

Opcja dodatkowa wprowadzona przy testach prototypu. Oprogramowałem też możliwość wyłączenia diodek LED odpowiedzialnych za mruganie podczas łapania i generowania impulsów. W ten sposób układ może być niemy, podczas standardowej pracy. Ograniczy to zużycie energii oraz zapobiegnie drażnieniu użytkownika mruganiem …. Krótkie kliknięcie wyłączy więc diody LED informacyjne. Kolejne załączy …… i tak w kółko.
Każdorazowo po wybraniu tej opcji układ zamruga obiema diodami by użytkownik był pewny o zamierzonej akcji. Bieżąca nastawa zapamiętana zostaje w pamięci EEPROM. Tak jak wspomniałem wcześniej opcja mrugania informacyjnego zostaje uaktywniona zawsze po modyfikacji stopnia podziału.

Na chwilę obecną obsługa układu wygląda w sposób następujący  😉

Kilka słów „bełkotu”.  :mrgreen:

Działanie układu zasadniczo polega na funkcjonalności przerwań zaimplementowanych w układzie µC. Przerwanie zewnętrzne INT0 obsługuje zliczanie doprowadzonego sygnału. I uruchamiane jest po wykryciu każdego zbocza narastającego. Dodatkowo do pracy zaprzęgnąłem przerwanie wewnętrzne generowane przez timer0. Znajduje ono zastosowanie do odmierzania upływu czasu. Co z kolei wykorzystywane jest do wytyczania czasu trwania sygnału wyjściowego i do mrugania diodami  podczas normalnej pracy. Dodatkowo w trakcie nastaw, do obsługi trybu konfiguracji.
W trakcie aktywnego trybu wyboru długości trwania sygnału wyjściowego, najlepiej jest odłączyć sygnał wejściowy, by przypadkiem nie wygenerował dodatkowego mrugnięcia diodą wyjściową. Może to wprowadzić w błąd użytkownika jako przypadkowy komunikat mrugnięcia. Oczywiście odłączenie nie jest obowiązkowe, niemniej trzeba mieć świadomość możliwości wystąpienia zaburzeń mrugania. Dzielnik częstotliwości będzie pracował niezależnie od aktywności tego trybu konfiguracji.

Każdorazowa modyfikacja nastaw powoduje zapis ustawionej wartości do pamięci nieulotnej tylko pod warunkiem zmiany nastawy. Gdy układ po uruchomieniu stwierdzi, że wartość odczytana z EEPROM jest nieprawidłowa, do pracy przyjmie nastawę „fabryczną”. Wartość w EEPROM zmodyfikowana zostanie dopiero po nastawieniu nowej przez użytkownika.
Ponieważ dzielnik częstotliwości zbudowany w oparciu o µC pracuje na wewnętrznym oscylatorze taktującym prezentowane czasy trzeba traktować szacunkowo – w przybliżeniu. Oczywiście nic nie stoi na przeszkodzie aby to poprawić i wyśrubować dokładność i precyzję układu. W prezentowanym rozwiązaniu nie ma takiej potrzeby.

Trochę o hardware.

Zbudowany układ ma ściśle współpracować z dwoma kolejnymi modułami. Pierwszy to „detektor błyśnięć” licznika energii, a kolejny to nadajnik RF zbudowany w oparciu o IC PT2264, który już prezentowałem wcześniej. Moduł nadajnika RF jest komercyjnym czujnikiem otwarcia okna, drzwi, współpracującym wraz z magnesem stałym.
Zebrane i przetworzone impulsy za pomocą detektora błyśnięć, wysyłane mają być wspomnianym nadajnikiem RF do urządzenia RFX. A potem to już będzie się działo … w aplikacji Domoticz :mrgreen:

moduł nadajnika RF zbudowany w oparciu o IC PT2264, widok po modyfikacji

Prawidłowy zakres napięcia zasilania dla układu nadajnika RF mieści się w zakresie 8-15V i jest wyznacznikiem dla doboru odpowiedniego zasilacza. Pozostała część elektroniki może pracować zasilana napięciem 5V. Więc przy zastosowaniu dodatkowego stabilizatora posłużyć się można standardowym zasilaczem wtyczkowym 9V lub 12V DC o niewielkiej mocy.  W takim wypadku należy dopasować sygnał wyjściowy z µC, doprowadzony do układu nadajnika RF pracującego z wyższym napięciem zasilania.
Aby zastosować gotowy nadajnik RF trzeba go zmodyfikować w sposób kosmetyczny. Przeróbka polega na wymontowaniu kontaktronu 😉

Sam układ scalony kodera transmisji RF pracuje w podstawowej aplikacji, wykonując transmisję po chwilowej aktywacji jego zasilania. Funkcjonalność taką zapewniał kontaktron z drobną elektroniką od spodu PCB. Dokładnie działa to tak: po wykryciu zbocza narastającego generowanego rozwarciem styków kontaktronu w określonym interwale czasu zasilany jest IC PT2264.
Producent tego modułu zadbał by nie okroić możliwości konfiguracji układu scalonego. Użytkownik ma więc możliwość określenia częstotliwości pracy wbudowanego rezonatora (zworka koło antenki teleskopowej). Może też modyfikować adres układu nadawany podczas transmisji RF (duży wielo-stykowy goldpin).

Reasumując – dla mnie w trakcie konstruowania ważne było: sposób wyzwalania pracy moduły RF, oraz napięcia pracy poszczególnych modułów funkcjonalnych, odpowiednie postrzeganie i dostosowanie impulsów wejściowych dla dalszego przetwarzania.
Podczas swoich rozważań postanowiłem też zmniejszyć ilość klocków i moduł detektora błyśnięć zintegrować na PCB programowalnego dzielnika częstotliwości. Udało się to bardzo łatwo osiągnąć dzięki Panu Tomaszowi, który zaproponował mi i zaoferował miniaturowy komparator TL331. Wydawało by się, że układ powstał ekstra dla tego zastosowania :mrgreen: Nie dość że malutki, to jeszcze stworzony do współpracy z układami cyfrowymi.

Kilka przebiegów czasowych dla zobrazowania jak pracuje dzielnik częstotliwości.

długość impulsu wyjściowego 1

długość impulsu wyjściowego 1

długość impulsu wyjściowego 2

długość impulsu wyjściowego 2

Na przedstawionych rysunkach można oglądnąć przebiegi czasowe będące wynikiem zmiany nastawy długości impulsu wyjściowego. Dodatkowo analizować można wpływ nastawy na rzeczywistą długość impulsu. Wygenerowany impuls zaznaczony jest strzałką – opis długości czasu trwania znajduje się w menu z prawej strony.

długość impulsu wyjściowego 3

długość impulsu wyjściowego 3

długość impulsu wyjściowego 4

długość impulsu wyjściowego 4

 

 

 

 

 

Poniżej wizualizacja jak pracuje dzielnik częstotliwości, prezentacja kilku stopni podziału.

podział przez 2, impuls 1

podział przez 2, impuls 2

podział przez 2, impuls 3

podział przez 5, impuls 3

podział przez 10, impuls 1

podział przez 10, impuls 2

podział przez 20, impuls 1

podział przez 40, impuls 1

I na koniec ciekawostka dla dociekliwych.

przebieg czasowy 1

przebieg czasowy 1a

przebieg czasowy 1b

przebieg czasowy 1c

Powiem jedynie tyle: proszę zwrócić uwagę na czas trwania sygnału wysokiego na wyjściu i całego okresu na poszczególnych wykresach  🙂

A.D. 2016-10-06

 


przydatne linki:
Wiki manual dla Domoticz.
opis układu komparatora TL331 na witrynie producenta,

Share Button
Tagi , , , , , .Dodaj do zakładek Link.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

one × one =