No i wersja układu, którą zamierzam złożyć do eksperymentów, dlatego chętnie przeczytam o zauważonych błędach logicznych i układowych.
Moduł przedstawiony na schemacie ma być w założeniu zamontowany w pobliżu a może nawet bezpośrednio na sondzie. Do układu ma być doprowadzone napięcie 6V (5..7V) i kilkuprzewodowa szyna do komunikacji z pulpitem (klawiatura, głośnik, LCD). Jedynym zadaniem modułu ma być przetwarzanie przesunięcia fazowego między przebiegiem nadawanym cewką TX i odebranym przez RX oraz wzmocnienia RX/TX na postać cyfrową i wysyłanie wyników do pulpitu. Opis układu:
GENERATOR TX
Cewka nadawcza TX jest podłączona do wyjść jednego z dwóch pełnych mostków H zawartych w układzie
L293D. Obie gałęzie mostka są sterowane przeciwnymi fazami przebiegu TX_SIN z wyjścia OC1A procesora
ATTINY261. Procesor może też wyłączyć wyjścia półmostków sygnałem TX_EN. Przy nominalnym napięciu zasilania 6V przebieg na cewce TX będzie miał zatem 12Vpp.
Procesor pracuje z wewnętrznym oscylatorem RC (8MHz), ale timer T1 będzie taktowany z wewnętrznego powielacza częstotliwości przebiegiem 64MHz. Wykorzystując mechanizm ustawiania wyjść przez komparator CTC można zmieniać stan pinu z dokładnością do jednego taktu. Wystarczy jeśli program zdąży wcześniej ustawić odpowiednią wartość rejestru OCR1A. Przebieg TX_SIN będzie prostokątny, ale z "wycięciami" przy 23.62° i 33.3° mającymi ograniczyć 3- i 5-harmoniczną (
Link). Bardzo ładnie się to kiedyś sprawdzało w inwerterze, więc i tutaj powinno. Parzystych harmonicznych nie powinno być, bo przebieg będzie dokładnie symetryczny w okresie.

- sine.gif (11.65KiB)Przejrzano 12567 razy
W zależności od stanu na wejściach FREQ_H i FREQ_L częstotliwość przebiegu będzie wynosić 3.9kHz, 7.8kHz, 15.6kHz, 0kHz (wyłączenie).
UKŁAD ZEROWANIA NUL
Drugi mostek H z układu L293D jest wykorzystany do zasilania zwoju służącego do elektrycznego "zerowania" sondy. W tym wypadku linie sterujące to NUL i NUL_EN. Rezystor R5 ogranicza prąd tego uzwojenia. Wstępnie będzie to zapewne potencjometr, później wymieniony na rezystor stały.
Przebieg zerujący NUL będzie zwykłym prostokątem generowanym przez procesor wyjściem OC1B. Zakładam, że faza tego przebiegu będzie tylko przeciwna do TX_SIN, ale w razie konieczności istnieje programowa możliwość wprowadzenia stałego przesunięcia fazowego.
DETEKTOR WZMOCNIENIA
Jako detektor fazy i amplitudy wykorzystano układ
AD8302. Na wyjście INPA jest podawany sygnał z cewki odbiorczej RX. Obecnie bezpośrednio, w razie potrzeby dodam wzmacniacz lub tłumik. Na wejście INPB jest podawany przebieg REF - prostokątny, generowany przez procesor wyjściem OC1D. Na wyjściu VMAG pojawia się napięcie 0..1.8V zależnym od stosunku wartości skutecznych przebiegów RX(INPA)/REF(INPB) zgodnie z rysunkiem z pdf-a:

- vmag.gif (6.45KiB)Przejrzano 12567 razy
Jeśli nie będzie poważnych przeciwwskazań, to procesor (i inne układy) będą zasilane napięciem regulowanym (T1, R4/R3), proporcjonalnym do napięcia zasilającego cewkę TX. Dzięki temu amplituda, a zatem i wartość skuteczna sygnału REF również będzie się zmieniała i stosunek napięć na U(TX)/U(REF) nie będzie się zmieniał. Takie rozwiązanie powinno ograniczyć wpływ rozładowywania akumulatora na pracę wykrywacza bez konieczności stosowania stabilizatora. Dioda DZ1 pełni tylko rolę ogranicznika napięcia.
DETEKTOR PRZESUNIĘCIA FAZOWEGO
Na wyjściu VPHS napięcie zależy od różnicy faz między RX i REF, zgodnie z wykresem:

- vphs.gif (6.63KiB)Przejrzano 12567 razy
PROCESOR
Najważniejszym zadaniem procesora jest generowanie przebiegów TX_SIN i NUL oraz REF. Amplituda tego ostatniego przebiegu jest ustawiona na stałe dzielnikiem R2/R1 tak, aby wartość skuteczna przebiegu prostokątnego na wejściu INPB (AD8302) wynosiła 7.08mV, czyli -43dBV. Przy takiej wartości można wykorzystać pełny zakres dynamiki wejścia INPA (RX).
Napięcia VMAG i VPHS są przetwarzane w wewnętrznym 10-bitowym przetworniku ADC. Napięcia na obu wyjściach AD8302 mogą zmieniać się w zakresie 0..1.8V. Napięcie odniesienia AD8302 jest podane linią ADC_REF na wejście napięcia odniesienia (AREF) przetwornika ADC w procesorze, Dzięki temu zachowuje się dobrą dokładność przetwarzania analogowo-cyfrowego bez względu na rozrzut tego napięcia.
Wyniki pomiarów są wysyłane ciągłym strumieniem do pulpitu trzema liniami: S_PHASE, S_DATA, S_CLK.
VPHS i VMAG są wysyłane po linii danych (S_DATA) synchronicznie z zegarem (S_CLK) i naprzemiennie, zależnie od stanu linii S_PHASE (jak prawy i lewy kanał w I2S).
Opcjonalne wyprowadzenia do LCD (D7..D4, EN, RS) mają służyć tylko na czas uruchamiania.
JAK TO MA DZIAŁAĆ?
W wykrywaczach VLF faza przebiegu w cewce RX zmienia się o -90° do +90° względem TX w zależności od rodzaju obiektu pod sondą. Wobec tego nie można wykorzystać wprost detektora fazy z AD8302, bo np. dla różnicy faz +30° daje na wyjściu takie samo napięcie jak dla -30°. Początkowo rozpatrywałem dodatkowy przesuwnik fazowy o 90° dla RX lub generowanie dodatkowego TX' przesuniętego o 90° i traktowanego jako odniesienie. Przesunięcie zakresu z +/-90° na 0..180° nie rozwiązuje problemu gwałtownie rosnącego błędu detektora fazy w pobliżu 0° i 180° (z
AN-691):
Dlatego proponuję wykorzystanie detektora tylko w okolicy 90°, gdzie błąd jest najmniejszy. Skoro, jak podaje AD wartość tego błędu rośnie z częstotliwością (przy 100MHz - 0.7°, 900MHz - 0.75°, 1900MHz - 0.8°, 2200MHz - 0.85°), to jest szansa, że przy znacznie niższych błąd będzie mniejszy.

Procesor generuje ciągły przebieg TX_SIN. Parametry przebiegu zerującego sondę NUL są ustalane raz na etapie kalibracji i potem się nie zmieniają, zatem nie są teraz istotne. Najważniejszy jest przebieg REF. Wstępnie jest przesunięty o 90° względem TX_SIN. To powoduje, że na linii ADC_PHASE (VPHS) jest 900mV. Zmiana tego napięcia może być spowodowana wyłącznie zmianą fazy w cewce RX. Procesor po wykryciu takiej zmiany dokonuje korekty fazy przebiegu REF tak, aby przywrócić optymalne 90°. Wartość o jaką procesor musiał zmienić fazę REF będzie zawsze równa zmianie fazy RX.
Proponuję trzy częstotliwości pracy wykrywacza:
Low: 3.9kHz = 64MHz / 16384
Medium: 7.8kHz = 64MHz / 8192
High: 15.6kHz = 64MHz / 4096
W zasadzie istnieje możliwość zrobienia dodatkowego programowego "odstrajania", ale ze względu na taktowanie procesora wewnętrznym oscylatorem RC o kilkuprocentowej dokładności, problem ewentualnego zakłócania sąsiedniego wykrywacza raczej sam się rozwiąże.
Najmniejszy krok fazy wynosi zatem:
L: 360° / 16384 = 0.022°
M: 360° / 8192 = 0.044°
H: 360° / 4096 = 0.088° - brzmi nieźle.
Taki musiałby być mniej więcej krok przetwarzania analogowo-cyfrowego. Przetwornik ATTINY261 jest 10-bitowy, zatem krok wyniesie:
1.8V / 1024 = 1.75mV
Przy standardowym dla AD8302 nachyleniu 10mV/°:
1.75mV / 10mV/° = 0.175° czyli dla każdej częstotliwości więcej niż krok fazy:
L: 0.175° / 0.022° = 8-krotnie, czyli potrzebny jest ADC dłuższy o n = 3 bity
M: 0.175° / 0.044° = 4-krotnie, n = 2
H: 0.175°V / 0.088° = 2-krotnie, n = 1
"Długość" ADC można w pewnym stopniu zwiększyć przez nadpróbkowanie
AVR121. Dodatkowo takie cyfrowe uśrednianie może pozwoli zmniejszyć stałą czasową filtrów w AD8302 - wstępnie przyjąłem 3.3ms (1µF).
Konieczna liczba próbek (=4^n):
L: 4^3 = 64
M: 4^2 = 16
H: 4^1 = 4
Przy taktowaniu ADC częstotliwością 100kHz czas pojedynczej konwersji wynosi 130 (lub 250µs jeśli na przemian z ADC_GAIN) i zakładając, że tak samo traktujemy kanał ADC_GAIN, wyniki otrzymamy nie częściej niż:
L: 16.64ms (60Hz) lub 32ms (31Hz)
M: 4.16ms (240Hz) lub 8ms (125Hz)
H: 1.04ms (960Hz) lub 2ms (500Hz)
Jeśłi się gdzieś nie pomyliłem, to takie szybkości są akceptowalne.