Wspólnie projektujemy: Częstościomierz, część 2
Idea współdziałania na rzecz określonego celu działa i rodzą się różne pomysły na jego realizację. Są różne: mniej skomplikowane i bardzie zaawansowane. Każdy jest na „miarę jego autora”. Przedstawię kilka (własnych i nadesłanych) i jestem przekonany, że każdy znajdzie tutaj coś dla siebie.
Etap opracowania układu liczącego
Pierwszy etap dotyczący opracowania koncepcji zliczania jest zamknięty. Do redakcji napłynęło kilka propozycji realizacji tej części. Choć w gruncie rzeczy sposób rozwiązania pomiaru jest jeden (należy zliczyć przychodzące impulsy), jednak do jego realizacji prowadzi „kilka dróg”. W sumie nie jest istotne jak, istotne jest by działało.
Pomysł „starożytny”
Krzysztof Markowski napisał:
Na początku lat 90. skonstruowałem urządzenie, które nazwałem IMPULSOMIERZ TTL. Zostało ono wykonane z użyciem dostępnych wówczas technik i podzespołów. Podstawowe elementy to układy cyfrowe TTL. Sposób wykonania płytek dwustronnych to malowanie farbą nitro, za pomocą grafionu, na wcześniej nawierconym laminacie dwustronnym (synchronizacja pomiędzy warstwami). Projekt schematu i płytek zrobiony za pomocą ołówka, gumki i papieru milimetrowego. Obudowa z blachy aluminiowej i fragmentów innych urządzeń. Miernik działa, być może trochę topornie, ale bezawaryjnie przez te wszystkie lata i jestem z niego mimo wszystko bardzo zadowolony. Przesyłam te materiały chyba raczej jako ciekawostkę, a nie przykład do wykonania czegoś konkretnego w obecnych czasach. Impulsomierz służy do pomiaru częstotliwości, okresu, czasu trwania impulsu ujemnego oraz zliczania liczby impulsów doprowadzonych na wejście. Ma dwa zakresy: dla f= 999,000 kHz / 50,000 MHz; dla T= 999,999 S / 999,999 mS. Mierzy sygnały na poziomie TTL, a do pomiaru innych sygnałów stosowane są różne przystawki podłączane do wejścia, jak prosty tranzystorowy wzmacniacz wejściowy czy preskaler 1:10/1:100 opisany w jednym z numerów „Elektroniki Praktycznej”. Mój docelowy projekt miernika jest zlepkiem różnych rozwiązań zaczerpniętych w tamtych czasach z czasopisma „Radioelektronik”.
To pomysł, który „przeniósł” mnie do dawnych czasów. Rzeczywiście, z pewnego punktu widzenia, na taki projekt można spojrzeć jak na ciekawostkę, gdyż dzisiaj raczej w tej technologii nie tworzy się docelowych urządzeń, przede wszystkim ze względów na koszty, wrażliwość na pomyłki oraz brak możliwości rozbudowy. Jednak warto mieć świadomość, że nic nie bierze się znikąd. To, co mamy obecnie jest sumą wszystkich działań zaistniałych na przestrzeni minionych lat. Wraz z ewolucją samej elektroniki i pojawianiem się nowych komponentów zmieniały się metody projektowe. Tak się kiedyś to robiło. Patrząc na konstrukcję z innej perspektywy, to praca wykonana przez autora jest godna uznania. Przyznam szczerze, że kilkadziesiąt lat temu sam miałem podobne pomysły, jednak zabrakło mi determinacji, by je zrealizować do końca.
Wariant ten można „uwspółcześnić” przez zastosowanie układów CPLD (układy logiki programowalnej, gdzie całą funkcjonalność urządzenia można przenieść do jednego układu). Takie rozwiązanie ma niewątpliwą zaletę: wymaga zastosowania prostego mikrokontrolera, którego zadaniem stanie się obsługa przycisków i wyświetlenie wyników pomiaru na wyświetlaczu. Postaram się zaprezentować takie rozwiązanie w jednym z kolejnych numerów, jednak niezbędne będzie nawiązanie kontaktu z autorem, który (mam nadzieję) wyrazi chęć współpracy.
Pomysł nowoczesny
Znacząco inne podejście zaproponował kolejny twórca. Waldek Hebisch napisał (pozwoliłem sobie skrócić tekst):
Miernik częstotliwości i czasu
Chciałbym zaproponować dość oczywistą metodę pomiaru, która daje dużą dokładność. Nie widziałem wcześniej opisu takiej metody w popularnych propozycjach mierników częstotliwości.
Zaczynając od podstaw, pomiar częstotliwości polega na tym, że obserwujemy pewną liczbę okresów mierzonego przebiegu, powiedzmy N, i mierzymy czas T jaki jest zajęty przez te N okresów. Wtedy częstotliwość f to f = N/T. Stare, klasyczne liczniki częstotliwości używały ustalone „okrągłe” T, np. T=1 s. To unika arytmetyki ale wprowadza znaczny błąd dla przebiegów średniej i niskiej częstotliwości, bo faktyczne T może się różnić o prawie jeden okres przebiegu mierzonego od naszego ustalonego T. Dla przebiegów małej częstotliwości często jest proponowana metoda pomiaru okresu, wtedy N=1. Ale dla przebiegów średniej częstotliwości okres jest stosunkowo krótki i dokładność względna pomiaru jest ograniczona. W proponowanej metodzie N dobieramy tak by T było większe od ustalonego czasu T0. To pozwala zmierzyć T z dużą dokładnością względną. Przy takiej metodzie pomiaru dokładność cyfrowa jest w pewnym sensie optymalna, ograniczeniem jest stabilność zegara miernika i części analogowe (jak wykrywanie zboczy sygnału).
Algorytmiczny opis metody jest następujący: patrzymy na kolejne zbocza sygnału. Notujemy czas wystąpienia pierwszego zbocza. Następnie odczekujemy przez czas T0, zliczając zbocza sygnału. Potem notujemy czas pierwszego zbocza po odczekaniu. Liczbę okresów N uzyskujemy jako wynik zliczania. Czas T jest różnicą między czasem ostatniego zbocza a czasem pierwszego zbocza.
W zasadzie tę metodę można by zaprogramować na prawie dowolnym mikrosterowniku. Ale czysto programowa realizacja ma liczne ograniczenia, dlatego dalej patrzę na rozwiązania używające wyspecjalizowanego sprzętu. Teoretycznie do pomiaru wyżej wystarczyłyby dwa liczniki i odpowiednie układy bramkujące. Współcześnie pewnie można by użyć układów programowalnych. Ale otrzymanie wyniku wymaga obliczenia, które najłatwiej wykonać za pomocą mikrosterownika. Naturalne jest pytanie, czy cały pomiar da się zrealizować wykorzystując tylko sprzęt wbudowany w mikrosterownik. I tu odpowiedź brzmi: tak, popularne mikrosterowniki STM32 mają potrzebny sprzęt. W szczególności, wystarcza tania „minimalna płytka rozwojowa” z procesorem STM32F103 lub (lepiej) chińskim klonem. Zacznijmy od górnego zakresu częstotliwości. Procesory STM (tak jak wiele innych) próbkują stan wejścia na zboczach zegara systemowego, co oznacza, że jeśli impuls jest krótszy niż okres zegara STM, to STM może go nie zauważyć. To ogranicza górny zakres mierzonych częstotliwości do połowy częstotliwości zegara STM, a dla niesymetrycznych przebiegów nawet do mniejszych częstotliwości. Procesor STM32F103 może pracować z zegarem 72 MHz, co daje teoretyczne maksimum 36 MHz dla mierzonego sygnału. Dla porządnego sygnału 20 MHz nie należy więc oczekiwać trudności z tej strony. Jeśli potrzebne są większe częstotliwości to popularny APM32F103 może pracować z zegarem 96 MHz, zaś MH32F103 z zegarem 216 MHz. A więc używając MH32F103 teoretycznie możemy mierzyć sygnały do 100 MHz.
Pomiar czasu zboczy można uzyskać używając funkcji „capture” liczników/stoperów STM. Są jednak pewne trudności. Jedna to fakt, że liczniki w STM32F103 są tylko 16-bitowe i po krótkim czasie następuje przepełnienie. Tę trudność można rozwiązać programowo, zliczając przepełnienia licznika, co w pewnym sensie programowo rozszerza zakres licznika do potrzebnej wartości. Używając 32-bitowej zmiennej do zliczania efektywnie dostaniemy 48-bitowy licznik, co powinno wystarczyć do pomiaru częstotliwości. Inna trudność to fakt, że funkcja „capture” działa w sposób ciągły, jeśli nowe zbocze sygnału pojawi się zanim odczytamy poprzednią wartość, to poprzednia wartość zostanie stracona, a odczyt da nową wartość. Jest to problem tylko przy pomiarze dużych częstotliwości i można by go rozwiązać przez przełączanie zakresów i użycie innej metody dla najwyższych częstotliwości. Ale można też zaadaptować proponowaną metodę by działała od kilkudziesięciu Hz do kilkudziesięciu MHz bez przełączania zakresów. Mianowicie, funkcja „capture” opcjonalnie po odpowiedniej konfiguracji działa tylko na co ósmym zboczu sygnału. To znacznie redukuje liczbę wartości, które trzeba by odczytać. Jednak byłaby ona ciągle zbyt duża do programowego odczytu. Procesor STM32 ma kanały bezpośredniego dostępu do pamięci (DMA) i DMA powinno mieć wystarczającą wydajność dla maksymalnej częstotliwości. W tej wersji pomiar wymaga co najmniej 8 okresów mierzonego sygnału, co dla bardzo niskich częstotliwości dość znacznie wydłużałoby czas pomiaru. Np. 1/100 Hz przy pomiarze okresu wymaga czasu pomiędzy 100 s a 200 s. Wymagając 8 okresów mielibyśmy czas co najmniej 800 s. Dlatego dla bardzo niskich częstotliwości potrzebne jest przełączanie na wersję wykorzystującą 1 okres. Wydaje się, że takie przełączanie da się zrobić automatycznie, ale tylko napisanie i przetestowanie odpowiedniego programu da definitywną odpowiedź.
(…)
——– ciach! ——–
To jest tylko fragment artykułu, którego pełna wersja ukazała się w numerze majowym czasopisma Zrozumieć Elektronikę (ZE 5/2023). Pełna wersja czasopisma umieszczona jest pod tym linkiem. Natomiast niepełna, okrojona wersja, pozwalająca zapoznać się z zawartością numeru ZE 5/2023 znajduje się tutaj.
Andrzej Pawluczuk
apawluczuk@vp.pl
Uwaga! Osoby, które nie są (jeszcze) stałymi Patronami ZE, mogą nabyć PDF-y z pełną wersję tego numeru oraz wszystkich innych numerów czasopisma wydanych od stycznia 2023, „stawiając kawę” (Cappuccino = 10 złotych za jeden numer czasopisma w postaci pliku PDF).
W tym celu należy kliknąć link (https://buycoffee.to/piotr-gorecki), lub poniższy obrazek
Następnie wybrać:
– jeśli jeden numer ZE – CAPPUCINO (10 zł),
– jeśli kilka numerów ZE – WSPIERAM ZA. I tu wpisać kwotę zależną od liczby zamawianych numerów – wydań (N x 10zł),
Wpisać imię nazwisko.
Podać adres e-mail.
Koniecznie zaznaczyć: „Chcę dołączyć wiadomość dla Twórcy” i tu wpisać, który numer lub numery mamy wysłać na podany adres e-mailowy.