Wzmacniacze wejściowe do częstościomierza (3). Rozszerzenie możliwości AVT3275

Wzmacniacze wejściowe do częstościomierza (3). Rozszerzenie możliwości AVT3275

W ostatniej części artykułu wyjaśnimy kilka istotnych kwestii dotyczących działania całego urządzenia oraz omówimy działanie programu sterującego i obsługę za pomocą komend przesyłanych poprzez program typu terminal.

Podstawowe parametry:
  • poszerza możliwości niemal każdego miernika częstotliwości/czasu, dopasowując parametry mierzonych sygnałów do wejść miernika,
  • zawiera wzmacniacze sygnału cyfrowego, sygnału HF oraz sygnału VHF oraz multiplekser pozwalający na wygodne przełączanie pomiędzy nimi,
  • zawiera łatwo dostępne elementy i daje możliwość dokonania różnych modyfikacji, zarówno sprzętowych, jak i programowych.

Pomiary próbne

Sygnał o częstotliwości 40 MHz posłużył do sprawdzenia opóźnienia wnoszonego przez komparator, bramki i płytkę multipleksera dla wykonania z układami 74LVC. Kanał numer jeden został pokazany na rysunku tytułowym do artykułu (kolor żółty), to przebieg wejściowy, drugi (kolor lazurowy) wyjście 1:1 na płytce multipleksera (złącze J4 na AVT3277/0). Maksymalna częstotliwość, jaką udało się zmierzyć, to 111 MHz. Trzeba mieć świadomość, że maksymalna częstotliwość pracy układów LVC jest niższa i zależy od konkretnego egzemplarza układu. Pomiar 120 MHz był niemożliwy, miernik wskazał połowę częstotliwości, co wynika z oscylogramu z rysunku 12 (kolory sygnałów takie, jak na poprzednim rysunku). Film prezentujący pomiary można zobaczyć na: https://bit.ly/3Eeyt5h.

Rysunek 12. Oscylogram podczas pomiaru częstotliwości 120 MHz, którego efektem było niewłaściwe wskazanie

Tryb dual i single mode

Licznik częstotliwości ma dwa wejścia pomiarowe. Oprogramowanie w wersji V2.0 może pracować w dwóch trybach: dual (double), gdzie każde z wejść jest niezależne oraz single, w którym wejście B (pin 3 JP1) podłączone jest do wyjścia 1:4 (złącze JP8 AVT3277/0). Tryb double pozwala na pomiar częstotliwości do 42 MHz na obu wejściach, tryb single do teoretycznie 168 MHz na wejściu A (F-meter może korzystać z dzielnika U5 na AVT3277/0), o ile zastosowano odpowiednio szybkie układy. Wyboru trybu dokonuje się w menu dostępnym po naciśnięciu przycisku MENU (fotografia 9) i przytrzymaniu przez ponad 2 sekundy, przycisku enkodera. Opcję single/double wybiera się, kręcąc enkoderem. Wyjście w menu następuje po kolejnym naciśnięciu przycisku MENU. Menu będzie dostępne, tylko gdy płytka multipleksera AVT3277/0 jest podłączona i gdy działa komunikacja.

Fotografia 9. Wybór trybu w menu dostępnym po naciśnięciu przycisku MENU

W trybie single mode możliwy jest pomiar częstotliwości większych niż 42 MHz. Wynika to z faktu, że logika programu w pewnych sytuacjach używa sygnału podzielonego przez dwa czy cztery. Niestety, im wyższa częstotliwość, tym mniejsze prawdopodobieństwo, że dzielnik nie zostanie przyłączony lub będzie to trwało długo i tak 50 MHz jest mierzone w kilka sekund, ale już 60 MHz w kilkanaście, a nawet kilkadziesiąt. Udało się zmierzyć 75 MHz, ale na włączenie dzielnika trzeba było czekać kilka minut. Dlatego, aby mierzyć większe częstotliwości, należy użyć trybu single mode i preskalera AVT3277/3 lub poczekać na zakończenie prac nad AVT3278, który będzie mierzył częstotliwości do 240 MHz.

TCXO AVT3276

Oprogramowanie AVT3275 w wersji 2.0 do komunikacji z TXCO używa interfejsu I2C, a nie UART, jak to było w wersji 1.xx. Dzięki temu UART może być zastosowany do innych celów, na przykład do komunikacji z modułem Bluetooth. Dodatkową funkcją AVT3276 jest generowanie wzorcowych częstotliwości wyprowadzonych na złącze J16. W wersji 1.xx programu były one ustalone na 1 MHz (pin 3 J16), 8 MHz (pin 4) i 16 MHz (pin 5). Wersja 2 pozwala na generowanie dowolnej częstotliwości, możliwej do uzyskania na timerze 16-bitowym. Maksymalna możliwa do uzyskania częstotliwość wynosi 40 MHz, minimalna około 0,02 Hz. Poza częstotliwością, możliwa jest regulacja wypełnienia sygnału. Program AVT3275 w wersji 2.0 pozwala ustawić dziewięć zdefiniowanych częstotliwości na jednym wyjściu. Są to 1, 2, 4, 5, 8, 10, 16, 20 i 40 MHz. Wypełnienie wynosi 50%, poza 16 MHz, którego wypełnienie wynosi 60%.

Fotografia 10. Wybór częstotliwości w menu numer 11

Wyboru częstotliwości dokonujemy w menu numer 11 – fotografia 10. Nie pojawi się ono, jeśli nie będzie modułu TCXO połączonego przez I2C. Częstotliwość wybiera się, naciskając przycisk enkodera. Wybrana częstotliwość pojawia się na wyprowadzeniu 3 złącza J16. Poza predefiniowanymi częstotliwościami można wybrać inną, a także ustawić w niej współczynnik wypełnienia. Możliwe jest to, gdy zmieniając przyciskiem zdefiniowane częstotliwości, zobaczymy ekran, na którym widać dodatkowe parametry: PSC, AAR, CCx i Duty. Domyślnie ustawione jest 500 kHz z wypełnieniem 50%. PSC, AAR i CCx to nazwy rejestrów timera STM32. Do TCXO AVT3276 wartości PSC i AAR są wysyłane po zmniejszeniu o jeden. Dzięki temu to, co widać na wyświetlaczu, jest pokazane w bardziej naturalny sposób.

Aby zmodyfikować ustawienia, należy nacisnąć przycisk SET. Modyfikowany parametr zacznie migać. Każde kolejne naciśnięcie SET powoduje przejście do kolejnego parametru. Enkoderem modyfikujemy wartość rejestru. Ustawienia zapisywane są w pamięci EEPROM. Zmiana AAR powoduje ustawienie CCx na połowę (bez reszty z dzielenia) wartości rejestru AAR (o ile jest to możliwe wypełnienie 50%).

Zakres częstotliwości jest bardzo szeroki i rozciąga się od poniżej 0,02 Hz do 40 MHz. Rozdzielczość regulacji wypełnienia, zależnie od ustawienia rejestru AAR, rozciąga się od 0,0015% do 50% dla najwyższej częstotliwości. Trzeba pamiętać, że wiele takich samych częstotliwości można uzyskać dla różnych ustawień preskalera. Przykładowo, sygnał 1 MHz uzyskamy dla PSC=80, AAR=1, jak i dla PSC=1, AAR=80, zgodnie ze wzorem:

Fout=80e6/PSC/AAR

Dla bezpieczeństwa warto sygnał wychodzący z TXCO zbuforować. W prototypie do tego celu zastosowano płytkę AVT3277/2, używając tylko układu U1 oraz kondensatorów filtrujących zasilanie. Wadą tego rozwiązania jest negowanie sygnału, co może być niewygodne, gdy używa się wypełnienia przebiegu innego niż 50%. W takim przypadku lepiej sprawdzi się płytka AVT3277/1, gdzie bufory można połączyć tak, aby sygnał nie był negowany. Jeśli pożądane byłoby generowanie sygnału na więcej niż jednym wyjściu TCXO, proszę Czytelników o e-maile.

Obsługa programowa

Gdy płytki pracują z zestawem AVT3275 (wymagany soft V2.0 lub nowszy), to użytkownik o nic się nie martwi, podłącza płytkę wejść lub płytki i multiplekser do częstościomierza, i cała konfiguracja odbywa się automatycznie, bez względu na to, czy płytka wzmacniacza jest podłączona do multipleksera AVT3277/0, czy płytki zasilacza AVT3277-ZAS. Inaczej jest w przypadku podłączenia płytki z własnym mikrokontrolerem. W takiej sytuacji trzeba samemu zapewnić odpowiednie sterowanie. Nie jest to możliwe bez znajomości protokołu komunikacyjnego.

Protokół jest ogólnie dostępny i dosyć prosty. Komunikacja z płytką wejść odbywa się przy taktowaniu I2C do 100 kHz. Adres płytki wzmacniacza wejściowego 0x40 (zapis 0x80, odczyt 0x81). Układ udostępnia rejestry, które zostały zdefiniowane na listingu 1.

Listing 1. Adres płytki wzmacniacza wejściowego to 0x40 (zapis 0x80, odczyt 0x81), układ udostępnia rejestry zdefiniowane poniższym kodem

enum {
AVT3277rej_OUT, AVT3277rej_PWM_H, AVT3277rej_PWM_L,
AVT3277rej_TYP, AVT3277rej_VER, AVT3277rej_INT,
AVT3277rej_ADC_H, AVT3277rej_ADC_L_KEY, AVT3277rej_ID0,
AVT3277rej_ID1, AVT3277rej_DT0, AVT3277rej_DT1,
AVT3277rej_PEC, AVT3277rej_END };

Funkcję poszczególnych rejestrów i ich adresy zostały zestawione w tabeli 1.

Szczegółowy opis znaczenia rejestrów wygląda następująco:

  • OUT – w czasie zapisu do tego rejestru: bit 0. – steruje czerwoną (niebieską) diodą na płytce wzmacniacza wejściowego AVT3277/1 i 3277/2; bit 1. – zieloną (bursztynową); bit 3. – multiplekserem analogowym U4 na płytce AVT3277/2 wybierającym tryb pracy AUTO/NAMUAL poziomu wyzwalania; bit 4. – uaktywnia przerwania od przycisku. Przerwanie jest kasowane automatycznie po odczycie rejestru. Bity 2. i 5. – nie są używane, należy ustawić je na wartość 0; bit 6. – załącza przekaźnik A; bit 7. – przekaźnik B, oczywiście o ile znajduje się on na płytce. W przypadku płytki preskalera AVT3277/3 funkcje rejestru są nieco inne. Bity 0. i 1. – bez zmian, ale diodą D4 „ON” sterujemy bitem 3.; bity 6. i 7. – ustawiają stopień podziału preskalera zgodnie z tabelą 2. Odczyt rejestru zwraca ostatnio zapisaną wartość.
  • PWM_H – starszy bajt PWM, z którego generowane jest napięcie polaryzujące wejście bramki (AVT3277/1) lub ustalające napięcie komparatora (AVT3277/2). Odczyt rejestru zwraca ostatnio zapisaną wartość.
  • PWM_L – młodszy bajt PWM, istotne są cztery starsze bity, młodsze należy ustawić na 0. Odczyt rejestru zwraca ostatnio zapisaną wartość.
  • TYP – tylko do odczytu, zwraca typ karty, możliwe wartości: 0x00 – AVT3277/3, 0x40 – AVT3277/1, 0xC0 – AVT3277/2.
  • VER – tylko do odczytu, wersja programu. Jedności zakodowane w starszym półbajcie, dziesiąte części w młodszym. Wersja 2.0 zwraca 0x20.
  • INT – tylko do odczytu, ustawiony bit 4. sygnalizuje przerwanie od przycisku, bit 0 restart płytki. Rejestr jest kasowany automatycznie po odczycie.
  • ADC_H – tylko do odczytu, osiem starszych bitów wartości przetwornika ADC.
  • ADC_L & KEY – tylko do odczytu, cztery młodsze bity ADC na bitach 4...7; bit 0. – zwraca fizyczny stan przycisku na płytce; bit 1. – zawiera wartość po odfiltrowaniu (likwidacja drżenia styków); bit 3. – sygnalizuje zmianę stanu przycisku od ostatniego odczytu rejestru; bit 4. – zawiera wartość, która spowodowała zmianę. Operacja & 0x0C na rejestrze zwróci 0x0C, gdy przycisk został naciśnięty i 0x04 po jego zwolnieniu. Dzięki bitom 3. i 4. nie trzeba bardzo często odczytywać płytki, aby stwierdzić nawet krótkotrwałe naciśnięcie przycisku.
  • ID0 i ID1 – do przyszłych zastosowań.
  • DT0 i DT1 – tylko do odczytu, data i czas kompilacji. Bity 4...7 – zawierają miesiąc; bity 0...3. – wartość bitów określa numer dnia, bit 0. dnia znajduje się w bicie 7. rejestru DT0. Na bitach 3...6. zapisana jest godzina kompilacji w formacie 24H, 0...2. zawierają bity minuty, co oznacza dokładność ośmiu minut. Ten trochę zawiły opis wyjaśnia funkcja rozkodowująca dane, pokazana na listingu 2.
  • PEC – tylko do odczytu, suma kontrolna CRC8. Sposób liczenia sumy kontrolnej został pokazany na listingu 3.
Listing 2. Funkcja rozkodowująca dane w rejestrach DT0 i DT1

// Miesiąc
uint8_t MM = AVT3277rej_DT1 >> 4;
// Dzień
uint8_t DD = ( AVT3277rej_DT1 & 15)
<< 1 | dane[ AVT3277rej_DT0 ] >> 7;
// Godzina
uint8_t gg = ( AVT3277rej_DT0 >> 3 ) & 0x1f;
// Minuta
uint8_t mm = ( AVT3277rej_DT0 & 7) << 3;
Listing 3. Sposób liczenia sumy kontrolnej w rejestrze PEC

crcPEC = 0;
for (uint16_t x = 0; x < AVT3277rej_END – 1; x++)
crcPEC = _crc8( dane[ x ] );
if ( crcPEC != dane[AVT3277rej_CRC] ) {
// blad CRC
}

uint8_t crcPEC;
uint8_t _crc8(uint8_t data) {
uint8_t i = 8;
crcPEC ^= data;
while (i--)
crcPEC = crcPEC & 0x80 ?
(crcPEC << 1) ^ 7 : crcPEC << 1;
return crcPEC;
}

Przykładowe dane zarejestrowane analizatorem LS2016 podczas odczytu i zapisu płytki AVT3277 zostały zamieszczone w materiałach dodatkowych. W pliku odczyt-zapis AVT3277 (1-3).kvdat znajdują się dane rejestratora, które można odczytać bezpłatnym programem dostępnym na stronie producenta analizatora LA2016.

Komunikacja z płytką multipleksera AVT3277/0 jest znacznie prostsza, bo wystarczy zapoznać się z notami katalogowymi zastosowanych w niej układów. Aby ułatwić zadanie, pokażę fragmenty listingów AVT3275. Na wstępie należy zaznaczyć, że adres układu PCA9544 na płytce pierwszego multipleksera to 0x77 (wszystkie piny JP1 i JP2 rozwarte, zapis 0xEE, odczyt 0xEF), dla drugiego zarezerwowano adres 0x75 (zwarte piny 3–4 JP2). Adres układu PCA9554 0x27 (zapis 0x4E, odczyt 0x4F), PCA9554A – 0x3F. Ze względu na dwie wersje układu PCA9554 (z sufiksem A i bez), program w AVT3275 obsługuje oba adresy.

Listing 4. Ustawianie multipleksera PCA9544

SubBus = 3;
SubBus |= 0b100;
HAL_I2C_Master_Transmit(&hi2c1, PCA9544_4MUX_7 << 1, &SubBus, 1, 2);

Zanim nastąpi komunikacja z układem U4 PCA9554, należy odpowiednio ustawić multiplekser U6 PCA9544. Aby to zrobić, należy wysłać dwa bajty, pierwszy z adresem układu do zapisu, drugi z numerem wybranego wyjścia. W AVT3275 realizuje to fragment programu z listingu 4. Po przyłączeniu multiplekserem układu PCA9554 do magistrali I2C AVT3275 wysyłana jest do niego konfiguracja – numer wybranego wyjścia. W AVT3275 realizuje to fragment programu pokazany na listingu 5.

Listing 5. Konfigurowanie układu PCA9554

uint8_t dane[2] = {
0x03, // Konfiguracja
0x00}; // Wszystkie porty wyjściami
HAL_I2C_Master_Transmit(
&hi2c1, AdrI2c_Ext8[0] << 1, dane, 2, 2);

Wysyłanie konfiguracji przy każdej transmisji ma tę zaletę, że w przypadku chwilowego odłączenia zasilania układu nie trzeba resetować AVT3275, co byłoby konieczne, gdyby układ był konfigurowany tylko raz po resecie. Po skonfigurowaniu wysyłane jest ustawienie wejść, podzielnik i stan diody D1. Ze względu na logikę ujemną bramek 3-stanowych oraz włączenie diody anodą do plusa, dane przed wysłaniem są negowane – listing 6. Struktura cfg w polu aktywne Wejście zawiera numer wejścia (zakres 0...3).

Listing 6. Fragment programu odpowiedzialny za wysyłanie ustawień wejść, podzielnika i stanu diody D1

dane[0] = 0x01; // Rejestr OUT
uint8_t config = 0;
switch ( cfg.aktywneWejscie ) {
case 0: config = 1; break; // wejście A
case 1: config = 2; break; // wejście B
case 2: config = 4; break; // wejście C
case 3: config = 8; break; // wejście D
}
if ( (readTimSys()% 1000) < 500 )
config |= 0x10; // Dioda CFG
config |= 0x80; // 1/1
//config |= 0x40; // 1/2
//config |= 0x20; // 1/4
dane[1] = config ^ 255; // Wartość
HAL_I2C_Master_Transmit(
&hi2c1, AdrI2c_Ext8[0] << 1, dane, 2, 2);

Następnie jest ustawiany, lub nie, bit 4. sterujący diodą D1. Warunek if ( (readTimSys()% 1000) < 500 ) powoduje, że dioda D1 miga w czasie poprawnej pracy programu. Bity 5...7. decydują o ustawieniu podzielnika przez dwa, cztery lub pracę bez niego. Trzeba pamiętać, by ustawić jeden z bitów 5...7., tak samo jak jeden z 0...3., w przeciwnym razie kilka wyjść bramek 3-stanowych będzie połączonych razem, co doprowadzi do zwarć.

Nie trzeba się martwić o zwarcia po włączeniu zasilania, kiedy to układ nie jest skonfigurowany. W takiej sytuacji wszystkie wyprowadzenia PCA9554 są ustawione jako wejścia z podciąganiem, co wymusza na nich poziom wysoki (czyli nieaktywny) bramek 3-stanowych układów U1 i U3. Nie ma też niebezpieczeństwa uaktywnienia kilku bramek w czasie pomiędzy skonfigurowaniem układu a wysłaniem danej do rejestru. Wynika to z faktu, że po resecie rejestr wyjściowy zawiera wartość 0xFF.

Odbiegając od zasadniczego tematu, zachęcam do kupowania oryginalnego analizatora LA2016 lub lepszego z tej rodziny. Koszt LA2016 to około 400 zł, jest droższy od klona SaleAE8, ale możliwości nieporównywalnie lepsze (wbudowany bufor) i jest to oryginał, a nie podróbka. Porównując cenę LA2016 do oryginału SaleAE16, jest on dużo tańszy, a możliwości ma o wiele większe niż SaleAE.

Do AVT3275 można podłączyć płytkę izolowanego interfejsu USB z układem FT201 przykładowo AVT3293. Nie jest ważne, gdzie zostanie przyłączona, czy do I2C na płytce zasilacza AVT3277-ZAS, czy multipleksera AVT3277/0, a nawet bezpośrednio do I2C na AVT3275. Ważne, aby na tej samej magistrali nie znajdował się układ pracujący z taktowaniem I2C mniejszym niż 400 kHz. Można więc podłączyć FT201 do niewykorzystanego portu na zasilaczu (trzeba pamiętać o rezystorach podciągających 10 kΩ) albo na płytce AVT3277/0. W prototypie płytka jest podłączona do multipleksera o adresie 0x76 (płytka zasilacza) magistrala 0 (złącze J6 przeznaczone domyślnie dla pojedynczej płytki wzmacniacza wejściowego). Na razie nie ma aplikacji przeznaczonej dla AVT3275 i na USB wysyłane są te same informacje, co na UART, ale tylko w czasie pracy pętli głównej – nie są wysyłane informacje diagnostyczne po resecie. W razie zainteresowania inną funkcjonalnością USB proszę o e-maile. Należy też pamiętać, że funkcje obsługi interfejsu USB nie są jeszcze dopracowane i w razie problemów z komunikacją po I2C w pierwszej kolejności należy odłączyć płytkę z układem FT201.

Obsługa AVT3275, zmiany

Przycisk na płytce wejściowej AVT3277/1–3 pozwala przyłączyć ją do AVT3275, jeśli była odłączona, co jest sygnalizowane świeceniem dwukolorowej diody na AVT3277/1–2 lub diody D4 na AVT3277/3. Kolejne naciśnięcie przycisku na aktywnej płytce przełącza tryb pracy pomiędzy AC a DC (nie dotyczy AVT3277/3).

Praca z AVT3277 zmienia wygląd napisu informującego o aktywnym wejściu, zamiast „Input A” zobaczymy treść taką, jak na fotografii 11, gdzie cyfra oznacza numer płytki wejściowej.

Fotografia 11. Wygląd napisu informującego o aktywnym wejściu

Ekrany pomiaru czasu są nieaktywne, gdy włączona jest płytka preskalera lub podzielnik na płytce AVT3277/0. Ekran jest wtedy wyświetlany w szarym kolorze, a na wyświetlaczu LED znak minus.

Diody LED D6 i D7 na płytce preskalera AVT3277/3 sygnalizują stopień podziału. Gdy żadna nie świeci: 80 dla MC12080 lub 256 dla MC12079 i μPB1507, zielona (D7) 40 lub 128, czerwona (D6) 20 lub 64, obie 10.

Naciskając przycisk enkodera w czasie wyświetlania pomiaru częstotliwości (ekran 0), można zmienić domyślny podzielnik preskalera (fotografia 12). Ustawienie to jest zawsze przywracane po zmianie wejścia pomiarowego.

Fotografia 12. Naciskając przycisk enkodera w czasie wyświetlania pomiaru częstotliwości, można zmienić domyślny podzielnik preskalera

Rozdzielczość wyliczanego okresu sygnału została zwiększona tysiąckrotnie. Wiązało się to ze zmianą typu niektórych zmiennych z float na double.

W trybie single mode sygnalizowany jest brak połączenia J8 AVT3277/0 z J1 pin3 AVT3275 za pomocą migającej ramki, jak na fotografii 13. Czasem komunikat ten pojawia się, gdy algorytm automatycznej zmiany preskalera próbuje dobrać odpowiedni podzielnik.

Fotografia 13. Sygnalizowanie braku połączenia

Utrata komunikacji z płytkami AVT3277 jest sygnalizowana miganiem nazwy i numeru wejścia. Brak komunikacji I2C AVT3277/1-3 sygnalizuje szybkim (2,5 Hz) miganiem diody CFG oraz niebieskiej (czerwonej) na panelu przednim.

Dodano ekran wyświetlający prędkość obrotową. W związku z tym numeracja ekranów od piątego zwiększyła się o jeden. Naciskając przycisk enkodera, można skonfigurować liczbę impulsów na obrót w zakresie 1...12. Ustawienie to jest zapisywane w pamięci nieulotnej.

Dodano uśrednianie pomiaru. Liczbę pomiarów do uśrednienia zmieniamy przyciskiem SET w czasie wyświetlania ekranu pomiaru częstotliwości (ekran numer 0). Aktywna funkcja jest sygnalizowana napisem „AVG” w prawym górnym rogu wyświetlacza. Ustawienie nie jest zapamiętywane w pamięci EEPROM, ponadto opcja uśredniania jest wyłączana po zmianie ekranu lub wejścia pomiarowego. Po włączeniu uśredniania (działa jak filtr dolnoprzepustowy) trzeba być świadomym tego, że wiarogodny wynik pomiaru wymaga zebrania wszystkich próbek. Ustawienie 20 próbek oznacza, że wynik jest wiarygodny po 20 sekundach gdy pomiar dokonywany jest z bramkowaniem 1 sekundy. Ma to duże znaczenie, gdy ustawiamy częstotliwość generatora. Zmiany jego częstotliwości będą widoczne dopiero po zebraniu wszystkich próbek, a przed ich zebraniem wynik będzie podążał do nowo ustawionej częstotliwości. W takiej sytuacji można zmniejszyć liczbę próbek lub czas bramkowania.

Prędkość, z jaką obracany jest enkoder, jest rozpoznawana. Powolne kręcenie zmienia wartości o jeden, szybsze o 50 lub 100, bardzo szybkie o 100 lub 1000, zależnie od tego, czy jest to zmiana wartości poziomu wyzwalania, czy częstotliwości TCXO. Dzięki temu zmiana wartości o kilkadziesiąt tysięcy trwa kilka sekund, a nie minut. Dla ułatwienia obsługi, w przypadku zmiany ekranu lub parametru typu on/off, funkcja rozpoznawania prędkości jest wyłączona i zmiana parametru następuje zawsze z krokiem 1.

Zestawienie funkcji enkodera i klawiatury, zależnie od wyświetlanego ekranu, zostało pokazane w tabeli 3.

Uwagi końcowe

W materiałach dodatkowych do artykułu znajduje się program dla Arduino demonstrujący komunikację z płytkami AVT3277/0–3.

Nie ma konieczności montowania układu PCA9544 na płytce zasilacza, o ile nie będzie podłączony TCXO AVT3276 lub pojedyncza płytka wzmacniacza AVT3277. Automatyka miernika radzi sobie do pewnej granicy. Zależnie od kształtu i wypełnienia sygnału granica może być różna. W prototypie, w trybie dual input (bez połączenia J8 AVT3277/0 z J1 pin 3) było to poniżej 40 MHz (32 MHz dobrze, 40 już nie).

W ręcznym ustawieniu poziomu wyzwalania pomocny może być podgląd sygnału. Umożliwia to wyjście MON dostępne na każdym module lub wyjście 1:1 na multiplekserze. Stosunkowo duża pojemność wejściowa płytek wzmacniaczy (10 μF+100 nF+100 pF) powoduje jej długie ładowanie (rezystor 1 MΩ) po zmianie napięcia wyzwalania na płytce AVT3177/1. Zmniejszenie pojemności zmniejszy ten czas, ale ograniczy pasmo od dołu dla przebiegów zmiennych.

Aby pokryć cały zakres częstotliwości do 2,8 GHz, trzeba użyć dwóch płytek preskalerów. Jedna, z MC12080 dla zakresu 100 MHz...1,4 GHz, druga 250 MHz...2,8 GHz. Ponadto płytki AVT3277/1–3 muszą mieć układy LVC, AC lub ABT, ponieważ HC pracują do około 50 MHz i powstałby zakres 50...100 MHz, którego AVT3275 nie potrafiłby zmierzyć.

Listing 7. Fragment kodu programu znajdujący się w pętli głównej programu

HAL_GPIO_WritePin( TEST_TIME_GPIO_Port, TEST_TIME_Pin, GPIO_PIN_RESET );
__WFI();
HAL_GPIO_WritePin( TEST_TIME_GPIO_Port, TEST_TIME_Pin, GPIO_PIN_SET );

W pętli głównej programu znajduje się kod pokazany na listingu 7, który pozwala mierzyć czas wykonania pętli głównej programu. Pomijając długotrwałe obliczenia przed wysłaniem danych na wyświetlacz OLED (trwających poniżej 7 ms oraz odczyt płytek AVT3277 trwający poniżej 10 ms i kilku innych kilku milisekundowych operacji), pętla główna wykonuje się w dwie do trzech mikrosekund, następnie przez blisko milisekundę CPU jest uśpiony. W czasie komunikacji po I2C pętla główna jest wykonywana dzięki zastosowaniu systemu DMA.

Budowa opisywanych wzmacniaczy wejściowych okazała się dużym wyzwaniem. Nawet przy 150 MHz to, co na schemacie jest proste, w rzeczywistym układzie już takie proste nie jest. Aby zrealizować projekt perfekcyjnie, trzeba się naprawdę dużo napracować. Brak kompletu układów ABT uniemożliwił testy całości przy 200 MHz. W przypadku AVT3275 nie stanowi to większego problemu, bo maksymalna częstotliwość, jaką może zmierzyć STM32F401, to 42 MHz. Uwzględniając dzielnik przez cztery na płytce multipleksera, można mierzyć maksymalnie częstotliwość 160 MHz, ale dzielnik nie pozwala na pomiar czasów impulsów. Do czasu zakończenia konstrukcji zapowiadanego AVT3278 (kanał YouTube https://bit.ly/3CcqyFh) z pewnością uda się przetestować szybsze wzmacniacze wejściowe.

Zbadano dolną częstotliwość pracy preskalera MC12080. Według danych katalogowych wynosi ona 100 MHz, w prototypie udało się uzyskać 80 MHz. Próba pomiaru 70 MHz skończyła się niepowodzeniem, miernik pokazywał 80 MHz, chwilami 76 a nawet ponad 100 MHz. Próby przeprowadzono z wykorzystaniem płytki NUCLEO-H743ZI2 w roli generatora, dlatego nie zbadano, jaki poziom sygnału jest wymagany do poprawnej pracy preskalera.

Modułowa budowa miernika pozwala niewielkim kosztem dokonać modernizacji urządzenia. Pierwsza modyfikacja, jak przychodzi do głowy, to płytki wzmacniaczy wejściowych z pomiarem poziomu sygnału. Warto byłoby wyposażyć płytkę preskalera w przedwzmacniacz, na przykład tani i łatwo dostępny BGA427H6327XTSA1 oraz przełącznik impedancji 50/75 Ω, a może też 120 Ω.

Używając kaskady preskalerów HMC432 i MC12079/μPB1507, można byłoby mierzyć sygnały do 8 GHz. Jeśli Czytelnicy będą zainteresowani rozbudową, co zostanie poparte e-mailami, to powstaną odpowiednie modyfikacje, zarówno sprzętowe, jak i programowe. Ze względu na to, że zdobycie preskalerów nie zawsze jest łatwym zadaniem, podaję linki do sklepów. Najtaniej, w cenie 5 zł brutto, można nabyć szybki (3 GHz) μPB1507, niestety jego minimalna częstotliwości pracy to 500 MHz – https://bit.ly/3pv0dyv.

Układ MC12079 jest dostępny na: https://bit.ly/2XEatZN w cenie 7,44 zł i tu https://bit.ly/3Ca80VT za 12 zł.

MC12080 można nabyć na: https://bit.ly/3vCYsAx za 24 zł netto.

Czytelnicy mogą samodzielnie zbudować płytki wzmacniaczy wejściowych, korzystając z gotowego oprogramowania dla AVT3277 lub napisać je samodzielnie, opierając się o opisie protokołu z artykułu. AVT3275 w żaden sposób nie autoryzuje płytek, ale nie można wykluczyć błędnego działania własnoręcznie pisanego oprogramowania z nowszymi wersjami AVT3275, dlatego najlepiej w tej sprawie kontaktować się e-mailowo.

W przypadku zgłaszania błędów w programie, do e-maila należy dołączyć jak najwięcej informacji. Takich jak fotografie wyświetlacza, ekrany terminalu z informacjami diagnostycznymi, oscylogramy czy dane z analizatora logicznego w postaci zrzutu ekranowego i danych zapisanych przez analizator. Do wgrania nowszej wersji programu wymagany jest programator ST-Link i darmowy program ST-Link Utility.

Większość prac nad AVT3277 zajęła modyfikacja softu AVT3275 – kod programu zwiększył się z 85 kB do 110 kB. Czas pracy nad całym projektem to ok. 315 godzin, ale należy do niego dodać wcześniejsze konstrukcje częstościomierzy. Nie ma już możliwości oszacowania czasu, jaki w zeszłym milenium pochłonął pierwowzór miernika na układach TTL serii standardowej, który zawierał 37 układów scalonych. Obecna konstrukcja z STM32 pozwoliła zbudować miernik tani, ale o dużych możliwościach, o jakich 20 lat temu nie można było nawet pomarzyć, bo cena miernika byłaby odstraszająca, a tu mamy konstrukcję składająca się z sześciu (4×STM32G030 na płytkach wejść, 2×STM32F401 w AVT3275 i 3276) za rozsądne pieniądze. Powstał duży system, ale nie pobił rekordu ustanowionego ponad 15 lat temu, gdzie w jednym urządzeniu pracowało 9 mikrokontrolerów 8051.

Prace na kolejną wersją miernika (AVT3278) trwają. Jest już gotowy panel czołowy https://bit.ly/3pyH4Mm. Jak na razie nie wiadomo, czy sercem miernika będzie STM32H743Zi, czy FPGA z rodziny MAX10, w której zostanie zaimplementowany rdzeń procesora 32-bit NIOS-II.

Jeśli Czytelnicy są zainteresowani kodem źródłowymi lub fragmentami, proszę o e-maile.

Oprogramowanie AVT3275, 76 i 77 jest ciągle rozwijane. W sprawie nowych wersji programu, propozycji zmian, proszę pisać e-maile.

SaS
sas@elportal.pl

Artykuł ukazał się w
Elektronika Praktyczna
listopad 2021
DO POBRANIA
Materiały dodatkowe
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik listopad 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio listopad - grudzień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje październik 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna listopad 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich listopad 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów