avt2999.pdf

(996 KB) Pobierz
+
+
+
Projekty AVT
2999
Minikombajn Pomiarowy
Każdy elektronik potrzebu-
je czasem dokonać pomiarów,
w których nie wystarcza już
zwykły multimetr. Podczas uru-
chamiania urządzeń, najczęściej
analogowych, niezbędny bywa oscyloskop
i generator funkcyjny. Nie każdy elektro-
nik może pozwolić sobie na zakup tych
urządzeń. Jednak przy uruchamianiu pro-
stych układów rzadko potrzebne są dokład-
ne pomiary i kilkudziesięciomegahercowy
zakres częstotliwości. Często oscyloskop i
generator może zastąpić karta dźwiękowa
komputera. Ale czy zakres 20Hz – 20kHz
wystarczy? A co, jeśli potrzebujemy zmie-
rzyć np. przebieg 50kHz na tranzystorze
kluczującym w przetwornicy impulsowej?
Jak sprawdzić, czy nadajnik podczerwieni
generuje nośną 36kHz? Jak upewnić się, że
nasz dopiero co uruchomiony wzmacniacz
nie wzbudza się na ultradźwiękach?
A może przy uruchamianiu regulatora
obrotów silnika DC potrzebny będzie testowy
generator PWM? Do czego innego potrzebny
będzie inny generator, np. przebiegu sinuso-
idalnego. Pewnie dojdziemy do wniosku, iż
trzeba zrobić własne urządzenia pomiarowe.
Budowa cyfrowego oscyloskopu i generatora
DDS o niewygórowanych parametrach w
ostatnich latach nie jest tak wielkim pro-
blemem, jak daw niej. Potrzebujemy tylko
kilku wzmacnia-
czy operacyjnych,
multiplekserów i
drabinki rezysto-
rów. Później filtr
antyaliasingowy,
no i wreszcie
przetwornik ana-
logowo-cyfro-
wy w przypadku
oscyloskopu bądź
cyfrowo-analo-
gowy, jeśli budu-
jemy generator.
Całością będzie
sterował jakiś
popularny mikro-
kontroler.
część 1
koniec jeszcze ładny wyświetlacz i panel z
klawiaturą. No i gotowe!
Z pozoru wszystko jest proste, ale jak się
tak bliżej przyjrzeć, to jednak wychodzi sporo
elementów. Już nie wspominając o fakcie, że
przy uruchamianiu i kalibracji naszego dzieła
i tak będziemy potrzebowali, o zgrozo, oscy-
loskopu i generatora. W przeciwnym razie
urządzenie będzie działało „tak sobie” lub w
najgorszym wypadku wcale nie będzie miało
na to ochoty.
Przydałby się gotowy, skalibrowany moduł
zawierający w sobie wyżej wymienione ele-
menty. Wprawdzie tzw. układy PSoC są temu
bliskie, jednak mnie bardziej zaciekawiły
najnowsze mikrokontrolery AVR – XMEGA.
Może pomyślisz, drogi Czytelniku, że to
jakaś pomyłka lub kpina. Przecież od dawna
są dostępne o wiele wydajniejsze i tańsze
mikrokontrolery ARM. Kto by się zachwycał
„8-bitowcami”.
A jednak! Te małe „stworki” mają coś,
czego jeszcze w trakcie pisania tego tekstu nie
posiadają żadne 32-bitowe mikrokontrolery
ARM ani żadne inne ogólnego zastosowania.
Tym czymś jest wbudowany 12-bitowy prze-
twornik A/C o częstotliwości próbkowania
2MS/s , który ma programowalne wzmocnienie
1 – 64x. A to oznacza ni mniej, ni więcej, że
mamy gotowe multipleksery, a tak w zasadzie –
gotowy cały tor pomiarowy. Potrzebny będzie
tylko zwykły dzielnik rezystorowy na wejściu.
No i warto zostawić filtr antyaliasingowy.
Drugą ważną cechą, dość rzadko spotykaną w
ARM-ach, jest przetwornik C/A. W XMEGA
jest, i to nie byle jaki, bo również 12-bitowy, o
częstotliwości próbkowania 1MS/s.
Widząc to, postanowiłem wykonać pre-
zentowany dalej Minikombajn Pomiarowy .
To nie tylko oscyloskop i generator. Zawiera
on zestaw narzędzi, przydatnych przy urucha-
mianiu większości prostych układów elektro-
nicznych. Połączenie obu tych urządzeń daje
takie możliwości, jak pomiar charakterystyki
badanego układu, filtrów oraz elementów
RLC. Dodatkowo do dyspozycji jest analiza-
tor widma sygnału, multimetr oraz analizator
stanów logicznych. I to wszystko na jed-
nym małym mikrokontrolerze AVR XMEGA!
U1
LCD132x64
Rys. 1
LCD 132x64
P3
RS232
VDD
Vbat
VDD
Vbat
C11
C12
C2
100u
L4
10u
AVCC
C4
100n
100n
100n
P1
U2
1117 ADJ
C21
100n
C22
100n
C8
100n
C9
100n
C10
100n
VDD
VSS
2
C3
100n
C1
100u
IN
GND
OUT
1
R27
1k
C13
100n
C14
100n
C15
100n
VSS
GND
C7
100n
C5
100u
D1
3.6V
C6
100u
D2
3.6V
P2
Power
GND
C20
100n
R1
VSS
VSS
VSS
VDD
P8
P9
P10
U4A
AD8532ARZ
Z1
Keys
R2
820k 1%
R3
150k
3
44
PB3 7
8
R4
220R 1%
L1
47u
PA4
1
R6
1.1k 1%
PB1 5
R5
30k 1%
GND
GND
BNC
2
C16
330p
C17
1.8n
4
1
Vbat
PA5
P4
R7
220R 1%
L2
47u
Z2
GND
R11
1.1k 1%
U3
ATXmega32A4
R8
820k 1%
R9
150k
U4B
1
2
GND
5
6
C18
330p
C19
1.8n
2
8
PA6
3
4
7
RESET/PDI_CLK 35
VDD
R10
30k 1%
5
6
BNC
3
PDI_DATA 34
PA7
4
PDI
R14
-
R21
GND
27
VSS
PD7
U5A
AD8532ARZ
S11 SW 3POZ
26
25 PD6
330R 1%
L3
100u
GND
PB2 6
C23
2.2n
3
8
24 PD5
R22
49R9 1%
R23
4k99 1%
VSS
C24
330p
1
Z3
BNC
PD4
R12
23
PB0 4
2
22 PD3
4
C25
4.7n
21 PD2
GND
R25
3.3k 1%
R26
1.1k 1%
P5
20 PD1
R24
49R9 1%
PD0
R13
330R 1%
1
2
k18
D3
3.6V
3
4
GND
5
6
8MHz
C26
22p
7
8
VSS
C27
22p
9
10
VSS
VSS
X1
VSS
Na
VSS
Logic I/O
VSS
Elektronika dla Wszystkich
13
816654472.736.png 816654472.847.png 816654472.958.png 816654472.1069.png 816654472.001.png 816654472.111.png 816654472.209.png 816654472.220.png 816654472.231.png 816654472.242.png 816654472.253.png 816654472.264.png 816654472.275.png 816654472.286.png 816654472.297.png 816654472.308.png 816654472.319.png 816654472.330.png 816654472.341.png 816654472.352.png 816654472.363.png 816654472.374.png 816654472.385.png 816654472.396.png 816654472.407.png 816654472.418.png 816654472.429.png 816654472.440.png 816654472.451.png 816654472.462.png 816654472.473.png 816654472.484.png 816654472.495.png 816654472.506.png 816654472.517.png 816654472.528.png 816654472.539.png 816654472.550.png 816654472.561.png 816654472.572.png 816654472.583.png 816654472.594.png 816654472.605.png 816654472.616.png 816654472.627.png 816654472.638.png 816654472.649.png 816654472.660.png 816654472.671.png 816654472.682.png 816654472.693.png 816654472.704.png 816654472.714.png 816654472.725.png 816654472.737.png 816654472.748.png 816654472.759.png 816654472.770.png 816654472.781.png 816654472.792.png 816654472.803.png 816654472.814.png 816654472.825.png 816654472.836.png 816654472.848.png 816654472.859.png 816654472.870.png 816654472.881.png 816654472.892.png 816654472.903.png 816654472.914.png 816654472.925.png 816654472.936.png 816654472.947.png 816654472.959.png 816654472.970.png 816654472.981.png 816654472.992.png 816654472.1003.png 816654472.1014.png 816654472.1025.png 816654472.1036.png 816654472.1047.png 816654472.1058.png 816654472.1070.png 816654472.1081.png 816654472.1092.png 816654472.1103.png 816654472.1114.png 816654472.1125.png 816654472.1136.png 816654472.1147.png 816654472.1158.png 816654472.1169.png 816654472.002.png 816654472.013.png 816654472.024.png 816654472.035.png 816654472.046.png 816654472.057.png 816654472.067.png 816654472.078.png 816654472.089.png 816654472.100.png 816654472.112.png 816654472.123.png 816654472.134.png 816654472.145.png 816654472.156.png 816654472.167.png 816654472.178.png 816654472.189.png 816654472.200.png 816654472.208.png 816654472.210.png 816654472.211.png 816654472.212.png 816654472.213.png 816654472.214.png 816654472.215.png 816654472.216.png 816654472.217.png 816654472.218.png 816654472.219.png 816654472.221.png 816654472.222.png 816654472.223.png 816654472.224.png 816654472.225.png 816654472.226.png 816654472.227.png 816654472.228.png 816654472.229.png 816654472.230.png 816654472.232.png 816654472.233.png 816654472.234.png 816654472.235.png 816654472.236.png 816654472.237.png 816654472.238.png 816654472.239.png 816654472.240.png 816654472.241.png 816654472.243.png 816654472.244.png 816654472.245.png 816654472.246.png 816654472.247.png 816654472.248.png 816654472.249.png 816654472.250.png 816654472.251.png 816654472.252.png 816654472.254.png 816654472.255.png 816654472.256.png 816654472.257.png 816654472.258.png 816654472.259.png 816654472.260.png 816654472.261.png 816654472.262.png 816654472.263.png 816654472.265.png 816654472.266.png 816654472.267.png 816654472.268.png 816654472.269.png 816654472.270.png 816654472.271.png 816654472.272.png 816654472.273.png 816654472.274.png 816654472.276.png 816654472.277.png 816654472.278.png 816654472.279.png 816654472.280.png 816654472.281.png 816654472.282.png 816654472.283.png 816654472.284.png 816654472.285.png 816654472.287.png 816654472.288.png 816654472.289.png 816654472.290.png 816654472.291.png 816654472.292.png 816654472.293.png 816654472.294.png 816654472.295.png 816654472.296.png 816654472.298.png 816654472.299.png 816654472.300.png 816654472.301.png 816654472.302.png 816654472.303.png 816654472.304.png 816654472.305.png 816654472.306.png 816654472.307.png 816654472.309.png 816654472.310.png 816654472.311.png 816654472.312.png 816654472.313.png 816654472.314.png 816654472.315.png 816654472.316.png 816654472.317.png 816654472.318.png 816654472.320.png 816654472.321.png 816654472.322.png 816654472.323.png 816654472.324.png 816654472.325.png 816654472.326.png 816654472.327.png 816654472.328.png 816654472.329.png 816654472.331.png 816654472.332.png 816654472.333.png 816654472.334.png 816654472.335.png 816654472.336.png 816654472.337.png 816654472.338.png 816654472.339.png 816654472.340.png 816654472.342.png 816654472.343.png 816654472.344.png 816654472.345.png 816654472.346.png 816654472.347.png 816654472.348.png 816654472.349.png 816654472.350.png 816654472.351.png 816654472.353.png 816654472.354.png 816654472.355.png 816654472.356.png 816654472.357.png 816654472.358.png 816654472.359.png 816654472.360.png 816654472.361.png 816654472.362.png 816654472.364.png 816654472.365.png 816654472.366.png 816654472.367.png 816654472.368.png 816654472.369.png 816654472.370.png 816654472.371.png 816654472.372.png 816654472.373.png 816654472.375.png 816654472.376.png 816654472.377.png 816654472.378.png 816654472.379.png 816654472.380.png 816654472.381.png 816654472.382.png 816654472.383.png 816654472.384.png 816654472.386.png 816654472.387.png 816654472.388.png 816654472.389.png 816654472.390.png 816654472.391.png 816654472.392.png 816654472.393.png 816654472.394.png 816654472.395.png 816654472.397.png 816654472.398.png 816654472.399.png 816654472.400.png 816654472.401.png 816654472.402.png 816654472.403.png 816654472.404.png 816654472.405.png 816654472.406.png 816654472.408.png 816654472.409.png 816654472.410.png 816654472.411.png 816654472.412.png 816654472.413.png 816654472.414.png 816654472.415.png 816654472.416.png 816654472.417.png 816654472.419.png 816654472.420.png 816654472.421.png 816654472.422.png 816654472.423.png 816654472.424.png 816654472.425.png 816654472.426.png 816654472.427.png 816654472.428.png 816654472.430.png 816654472.431.png 816654472.432.png 816654472.433.png 816654472.434.png 816654472.435.png 816654472.436.png 816654472.437.png 816654472.438.png 816654472.439.png 816654472.441.png 816654472.442.png 816654472.443.png 816654472.444.png 816654472.445.png 816654472.446.png 816654472.447.png 816654472.448.png 816654472.449.png 816654472.450.png 816654472.452.png 816654472.453.png 816654472.454.png 816654472.455.png 816654472.456.png 816654472.457.png 816654472.458.png 816654472.459.png 816654472.460.png 816654472.461.png 816654472.463.png 816654472.464.png 816654472.465.png 816654472.466.png 816654472.467.png 816654472.468.png 816654472.469.png 816654472.470.png 816654472.471.png 816654472.472.png 816654472.474.png 816654472.475.png 816654472.476.png 816654472.477.png 816654472.478.png 816654472.479.png 816654472.480.png 816654472.481.png 816654472.482.png 816654472.483.png 816654472.485.png 816654472.486.png 816654472.487.png 816654472.488.png 816654472.489.png 816654472.490.png 816654472.491.png 816654472.492.png 816654472.493.png 816654472.494.png 816654472.496.png 816654472.497.png 816654472.498.png 816654472.499.png 816654472.500.png 816654472.501.png 816654472.502.png 816654472.503.png 816654472.504.png 816654472.505.png 816654472.507.png 816654472.508.png 816654472.509.png 816654472.510.png 816654472.511.png 816654472.512.png 816654472.513.png 816654472.514.png 816654472.515.png 816654472.516.png 816654472.518.png 816654472.519.png 816654472.520.png 816654472.521.png 816654472.522.png 816654472.523.png 816654472.524.png 816654472.525.png 816654472.526.png 816654472.527.png 816654472.529.png 816654472.530.png 816654472.531.png 816654472.532.png 816654472.533.png 816654472.534.png 816654472.535.png 816654472.536.png 816654472.537.png 816654472.538.png 816654472.540.png
Projekty AVT
Zapraszam więc do lektury poniższego arty-
kułu wszystkich, którzy chcą mieć cały sys-
tem pomiarowy w jednej dłoni.
momentu. Jeżeli prąd na wyj-
ściu generatora, czyli także na
masie, przekroczy 20mA, pin
PA4 mikrokontrolera przestanie
sobie z nim radzić i 1117ADJ
będzie miał zbyt niskie napięcie
na wejściu. Potencjał między
masą a VSS będzie malał, aż
w końcu zmieni polaryzację i
wyniesie około –0,6V. Wtedy
do akcji wkroczy dioda D1 spo-
laryzowana w kierunku prze-
wodzenia. Sytuacja zostanie
opanowana. Jeżeli masz proble-
my z wyobrażeniem sobie tej
sytuacji, spójrz na rysunek 3 .
Została tam przedstawiona sytu-
acja, gdy na wyjściu pojawia się
impuls o odwrotnej polaryza-
cji. W tym przypadku napięcie
między masą a VSS będzie się
zwiększać i stabilizator nic na to
nie poradzi. Wynika to z zasady
jego działania. Dioda D2 pełni
podobną funkcję i chroni przed
przepięciami dostającymi się
przez kondensatory filtrujące,
głównie C2 i C5. Wprawdzie
jest to już sytuacja skrajna, ale
lepiej dmuchać na zimne. Na
koniec wspomnę jeszcze o tym,
że układ 1117ADJ do popraw-
nej pracy wymaga obciążenia
wstępnego, dlatego pojawił się
rezystor R27.
Tor sygnałów wejściowych .
Minikombajn Pomiarowy
ma dwa kanały dla badanych
sygnałów. Oba są identyczne,
więc zajmiemy się jednym z
nich. Sygnał ze złącza Z1 trafia
na dzielnik złożony z rezysto-
rów R2, R3 i R5 o impedancji
wejściowej 1MΩ. Na wejście
wtórnika U4 wędruje napięcie
podzielone 33 razy. AD8532
jest wzmacniaczem Rail to Rail, czyli zdol-
nym do pracy w całym zakresie napięć zasi-
lających. A więc zarówno na wejściu, jak i
wyjściu może pojawić się poziom VSS lub
VDD. Skoro potencjał między GND a VSS
wynosi 1,25V, to można założyć, że maksy-
malna amplituda sygnału wejściowego nie
powinna przekraczać 1,25V*33 = 41,25V. Dla
pewności przyjmijmy 40V. Z zastosowaniem
sondy 10x będzie to odpowiednio 400V. Za
wtórnikiem znajduje się
3-biegunowy filtr dol-
noprzepustowy RLC.
Składają się na niego
elementy R4, R6, C16,
C17 i L1. Częstotliwość
graniczna tego filtru
wynosi 330kHz. W ten
sposób
Tabela 1. Parametry urządzenia:
Zasilanie:
- napięcie: 3V – 3,6V, pobór prądu: praca 35mA – 40mA,
w stanie spoczynku <50μA.
Oscyloskop:
- rozdzielczość pionowa: 12 bitów
- 2 kanały, każdy o paśmie analogowym 300kHz
- próbkowanie: 1 kanał – 1Ksampli @2MS/s,
2 kanały – 2 x 512sampli @1MS/s
- podstawa czasu: 2us...50ms (2us, 5us z interpolacją sinc)
- wzmocnienie: 50mV – 5V/działkę dla sondy 1x
- zakres mierzonych napięć: ±40V, zabezpieczenie wejść
do ok. 1kV, impedancja 1MΩ
Generator arbitralny:
- rozdzielczość pionowa: 12 bitów
- próbkowanie: 512sampli @1MS/s
- przebiegi domyślne: sinus, prostokąt, piłokształtny,
szum różowy, szum biały, arbitralny
- zakres częstotliwości: 1Hz – 500kHz
- napięcie wyjściowe: 0 – 2,5Vpp bez obciążenia,
dodatkowy tłumik 100x.
- impedancja wyjść: 50Ω, zabezpieczenie od ok. ±8V
(±20V przez kilka sekund)
- regulacja wypełnienia: 1%...99%
- regulacja offsetu: max ±1,2V
- modulacja FM i AM, 0...200%
- przemiatanie częstotliwości, stosunek fmax/fmin <= 200
- możliwość zapisu dowolnego przebiegu i jego edycja
Analizator widma:
- rozdzielczość pionowa: 12 bitów
- próbkowanie: 1Ksampli, 512-punktowa Real-FFT,
częstotliwość końcowa: 160Hz – 1MHz
Analizator stanów logicznych:
- próbkowanie: 8kanałów, 2Ksampli, 500S/s - 4MS/s.
Wobuloskop:
- pomiar charakterystyki metodą przemiatania częstotliwości,
impulsem Diraca i szumem białym
Multimetr:
- pomiar napięć: True RMS, wartości średniej,
wartości maksymalnej oraz minimalnej
- pomiar częstotliwości
Komunikacja przez RS232:
- prędkość przesyłania danych 19200 – 1,5Mb/s
- program komputerowy do obsługi urządzenia
dla systemów Linux i Windows
Opis układu
Na początku proszę, żeby nie traktować
Minikombajnu Pomiarowego jak profesjo-
nalnego urządzenia pomiarowego , choć na
pewno będzie on bardzo przydatny przy uru-
chamianiu wszelkich hobbystycznych ukła-
dów. A teraz przejdźmy do podstaw.
Urządzenie składa się z kilku narzędzi
pomiarowych, których parametry pokazuje
tabela 1 . Schemat ideowy przedstawiony jest
na rysunku 1 – płyta główna, oraz rysunku
2 – klawiatura matrycowa 2x5 z diodami,
które zapobiegają zwarciom i pozwalają na
poprawny odczyt z kilku klawiszy naciśnię-
tych równocześnie. Główny schemat jest dużo
bardziej rozbudowany. Można na nim wyróż-
nić kilka bloków: zasilanie, układ wejściowy
ADC, układ wyjściowy DAC, złącze I/O
oraz interfejs użytkownika. Całością zarządza
mikrokontroler ATXMEGA32A4.
Zasilanie . Podczas analizy schematu
obwody zasilania mogą wydawać się bardzo
dziwne. Otóż wszystkie układy peryferyjne
zasilane są z mikrokontrolera, stąd VDD
połączone jest z pinem PA4. Pozwala to
znacznie ograniczyć prąd, wyłączając urzą-
dzenia programowo. Dzięki temu przy zasila-
niu bateryjnym nie jest potrzebny dodatkowy
wyłącznik mechaniczny. Sam mikrokontroler
zasilany jest bezpośrednio ze złącza Power.
Dodatkowo AVCC jest filtrowane poprzez
dławik L4 i kondensator C20. Niepokój budzi
zapewne podłączenie masy do wyjścia stabi-
lizatora U2. Ale spokojnie, jest to najzwyklej-
sza sztuczna masa. Układ 1117ADJ posiada
możliwość regulacji napięcia wyjściowego od
1,25V i takie też napięcie występuje pomię-
dzy końcówkami OUT i ADJ, gdyż nóżka
ADJ jest podłączona od razu do masy. Zasada
działania taka jak w LM317. Podsumowując:
napięcie pomiędzy GND a VSS wynosi
1,25V, więc przy zasilaniu napięciem około
3V, napięcie pomiędzy VDD a GND będzie
wynosić 1,75V. To w zupełności wystarczy
do poprawnej pracy układów analogowych
i przetwornika ADC. Takie rozwiązanie ze
sztuczną masą znacząco upraszcza cały układ,
gdyż nie są potrzebne dodatkowe linie zasila-
jące lub konwertery napięcia ujemnego.
Diody Zenera D1 i D2 chronią przed prze-
pięciami, mogącymi pojawić się przy niepra-
widłowym wykorzystaniu układu. Załóżmy
taką sytuację: ktoś przypadkiem podał sygnał
o dużej amplitudzie na wyjście generatora
Z3. Dioda D3 będzie ograniczała impulsy o
amplitudzie wyższej niż 3,6V, ale uwaga(!),
między wyjściem a VSS! Jak widać, prąd
wpływający do wyjścia Z3 będzie wypływał
masą – bo musi tu być obwód zamknięty.
Stabilizator U2 będzie dzielnie sprzeciwiał
się wszelkim zmianom, ale tylko do pewnego
zostaje zjawisko aliasingu dla najwyższych
częstotliwości próbkowania. Z twierdzenia
Kotielnikowa-Shannona wynika, że częstotli-
wość próbkowania powinna być przynajmniej
dwukrotnie wyższa niż najwyższa harmo-
niczna sygnału, zwana także częstotliwością
Nyquista. To zagadnienie najlepiej wyjaśnia
rysunek 4 . Powiedzmy, że podajemy na
wejście przetwornika ADC przebieg (linia
czerwona) o trochę niższej częstotliwości
Rys. 2
zredukowane
14
Elektronika dla Wszystkich
816654472.541.png 816654472.542.png 816654472.543.png 816654472.544.png 816654472.545.png 816654472.546.png 816654472.547.png 816654472.548.png 816654472.549.png 816654472.551.png 816654472.552.png 816654472.553.png 816654472.554.png 816654472.555.png 816654472.556.png 816654472.557.png 816654472.558.png 816654472.559.png 816654472.560.png 816654472.562.png 816654472.563.png 816654472.564.png 816654472.565.png 816654472.566.png 816654472.567.png 816654472.568.png 816654472.569.png 816654472.570.png 816654472.571.png 816654472.573.png 816654472.574.png 816654472.575.png 816654472.576.png 816654472.577.png 816654472.578.png 816654472.579.png 816654472.580.png 816654472.581.png 816654472.582.png 816654472.584.png 816654472.585.png 816654472.586.png 816654472.587.png 816654472.588.png 816654472.589.png 816654472.590.png 816654472.591.png 816654472.592.png 816654472.593.png 816654472.595.png 816654472.596.png 816654472.597.png 816654472.598.png 816654472.599.png 816654472.600.png 816654472.601.png 816654472.602.png 816654472.603.png 816654472.604.png 816654472.606.png 816654472.607.png 816654472.608.png 816654472.609.png 816654472.610.png 816654472.611.png 816654472.612.png 816654472.613.png 816654472.614.png 816654472.615.png 816654472.617.png 816654472.618.png 816654472.619.png 816654472.620.png 816654472.621.png 816654472.622.png 816654472.623.png 816654472.624.png 816654472.625.png 816654472.626.png 816654472.628.png 816654472.629.png 816654472.630.png 816654472.631.png 816654472.632.png 816654472.633.png 816654472.634.png 816654472.635.png 816654472.636.png 816654472.637.png 816654472.639.png 816654472.640.png 816654472.641.png 816654472.642.png 816654472.643.png 816654472.644.png 816654472.645.png 816654472.646.png 816654472.647.png 816654472.648.png 816654472.650.png 816654472.651.png 816654472.652.png 816654472.653.png 816654472.654.png 816654472.655.png 816654472.656.png 816654472.657.png 816654472.658.png 816654472.659.png 816654472.661.png 816654472.662.png 816654472.663.png 816654472.664.png 816654472.665.png 816654472.666.png 816654472.667.png 816654472.668.png 816654472.669.png 816654472.670.png 816654472.672.png 816654472.673.png 816654472.674.png 816654472.675.png 816654472.676.png 816654472.677.png 816654472.678.png 816654472.679.png 816654472.680.png 816654472.681.png 816654472.683.png 816654472.684.png 816654472.685.png 816654472.686.png 816654472.687.png 816654472.688.png 816654472.689.png 816654472.690.png 816654472.691.png 816654472.692.png 816654472.694.png 816654472.695.png 816654472.696.png 816654472.697.png 816654472.698.png 816654472.699.png 816654472.700.png 816654472.701.png 816654472.702.png 816654472.703.png 816654472.705.png 816654472.706.png 816654472.707.png
 
Projekty AVT
mikrokontrolera
oznacza +1,25V.
ADC korzysta z
wewnętrznego
napięcia refe-
rencyjnego o
wartości 1V. Tak
więc sygnały na
pinie PA5 (także
PA6) mogą mieć
maksymalną
amplitudę 1V.
Idąc dalej, a
raczej cofając
się przed filtr
dolnoprzepusto-
wy, ta ampli-
tuda wyniesie
1,18V. A to
dlatego, że tłu-
mienie filtru w
paśmie przepu-
stowym wynosi
właśnie 1,18x.
W ostateczno-
ści po pomnożeniu przez wejściowy dzielnik
rezystorowy, maksymalny sygnał, jaki może
pojawić się na złączu Z1, to 1,18V * 33,3 =
39,3V (amplituda).
No dobrze, wróćmy do przetwornika ana-
logowo-cyfrowego. Dzięki pracy różnicowej
możemy skorzystać z wbudowanego mnoż-
nika i dodatkowo wzmocnić sygnał 2x, 4x,
8x, 16x, 32x oraz 64x. Reszta funkcji, takich
jak wyzwalanie czy przesuwanie poziomu
sygnału, realizowana jest programowo. I w
ten oto sposób, otrzymujemy kompletny tor
wejściowy.
Tor wyjściowy . Na pierwszy rzut oka
wygląda on jak lustrzane odbicie toru wej-
ściowego. Sygnał cyfrowy zostaje tu prze-
kształcony na analogowy. Napięcie referen-
cyjne DAC pobierane jest z masy układu – pin
PB0. W przypadku ADC punktem odniesienia
była masa sygnałowa. Tutaj sygnałem odnie-
sienia jest po prostu ujemny biegun zasilania
mikrokontrolera VSS. Stąd zakres napięć na
wyjściu DAC wynosi 0...+1,25V względem
VSS. Sygnał z wyjścia PB2 trafia na filtr dol-
noprzepustowy RLC, również 3-biegunowy,
lecz o częstotliwości granicznej 500kHz. Po
podaniu sygnału prostokątnego o częstotliwo-
ści 500kHz, na wyjściu uzyskamy ładną sinu-
soidę. Fala prostokątna składa się z nieparzy-
stych harmonicznych, a wyższe harmoniczne
zostaną mocno stłumione. Pierwsza harmo-
niczna, z jaką musi się uporać filtr, to dopiero
1,5MHz. Możemy łatwo wyliczyć, że
tłumienie dla tej częstotliwości wyniesie
39dB, czyli prawie 100x. Uwzględniając
fakt, że amplituda drugiej harmonicznej
to 1/3 pierwszej, daje w wyniku znie-
kształcenia na poziomie 0,34%. Nieźle,
jak na taki prosty układ. Gdy chcemy uzy-
skać niższe częstotliwości, np. 300kHz,
wtedy sytuacja nie wygląda już tak różowo.
Przy sygnale prostokątnym 300kHz znie-
kształcenia na wyjściu filtru wyniosą ponad
4%. Na szczęście poniżej 250kHz sytuacja
wygląda lepiej. Zniekształcenia nagle stają się
znów bardzo małe. A to dlatego, że zamiast
sygnału prostokątnego na wyjściu PB2 pojawi
się „sinusopodobny” sygnał złożony z czte-
rech schodków. Częstotliwość próbkowania
przetwornika cyfrowo-analogowego wynosi
maksymalnie 1MHz, dlatego dla częstotli-
wości z zakresu 250kHz – 500kHz można
wygenerować tylko dwa poziomy. Wprawdzie
poniżej 330kHz zmieszczą się 3, ale mogłyby
się pojawić kłopoty z symetrią przebiegu.
Pozostańmy więc przy parzystej liczbie. I tak
w miarę zmniejszania częstotliwości liczba
poziomów zwiększa się.
Wzmacniacz U5A wzmacnia sygnał 4-krot-
nie, a filtr tłumi sygnał dwukrotnie (dzielnik
R12–R13). Czyli maksymalne napięcie za
wzmacniaczem to 1,25V /2 * 4 = 2,5V. Nie
zapomnij, że na razie jest to napięcie wzglę-
dem VSS! Gdy ustawimy DAC dokładnie w
połowie skali, na wyjściu uzyskamy +1,25V
względem VSS, czyli 0V względem masy
sygnałowej GND. Uzyskujemy w ten sposób
generator o amplitudzie maksymalnej ±1,25V
względem masy.
Za wzmacniaczem operacyjnym znajduje
się jeszcze rezystor 49,9Ω, co daje wyjściową
impedancję około 50Ω. Mamy tam też dodat-
kowy dzielnik rezystorowy o tłumieniu 100x,
który można włączyć przełącznikiem S11.
Tuż przed samym złączem znajduje się jesz-
cze kondensator. Wraz z rezystorem R22 lub
R24 tworzy on kolejny filtr dolnoprzepusto-
wy. Częstotliwość graniczna wynosi 677kHz.
Dzięki temu, w okolicach 250 – 300kHz,
zamiast wspomnianych zniekształceń powy-
żej 4%, ostatecznie otrzymujemy 2%. Dla
znacznie niższych częstotliwości całkowite
zniekształcenia harmoniczne sygnału sinuso-
idalnego nie przekraczają 0,3%.
Podobnie jak w oscyloskopie, takie para-
metry jak wzmocnienie czy przesunięcie
poziomu sygnału są realizowane progra-
mowo. Muszę jeszcze ostrzec przed próbą
„wyciągnięcia” 50mA z wyjścia generatora.
W takim wypadku nóżka PA4 bezlitośnie
ograniczy swój prąd i w efekcie na wyjściu
otrzymamy około 18mA.
Port wejść/wyjść logicznych . W jego
skład wchodzi złącze P5 oraz rezystory R14 –
R21 o wartości 1kΩ. W aktualnym programie
port ten wykorzystywany jest w analizatorze
stanów logicznych. Ale nic nie stoi na prze-
szkodzie, aby go zastosować do sterowania
bądź monitorowania innych urządzeń.
Interfejs użytkownika . Do wyświetlania
wszelkich danych wykorzystano popularny
graficzny wyświetlacz LCD o rozdzielczości
132x64 ze sterownikiem SPLC510C. Ma pod-
świetlenie LED, które sterowane jest sygnałem
PWM na pinie PE1 z włączonym szeregowo
Rys. 3
niż wynosi próbkowanie (czarne punkty). W
efekcie zamiast oryginalnego sygnału zoba-
czymy inny o dużo mniejszej częstotliwości
(linia niebieska). Jak to się ma do powyższego
filtru? Otóż dla 330kHz tłumienie wynosi
3dB, czyli niewiele. Jako że jest to filtr 3-bie-
gunowy, charakterystyka opada 18dB/oktawę.
To znaczy, że dla częstotliwości 660kHz tłu-
mienie wyniesie już 21dB (18dB + 3dB). To
jeszcze nie tak dużo. Za to dla częstotliwości
1MHz tłumienie to już około 36dB, czyli
jakieś 60x. Taki przebieg będzie prawie nie-
widoczny na wyświetlaczu urządzenia. Warto
również wspomnieć, że dzielniki wejściowe
nie są skompensowane częstotliwościowo.
Nie jest to wcale wadą. Wręcz przeciwnie,
razem z pojemnością wejściową wzmacniacza
operacyjnego taki dzielnik tworzy dodatko-
wy filtr dolnoprzepustowy o częstotliowości
granicznej około 600kHz. W efekcie pasmo
przepustowe toru wejściowego wynosi około
300kHz i otrzymujemy bardzo dobre tłumienie
wyższych składowych sygnału. Czyli można
z grubsza przyjąć, że filtr całkowicie tłumi
częstotliwości powyżej 1MHz, a więc zgod-
nie z powyższym twierdzeniem powinniśmy
próbkować sygnał z częstotliwością przynaj-
mniej 2MS/s, aby uniknąć aliasingu. Na tyle
pozwala ADC wbudowany w mikrokontroler.
Przetwornik ten pracuje w trybie differential.
Pin odniesienia to PA7. Jest on podłączony
do masy sygnałowej, co względem „masy”
Rys. 4
j
Elektronika dla Wszystkich
15
816654472.708.png 816654472.709.png 816654472.710.png 816654472.711.png 816654472.712.png 816654472.713.png 816654472.715.png 816654472.716.png 816654472.717.png 816654472.718.png 816654472.719.png 816654472.720.png 816654472.721.png 816654472.722.png 816654472.723.png 816654472.724.png 816654472.726.png 816654472.727.png 816654472.728.png 816654472.729.png 816654472.730.png 816654472.731.png 816654472.732.png 816654472.733.png 816654472.734.png 816654472.735.png 816654472.738.png 816654472.739.png 816654472.740.png 816654472.741.png 816654472.742.png 816654472.743.png 816654472.744.png 816654472.745.png 816654472.746.png 816654472.747.png 816654472.749.png 816654472.750.png 816654472.751.png 816654472.752.png 816654472.753.png 816654472.754.png 816654472.755.png 816654472.756.png 816654472.757.png 816654472.758.png 816654472.760.png 816654472.761.png 816654472.762.png 816654472.763.png 816654472.764.png 816654472.765.png 816654472.766.png 816654472.767.png 816654472.768.png 816654472.769.png 816654472.771.png 816654472.772.png 816654472.773.png 816654472.774.png 816654472.775.png 816654472.776.png 816654472.777.png 816654472.778.png 816654472.779.png 816654472.780.png 816654472.782.png 816654472.783.png 816654472.784.png 816654472.785.png 816654472.786.png 816654472.787.png 816654472.788.png 816654472.789.png 816654472.790.png 816654472.791.png 816654472.793.png 816654472.794.png 816654472.795.png 816654472.796.png 816654472.797.png 816654472.798.png 816654472.799.png 816654472.800.png 816654472.801.png 816654472.802.png 816654472.804.png 816654472.805.png 816654472.806.png 816654472.807.png 816654472.808.png 816654472.809.png 816654472.810.png 816654472.811.png 816654472.812.png 816654472.813.png 816654472.815.png 816654472.816.png 816654472.817.png 816654472.818.png 816654472.819.png 816654472.820.png 816654472.821.png 816654472.822.png 816654472.823.png 816654472.824.png 816654472.826.png 816654472.827.png 816654472.828.png 816654472.829.png 816654472.830.png 816654472.831.png 816654472.832.png 816654472.833.png 816654472.834.png 816654472.835.png 816654472.837.png 816654472.838.png 816654472.839.png 816654472.840.png 816654472.841.png 816654472.842.png 816654472.843.png 816654472.844.png 816654472.845.png 816654472.846.png 816654472.849.png 816654472.850.png 816654472.851.png 816654472.852.png 816654472.853.png 816654472.854.png 816654472.855.png 816654472.856.png 816654472.857.png 816654472.858.png 816654472.860.png 816654472.861.png 816654472.862.png 816654472.863.png 816654472.864.png 816654472.865.png 816654472.866.png 816654472.867.png 816654472.868.png 816654472.869.png 816654472.871.png 816654472.872.png 816654472.873.png 816654472.874.png 816654472.875.png 816654472.876.png 816654472.877.png 816654472.878.png 816654472.879.png 816654472.880.png 816654472.882.png 816654472.883.png 816654472.884.png 816654472.885.png 816654472.886.png 816654472.887.png 816654472.888.png 816654472.889.png 816654472.890.png 816654472.891.png 816654472.893.png 816654472.894.png 816654472.895.png 816654472.896.png 816654472.897.png 816654472.898.png 816654472.899.png 816654472.900.png 816654472.901.png 816654472.902.png 816654472.904.png 816654472.905.png 816654472.906.png 816654472.907.png 816654472.908.png 816654472.909.png 816654472.910.png 816654472.911.png 816654472.912.png 816654472.913.png 816654472.915.png 816654472.916.png 816654472.917.png 816654472.918.png 816654472.919.png 816654472.920.png 816654472.921.png 816654472.922.png 816654472.923.png 816654472.924.png 816654472.926.png 816654472.927.png 816654472.928.png 816654472.929.png 816654472.930.png 816654472.931.png 816654472.932.png 816654472.933.png 816654472.934.png 816654472.935.png 816654472.937.png 816654472.938.png 816654472.939.png 816654472.940.png 816654472.941.png 816654472.942.png 816654472.943.png 816654472.944.png 816654472.945.png 816654472.946.png 816654472.948.png 816654472.949.png 816654472.950.png 816654472.951.png 816654472.952.png 816654472.953.png 816654472.954.png 816654472.955.png 816654472.956.png 816654472.957.png 816654472.960.png 816654472.961.png 816654472.962.png 816654472.963.png 816654472.964.png 816654472.965.png 816654472.966.png 816654472.967.png 816654472.968.png 816654472.969.png 816654472.971.png 816654472.972.png 816654472.973.png 816654472.974.png 816654472.975.png 816654472.976.png 816654472.977.png 816654472.978.png 816654472.979.png 816654472.980.png 816654472.982.png 816654472.983.png 816654472.984.png 816654472.985.png 816654472.986.png 816654472.987.png 816654472.988.png 816654472.989.png 816654472.990.png 816654472.991.png 816654472.993.png 816654472.994.png 816654472.995.png 816654472.996.png 816654472.997.png 816654472.998.png 816654472.999.png 816654472.1000.png 816654472.1001.png 816654472.1002.png 816654472.1004.png 816654472.1005.png 816654472.1006.png 816654472.1007.png 816654472.1008.png 816654472.1009.png 816654472.1010.png 816654472.1011.png 816654472.1012.png 816654472.1013.png 816654472.1015.png 816654472.1016.png 816654472.1017.png 816654472.1018.png 816654472.1019.png 816654472.1020.png 816654472.1021.png 816654472.1022.png 816654472.1023.png 816654472.1024.png 816654472.1026.png 816654472.1027.png 816654472.1028.png 816654472.1029.png 816654472.1030.png 816654472.1031.png 816654472.1032.png 816654472.1033.png 816654472.1034.png 816654472.1035.png 816654472.1037.png 816654472.1038.png 816654472.1039.png 816654472.1040.png 816654472.1041.png 816654472.1042.png 816654472.1043.png 816654472.1044.png 816654472.1045.png 816654472.1046.png 816654472.1048.png 816654472.1049.png 816654472.1050.png 816654472.1051.png 816654472.1052.png 816654472.1053.png 816654472.1054.png 816654472.1055.png 816654472.1056.png 816654472.1057.png 816654472.1059.png 816654472.1060.png 816654472.1061.png 816654472.1062.png 816654472.1063.png 816654472.1064.png 816654472.1065.png 816654472.1066.png 816654472.1067.png 816654472.1068.png 816654472.1071.png 816654472.1072.png 816654472.1073.png 816654472.1074.png 816654472.1075.png 816654472.1076.png 816654472.1077.png 816654472.1078.png 816654472.1079.png 816654472.1080.png 816654472.1082.png 816654472.1083.png 816654472.1084.png 816654472.1085.png 816654472.1086.png 816654472.1087.png 816654472.1088.png 816654472.1089.png 816654472.1090.png 816654472.1091.png 816654472.1093.png 816654472.1094.png 816654472.1095.png 816654472.1096.png 816654472.1097.png 816654472.1098.png 816654472.1099.png 816654472.1100.png 816654472.1101.png 816654472.1102.png 816654472.1104.png 816654472.1105.png 816654472.1106.png 816654472.1107.png 816654472.1108.png 816654472.1109.png 816654472.1110.png 816654472.1111.png 816654472.1112.png 816654472.1113.png 816654472.1115.png 816654472.1116.png 816654472.1117.png 816654472.1118.png 816654472.1119.png 816654472.1120.png 816654472.1121.png 816654472.1122.png 816654472.1123.png 816654472.1124.png 816654472.1126.png 816654472.1127.png 816654472.1128.png 816654472.1129.png 816654472.1130.png 816654472.1131.png 816654472.1132.png 816654472.1133.png 816654472.1134.png 816654472.1135.png 816654472.1137.png 816654472.1138.png 816654472.1139.png 816654472.1140.png 816654472.1141.png 816654472.1142.png 816654472.1143.png 816654472.1144.png 816654472.1145.png 816654472.1146.png 816654472.1148.png 816654472.1149.png 816654472.1150.png 816654472.1151.png 816654472.1152.png 816654472.1153.png 816654472.1154.png 816654472.1155.png 816654472.1156.png 816654472.1157.png 816654472.1159.png 816654472.1160.png 816654472.1161.png 816654472.1162.png 816654472.1163.png 816654472.1164.png 816654472.1165.png 816654472.1166.png 816654472.1167.png 816654472.1168.png 816654472.1170.png 816654472.1171.png 816654472.1172.png 816654472.1173.png 816654472.1174.png 816654472.1175.png 816654472.1176.png 816654472.1177.png 816654472.1178.png 816654472.1179.png 816654472.003.png 816654472.004.png 816654472.005.png 816654472.006.png 816654472.007.png 816654472.008.png 816654472.009.png 816654472.010.png 816654472.011.png 816654472.012.png 816654472.014.png 816654472.015.png 816654472.016.png 816654472.017.png 816654472.018.png 816654472.019.png 816654472.020.png 816654472.021.png 816654472.022.png 816654472.023.png 816654472.025.png 816654472.026.png 816654472.027.png 816654472.028.png 816654472.029.png 816654472.030.png 816654472.031.png 816654472.032.png 816654472.033.png 816654472.034.png 816654472.036.png 816654472.037.png 816654472.038.png 816654472.039.png 816654472.040.png 816654472.041.png 816654472.042.png 816654472.043.png 816654472.044.png 816654472.045.png 816654472.047.png 816654472.048.png 816654472.049.png 816654472.050.png 816654472.051.png 816654472.052.png 816654472.053.png 816654472.054.png 816654472.055.png 816654472.056.png 816654472.058.png 816654472.059.png 816654472.060.png 816654472.061.png 816654472.062.png
 
Projekty AVT
rezystorem R1. Do portu wyświetlacza pod-
łączona jest także klawiatura. Jej stan jest
odczytywany, gdy LCD jest nieaktywny. Na
kolejnych pinach PC3–PC7 ustawiany jest stan
niski, a następnie sprawdzana jest wartość na
pinach PB1 i PB3. Wykorzystujemy multiplek-
sowanie, tak jak w złożonych wyświetlaczach
LED, przez co możemy zaoszczędzić kilka
wyprowadzeń. Pisząc już o interfejsach, warto
wspomnieć, że do dyspozycji jest także port
RS232. Dzięki aplikacji komputerowej może-
my sterować kombajnem i odczytywać z niego
dane. Ale o tym napiszę na koniec.
Serce, czyli ATXMEGA32A4 z 32KB
pamięci FLASH, 4KB SRAM i 1KB
EEPROM. Mikrokontroler taktowany jest
sygnałem 32MHz, uzyskiwanym dzięki
pętli PLL z rezonatora kwarcowego 8MHz.
Pamięci FLASH ledwie starczyło na imple-
mentację wszystkich funkcji. Natomiast
SRAM zajmują głównie bufory sygnałów. Na
bufor wejściowy przeznaczono 2KB, co daje
1024 próbki 16-bitowe. W przypadku anali-
zatora jest to 2048 próbek 8-bitowych. Bufor
wyjściowy zajmuje 1KB, czyli 512 próbek
16-bitowych. Sygnały można przechowywać
także w pamięci EEPROM. Mieści się w niej
również 512 próbek, z tą tylko różnicą, że
są one 12-bitowe. Taka „kompresja” jest jak
najbardziej wskazana, gdyż tutaj ważniejsza
jest ilość miejsca, a nie prędkość zapisu i
odczytu. Dzięki temu dane zajmują tylko 768
bajtów, pozwalając wykorzystać pozostałe
256 bajtów do innych celów. A tych wcale nie
brakuje. W pamięci EEPROM przechowywa-
ne są także zmienne kalibracyjne oraz ogólne
ustawienia.
jest tryb wyzwalania oraz liczba kanałów.
W samej pętli badany jest sygnał pod kątem
rodzaju zbocza, szybkości narastania, a także
poziomu napięcia. Przy przepisywaniu do
bufora brana jest pod uwagę również pozycja
w pionie i poziomie oraz korekta wzmocnie-
nia. Czyli wszystko, co powinno znaleźć się
w przyzwoitym oscyloskopie. W przypadku
pracy z podstawą czasu 5us i 2us zostaje rów-
nież przeprowadzona interpolacja sygnału.
Jest to nic innego, jak tylko wstawienie dodat-
kowych próbek zerowych sygnału między
istniejące oraz filtracja dolnoprzepustowa z
wykorzystaniem odpowiedzi impulsowej sinc.
Dla niewtajemniczonych dodam, że chodzi po
prostu o filtr o bardzo dobrych parametrach,
którego charakterystyka opadania jest niemal
pionowa. Całą procedurę ilustruje rysunek 5 .
Szczegółów nie będę omawiał. Dociekliwym
radzę zajrzeć do literatury i zapoznać się z
takimi zagadnieniami, jak splot, filtry niere-
kursywne, funkcja sinc, a także interpolacja
i decymacja. Pozostałą część kodu zajmują
głównie instrukcje odpowiedzialne za usta-
wianie różnych parametrów i nawigację.
Generator . Tutaj również
skorzystałem z kontrolera
DMA, co niesamowicie uła-
twiło program. Próbki wysyła-
ne są nieprzerwanie. Rozmiar
bufora waha się od 2 do 512
i zależy od częstotliwości.
Próbki wysyłane są jakby w
tle, bez ingerowania w wyko-
nywany właśnie program. Tak
samo program nie przeszkadza
w wysyłaniu tych próbek, z
jednym tylko wyjątkiem. Gdy
zostaje zmieniona długość
bufora, DMA jest inicjowane
od nowa w celu aktualizacji
parametrów. Może się to prze-
jawiać szpilkami na wyjściu
podczas zmiany częstotliwo-
ści powyżej około 2kHz. Dla
wyjaśnienia: próbkowanie wynosi maksy-
malnie 1MS/s, długość bufora to 512 próbek.
Stąd 1MS/s / 512S ≈ 2kHz. Przy niższych
częstotliwościach wyjściowych zmniejszana
jest po prostu częstotliwość próbkowania,
co nie wymusza żadnej ingerencji w transfer
DMA. Ta częstotliwość ustalana jest time-
rem, którym wyzwalany zostaje przetwornik
DAC. Oczywiście powyżej 2kHz nie można
zwiększyć już próbkowania, więc pozostaje
tylko zmniejszenie rozmiaru bufora. Skoro
już omawiamy ten temat, wyjaśnię od razu,
dlaczego wybór częstotliwości wygląda na tak
skomplikowany. Jeżeli chcemy zwiększyć lub
zmniejszyć częstotliwość, to program wcho-
dzi do pętli, następnie wykonuje dziwne obli-
czenia i po jakimś czasie „wypluwa” wynik.
Dzieje się tak dlatego, że korzystając z liczb
naturalnych, nie możemy uzyskać dowolnej
częstotliwości, a jedynie pewien skończony
zbiór. Od czego więc zależy końcowa czę-
stotliwość? Ano i od próbkowania, i od dłu-
gości bufora. Częstotliwość = próbkowanie /
długość bufora. A jak ustalana jest szybkość
próbkowania? To zależy od przerwań timera.
Timer pracuje z częstotliwo-
ścią zegara procesora, a więc
32MHz. Aby próbkowanie
wynosiło 1MHz, okres timera
musi wynosić 32. Ostatecznie
nasze równanie ma postać:
częstotliwość = 32 / (okres
timera * długość bufora).
Okres timera może przyjmo-
wać wartości od 32 do 65535,
a długość bufora jak już pisa-
łem – 2 do 512. Jak widać,
ostateczna częstotliwość jest
kombinacją tych liczb. I wła-
śnie te dwie pętle for dobie-
rają wartości tak, aby uzyskać
częstotliwość jak najbliższą
oczekiwanej
Przypominam, że chodzi
o zakres 2kHz – 500kHz i że
Rys. 5
Program
Kod programu składa się z kilkunastu plików
źródłowych w języku C. Na każde narzędzie
przypada osobny plik, dzięki czemu program
jest bardziej przejrzysty. Myślę, że mimo
pisania pod kątem optymalizacji rozmiaru i
szybkości, kod będzie strawny. Opiszę teraz
poszczególne narzędzia, przy okazji prezentu-
jąc skrótowo program. Szczegółowe informa-
cje można znaleźć w komentarzach do kodu.
Oscyloskop . Próbkowanie odbywa się z
wykorzystaniem kontrolera DMA. W tym
czasie mikrokontroler zostaje wprowadzony
w stan uśpienia IDLE. Pozwala to, przynaj-
mniej teoretycznie, ograniczyć szumy genero-
wane wewnątrz procesora. Gdy transfer zosta-
nie zakończony, DMA zgłosi przerwanie i
mikrokontroler przejdzie do normalnej pracy.
Następnie program wchodzi do pętli, w której
sprawdza, czy zaszły warunki wyzwalania.
Jeżeli tak, to odpowiednia część sygnału
zostaje przepisana do bufora wyświetlacza i
w dalszej części wyświetlona. W przeciwnym
wypadku program wykonuje się dalej, bez
zmiany tego bufora. Nie ma co ukrywać:
procedura wyzwalania jest dosyć skompli-
kowana. Przed wejściem w pętlę sprawdzany
16
Elektronika dla Wszystkich
816654472.063.png 816654472.064.png 816654472.065.png 816654472.066.png 816654472.068.png 816654472.069.png 816654472.070.png 816654472.071.png 816654472.072.png 816654472.073.png 816654472.074.png 816654472.075.png 816654472.076.png 816654472.077.png 816654472.079.png 816654472.080.png 816654472.081.png 816654472.082.png 816654472.083.png 816654472.084.png 816654472.085.png 816654472.086.png 816654472.087.png 816654472.088.png 816654472.090.png 816654472.091.png 816654472.092.png 816654472.093.png 816654472.094.png 816654472.095.png 816654472.096.png 816654472.097.png 816654472.098.png 816654472.099.png 816654472.101.png 816654472.102.png 816654472.103.png 816654472.104.png 816654472.105.png 816654472.106.png 816654472.107.png 816654472.108.png 816654472.109.png 816654472.110.png 816654472.113.png 816654472.114.png 816654472.115.png 816654472.116.png 816654472.117.png 816654472.118.png 816654472.119.png 816654472.120.png 816654472.121.png 816654472.122.png 816654472.124.png 816654472.125.png 816654472.126.png 816654472.127.png 816654472.128.png 816654472.129.png 816654472.130.png 816654472.131.png 816654472.132.png 816654472.133.png 816654472.135.png 816654472.136.png 816654472.137.png 816654472.138.png 816654472.139.png 816654472.140.png 816654472.141.png 816654472.142.png 816654472.143.png 816654472.144.png 816654472.146.png 816654472.147.png 816654472.148.png 816654472.149.png 816654472.150.png 816654472.151.png 816654472.152.png 816654472.153.png 816654472.154.png 816654472.155.png 816654472.157.png 816654472.158.png 816654472.159.png 816654472.160.png 816654472.161.png 816654472.162.png 816654472.163.png 816654472.164.png 816654472.165.png 816654472.166.png 816654472.168.png 816654472.169.png 816654472.170.png 816654472.171.png 816654472.172.png 816654472.173.png 816654472.174.png 816654472.175.png 816654472.176.png 816654472.177.png 816654472.179.png 816654472.180.png 816654472.181.png 816654472.182.png 816654472.183.png 816654472.184.png 816654472.185.png 816654472.186.png 816654472.187.png 816654472.188.png 816654472.190.png 816654472.191.png 816654472.192.png 816654472.193.png 816654472.194.png 816654472.195.png 816654472.196.png 816654472.197.png 816654472.198.png
Projekty AVT
dla niższego zakresu bufor zawsze ma 512
próbek. Uff, przebrnęliśmy przez dość trudny
fragment generatora. Mógłbym oczywiście
pisać dalej, jak wygląda synteza przebiegu, a
w szczególności szumu białego i różowego,
ale odpuśćmy sobie tę mękę. W przypad-
ku tworzenia standardowych przebiegów, jak
sinus, prostokąt czy piła, pomogą komentarze
w programie – nie ma tam w gruncie rzeczy
nic skomplikowanego. Inaczej wygląda spra-
wa z szumem. Nie da się ot tak w kilku sło-
wach wyjaśnić działania tych algorytmów bez
znajomości podstaw statystyki, a w szczegól-
ności generacji liczb pseudolosowych i roz-
kładu Gaussa. Tutaj zainteresowanych rów-
nież odsyłam do literatury. Wspomnę tylko,
że szum generowany jest na bieżąco w pętli,
a nie jak reszta sygnałów, które zapisywane
są do bufora, który ma tylko 512 próbek, co
bardzo ograniczyłoby pasmo częstotliwościo-
we szumu.
Amplitudę sygnału reguluje się poprzez
zmianę generowanego przebiegu. Niestety
przetwornik cyfrowo-analogowy nie ma żad-
nych sprzętowych wzmacniaczy, jak to było w
przypadku ADC mikrokontrolera. Wprawdzie
dałoby się regulować wzmocnienie, sterując
napięciem referencyjnym, ale to wiąże się
ze zmianą całego toru wyjściowego. Cały
układ stałby się przez to znacznie bardziej
skomplikowany. Nie wspomnę już o potrze-
bie zastosowania kolejnego przetwornika
do sterowania tym pierwszym… Dlatego ja
zdecydowałem się na programową regula-
cję wzmocnienia. Dodatkowo można osłabić
sygnał 100x przełącznikiem S11.
Przejdźmy to tematu modulacji. Mamy
do dyspozycji modulację AM oraz FM. Do
jednego worka wrzuciłem też przemiatanie
SWEEP, gdyż pod względem programowym
wygląda to podobnie. Do modulacji wyko-
rzystałem dodatkową pętlę. W jej wnętrzu
zostaje odczytana wartość ADC, a następnie
w zależności od wyboru, proporcjonalnie
zmienia się amplituda bądź częstotliwość
generowanego przebiegu. W przypadku prze-
miatania zamiast wartości z przetwornika
analogowo-cyfrowego, wpływ na generowa-
ny sygnał ma specjalna zmienna. Jest ona
inkrementowana do pewnej wartości, wybie-
ranej przez użytkownika.
Analizator . Sercem analizatora jest dys-
kretne przekształcenie Fouriera, a tak napraw-
dę jego szybka wersja – FFT. Jak wiadomo,
standardowo algorytm ten pracuje na sygna-
łach zespolonych, a my tu takich nie używamy.
Tak więc, aby jeszcze bardziej przyspieszyć
wykonywanie tego bardzo skomplikowane-
go algorytmu i zwiększyć długość widma,
wykorzystałem rzeczywiste FFT. Szczegóły
znacznie wybiegają poza ramy tego artykułu i
tu szczególnie polecam pozycję 2 z literatury.
Autor po prostu genialnie tłumaczy działanie
FFT. Oczywiście na początek należy zapoznać
się ze standardowym DFT i jego własnościami,
co również zostało świetnie przedstawione
w powyższej książce. Czyli zostawiamy ana-
lizę Fouriera w spokoju i przechodzimy do
pętli głównej. Akwizycja sygnału przebiega
identycznie jak w oscyloskopie, tyle tylko, że
bez możliwości użycia drugiego kanału. Nie
ma żadnej procedury wyzwalania. Zamiast
tego wywoływana jest właśnie funkcja FFT.
Zlogarytmowane widmo częstotliwościowe,
które zwraca, po drobnej modyfikacji nadaje
się do wyświetlenia na LCD. Ta modyfikacja
to możliwość przesuwania widma w pionie
i poziomie, gdyż całość nie mieści się na
wyświetlaczu. Wzmocnienie sygnału oraz czę-
stotliwość próbkowania wygląda tak samo jak
w oscyloskopie.
Analizator stanów logicznych . W tym
przypadku mamy do czynienia z odstęp-
stwem od reguły. Sygnał nie jest odczytywany
poprzez DMA. Niestety kontroler ten nie
bardzo radzi sobie z odczytem danych z portu
mikrokontrolera. Problemem jest wyzwalanie
odczytu. Nie da się sterować częstotliwością
próbkowania. Dlatego odbywa się to w pętli.
Zanim jednak nastąpi zapisanie bufora prób-
kami, sprawdzane są warunki początkowe.
Może to być stan niski lub wysoki na jakimś
pinie, lub dowolny wektor na całym porcie.
Albo zbocze narastające lub opadające na
wybranych pinach. Dzięki odpowiedniej kon-
strukcji portów mikro-
kontrolera, reakcja
na zbocza może być
realizowana poprzez
przerwania. A to bar-
dzo upraszcza program
i zwiększa szybkość
reakcji. Starsze AVR-y
nie miały takiej moż-
liwości.
Wobuloskop . Jest
to połączenie genera-
tora i oscyloskopu. W
prezentowanym urzą-
dzeniu służy wyłącz-
nie do zdejmowania
charakterystyk bada-
nych układów. Do
dyspozycji mamy 3
tryby. Przemiatanie
częstotliwości, impuls
Diraca oraz szum biały .
W pierwszym z nich
program wchodzi w
złożoną pętlę, gdzie
generowany jest sygnał
o coraz wyższej czę-
stotliwości. W tym
czasie odczytywana
jest wartość ADC. Aby
ograniczyć szumy i
zakłócenia, dla każdej
częstotliwości odczyt
wykonywany jest wie-
lokrotnie, a następnie
wynik zostaje uśredniony. Drugi tryb polega na
tym, że wygenerowany zostaje krótki impuls,
a następnie uruchamiany jest ADC i odczyty-
wana jest odpowiedź impulsowa. Trzeci tryb
wygląda analogicznie do drugiego, z tym że
zamiast krótkiego impulsu, generowany jest
szum biały w trakcie trwania pomiaru.
Multimetr . Tutaj akwizycja sygnału rów-
nież przebiega tak samo jak w analizatorze
widma. Oprócz pętli, w których liczone są
wartości: skuteczna, średnia oraz minimalna
i maksymalna, mamy osobną funkcję oblicza-
jącą częstotliwość. Tam również znajduje się
pętla, gdzie wyznaczany jest najpierw okres
sygnału. Dalszą część programu stanowią
funkcje wyświetlające dane na LCD oraz
instrukcje warunkowe. Na podstawie uzyska-
nych wartości program automatycznie dobie-
ra odpowiednią częstotliwość próbkowania i
wzmocnienie sygnału.
W drugiej części artykułu zostanie opisany
montaż, uruchomienie i kalibracja, a także
wskazówki, dotyczące obsługi przyrządu.
Arkadiusz Hudzikowski
hudzikowski@gmail.com
Komplet podzespołów z płytką jest dostęp ny
w sieci handlowej AVT jako kit szkolny AVT-2999.
R
E
K
L
A
M
A
Elektronika dla Wszystkich
17
17
816654472.199.png 816654472.201.png 816654472.202.png 816654472.203.png 816654472.204.png 816654472.205.png 816654472.206.png 816654472.207.png
 
Zgłoś jeśli naruszono regulamin