• Nie Znaleziono Wyników

to, że impulsy sygnału wejściowego są zliczane w liczniku 32-bitowym, który może być taktowany częstotliwością do 42MHz, nawet przy bramkowaniu 100

N/A
N/A
Protected

Academic year: 2022

Share "to, że impulsy sygnału wejściowego są zliczane w liczniku 32-bitowym, który może być taktowany częstotliwością do 42MHz, nawet przy bramkowaniu 100"

Copied!
8
0
0

Pełen tekst

(1)

Opisywane urządzenie służy do pomiaru częstotliwości w zakresie od 0,1Hz do 42MHz i czasu do 10 sekund z rozdzielczością 23,8ns. Tym, co odróż- nia prezentowany licznik od innych, jest sposób pomiaru niskich częstotliwości.

Przy pomiarze częstotliwości niższych

niż 50kHz mierzony jest okres sygnału, po czym przeliczany na częstotliwość.

Dzięki temu pomiar częstotliwości 1Hz z rozdzielczością 1μHz (0,000001Hz) trwa tyle co okres sygnału, czyli sekun- dę. Tradycyjną metodą pomiar trwałby milion sekund, czyli ponad 11,5 dnia!

Poza pomiarem częstotliwości możliwy jest pomiar okresu. Można zmierzyć czas trwania stanu wysokiego i niskiego bada- nego sygnału. Na podstawie tych pomia- rów wyliczany jest współczynnik wypeł- nienia z rozdzielczością 0,01%. Miernik ma dwa wejścia, drugie nie mierzy cza- sów, tylko częstotliwość, ale można prze- łączyć je w tryb licznika impulsów z prze- chwytywaniem i resetem. Ze względu na to, że impulsy sygnału wejściowego są zliczane w liczniku 32-bitowym, który może być taktowany częstotliwością do 42MHz, nawet przy bramkowaniu 100

sekund nie następuje przepełnienie liczni- ka. Miernik nie ma automatycznej zmia- ny zakresu, tylko wynik pomiaru jest reprezentowany w inny sposób. Podobnie przy pomiarze czasu, pomiar trwający 10 sekund nie jest w stanie przepełnić liczni- ka taktowanego 42MHz. W tym przypad- ku także sposób reprezentacji pomiaru jest różny dla różnych sygnałów wejścio- wych. Wynik pomiaru jest prezentowany na ośmiu wyświetlaczach 7-segmento- wych oraz dodatkowym OLED 128×64 piksele. Mikrokontroler jest taktowany generatorem kwarcowym, ale można doprowadzić sygnał z zewnętrznego pre- cyzyjnego generatora, który może być

3Vin

Adj1

Vout2 U4SPX1117

13VCCA

PA3/RX217 PA5/SPI1_SCK21

PC13/TAMPER 2

PC15/Osc32out 4

PA2/TX2 16PA1/RTS2 15

PB0/IN8/TIM3_CH326

PA0/CTS2/WKUP 14

PB1/IN9/TIM3_CH427

PC14/Osc32in 3 1VBAT

BOOT060 PA7/SPI1_MOSI23

TX1/PA942 PH1/OSCout

6PH0/OSCin 5 7NRST

12GNDA

PA4/SPI1_SS20 PA6/SPI1_MISO22 PB10/I2C2_SCL/TX329PB2/BOOT128 Vcap130 GND31 VCC32

SPI2_SS/PB1233 SPI2_SCK/PB1334 SPI2_MOSI/PB1536 SPI2_MISO/PB1435 CK1/PA841 RX1/PA1043 USB_DM/PA11USB_DP/PA124445 SWDIO/TMS/PA1349SWDCLK/PA14 GNDVCC464748

PB355 PA1550

PB456I2C1_SMBA/PB557I2C1_SCL/PB658I2C1_SDA/PB759TIM4_CH3/PB861TIM4_CH4/PB962GND63VCC64

8PC0 9PC1 10PC2 11PC3

GND18 VCC19 PC424 PC525

PC637 PC738 PC940 PC839 RX5/PD254 TX5/PC1253 RX4/PC1152 TX4/PC1051

STM32F401RCT6U1

SS16D5

C12

10uF C13

10uF 1

2 J65.5V

VCC

VCC R1390R

R13 470k*

R31k

T1BFR93AE6327 VCC

Vdd1 2CK

GND3 4IO

/RST5 J3

SWD VCC

S1Rst 112eCom1211da310dpf49cCom258gCom376bCom4

KW4-566ABBLed1

A B

C

DE F GDP e1 d2 dp3 c4 g5 b7Com38Com29f10a11Com112 Com46

KW4-566ABBLed2

A B

C

DE F GDP

AN0 AN1 AN2 AN3 AN4 AN5 AN6 AN7

1 2 5 4

00

3 P1

ImpA ImpB ImpSW

/Rst

/Rst 1 23 4 5 32kHzJ4

C2 100n VCC

C6 100n VCC

C10 100n VCC

C8

2u2 C9

2u2 C7

100n VCC

C3100n VCC

VCC

VCC

VCC

+5

1 2 34 5 6 78

16 15 1413 12 11 109 RP1 75R * 8

A B CD E F GDP D0

D1 D2D3 D4 D5 D6D7 KEY

LED_MUX

D6

RUN D7 ImpA

ImpB ImpSW

LedRUN

LedERR

LedERR R15 390R R16

VCC

D0 D1 D2 D3 D4 D5 D6

D7

A0 A1A2 A3 A4 A5A6 A7

GateOUT

GateIN

R10 1k

D4 GATE 12

3 J1

IN R7 390R

IN_A

IN_A

IN_B

IN_B

IN_A

R4 390R

TX_GPS RX_GPS

1PPS LedRUN

GateIN GateOUT GateMUX

GateMUX

PwmVCO

1 2 34 J10

1 2 3 J7

COM

GateIN Q1

8MHz C5 C4 22pF

22pF

R11 2k2

SCL SDA

OW

OW GNDIO12 U3a

DS2431+

VCC

H1 OTWOR

H2 OTWOR

H3 OTWOR

H4 OTWOR

Rst_Latch

6 1 2

4

3 5

D3

SRV05-4 VCC

IN_A IN_B

1PPS Rst_Latch

12 3 4 56

J8SPI +5

1 2 3 4

J2 PC

+5 C1100pF

1GNDIO 2

U3b

DS2431P+

R2470k*

Vcc1 D-2 D+ 3 ID4 GND5

G6

J9

USB-B +5 1 23 4 J13

USB

Out415 3In3In4 4In5 5In6 6In7 7 In8 8

Out316

Vs9

Out514

Out118 Out613

Out217 Out712 Out811

2In2 1In1 U2

UDN2983/A2982 (od pinu 1) AN0 AN1AN2 AN3 AN4 AN5AN6 AN7

C11 10uF

+5 A0 A1A2 A3 A4 A5A6 A7

S2 Screen S3

HOLD S4

Rel+

S8 Rel-

S5 S6Gate

000 S7

Menu S9

SET A0

A1

A2

A3 A4

A5 A6 A7

KEY D1

HOLD D2 GATE R8 390R R9 390R

LED_MUX A1

A7

R12 390R

D8 A2 REL

A3

1 2 34 J5 R6 2k2 R5 2k2

SCL SDA VCC

VCC 1

2 34 J12

VCC SCL SDA 10uFC15*

C14 100pF*

R2 R13 C15 C15 - wyjDĞnienie w artykule

Projektów liczników częstotliwości w Internecie jest bardzo dużo, po- czynając od opartych na mikrokon- trolerach 8051, przez AVR, PIC do ARM. Niestety, znalezienie dobrej konstrukcji nie jest łatwe. Popularne rozwiązania oparte na PIC, jak AVT- 2885, bazują na pomiarze liczby im- pulsów w jednostce czasu. Metoda ta ma poważną wadę przy pomiarze ni- skich częstotliwości – mała rozdziel- czość. Aby polepszyć sytuację, trzeba

rozsądnie zwiększyć czas pomiaru.

Rys. 1

F-meter F-meter

Modułowy licznik Modułowy licznik

częstotliwości i czasu częstotliwości i czasu

część 1 część 1

3275

3275

(2)

synchronizowany jeszcze precyzyjniej- szym wzorcem, na przykład sygnałem GPS. Do licznika można podłączyć roz- budowany układ obwodów wejściowych AVT3277 sterowany magistralą I2C.

Opis układu

Schemat ideowy pokazany jest na rysun- ku 1. Jak widać, budowa miernika nie jest skomplikowana, czego nie można powiedzieć o pierwszym, który zbudowa- łam ponad 30 lat temu. Miał 37 układów TTL, pobierał 1,5A, mierzył częstotli- wość do 125MHz (układy rodziny 74S rodzimej produkcji) w sześciu zakresach przełączanych ręcznie przyciskami góra dół, więc był przygotowany do automa- tycznej zmiany zakresu, której się nigdy nie doczekał. Mierzył okres i czas trwa- nia poziomu H, L sygnału. Wyniki były prezentowane na 6-cyfrowym wyświet- laczu 7-segmentowym. Gdy budowałam tamten miernik, nie miałam oscyloskopu.

Analizatory logiczne były nieosiągalne dla przeciętnego Kowalskiego. Miałam tylko prostą sondę TTL. Z tego powodu uruchomienie miernika trwało kilka dni.

Samo wiercenie PCB pochłonęło cały dzień, bo na płytce było ponad 700 otwo- rów. Mimo że konstrukcja była dosyć nie- typowa, redakcja „Radioelektronika“ nie była zainteresowana publikacją, a konku- rencyjne czasopisma jeszcze nie istniały.

Dlaczego nie byli zainteresowani? Tego nie wiem. Może nie chcieli uwierzyć, że młody człowiek może zaprojektować tak skomplikowane urządzenie, wykonać w domu dwuwarstwową PCB i całość działa. Teraz jest inaczej. Płytek nie trze- ba robić w domu, a AVT wykona prototy- powe płytki nieodpłatnie.

Czy teraz do uruchomienia prezento- wanego licznika wymagany jest oscy- loskop i/lub analizator logiczny? Tylko jeśli wystąpią jakieś problemy, to bez oscyloskopu czy analizatora stanów logicznych pewnie się nie obejdzie. Jed- nak szansa na bezproblemowe urucho- mienie miernika są bardzo duże.

Przed opisaniem konstrukcji przybliżę metody pomiaru częstotliwości i czasu, bo czy pomiar dokonywany jest z użyciem układów TTL, CPLD/FPGA, czy mikro- kontrolera, zasada pomiaru nie zmieni- ła się od lat. Pierwsza metoda pomia- ru to metoda bezpośrednia – rysunek 2. Generator wzorcowy poprzez zespół dzielników wytwarza przebieg o okresie wzorcowym. W przykładzie z rysunku 2 poza podstawowym sekundowym okre- sem (1Hz) jest jeszcze 10 sekund (0,1Hz), 100ms (10Hz) i 10ms (100Hz). Sygnał wzorcowy trafia na dzielnik przez dwa,

w tym przypadku zbudowany z przerzut- nika T. Zakładając, że wybrano sygnał wzorcowy 1Hz, na wyjściu przerzutnika pojawi się sygnał o okresie dwóch sekund (0,5Hz), gdzie stan wysoki będzie trwał sekundę, tak samo jak i stan niski. W cza- sie stanu wysokiego na wyjściu bramka przepuści do licznika liczbę impulsów odpowiadającą mierzonej częstotliwości, przykładowo sygnał 1kHz spowoduje zliczenie 1000 impulsów. Taka metoda pomiaru jest dobra dla wysokich czę- stotliwości. Miernik cyfrowy, zależnie od momentu, w którym rozpoczyna pomiar, może zliczyć faktyczną liczbę impulsów lub o jeden mniej (zauważy jedno zbocze). W konsekwencji ostat- nia cyfra może się zmieniać podczas pomiarów. Dlatego w przypadku mier- ników cyfrowych podaje się dokład- ność w procentach i cyfrach wyświet- lacza. W tym przypadku będzie to ±1.

Gdy mierzona częstot- liwość jest niska, przy- kładowo 10Hz, bramku- jąc sygnałem 1 sekundy, możemy uzyskać wynik 10 lub 9. Daje to też 10% niedokładności.

Dla porównania, bardzo kiepski kwarc 100ppm ma dokładność 0,01%.

Wynika z tego, że dopie- ro gdy mierzymy czę- stotliwość 10kHz niedo-

kładność kwarcu może o sobie dać znać.

Z tego powodu przy pomiarze niskich częstotliwości lepsza jest metoda pośred- nia – rysunek 3. W tym przypadku sygnał wejściowy trafia na dzielnik przez dwa, dzięki czemu na wyjściu pojawia się stan niski trwający tyle, co okres mierzonego sygnału. Generator wzorcowy generuje sygnał o wysokiej częstotliwości, który trafia na bramkę. Jak widać, zamienione zostały role generatora i sygnału wejścio- wego. Zakładając, że na wejście poda- ny jest sygnał mierzony o częstotliwości 2Hz, którego okres trwa 500ms, a gene- rator wzorcowy generuje 1000Hz (1kHz), licznik zliczy 500 impulsów. Zgodnie ze wzorem Tx = N / Fwz, okres sygnału mie- rzonego wynosi 500 / 1000Hz = 0,5Hz = 500ms, częstotliwość zaś, według wzoru Fx=Fwz/N, wynosi 1000Hz / 500 = 2Hz.

Ze względu na to, że w czasach „niepro- cesorowych” takie obliczenia do łatwych nie należały, liczniki częstotliwości naj- częściej mierzyły metodą bezpośrednią.

Liczniki na rysunkach 2 i 3 pokazano w postaci uproszczonej, nie miałby prawa w praktyce działać poprawnie, bo nie są zerowane przed rozpoczęciem zlicza-

nia. Praktyczna realiza- cja licznika wyglądać może jak na rysun- ku 4. W czasie stanu wysokiego na wyjściu przerzutnika T bramka przepuszcza impulsy, które są zliczane. Opa- dające zbocze sygnału na wyjściu przerzutnika wyzwala multiwibrator, który przepisuje zliczo- ną wartość do przerzut- ników LATCH, natomiast opadające zbo- cze pierwszego multiwibratora wyzwala kolejny, który zeruje licznik, przygoto- wując go do kolejnego pomiaru. Bardziej rozbudowane liczniki miały synchroniza- cję sygnału bramkującego z mierzonym przebiegiem, dzięki czemu wynik pomia- ru nie zmieniał ostatniej cyfry, oczywiście o ile badany sygnał był stabilny. Czasem liczniki były budowane na bazie liczni- ków rewersyjnych z ustawianiem. Umoż- liwiało to wpisanie częstotliwości pośred- niej, odejmowanie jej lub dodawanie przy pomiarze. Konstrukcja takiego licznika była skomplikowana i 37 układów sca- lonych nie wystarczało, a i pobór prądu zdecydowanie przekraczał 1,5A.

Po (nie)zbędnej teorii przejdźmy do opisu miernika. Układ zasilany jest napię- ciem 5–5,5V doprowadzonym do złącza J6 lub 5V na J9. Napięcie to można nie- znacznie zwiększyć. Jego górną wartość ograniczają diody LED D1, D2 i D8 ste- rowane z portu PA11 oraz diody wyświet- laczy LED przyłączone do portów PA i PB. Miernik można zasilić napięciem do 6,5V. Układ U4 stabilizuje napięcie dla mikrokontrolera i wyświetlacza OLED,

BRAMKA LICZNIK

100Hz 10Hz 1Hz 0,1Hz

0HWRGDEH]SRĞUHGQLD 6<*1$à

:(-ĝ&,2:<

*(1(5$725 :=25&2:<

DZIELNIK

&=ĉ6727/,

:2ĝ&,

FX=N Tw2

Tw2 Q

T

BRAMKA

LICZNIK

1MHz 100kHz 10kHz 1kHz

0HWRGDSRĞUHGQLDSRPLDURNUHVX

FX= N 6<*1$à

:(-ĝ&,2:<

*(1(5$725 :=25&2:<

DZIELNIK

&=ĉ6727/,

:2ĝ&,

TX= N Fw2

Fw2

Fw2

T Q

BRAMKA

:<ĝ:,(7/$&=

'(.2'(5 /,&=1,.

R

/

=$75=$6.

7 Q

Q

Praktyczna realizacja licznika Rys. 2

Rys. 3

Rys. 4

(3)

natomiast diody i wyświetlacze LED zasilane są z 5V. Prototyp zasilany napię- ciem 5,5V pobierał ok. 100mA podczas wyświetlania „0.999985”, co wydziela na stabilizatorze U4 około 500mW mocy.

Do jej rozproszenia wystarczy niewielka powierzchnia miedzi na płytce. Główną rolę w mierniku odgrywa mikrokontro- ler U1 STM32F401RCT6, który został wybrany ze względu na niską cenę w sto- sunku do możliwości. W swoim wnętrzu ma 256kB pamięci FLASH, 64kB RAM, 8 timerów, w tym dwa 32-bit, po kilka UART, SPI, I2C, do tego RTC, dwa ukła- dy watchdog, wiele innych udogodnień i ma FPU, co nie jest takie oczywiste w mikrokontrolerach ARM. Mikrokon- troler jest taktowany sygnałem 8MHz, ale wewnętrzny PLL powiela tę częstotli- wość do 84MHz.

Mikrokontroler steruje ośmioma mul- tipleksowanymi wyświetlaczami 7-seg- mentowymi. Dodatkowe informacje są wyświetlane na wyświetlaczu OLED 128×64 piksele przyłączonym do J5, który komunikuje się z mikrokontrolerem przez magistralę I2C. Linie magistrali są podciągane rezystorami 2,2kΩ. Ponad dwa razy mniejsza wartość rezystorów niż najczęściej spotykana 4,7kΩ wynika z tego, że wyświetlacz pracuje w trybie FAST (400kHz), a do magistrali mogą być podłączone kolejne płytki przyłą- czone do J12. Obsługę miernika umoż- liwia klawiatura składająca się z ośmiu przycisków oraz enkodera. Aby nie uży- wać mikrokontrolera w większej obudo- wie, klawiatura obsługiwana jest, tak jak wyświetlacze – przez multipleksowanie.

Ponieważ nie przewiduje się naciśnię- cia więcej niż jednego przycisku w tym samym czasie, budowa klawiatury została uproszczona i nie zamontowano w niej diod separujących. To, ze względu na sterowanie jej razem z anodami wyświet- lacza, powoduje fałszowanie wyświetla- nej treści w przypadku naciśnięcia rów- nocześnie więcej niż jednego przycisku oraz powoduje zwarcia pomiędzy porta- mi mikrokontrolera. Krótkotrwałe zwar- cia nie doprowadzą do ich uszkodzenia, ale takie postępowanie nie jest zalecane.

Enkoder jest przyłączony bezpośrednio do wejść mikrokontrolera. Sygnał wej- ściowy przechodzi przez prosty wzmac- niacz zbudowany na tranzystorze T1.

Mimo wypróbowania dwóch rozwiązań, o czym w dalszej części artykułu, nie byłam zadowolona z ich pracy. Dlatego zdecydowałam się pominąć wzmacniacz, bo i tak planowałam zaprojektować bar- dziej rozbudowane obwody wejściowe.

Wejścia A, B, 1PPS i LATCH/RESET

mikrokontrolera zabezpiecza transil D3.

Złącze J10 umożliwia doprowadzenie zewnętrznego sygnału bramkującego;

jeśli ta możliwość nie jest wykorzystana, należy zewrzeć piny 3 i 4 złącza. J11 umożliwia komunikację z modułem GSM oraz sterowanie generatorem VCO. Na USART dostępny na złączu J7 wysyłane są informacje o zmierzonej częstotliwości i czasie. Parametry transmisji 921600 8N1. J8 służyła do prób z wyświetla- czem komunikującym się przez SPI. Na razie ta funkcja nie jest wykorzystana.

J3 umożliwia zaprogramowanie mikro- kontrolera. W J2 wykorzystane jest na razie tylko wyprowadzenie numer dwa umożliwiające przechwycenie i zrese- towanie licznika B. Niewykluczone, że gdy Czytelnicy wykażą zainteresowa- nie poparte listami do redakcji, funk- cja zatrzaskiwania i resetowania zosta- nie rozdzielona. Wtedy to wykorzystane będzie kolejne wyprowadzenie złącza J2. J4 umożliwia podłączenie rezonatora kwarcowego 32kHz i baterii, co pozwoli uruchomić RTC. Do J13 można podłą- czyć konwerter USB-UART, który może zapewnić komunikację z mikrokontrole- rem (złącze J7). Pamięć EEPROM U3a lub U3b jest konieczna tylko wtedy, gdy wymagane jest, aby ustawienia miernika były zapamiętane po wyłączeniu zasila- nia. Czytelników może zastanowić, dla- czego EEPROM nie została emulowana w pamięci FLASH. Otóż STM32F401 ma pięć stron pamięci o rozmiarach 4×16kB, 64kB i 128kB. EEPROM naj- lepiej emulować na ostatnich stronach pamięci, w konsekwencji 192kB zostało- by stracone. Jeśli skorzystać z pierwszych stron po 16kB, aby zapisać kilkadziesiąt bajtów w emulowanym EEPROM, trzeba poświęcić 48kB FLASH (strona 0 skok do programu, strony 1 i 2 na EEPROM), tyle ile RAM miał ZX-Spectrum . Pod tym względem seria F4 nie jest zbyt atrak- cyjna. Miałam dylemat, czy

zastosować pamięć w obu- dowie TO-92, czy prawie dwa razy tańszą w SOIC-6.

W prototypie zdecydowa-

łam się na TO-92, ale w docelowej płytce pozwoliłam wybrać użytkownikowi typ pamięci pomiędzy tanią, ale trudniejszą w montażu SOIC-6, a droższą, ale łatwą do wlutowania TO-92.

Kilka słów

o oprogramowaniu

Program napisano z wykorzystaniem CubeIDE. Zajmuje 85kB FLASH z dostępnych 256, używa 10kB RAM z dostępnych 64kB. Z dostępnych ośmiu timerów wykorzystano siedem, plus systemowy generujący przerwania co 1ms, przy czym do samego pomiaru częstotliwości i czasu wystarczą cztery.

Pomiar częstotliwości realizuje timer1 ustawiony w tryb GATED MODE – rysunek 5. Uwaga! Ze względu na obec- ność mnóstwa rysunków i fotografii, nie mogą mieć wysokiej jakości w wer- sji drukowanej – oryginały o wysokiej jakości są dostępne w Elportalu wśród materiałów dodatkowych do tego nume- ru EdW. Sygnał taktujący licznik jest pobierany z wejścia „ETR1” (PA12, pin 45), zliczanie bramkuje „TI1FP1” (PA8, pin 41). Ze względu na to, że licznik jest 16-bitowy, starsze słowo zliczane jest programowo w przerwaniu.

uint16_t volatile timH;

void irqTim1update(){

timH++;

}

Sygnał bramkujący wywołuje prze- rwanie

uint32_t volatile Freq;

void irqTim1trigger(void){

Freq = TIM1->CNT | timH << 16;

TIM1->CNT = timH = 0;

FreqAend = true;

}

Aby uniknąć czasochłonnych obli- czeń zmiennoprzecinkowych (przelicza- nie częstotliwości na czas), w przerwaniu jest wykonywana tylko prosta operacja przesuwania i dodawania oraz ustawiana flaga „FreqAend” dla pętli głównej pro- gramu. Dzięki temu czasochłonne ope- racje wykonywane są w pętli głównej, a nie w przerwaniu. Chwila odczytu licznika timera 1 nie ma większego zna- czenia, ponieważ ze względu na bramko- wanie nie zmienia on już swej wartości.

Pomiar czasu jest zrealizowany jesz- cze prościej, a to za sprawą 32-bitowego licznika w trybie COMBINED MODE INPUT PWM – rysunek 6. Ze względu na to, że HAL dla STM32 nie zawsze jest wygodny, konfigurację licznika zrealizo- wano, pisząc bezpośrednio do rejestrów.

TIM2->ARR = UINT32_MAX;

TIM2->PSC = 0;

TIM2->CCMR1 = TIM_CCMR1_CC1S_0 | TIM_CCMR1_CC2S_1;

TIM2->CCER = TIM_CCER_CC2P | TIM_CCER_CC1E | TIM_CCER_CC2E;

TIM2->SMCR = TIM_SMCR_TS_2 | TIM_SMCR_TS_0 | TIM_SMCR_SMS_2;

TIM2->CR1 = TIM_CR1_CEN;

Rys. 5

(4)

W tym przypadku nie są używa- ne przerwania. Pomiar czasu impulsu i okresu jest mierzony sprzętowo, więc wystarczy w programie głównym spraw- dzać flagę przerwania, a gdy ustawiona

odczytać rejestry. Realizuje to poniższa sekwencja rozkazów.

if( TIM2->SR & TIM_IT_TRIGGER ) { // Czy flaga wyzwolenia ustawiona ? TIM2->SR &= ~TIM_IT_TRIGGER; //Kasuj flagę impuls = TIM2→CCR2; Okres = TIM2→CCR1; }

Timer 3 mierzy częstotliwość wej- ścia B tak samo jak i timer 1 wejścia A.

Przewidziano możliwość pracy wejścia B w roli licznika zdarzeń. Opadają- ce zbocze na wejściu PC12 (pin 53) odczytuje stan licznika, przepisuje do zmiennej, po czym zeruje licznik. Tę samą funkcjonalność można uzyskać z klawiatury miernika. Timer 4 gene- ruje sygnał PWM (rysunek 7) służący do sterowania generatorem VCO, ale ze względu na to, że potrzebna jest do tego dodatkowa płytka z generatorem (AVT3276), nie będę teraz przybliżała szczegółów podobnie jak i pracy time- ra 11 (rysunek 8), którego zadaniem jest pomiar czasu sygnału wzorcowego 1Hz, aby korygować napięcie na VCO.

Timer 5 (rysunek 9) generuje sygnał GATE. Jego nastawy są modyfikowane w programie tak, aby uzyskać sygnał bramkujący o czasach 100ms, sekun- dy, 10 sekund lub 100 sekund. Sygnał ten jest wyprowadzony na zewnątrz przez J10. Dzięki temu zewnętrzny multiplekser sterowany linią „Gate- MUX” może doprowadzić do wejść bramkujących timerów 1 i 3 sygnał z mikrokontrolera lub zewnętrznego źródła. Timer 10 (rysunek 10) służy do odmierzania mikrosekundowych odcinków czasu na potrzeby inter- fejsu 1-Wire. Najlepszym sposobem obsługi tegoż interfejsu jest UART, ale dwa są zajęte na inne cele (komu- nikacja z terminalem i moduł GPS), a trzeciego nie da się użyć, bo wystę- puje konflikt z innymi peryferiami – rysunek 11. Tak oto, na potrzeby

banalnego, wydawałoby się, licznika częstotliwości wykorzystano siedem z ośmiu dostępnych timerów, w tym dwa 32-bitowe oraz jeden wbudowany w architekturę ARM. W mierniku sko- rzystano z wielopoziomowego systemu przerwań (rysunek 12).

Krytyczne czasowo operacje rea- lizowane są przez przerwania. Tam, gdzie się dało odciążyć CPU (wysy- łanie danych przez I2C do wyświet- lacza OLED, wysyłanie danych przez UART), skorzystano z dobrodziejstw DMA, dobrodziejstwa niedostępne- go w AVRmega/tiny. W pętli głównej obsługiwany jest licznik watchdog, po czym CPU jest usypiany, dzięki czemu zmniejsza się emisja EMI. Po wybu- dzeniu przez przerwanie, czyli nie póź- niej niż po 1ms (przerwanie systemowe

„SysTick”), sprawdzana jest zawartość buforów UART GSM. Pozwala to okre- ślić, z ilu satelitów jest odbierany syg- nał. W kolejnym kroku obsługiwana jest dioda „GATE” na panelu przednim. Jeśli miernik pracuje w trybie częstościo-

mierza, dioda odzwier- ciedla stan wejścia bramkującego PA8, a jeśli w trybie miernika czasu – odzwierciedla stan wejścia sygnału PA12. Następnie wyko- nywane są, o ile istnie- je taka potrzeba, zapisy do pamięci EEPROM.

Pierwotnie funk- cje zapisu EEPROM DS2431, przeniesione z AVR (zaleta C, Basic takich „luksusów” nie zapewnia), „blokowa- ły” CPU na 10ms przy zapisie każdej strony, co dawało łączny czas zapisu struktury kon- figuracji EEPROM 80ms. Nie wpływało to na pracę mierni- ka, bo pomiary reali- zowane są sprzętowo i na przerwaniach, ale nieładnie wyglądało zatrzymanie odświeża- nia OLED przy odli- czaniu czasu bramko- wania. Z tego powodu funkcje zostały wzbo- gacone o nieblokujące.

Podczas przenoszenia funkcji obsługi 1-Wire wspomagano się ana- lizatorem logicznym Rys. 6

Rys. 10

Rys. 8

Rys. 9

Rys. 7 Rys. 11

Rys. 12

(5)

i emulatorem/skanerem 1-Wire – foto- grafia 1 (artykuł opisujący emulator znajduje się w „Elektronice Praktycz- nej“ 7/2020), który wraz z programem terminala i debugerem ułatwił pracę – rysunek 13. Po przeniesieniu podstawo-

wej komunikacji zrealizowano odczyt w szybkim trybie overdrive – rysunek 14. Po ewentualnej obsłudze EEPROM sprawdzana jest klawiatura, a właściwie bufor klawiatury obsługiwany w prze- rwaniach. Po tym następuje obsługa wyświetlacza OLED oraz wypełniany jest bufor wyświetlacza LED, obsłu- giwanego, jak się łatwo domyślić, w przerwaniu SysTick wywoływanym

co milisekundę. Na końcu pętli głównej następuje wysłanie danych na terminal.

Typowy czas obiegu pętli głównej to 2,2μs. W tym czasie AVR taktowany zegarem 16MHz wykona 35,2 taktu, co daje średnio 20 rozkazów.

Montaż i uruchomienie licznika zosta- ną omówione w następnym numerze

SaS sas@elportal.pl Fot. 1

Rys. 13

Rys. 14

(6)

Montaż i uruchomienie Układ opisany szczegółowo w poprzednim numerze EdW można zmontować na płytce drukowanej, której projekt pokazany jest na rysunku 15. Fotografia wstępna oraz fotografia 2 pokazują model. Układ zmon- towany prawidłowo ze sprawnych elemen- tów powinien od razu pracować. Podczas montażu należy wybrać, czy wyświetlacze montowane są na złączach i podstawkach, czy wlutowane w płytkę, bo od tego zale- ży wysokość przycisków i długość gałki enkodera. Montując urządzenie w obudo- wie, trzeba pamiętać o filtrze – fotografia 3. Zmniejsza on nieco jasność wyświet- lacza, ale bez niego treść jest nieczytelna

(fotografia 4), zwłaszcza przy silnym oświetleniu zewnętrznym. Jeśli filtr miałby obejmować także diody LED (na przykład filtr na całej obudowie), należy użyć fil- tru neutralnego, w kolorze szarym (srebr- nym), czarnym lub brązowym. Zwiększa on kontrast, nie tak skutecznie, jak filtr w tej samej barwie jak kolor wyświetlacza (fotografia 5), ale w tym wypadku spełnia swoje zadanie lepiej od niebieskiego, gdzie widać (fotografia 6), że tam, gdzie filtr zakrywa część żółtej diody, nie widać jej świecenia. W roli filtru nie sprawdzają się folie do przyciemniania szyb samochodo- wych, ponieważ odbijają światło i zamiast wyświetlacza uzyskamy lusterko.

W moim modelu uzyskałam pomiar częstotliwości 40MHz na wejściu cyfro- wym A i B. Niestety nie miałam możli- wości sprawdzić wyższych częstotliwości.

To, czy pomiar był poprawny, zależało od jakości badanego sygnału, gdy był w miarę dobrej jakości (rysunek 16), pomiar był poprawny. Wszelkie zniekształcenia (rysu- nek 17) powodowały jego fałszowanie.

Zbadałam właściwości wzmacniacza w dwóch konfiguracjach pokazanych na rysunku 18. Rozwiązanie drugie pracowa- ło lepiej niż pierwsze między innymi dla- tego, że pozwala na pomiar bardzo niskich częstotliwości (sprzężenie DC – stałoprą- dowe), dlatego dalsze próby skupiłam na

nim. Zbadałam jego właściwo- ści. Do 1MHz jest całkiem dobrze, choć pomiar czasu impulsu będzie już

Rys. 16 Rys. 17

F-meter F-meter

Modułowy licznik Modułowy licznik

częstotliwości i czasu częstotliwości i czasu

Fot. 2

Fot. 6 Fot. 3

Fot. 4

Fot. 5

część 2 część 2

3275

3275

(7)

obarczony błędem ze względu na powolne narastanie sygnału mierzonego – rysunek 19. Żółty przebieg (kanał 1) pokazuje syg- nał wejściowy, niebieski (kanał 2) na kolek- torze T1. Kolejne ekrany przedstawiają przebieg 5MHz 800mV – rysunek 20, 10MHz 800mV – rysunek 21 i 15MHz 1V – rysunek 22. Na tym niestety kończą się możliwości mojego generatora, ale widać, że tak prosty wzmacniacz nadaje się do częstotliwości 10...15MHz. Wzmacniacz można pominąć, nie montując T1 i R3, R13, C1, C14, a C15 zastępując zworą. Wtedy to można zastosować wzmacniacz o lepszych parametrach, na przykład przygotowywany do publikacji AVT3277. Wzmacniacz musi udostępniać sygnał cyfrowy w logice 3,3V.

STM32F401 akceptuje sygnał o amplitu- dzie 5V na wejściu, ale D3 ogranicza go.

Gdy dostępny jest sygnał o amplitudzie 5V, należy zastosować konwerter na przykład z rodziny 74LVC albo usunąć D3, rezygnu- jąc jednocześnie z ochrony, jaką zapewnia.

Obsługa miernika

Przycisk S2 „Screen” pozwala przełączać się pomiędzy ekranami tak samo jak kręcenie gałką enkodera. Numer ekranu jest widocz- ny w prawym górnym rogu wyświetlacza OLED. Numer ekranu znika po dwóch sekundach po jego zmianie przyciskiem S2. Pierwszy ekran (fotografia 7) wyświet- la zmierzoną częstotliwość. Gdy jest ona mniejsza od 50kHz, mierzony jest czas, który przed wyświetleniem jest przeliczany

na częstotliwość. W takiej sytu- acji na wyświetlaczu pojawia się napis „(math)” – fotografia 8. Dzięki temu można uzyskać wysoką rozdzielczość pomia- ru, który wykonuje się szybko.

Przy pomiarze częstotliwosci 10Hz pomiar trwa tylko 100ms, a rozdzielczość wynosi 10mHz.

Gdy częstotliwość przekracza 50kHz, na wyświetlaczu pokazuje się liczba impul- sów zliczonych w ciągu sekundy. W tym przypadku wyświetlany jest napis „(cnt)”.

Ponadto na wyświetlaczu OLED pokaza- na jest informacja o czasie bramkowania (fotografia 9), wybranym wejściu, w tym wypadku „Input A”, czasie trwania stanu wysokiego (6ms), niskiego (5ms), okresie (period 10ms) i współczynniku wypełnie- nia. Drugi ekran pokazuje zmierzony okres sygnału (fotografia 10) oraz dodatkowo częstotliwość. Podobnie jak w przypadku częstotliwości, granicą jest 50kHz. Kolej- ne ekrany pokazują zmierzony czas stanu wysokiego – fotografia 11 i niskiego – fotografia 12. Piąty ekran wyświetla współ- czynnik wypełnienia sygnału w procentach – fotografia 13. W przypadku ekranów 3, 4 i 5, tak jak w przypadku ekranu 2, wyświetlana jest dodatkowo zmierzona częstotliwość. Następny ekran pokazuje wskazanie licznika częstotliwości – foto- grafia 14. Jest to faktycznie zliczona liczba impulsów, więc nie ma tu granicy 50kHz, do której wyświetlany był wynik przelicze- nia okresu sygnału na częstotliwość. Ekran szósty (fotografia 15) pokazuje częstotli- wość wyliczoną z okresu sygnału. Siódmy – fotografia 16 – zmierzony czas trwania okresu. Kolejny ekran, fotografia 17, poka- zuje wartość licznika wejścia B. Wejście to może pełnić funkcję licznika zdarzeń. Ostat- ni ekran (fotografia 18) pokazuje odchyłkę generatora od precyzyjnego wzorca, ale

ze względu na to, że aby ta f u n k c j o n a l - ność działa- ła, potrzebny jest dodatkowy moduł, pominę jej opis.

Przycisk S6

„000” zmienia sposób wygaszania zer nie- znaczących z prawej strony. Możliwe są trzy opcje: wyświetla- nie zer – fotografia 19, zastąpienie ich spacjami – fotografia 20 lub dosunięcia wyniku do prawej strony – fotografia 21. Na ostatniej fotografii widać cały miernik i okno na wyświet-

laczu, które pojawi się na trzy sekundy, informując, jaki sposób wyświetlania został wybrany.

Cóż, nie tylko

systemy operacyjne mogą używać okienek :-)

Przycisk S3 „Hold” zatrzy- muje wyświetlanie, co jest sygnalizowa-

ne świece- niem czerwo- nej diody D1

i miganiem napisu „HOLD”.

W tym czasie pomiar jest

cały czas dokonywany, co widać w oknie terminala, tylko wartość na

wyświetlaczu jest zamrożona.

S8 „Rel-” zapamiętuje czę- stotliwość, po czym odej- muje ją od mierzonej. Fakt pomiaru relatywnego jest

sygnalizowany świeceniem diody LED D8

„REL” na zielono. Pozwala to na pomiary

„radiowe” z uwzględnieniem częstotliwo- ści pośredniej. S4 „Rel+” działa podob-

R1390R

R13 470k*

R3 1k

T1 BFR93AE6327

VCC

C1 100pF

C15*

10uF C14 100pF*

R1 390R

R3 1k

T1 BFR93AE6327 100pFC1 R2

470k*

C15*

10uF C14 100pF*

1

2

JP AC/DC Rys. 18

Rys. 19 Rys. 21

Fot. 7

Fot. 8 Fot. 9

Fot. 10

Fot. 14 Fot. 12

Fot. 16 Fot. 11

Fot. 13

Fot. 15

Fot. 17

Fot. 18

Fot. 19 Fot. 20

Fot. 21

(8)

nie, z tym że zapamiętana częstotliwość jest dodawana do wyniku pomiaru.

W tej sytuacji dioda

„REL” świeci na czerwono. Trzeba wiedzieć, że funkcja ta działa tylko, gdy wyświetlany jest bezpo- średni pomiar z licznika. Gdy częstotliwość jest zbyt niska, dioda „REL” miga. W takiej sytuacji należy przełączyć się na ekran 5 (fotografia 14). Pomiar relatywny można włączyć tylko na ekranie zero (pomiar czę- stotliwości wejścia A), pięć (zliczone impul- sy na wejściu A w ciągu sekundy) i dziewięć (wejście B). Ostatni przypadek nie zadziała, gdy wejście B będzie użyte do zliczania impulsów, a nie pomiaru częstotliwości.

Funkcję licznika na wejściu B uruchamia się po naciśnięciu przycisku S9 „SET”, gdy wyświetlany jest ekran pokazujący często- tliwość zmierzoną na wejściu B (fotografia 17). Wygląd wyświetlacza OLED zmieni się – fotografia 22. Powrót do pomiaru częstotliwości nastąpi po ponownym naciś- nięciu „SEL”. W czasie gdy miernik pra- cuje w roli licznika, naciśnięcie przycisku enkodera zapamiętuje stan licznika i zeruje go. Zapamiętana wartość jest wyświetla- na na wyświetlaczu OLED za napisem

„LATCH”. Tę samą funkcjonalność uzyska się w czasie opadającego zbocza sygnału na wejściu PC12. Przechwyconą wartość można sprawdzić w programie termina- lu – rysunek 23. Przekroczenie wartości 99999999 licznika powoduje wyświetlenie napisu „OVER”, ale stan licznika nadal można sprawdzić w terminalu. Licznik jest 32-bitowy i po przekroczeniu warto- ści 4294967296 zacznie liczyć od zera.

Gdy wejście B pracuje w trybie licznika częstotliwości, przyciskiem S7 „MENU”

można przełączać się pomiędzy pomiarem z wejścia A i B. Jest to tymczasowa funk- cjonalność, ponieważ po dołączeniu modu- łu przełącznika wejść AVAT3277, przycisk będzie pełnił inną funkcję.

S5 „GATE” pozwala wybrać czas bramkowania podczas zliczania częstot- liwości. Do wyboru są czasy 10, 100ms oraz sekunda, 10 i 100 sekund. Zmianie czasu towarzyszy pojawienie się okienka z informacją o aktualnym wyborze – rysu- nek 23. Okienko znika po trzech sekun- dach od naciśnięcia przycisku „GATE”.

Ustawienia miernika zapamiętywane są w EEPROM po dziesięciu sekundach od naciśnięciu dowolnego przycisku. Podczas startu programu, w terminalu wyświet- lane są informacje o odczytaniu pamięci EEPROM – rysunek 24. Ponadto pojawiają się informacje o liczbie resetów mikrokon- trolera i zadziałania watchdoga. W tym

czasie na wyświetlaczu pojawi się logo (fotografia 3) albo informacje o inicjali- zacji EEPROM lub odzyskaniu jej zawar- tości z backupu. Jeśli w mierniku nie ma zamontowanej pamięci, wszystkie kropki na wyświetlaczu LED są zaświecone, a pro- gram przyjmie standardową konfigurację.

Uwagi końcowe. Opracowanie urządze- nia o tak dużej funkcjonalności nie jest zadaniem łatwym. Opracowanie mier- nika zajęło wiele godzin. Powstały dwa prototypy i jedna użyteczna konstrukcja.

W materiałach dodatkowych, oprócz rysun- ków i fotografii z artykułu, znajdują się fotografie i filmy z kolejnych etapów prac.

Widać tam część potrzebnego sprzętu. Poza oscyloskopem i generatorem używany był analizator logiczny oraz skaner 1-Wire zbu- dowany tylko i wyłącznie do analizowania tej magistrali. Potrzeba używania skanera wynikała z tego, że uniwersalne analizatory (na przykład SaleAE) przedstawiają infor- mację w niezbyt czytelny sposób, ale są przydatne, aby wykryć nieprawidłowości w zależnościach czasowych, czego skaner nie zrobi. Chwilami pracę prowadzono na trzech monitorach. Nie zarejestrowałam tego etapu prac i na rysunkach 13 i 14 widać obrazy z dwóch monitorów, gdzie ekran analizatora LA2016 jest przykry- ty oknem terminalu wyświetlającym dane z emulatora-skanera 1-Wire, a wcześniej ekrany te były na osobnych monitorach.

Nie ma jednego przyrządu, który wystar- czyłby do pracy elektronika. W tym przy- padku, skaner, analizator, oscyloskop gene- rator i debugger, a także program terminalu, co pokazałam na rysunku 13 i 14, dopeł- niały się funkcjonalnością. Bez debuggera prace pewnie trwałyby dziesięć razy dłu- żej. Debugger wielokrotnie uświadamiał mi, jak niezwykle zoptymalizowany kod potrafi stworzyć kompilator GCC-ARM.

Na przykład potrafi przenieść poszukiwany ciąg bajtów z FLASH do RAM, mimo że został zadeklarowany we FLASH (const).

Robi tak, aby zwiększyć szybkość działania wyszukiwania ciągu, ponieważ dostęp do

RAM jest szybszy niż do FLASH. Opcja ta przydaje się, gdy baza danych znajduje się w pamięci FLASH. Przedstawiony moduł nie jest jeszcze kompletnym miernikiem.

Będzie nim po dodaniu TXCO AVT3276 i obwodów wejściowych AVT3277. Mier- nik wraz z dodatkowymi modułami można umieścić w obudowie aparaturowej CP15- 34. Do obudowy zaprojektowano atrak- cyjny panel, którego dokumentację można znaleźć w materiałach dodatkowych.

Najnowsze wersje softu dostępne są na http://sa-s.prv.pl/fw/. Na Youtube https://

www.youtube.com/playlist?list=PLdtkbzW TUVMl67a8ouZUBjK8GDIzT1naZ znaj- dują się relacje z prac nad opisywanym miernikiem oraz jego bardzie zaawanso- waną wersją AVT3278

Propozycje modyfikacji oprogramowa- nia i sprzętu najlepiej kierować do redakcji.

SaS sas@elportal.pl Rezystory 1206

R1 R4 R7 R8 R9 R12 R15 R16 . . . 390Ω R2 R13 . . . 470kΩ *– opis w tekście R3 R10 . . . 1kΩ R5 R6 R11. . . 2,2kΩ RP1 . . . 8 * 75Ω Kondensatory ceramiczne 1206

C2 C3 C6 C7 C10 . . . 100nF C14 . . . 100pF *– opis w tekście C1 . . . 100pF C11 C12 C15 . . . 10uF C15 . . . 10uF *– opis w tekście C4 C5 . . . 22pF C8 C9 . . . 2u2 U1 . . . STM32F401RCT6 U2 . . . UDN2983 (A2982 od pinu 1) U3a . . . .DS2431+

U3b . . . .DS2431P+

U4 . . . .SPX1117 T1 . . . .BFR93AE6327 Led1 Led2 . . . KW4-566ABB D1 . . . Dioda led czerwona THT D2 . . . Dioda LED Żółta THT D3 . . . SRV05-4 D4 . . . Dioda LED Żółta 1206 D5 . . . .SS16 D6 . . . Dioda LED Niebieska 1206 D7 . . . .Dioda LED czerwona 1206 D8 . . . Dioda LED 2-kolory wspólna katoda THT Q1 . . . .Rezonator kwarcowy SMD/THT 8MHz J1 J7 . . . NS25-W3P J2 J12 . . . NS25-W4P J3 . . . .T821-1-06-S1 J5 . . . Wyświetlacz OLED_0.96_I2C J4 . . . nie używane J6 . . . NS25-W2P J8 J11 . . . NS25-W6P J9 . . . Gniazdo USB-B Mini:

MUSB/AVT Kod: USB B MINI USB J10 . . . NS25-W4P J13 . . . nie używane S1..S8 . . . .Micro switch 5x7 P1 . . . Enkoder impulsowy z przyciskiem Wykaz elementów

Płytka drukowana jest dostępna w Sklepie AVT jako AVT3275 Fot. 23

Rys. 23

Rys. 24 Fot. 22

Cytaty

Powiązane dokumenty

W mieniącej się demokratyczną Unii Europejskiej na razie wiadomo tyle: chrześcijanin może być politykiem, ale jeśli będzie bronił swej wiary religijnej - do czego zgodnie

Omdat de huishoudens uit Delft door het afgesloten convenant eigen- lijk beschouwd kunnen worden als lokale woningzoekenden, kunnen we stellen dat maar zes

Spowoduje to duże utrudnienia w ruchu na ulicach Lublina w ciągu najbliższych dni - prze- widywał wczoraj inspektor Jacek Buczek, komendant miejski po- licji w

Czy sygnał ten może być odtworzony z sygnału spróbkowanego z częstotliwością 4Hz?. Zadanie 3A.2

Saepe saepius interpretatur etiam ep iscop us Hippo­ n en sis hunc textum in sensu spirituali, loquitur tamen m agis de effectu com m unionis (res tantum), quam de

Interesujące jest także, jak sądzę, pytanie o me­ chanizm kształtowania się tego typu więzi i o warunki sprzyjające tworzeniu się poczucia przynależności do

Motointegrator.pl – outline of business model constructs and growth stages (own elaboration based on a company website).. Business model constructs

По нашему мнению, в русском языке название членов этой экстремистской, националистической партии вызывает более от­ рицательные ассоциации,