
Na wstępie chciałbym przybliżyć, skąd taka a nie inna nazwa nadana przeze mnie temu projektowi. Prace rozpoczęły się w momencie zapotrzebowania na minimum dwa zsynchronizowane generatory małej częstotliwości. Ponieważ zakres przestrajania jaki mnie zadowalał ograniczał się do 100Hz przy rozdzielczości 0,01Hz wybór padł na zalegające w szufladzie ATMEGA. Który to po odpowiednim oprogramowaniu może bardzo ładnie wygenerować taką częstotliwość za pomocą sprzętowego pwm. Ponieważ trzeba jeszcze jakoś wprowadzać i odczytywać informacje. Urządzenie w wersji podstawowej (opcja1) składało się z generatora wzorca 16.384MHz napędzającego procesor, 5 przycisków podłączonych do portu C, oraz Wyświetlacza LCD 2x24 podłączonego do portu B. Do tego dwa stabilizatory, kilka elementów pasywnych i generator gotowy był do działania. Jak widać na schemacie w celu uzyskania większego prądu wyjściowego, użyty został wzmacniacz prądowy/bufor na LM324 oraz tranzystorach, który oczywiście opcjonalnie można pominąć. W tej podstawowej wersji mamy do dyspozycji 3 generatory (Procesor wprawdzie posiada 4 wyjścia pwm, ale jedno zostało zużyte na sterowanie podświetlaniem lcd/wyjście wzorca 32.768kHz ze względu na wykorzystanie timera powiązanego z tym wyjściem do celów generowania przerwania). Oprogramowanie umożliwia strojenie z krokiem 0.0019230769231Hz (daje to możliwość generowania równych kroków 0.0625Hz, 0.125Hz itd.) oraz wybór przesunięcia fazy 8bit, wybór kształtu generowanej fali, oraz również 8 bitowy pwm. W procesorze można zapisać do 7 dowolnych ustawień generatorów przestawianych „jednym przyciskiem”. Tutaj chciałbym zauważyć, że generator można również zbudować w wersji minimalistycznej- bez wyświetlacza oraz przycisków


Opcja2.
Kolejnym ulepszeniem generatora jest uzupełnienie „brakującego kanału pwm”.
W tym celu został użyty przetwornik CA DAC6571 (nieszczęśliwie dla chcących wykonać ten projekt - jak szybko pojawił się w sklepie tak szybko z niego zniknął). DAC jest sterowany osobno przez porty twi procesora z szybkością ~768kHz. Udało się zmusić sprzęt do wysyłania danych bez czekania na potwierdzenia, dzięki czemu DAC może pracować z pełną częstotliwością DDS / próbkowania 32.768kHz. Ponieważ DAC ten jest 12bitotowy w celu zagospodarowania nieużytej rozdzielczości program umożliwia zmianę amplitudy generowanego sygnału /2 /4 /8. Może to być pomocne w niektórych zastosowaniach, ponieważ z założenia wyjścia generatorów nie posiadają żadnej regulacji amplitudy. Na schemacie w bloku DACa GEN4 znajdują się potencjometry oraz wzmacniacz operacyjny służące do dostarczenia sygnałów modulujących dla generatora 7, ale do tego jeszcze wrócimy.
Opcja3. (GEN4 GEN5 DDS AD9833)
Jak to mawiają apetyt rośnie w miarę jedzenia, więc przyszedł czas na wykorzystanie sprzętowego DDSa

Opcja3 i 1/2 (z 10MHz robimy 200MHz czyli ICS502 cd.)
Jeżeli jednak 10MHz to mało, wystarczy użyć powielaczy. Program umożliwia powielenie częstotliwości generatorów 5 i 6 przez wartości z zakresu od x4 do x25
Ponieważ generatory DDS mają krok 0.1Hz nadal otrzymujemy bardzo wysoką rozdzielczość przestrajania. Do sterowania stopniem mnożenia powielaczy został użyty pcf8574 ze względu na to że był pod ręką oraz magistralę i2c a co za tym idzie oszczędność wyprowadzeń procesora. Na wyjściu powielaczy znajdują się wtórniki emiterowe, ale można je śmiało pominąć. Zostały użyte przede wszystkim ze względów bezpieczeństwa- łatwiej wymienić uszkodzony tranzystor niż układ smd na płytce prototypowej, przy okazji zapewniają dopasowanie 50ohm. Z ICS502 można pobrać również buforowany i nie powielony sygnał generatorów 5 i 6 standardu 5V TTL (zaznaczone na schemacie).
Opcja4 (Głowica TV jako generator 80-800MHz)
Wracając do apetytu... Mamy już możliwość wzbudzania 200MHz co jest wystarczające do wielu różnych zastosowań, ale czemu by nie spróbować uzyskać jeszcze trochę więcej, przy trochę lepszej czystości widmowej sygnału? Na dzień dzisiejszy kiedy telewizja analogowa chyli się ku śmietnikowi, głowicę TV zaopatrzoną w generator oraz syntezer PLL można kupić za grosze lub wydłubać ze złomowanej karty TV. Nadmienię w skrócie, iż nie wszystkie chipsety głowic tv nadają się do użycia jako generator i przed planowanym użyciem należy sprawdzić na jakich układach jest zbudowana głowica. Jeżeli jednak już ktoś decyduje się na zbudowanie generatora z głowicy, to zapewne wie mniej więcej co robi

Na schemacie jest również zaznaczona możliwość modulacji FM oraz AM
generatora 7. Sygnał modulujący jest pobierany poprzez potencjometry z DAC generatora 4. Dla FM sprawa jest prosta- odnajdujemy miejsce gdzie sygnał moduluje generator (okolice diod pojemnościowych) i tam podłączamy sygnał.
Z AM sprawa wygląda w tym rozwiązaniu gorzej niż kompromisowo, bo wzmacniacz SNA modulowany zmiennym napięciem 5Vpp nie działa liniowo w tak szerokim zakresie i uzyskany sygnał AM jest obarczony dużymi zniekształceniami. Jednak regulując odpowiednio potencjometr, oraz zmieniając poziom sygnału gen4 można uzyskać akceptowalne zniekształcenia dla wartości modulacji (~20%). Potencjometr AM posiada w tym rozwiązaniu podwójną funkcjonalność, umożliwiając równocześnie regulację głębokości modulacji oraz poziomu sygnału wyjściowego w.cz.
„Zarządzenie zasilaniem” .
Ostatnim dobudowanymi elementami były wyłączniki zasilania na STT5PF20V (można tutaj użyć praktycznie dowolnego P mosfeta z opornością włączonego kanału <0.1R) umożliwiające odłączenie powielaczy oraz głowicy TV. Zastosowanie wyłączania zasilania zostało podyktowane z dwóch powodów. Pierwszy to oszczędność energii i zmniejszenie grzania stabilizatora (głowica pobiera ~200mA, powielacze max 100mA). Drugi powód to produkowanie zakłóceń przez ICS502, szczególnie pracujących poza zakresem dozwolonych częstotliwości wejściowych.
Obudowa itp. szczegóły

Ponieważ jednym z głównych założeń projektu był niski koszt, praktycznie wszystkie części elektroniczne jak i mechaniczne pochodzą z „recyclingu”. Również obudowa pochodzi z jakiegoś dawno zbudowanego a później rozłożonego urządzenia. W związku z tym posiadała ona otwory nie koniecznie pożądane a inne trzeba było dorobić. Stąd min gniazdo UC1 oraz RPSMA jak i śmieszny prostokątny bezpiecznik. Na pewno gniazda te zostaną jakoś zużyte, prawdopodobnie UC1 dostanie sygnał sumę zza generatorów 5,6 lub powielaczy po dość mocnym stłumieniu (tutaj zagadka do czego to się może przydać




Komu to i na co ?
Projekt powstał jak wspomniałem na wstępie, później po prostu z chęci rozbudowy, oraz treningu programowania. W międzyczasie pomyślałem, że może się przydać komuś taki prosty generator, który w prawdzie nie grzeszy swoimi parametrami, ale za to jest tani (Zwłaszcza jeśli komuś pozostały sample z AD). Zastosowanie w zależności od wykorzystanej rozbudowy, to przede wszystkim wszelakie prace gdzie potrzebujemy znanej i stabilnej częstotliwości z dokładną jej regulacją, a sprawa amplitudy oraz czystości widmowej jest drugoplanowa.
Opis funkcji interfejsu programu sterującego, oraz parametrów sygnału:
Parametry wspólne:
Mem- wybór numeru pamięci z ustawionymi parametrami generatorów
(Enter powoduje przejście w tryb wyboru numeru pamięci do której zostaną zapisane aktualne ustawienia generatorów)
Gen- numer aktualnie edytowanego generatora (enter włącza lub wyłącza generator)
Parametry dla poszczególnych generatorów:
Generatory 1-3:
Napięcie wyjściowe generatora dla wyłączonego filtra (Ftr=0)
5Vpp
Czas narostu impulsu dla sygnału prostokątnego na wyjściu bufora prądowego
max 50us
Napięcie wyjściowe generatora dla włączonego filtra (Ftr=1)
<=500Hz =4.8V, 1kHz = 4.2Vpp 5kHz=1.8V
przestrajanie 0-5kHz (kursor nad odpowiednią pozycją przestraja +-)
Ph (faza) 0-255 (przestrajanie w krokach 1 lub 32 zależnie od pozycji)
PW (pulse width) 0-255 – w zależności od wartości wysyła całą lub część tablicy z falą (przestrajanie w krokach 1 lub 32 zależnie od pozycji).
Ftr (Filtr) 0-3
0=filtr wyjścia pwm odłączony – do generowania przebiegów prostokątnych
1=dołączony filtr całkujący na wyjściu pwm– filtracja częstotliwości modulatora pwm do generowania przebiegów sinus trójkąt...
2,3= filtr w konfiguracji różniczkującej- generowanie krótkich impulsów
SINUS-sinusoida
TRIAN-trójkąt
SQUER-prostokąt
SAW1r-piła rosnąca
SAW2f-piła opadająca
SQRx4-prostokąt częstotliwość x4
SQRxA-prostokąt częstotliwość x10
PWM_H-poziom wysoki – do wykorzystania wraz z opcją PW.
Przebiegi generowane są na podstawie odczytu 256 bajtowych tablic fali. Rozdzielczość próbki tak, jak w sprzętowy pwm atmegi wynosi 8bit.
Generator 4:
Napięcie wyjściowe generatora dla wszystkich kształtów 5Vpp
Czas narostu impulsu dla sygnału prostokątnego 4us
przestrajanie 0-5kHz
Ph (faza) 0-255
PW (pulse width) 0-255
Mod (modulacja) 3=amplituda max (5Vpp) 0=5V:8
SINUS-sinusoida
TRIAN-trójkąt
SQUER-prostokąt
SAW1r-piła rosnąca
SAW2f-piła opadająca
SQRx4-prostokąt częstotliwość x4
SQRxA-prostokąt częstotliwość x10
PWM_H-poziom wysoki – do wykorzystania wraz z parametrem PW.
Rozdzielczość kwantyzacji 8bit. Dodatkowa regulacja amplitudy 1-1/8 (bez pogorszenia rozdzielczości).
Dla generatora 5 i 6
przestrajanie 0-15MHz (powyżej 5MHz tylko sinus, powyżej 10MHz bardzo duży spadek poziomu sygnału)
Napięcie wyjściowe generatora dla przebiegów nieprostokątnych:
<1MHz =3V, 5MHz = 3V, 10MHz = 1.5Vpp
Napięcie wyjściowe generatora dla przebiegów prostokątnych:
<1MHz = 4,2V, 5MHz = 4Vpp
Czas narostu impulsu dla sygnału prostokątnego 100ns
Ph (faza) 0-4096 12bit
SINUS-sinusoida
TRIAN-trójkąt
SQUER-prostokąt
SQR/2-prostokąt częstotliwość :2
Powielanie:
x4, x6,6.66, x7.5, x8, x10, x12, x12.5, x13.3, x15, x16.6, x20, x25
Maksymalna częstotliwość wyjściowa powielaczy ~200MHz
Minimalna częstotliwość wejściowa ~1MHz
Napięcie wyjściowe za wtórnikiem emiterowym 4.4Vpp
Czas narostu napięcia max 10ns
Generator 7
przestrajanie 0-819MHz (dla kroku 25kHz -wzorzec 2MHz)
Wyświetlanie pasma pracy (związane z konfiguracją wewnętrzną głowicy)
VHFl <86MHz
VHFL<186MHz
VHF <490MHz
UHF >=490MHz
Wybór wzorca czasu:
4MHz Xtal – generator kwarcowy syntezera pll
Gen6 DDS – wzorzec z generatora 6
W tym trybie częstotliwość jest wyświetlana z dokładnością 0.001Hz, krok przestrajania dla 100MHz(PLL) 6Hz (zmiana F dds). Zmieniając wartości na pozycji 10kHz w górę zmieniamy wartość podziału syntezera pll, Dla pozycji 1kHz i mniej zmieniamy wartość częstotliwości generatora DDS. Na wyświetlaczu jest wyświetlana rzeczywista częstotliwość wynikła z częstotliwości pracy DDS oraz wartości nastawy dzielnika PLL.
Dokładne strojenie analogowe RIT.
Po przekręceniu potencjometru o wartość 2 lub więcej na LCD zaświeca się napis RIT wraz z wartością odchyłki częstotliwości. Jeżeli dwie sekundy wartość nastawy się nie zmienia napis sam się wyłącza. Wartość zera RIT należy skorygować potencjometrem R5 oraz wartością parametru w menu konfiguracyjnym „setup”.
Parametry konfiguracyjne.
Aby przejść do ustawień należy równocześnie przycisnąć kursor lewo i prawo ('!' na terminalu). Aby zapisać zmienione ustawienia do eeprom należy powtórzyć tę czynność. Enter = przejście do normalnej pracy programu ze zmienionymi wartościami konfig. Bez zapisu do eeprom (na próbę).
1.”Misc parameters”- tutaj poszczególne bity włączają i wyłączają różne funkcje.
Na ten moment wykorzystany jest jeden najmłodszy bit. Ustawienie tego bitu na 1 powoduje, ze każda zmiana parametru na wyświetlaczu lcd równocześnie zmienia parametry pracy generatora. Ustawienie 0 wymusza zatwierdzenie zmiany stanu generatora przyciskiem enter.
2.”Memory usage (>7 extern)”. W związku z opcjonalnością użytkownik może wybrać ile komórek pamięci będzie używanych. Jeżeli wpisana zostanie wartość 8 lub więcej procesor będzie zapisywał dane do zewnętrznej pamięci eeprom która musi zostać podłączona do magistrali i2c (patrz schemat).
3.”Generators usage (1-7)” Jeżeli wykorzystane są tylko 3 generatory, nie ma sensu wyświetlać ustawień dla wszystkich 7. Tutaj można ustalić ile używamy generatorów.
4.”Usart speed (8=115.200)”. Wartość UBRR dla szybkości transmisji szeregowej. Po skasowaniu eeprom domyślnie jest ustawiana wartość 8=115.200 (16=57.600.)
5.”Set for zero RIT value”. Tutaj wpisujemy wartość dla której przy zerowej odchyłce częstotliwości wyświetlana jest wartość [RIT: 0]
6.”Backlight time (0=infin)”. Czas po jakim zostanie przyciemnione podświetlanie LCD dla zera zawsze włączone na max (krok~2sek).
Korzystanie z terminala:
Sprowadza się, do podłączenia do wyprowadzeń RX TX procesora, oraz ustawienia odpowiedniej prędkości w komputerze. Działanie było sprawdzone w programach „putty” oraz „tera term”. Odczytywane przyciski klawiatury to kursory,
enter, oraz „!”. Dodatkowo można wybrać nr pamięci używając przycisków 0-9. Reszta klawiatury jest w tym momencie nie użyta, głównie z powodu uproszczonej interpretacji danych z terminala (odczytywanie tylko ostatniego znaku asci dla klawiszy kursora). Istnieje możliwość zmiany prędkości od 1Mbps do 2400bps, jednak w przypadku bardzo niskich prędkości usart trzeba się liczyć z spowolnieniem reagowania programu obsługującego generatory związanego z oczekiwaniem na koniec transmisji bajtu przez usart. Efekt ten jest odczuwalny dopiero poniżej prędkości 19.200bps.
Zakończenie opowieści:
Niestety nie będzie nawet skróconego opisu budowy programu ze względu na jego obszerność, oraz fakt że tym razem źródło nie będzie opublikowane. Wspomnę tylko, że program został napisany w asemblerze, a jedyne co zapożyczyłem, to program mnożenia 32bit x 32bit bez którego byłoby niemożliwe wyświetlanie częstotliwości z 12 cyfrową dokładnością (dla generatora 7). Jednak największą radość sprawiło mi chyba oprogramowanie daca w programie przerwania DDS, oraz wyciskanie ze sprzętowego TWI „siódmych potów” co zaowocowało prawidłową pracą przy 700kHz magistrali w trybie low speed przetwornika DA. Jako dodatkowe utrudnienie zrealizowałem również funkcjonalność zsynchronizowania startu w fazie generatorów 1-6 co poszerza możliwość zastosowania zaprogramowanych nastaw.
(Start generowania fali rozpoczyna się od tego samego miejsca tablicy i w tym samym czasie zarówno dla softowego DDS jak i sprzętowych AD9833 w momencie zmiany/wywołania numeru pamięci lub po naciśnięciu enter). Częstotliwości za powielaczami również są synchroniczne, jednak nie można zagwarantować znanego przesunięcia fazowego po starcie generatora ze względu na wewnętrzne dzielniki w pll ICS502 do których resetowania nie posiadamy dostępu. To samo dotyczy Generatora 7 na syntezie pll TSA5523.
Jako uzupełnienie tej skromnej dokumentacji dołączam kilka zdjęć oraz film przedstawiający działanie programu. Na filmie można zaobserwować niepoprawne działanie wyświetlania RIT, jak się okazało z powodu uszkodzonego kondensatora C9 1uF. Po wymianie wyświetlanie wartości napięcia przetwornika ADC działa prawidłowo, co umożliwia automatyczne wygaszanie tego parametru na LCD (używanie do tego celu klawiatury miało być tylko opcjonalne

Boberov 2012

Panel przedni z potencjometrami FM,AM,RIT

Od tyłu


Od przodu bez pokrywki

Płytka z atmega oraz kablownia.


Pierwsze próby pobrania sygnału z głowicy TV

Prze paskudna strona "druku" płytki uniwersalnej


Przystosowane płytki z AD9833 montowane na goldpinach do płyty głównej
https://filmy.elektroda.pl/88_1603749800.avi
Działanie programu / interfejs użytkownika
Cool? Ranking DIY