3-kanałowy generator DDS

3-kanałowy generator DDS
Pobierz PDF Download icon

Generowanie przebiegów z użyciem syntezy cyfrowej (DDS) jest powszechnie używane. W uproszczeniu, zasada działania polega na odczytywaniu wzorca sygnału z pamięci i jego zamianę na przebieg analogowy za pomocą przetwornika A/C.

Generatorze DDS sygnał zegarowy o częstotliwości fWE taktuje licznik adresowy, którego wyjścia adresują pamięć zawierającą próbki sygnału wyjściowego. Wartości kolejnych próbek podawane są na wejście przetwornika C/A, który zamienia je na wyjściowy sygnał analogowy. Ten sygnał, po odfiltrowaniu harmonicznych może być użyty jako wyjściowy, analogowy sygnał generatora.

Częstotliwość wyjściową fWY obliczyć możemy na podstawie zależności

gdzie n jest liczbą bitów licznika adresującego. Łatwo zauważyć, że przytoczona zależność ogranicza funkcjonalność generatora, ponieważ nie można uzyskać żądanej częstotliwości wyjściowej bez możliwości precyzyjnej regulacji częstotliwości źródła przebiegu taktującego. Dlatego wprowadzono rozwiązanie, w którym licznik adresowy zastąpiono specjalnym modułem nazywanym akumulatorem fazy. Moduł ten jest modyfikacją licznika adresowego – wprowadzono mechanizm uwzględniający wartość kroku inkrementacji.

Akumulator zlicza impulsy generatora taktującego, lecz za każdym razem, gdy wystawia na swoim wyjściu nową wartość adresu, uwzględnia specjalną wartość liczbową nazywaną słowem przestrajającym, dodając ją do poprzednio wystawionej wartości adresu. A więc akumulator fazy pozwala na automatyczne pomijanie adresów próbek, które nie są wielokrotnością słowa przestrajającego, co przekłada się na zmianę częstotliwości przebiegu wyjściowego. Dysponując akumulatorem fazy o dużej rozdzielczości oraz generatorem taktującym o częstotliwości kilkudziesięciu MHz, możemy uzyskać wyjściowy przebieg analogowy, którego częstotliwość będzie można regulować z dokładnością rzędu miliherców. Częstotliwość takiego generatora możemy wyznaczyć ze wzoru,

gdzie:

  • N jest liczbą bitów rejestru akumulatora fazy,
  • M jest wartością słowa przestrajającego.

Ustawiające poszczególne bity w rejestrze konfiguracyjnym możemy sprawić, że aktualna wartość rejestru wskazującego na komórkę pamięci ROM będzie od razu podawana na przetwornik C/A, dzięki czemu można otrzymać przebieg trójkątny. Załączenie opcji, która powoduje przekazanie bitu najbardziej znaczącego MSB z tablicy sinusa na przetwornik C/A lub załączenie odpowiedniego komparatora skutkuje otrzymaniem przebiegu prostokątnego.

W handlu jest dostępnych mnóstwo generatorów DDS w bardzo atrakcyjnych cenach. Można je kupić w formie zestawów do samodzielnego montażu lub gotowych przyrządów czy modułów. Założeniem mojego projektu było skonstruowaniu 3-kanałowego generatora, w którym będzie można synchronizować wszystkie kanały. Miały one również mieć możliwość regulacji amplitudy, przesunięcia fazowego, częstotliwości do 10 MHz, a przy tym wyboru kształtu sygnału. Każdy kanał miał być regulowany i pracować niezależnie. Wykonanie miało być jak najtańsze.

Wszystkie założenia projektowe zostały spełnione. Jako układy DDS wybrano AD9833, który ma rozdzielczość 28-bitową oraz 12-bitowy akumulator fazy. Ponieważ dla tego układu scalonego są łatwo dostępne zestawy ewaluacyjne, to stosunkowo łatwo można wykonać prototyp. Maksymalna częstotliwość generowanego sygnału wynosi 12,5 MHz przy zastosowaniu 25-megahercowego generatora kwarcowego.

Układ AD9833 ma szeregowy interfejs SPI do komunikacji z systemem nadrzędnym. Układ nie ma możliwości regulacji amplitudy generowanego przebiegu, a napięcie wyjściowe wynosi ok. Vpp= 0,62 V. Aby była możliwa regulacja amplitudy, zastosowano szerokopasmowe wzmacniacze operacyjne, które wzmacniają sygnał wyjściowy oraz szerokopasmowe mnożniki sygnałów, służące do przemnażania sygnału wzmocnionego przez składową stałą. Mnożniki sygnałów mają wejście sumacyjne, na które można doprowadzić napięcie stałe. Dzięki temu otrzymano możliwość regulacji poziomu składowej stałej na wyjściu.

Wzmacniacze operacyjne oraz mnożniki sygnału pobierają razem tyle prądu, że zastosowanie popularnej kostki ICL7660 staje się niemożliwe, więc zdecydowano się na zastosowanie układu MC34063, który ma przy użyciu odpowiednich elementów dyskretnych dużo większą wydajność prądową. Napięcie służące do regulacji amplitudy generowanego sygnału także musi być regulowane, więc zastosowano 12-bitowy przetwornik C/A typu MCP4921 z interfejsem SPI. Amplituda przebiegu wyjściowego jest regulowana z krokiem 1 mV.

W generatorze zastosowano wyświetlacz graficzny o rozdzielczości 128×64 piksele, ze sterownikiem KS0108. Podczas tworzenia oprogramowania położono duży nacisk na wykonanie łatwego w użyciu, intuicyjnego, animowanego menu użytkownika. Jako procesor sterujący wybrano ATmega32 taktowany przebiegiem o częstotliwości 16 MHz. Mikrokontroler ma 32 kB pamięci Flash, która zapewnia miejsce na trzy wzorce czcionek oraz tablice zawierające dodatkową grafikę. Wyposażono go też w sprzętowy interfejs SPI, którym komunikuje się z zewnętrznym przetwornikiem C/A oraz układem DDS. Ponadto, procesor ma wystarczającą liczbę wejść/wyjść. Cały generator DDS jest zasilany ze stabilizowanego zasilacza impulsowego 12 V.

Generator DDS przyda się w każdym warsztacie elektronicznym. Może być przydatny do taktowania układów cyfrowych. Oprócz tego, można go zastosować do badania filtrów aktywnych oraz pasywnych. Ma trzy kanały i możliwość ich synchronizacji, więc znajdzie także zastosowanie przy tworzeniu innych projektów. Przykładem może być użycie go łącznie ze wzmacniaczami mocy do sterowania silnikami indukcyjnymi małej mocy. Innym przykładem jest możliwość sprawdzania zabezpieczeń elektroenergetycznych (działających wraz z przetwornikami prądowo – napięciowymi).

Budowa

Schemat generatora pokazano na rysunku 1. Cały układ jest zasilany napięciem 12 V zabezpieczonym bezpiecznikiem F1 (500 mA). Dioda D1 zabezpiecza generator przed napięciem o odwrotnej polaryzacji. W zasilaczu zastosowano stabilizator impulsowy LM2575-5V. Do wytworzenia napięcia –5 V służy MC34063. Układ może być zasilany bezpośrednio z +12 V poprzez zworkę J2 lub z +5 V poprzez zworkę J1. Rezystor R3 ogranicza prąd maksymalny. Rezystory R1 i R2 tak dobrano, aby na wejściu komparatora COMP występowało napięcie –3,75 V (–5 V+1,25 V z wewnętrznego napięcie referencyjnego). Do obliczenia wartości elementów dyskretnych wykorzystano wzory zawarte w dokumentacji producenta. Do obliczeń można także skorzystać z jednego z wielu darmowych kalkulatorów.

Rysunek 1. Schemat ideowy 3-kanalowego generatora DDS
Rysunek 1. cd.
Rysunek 1. cd.
Rysunek 1. cd.
Rysunek 1. cd.
Rysunek 1. cd.

Do generowania sygnału taktującego służy generator kwarcowy SG-800JC o częstotliwości 25 MHz. Wejście OE/ST generatora jest na stałe dołączone do +5 V, co powoduje jego nieprzerwaną pracę. Złącze PROG służy do podłączenia programatora ISP w przypadku, gdy zajdzie konieczność wgrania nowszej wersji programu.

Rezystory R4…R7 służą do zasilania wejść procesora, do których są dołączone przyciski. Rezystory R8 i R9 mają za zadanie polaryzację linii MOSI i SCK interfejsu SPI. Za pomocą wyjść PB0…PB2 procesora możemy wybierać przetwornik C/A, do którego wysyłamy dane, natomiast za pomocą portów PA5…PA7 wybieramy układ DDS z którym się komunikujemy.

Wszystkie tory analogowe są identyczne, więc opisano tylko jeden z nich. Kondensatory C18, C17 filtrują zasilanie układu DDS (U1). Kondensatory C15, C14 dołączone do nóżki CAP/2,5 V mają za zadanie filtrowanie oraz buforowanie napięcia 2,5 V. Kondensator C33 służy do filtrowania napięcia polaryzacji wewnętrznego przetwornika C/A układu AD9833. Za pomocą zworki J3 podajemy sygnał zegarowy do układu DDS. Kondensator C16 służy do filtrowania zaburzeń o dużej częstotliwości. Kondensator C23 oraz rezystor R11 służą do filtrowania składowej stałej. Następnie sygnał jest wzmacniany dzięki za pomocą wzmacniacza AD8022 (U2) pracującego w układzie nieodwracającym. Wzmocnienie jest ustalone za pomocą rezystora R12 oraz potencjometru Pot1. Maksymalne wzmocnienie układu wynosi

Kondensatory C25 i C24 służą do filtrowania zasilania wzmacniacza. Sygnał z wyjścia wzmacniacza jest podawany na wejście X1 mnożnika analogowego AD835. Kondensatory C26 i C27 służą do filtrowania zasilania mnożnika. Przetwornik C/A MCP4921 jest sterowany przez mikrokontroler. Rezystor R10 oraz kondensator C22 służą jako filtr dolnoprzepustowy, eliminujący zakłócenia składowej stałej. Sygnał stały jest podawany na wejście Y1. Zgodnie z zależnością podaną przez producenta AD835

wejścia X2, Y2 należy podłączyć od masy, aby układ tylko przemnażał sygnał stały z przetwornika C/A (Y1) oraz sygnał zmienny wzmocniony przez wzmacniacz U2. Weście Z jest połączone ze złączem CON1, do którego należy przylutować przełącznik bistabilny. Przełącznik zwiera do masy wejście Z lub podaje na nie składową stałą (–5 V…+5 V) ustawioną na potencjometrze wieloobrotowym POT_4. Rezystor R19 ogranicza prąd płynący do masy w przypadku ustawienia potencjometru w jego dwóch skrajnych położeniach.

Oprogramowanie

Najważniejsza część programu służy do komunikacji mikrokontrolera z przetwornikami C/A oraz układami generatorów DDS. Układy dołączone do SPI różnią się trybami pracy interfejsu. Dla MCP4921 bity wpisywane są przy narastającym zboczu sygnału zegarowego. W momencie braku transmisji przebieg zegarowy jest wyzerowany. Dla AD9833 w momencie, gdy nie wysyłamy żadnych danych, przebieg zegarowy powinien być ustawiony – układ odbiera dane przy opadającym zboczu przebiegu zegarowego. Ponieważ ATmega32 ma tylko jeden sprzętowy interfejs SPI, w programie należy przełączać tryb jego pracy. Realizuje to funkcja pokazana na listingu 1.

Listing 1. Sterowanie sprzętowym interfejsem SPI
void ConfigSpi(uint8_t config) // 1- konfiguracja dla DDS, 2 - konfiguracja dla DAC
{
switch(config)
{
case 1:
SPCR |=(1<<CPOL);
SPCR &= ~(1<<CPHA);
break;
case 2:
SPCR &=~(1<<CPOL);
SPCR &= ~(1<<CPHA);
break;
_delay_us(20);
}
}

Na listingu 2 zamieszczono funkcje, za pomocą których wysyłamy dane 8- lub dane 16-bitowe.

Listing 2. Wysłanie bajtu i słowa za pomocą SPI
void SendSpi( uint8_t bajt )
{
SPDR = bajt;
while(!(SPSR & (1<<SPIF)));
}

void SendSpi16(uint16_t word)
{
SPDR=(word>>8);
while(!(SPSR & (1<<SPIF)));
SPDR=(uint8_t)word;
while(!(SPSR & (1<<SPIF)));
}

W celu wybrania układu za pomocą linii CS napisano funkcję za pomocą, której można wysyłać dane jednocześnie do wszystkich układów generatorów DDS (argument ‘l’) lub do konkretnego generatora (argument ‘a’, ‘b’ lub ‘c’). Można także wybrać dany przetwornik C/A używając jako argumentu cyfry 1, 2 lub 4. Wpisanie w funkcji litery 'k' w kodzie ASCII powoduje ustawienie wszystkich linii CS. Funkcję wyboru układu pokazano na listingu 3.

Listing 3. Funkcja wybierająca układ
void Select_config(unsigned char select)
{
if(select=='a'||select=='b'||select=='c'||select=='k'||select=='l')
{
switch(select)
{
case 'k':
PORTA |= (1<<PA5) | (1<<PA6) | (1<<PA7);
PORTB |= (1<<PB0) | (1<<PB1) | (1<<PB2);
break;
case 'a':
PORTA &= ~(1<<PA5);
break;
case 'b':
PORTA &= ~(1<<PA6);
break;
case 'c':
PORTA &= ~(1<<PA7);
break;
case 'l':
PORTA &= ~((1<<PA5) | (1<<PA6) | (1<<PA7));
break;
}
}
else PORTB&=~(select);
_delay_us(20);
}

Aby zmienić wartość amplitudy sygnału, do przetwornika C/A MCP4921 należy wysłać słowo 16-bitowe. Wysyłane słowo musi mieć wyzerowany najstarszy bit. Bit 14 powinien być ustawiony, aby wejście Vref było buforowane. Bit 13 powinien być „1”, ponieważ napięcie na wejściu Vref jest równe napięciu zasilania. Bit 12 musi być „1”, żeby wyjście było załączone. Do bitów D0…D11 należy wpisać 12-bitową wartość sygnału stałego, który chcemy otrzymać na wyjściu zgodnie z wzorem:

Funkcja, do której w argumencie wpisujemy wartość amplitudy sygnału w mV i która wysyła przeliczoną wartość w bitach do przetwornika C/A została pokazana na listingu 4.

Listing 4. Ustawianie aplitudy sygnału wyjściowego
void SetAmplitude(uint8_t ksztalt, unsigned char k, unsigned long int wartosc)
{
uint16_t tempamp=0;
unsigned long int tempwartosc=0;

ConfigSpi(2);
_delay_ms(1);
tempamp=(1<<14); //Vref jest buforowane
tempamp|=(1<<13); //Vref nie jest mnozozne razy dwa
tempamp|=(1<<12); //wyjscie Vout zalaczone
tempwartosc=wartosc*819;
tempwartosc=tempwartosc/1000;
if(ksztalt==3)
{
tempwartosc=tempwartosc*wspolczynnikprostokat;
tempwartosc=tempwartosc/100;
}
tempamp|=(uint16_t)tempwartosc; //przypisanie wartosci
Select_config(k);
_delay_ms(1);
SendSpi16(tempamp);
Select_config('k');
}

Chcąc zmienić częstotliwość lub stan akumulatora fazy należy najpierw wysłać odpowiednie bity do rejestru kontrolnego układu AD9833. Dwa najstarsze bity D15, D14 o wartości 0 oznaczają, że wysyłane słowo będzie wpisane do rejestru kontrolnego. Bit 13 (B28) określa, czy do rejestru, którym ustawia się częstotliwość FREQ, wpisujemy od razu 28 bitów, w pierwszej kolejności bity mniej znaczące, a w następnej bity bardziej znaczące (B28=1). Można także wpisać osobno bity mniej znaczące i osobno bardziej znaczące (B28=0). Przy wpisywaniu osobno części mniej i bardziej znaczącej częstotliwości, bit 12 (HLB) określa, czy wpisujemy część bardziej znaczącą, czy mniej znaczącą.

Dla HLB=0 wpisujemy część mniej znaczącą częstotliwości. Dla HLB=1 wpisujemy część bardziej znaczącą częstotliwości. Bit 11 (FSELECT) określa, z którego rejestru częstotliwości aktualnie korzystamy. Bit 10 (PSELECT) określa, z którego rejestru fazy początkowej korzystamy. Bit D8 (RESET) służy do resetowania układu. Bit D7 (SLEEP1) powoduje podłączenie (SLEEP1=0) lub odłączenie (SLEEP1=1) sygnału zegarowego. Bit D6 (SLEEP12) powoduje załączenie lub wyłączenie wewnętrznego przetwornika C/A. Bity D5, D3, D2 (OPBITEN, DIV2, MODE) służą do wyboru kształtu generowanego sygnału na wyjściu. Gdy OPBITEN=0 oraz MODE=0, sygnał na wyjściu ma kształt sinusiody. Gdy natomiast OPBITEN=0 oraz MODE=1 sygnał wyjściowy ma kształt trójkąta. Ustawienie OPBITEN=1, MODE=0, DIV2=1 powoduje generowanie sygnału prostokątnego na wyjściu.

Listing 5. Struktura z parametrami DDS
typedef struct
{
uint8_t sleep1;
uint8_t sleep12;
unsigned char b13;
uint8_t hlb;
uint8_t chosefreq;
uint8_t chosephase;
uint8_t opbit;
uint8_t div2;
uint8_t mode;
uint8_t reset;
} optionsdds;

Żeby w łatwy sposób operować na poszczególnych bitach w programie została utworzona zmienna strukturalna oraz funkcja, która operuje na tej zmiennej. Funkcję oraz zmienną przedstawiono na listingu 5 oraz listingu 6.

Listing 6. Komendy generatora DDS
void CommandDDS(optionsdds *command, unsigned char k)
{
uint16_t temp=0;
Select_config(k);
if(command->b13) temp|=1<<13; else temp&=~(1<<13);
if(command->hlb) temp|=1<<12; else temp&=~(1<<12);
if(command->chosefreq) temp|=1<<11; else temp&=~(1<<11);
if(command->chosephase) temp|=1<<10; else temp&=~(1<<10);
if(command->reset) temp|=1<<8; else temp&=~(1<<8);
if(command->sleep1) temp|=1<<7; else temp&=~(1<<7);
if(command->sleep12) temp|=1<<6; else temp&=~(1<<6);
if(command->opbit) temp|=1<<5; else temp&=~(1<<5);
if(command->div2) temp|=1<<3; else temp&=~(1<<3);
if(command->mode) temp|=1<<1; else temp&=~(1<<1);
SendSpi16(temp);
Select_config('k');
}

W celu wpisania odpowiedniej wartości częstotliwości do rejestru FREQ0 lub FREQ1, należy za pomocą bitów D15 oraz D14 określić, do którego rejestru mają być wpisane odebrane dane. Gdy D15=0, D14=1, wtedy wpisujemy do rejestru FREQ0, natomiast gdy D15=1, D14=0, wtedy wpisujemy do rejestru FREQ1. Na listingu 7 przedstawiono funkcję realizującą wpisanie częstotliwości do rejestru FREQ0.

Listing 7. Wpisanie częstotliwości do rejestru FREQ0
void FreqDDS(uint8_t rejestr, unsigned char k, unsigned long int wartosc, unsigned char przedrostek)
{
uint16_t temp=0;
unsigned long int temp2=0;

Select_config(k);
_delay_ms(1);
temp2=wartosc*1074;
temp2=temp2/100;
if(przedrostek=='M') temp2=(temp2<<20); else if(przedrostek=='k') temp2=(temp2<<10);
if(!rejestr) temp|=(1<<14); else temp|=(1<<15);
temp|=(uint16_t)(temp2 & 0x3FFF);
SendSpi16(temp);
temp&=(0xC000);
temp|=(uint16_t)((temp2>>14) & 0x3FFF);
SendSpi16(temp);
Select_config('k');
}

Przy zapisywaniu do rejestru fazy początkowej, należy określić, czy wysyłana dana ma zostać wpisana do rejestru PHASE0 czy PHASE1. W obu przypadkach należy wysłać bity D15 oraz D14 o wartości 1. Bit 13 określa, czy dokonaliśmy wyboru rejestru PHASE0 (D13=0), czy rejestru PHASE1 (D13=1). Funkcję, która realizuje wpisanie fazy początkowej do układu przedstawiono na listingu nr 8.

Listing 8. Ustawienie akumulatora fazy DDS
//k - wybor do ktorego DDS ma byc wyslana dana, wartosfazy - wartisc fazy poczatkowej
void PhaseDDS(unsigned char k, uint16_t wartoscfazy, uint8_t rejest)
{
uint16_t temp;
temp=wartoscfazy*117;
temp=temp/10;
temp=(0xfff) & temp;

if(!rejest) temp|=(0x0C<<12); else temp|=(0x0E<<12);
Select_config(k);
_delay_ms(1);
SendSpi16(temp);
Select_config('k');
}

Montaż i uruchomienie

Schemat montażowy 3-kanałowego generatora DDS pokazano na rysunku 2. Większość elementów w projekcie jest typu SMD, dlatego montaż należy rozpocząć od przylutowania przetworników MCP4921 oraz układów AD9833, które są w obudowach MSOP. Do ich przylutowania zaleca się wykorzystanie stacji lutowniczej z grotem typu mini-fala. Następnie należy przylutować mikrokontroler ATmega32, wzmacniacze operacyjne oraz mnożniki analogowe AD835. Po przylutowaniu wszystkich układów, należy sprawdzić, czy nie ma zwarć i czy są przylutowane wszystkie wyprowadzenia. Następnie, należy przylutować wszystkie kondensatory oraz rezystory SMD oraz generator kwarcowy SG-8002JC. Końcowym etapem montażu jest przylutowanie wszystkich elementów przewlekanych (dławiki, kondensatory, bezpiecznik, potencjometry). Montaż można także rozpocząć od przylutowania wszystkich elementów zasilania, a następnie przyłączenia 12 V w celu sprawdzenia czy otrzymujemy –5 V oraz +5 V. Po sprawdzeniu zasilania można przystąpić do montażu pozostałych elementów, ale taka kolejność montażu bardzo utrudnia lutowanie pozostałych elementów SMD, ze względu wystające elementy przewlekane.

Rysunek 2. Schemat montażowy 3-kanalowego generatora DDS

Przy projektowaniu płytki PCB elementy zostały w taki sposób rozmieszczone, żeby na stronie TOP znajdowały się wszystkie trzy tory analogowe, natomiast na stronie BOTTOM elementy zasilania oraz mikrokontroler. Po uruchomieniu układu należy ustawić amplitudę wszystkich trzech kanałów na wartość 1000 mV, natomiast częstotliwość na 50 Hz. Na złącza CON1, CON2, CON3, należy założyć zworki (w celu wyłączenia składowej stałej). Następnie do wyjścia OUT1, należy podłączyć oscyloskop i wyregulować amplitudę sygnału wyjściowego na wartość 1000 mV, używając potencjometru POT_1. Taką samą regulację, należy wykonać dla pozostałych dwóch kanałów. Jeżeli za pomocą podmenu AMPLITUD użytkownik nie chce zmieniać amplitudy, a wartość skuteczną, wtedy za pomocą potencjometrów, należy wyregulować amplitudę w taki sposób, żeby wartość skuteczna sygnału wynosiła 1000 mV. Do tego można skorzystać ze znanej każdemu zależności

Po wyregulowaniu, należy do złączy CON1, CON2, CON3 podłączyć przełączniki ON/OFF oraz przylutować potencjometry wieloobrotowe POT_4, POT_5, POT6. Następnie do wyjść OUT1, OUT2, OUT3, należy przylutować gniazda BNC. Na rysunku 7. przedstawiono zabudowane przełączniki oraz potencjometry.

Obsługa

Generator DDS ma menu użytkownika, w którym możemy zmieniać amplitudę, fazę początkową, częstotliwość, załączać lub wyłącz kanały, lub zapisywać aktualne ustawienia. Do poruszania się po menu służą cztery przyciski, UP, DOWN, ENTER, ESC. Żeby zmienić amplitudę należy wejść do podmenu AMPLITUD, nacisnąć ENTER, a następnie za pomocą przycisków UP, DOWN wybrać kanał, którego amplitudę chcemy zmienić. W celu dokonania zmiany, należy nacisnąć ENTER (ramka zaczyna migać ), a następnie za pomocą przycisków UP, DOWN zmienić wartość amplitudy. Po dokonaniu zmian, należy je zatwierdzić naciskając ENTER (ramka przestaje migać). Aby wyjść z podmenu, należy nacisnąć ESC. Do zmiany fazy początkowej służy podmenu OFSET. Zmian należy dokonać analogicznie jak zmian amplitudy. Do zmiany częstotliwości kanałów służy podmenu FREQ. Zmian dokonuje się analogicznie jak zmian amplitudy z tą różnicą, że w momencie zmiany wartości częstotliwości kanału naciśnięcie i przytrzymanie przez ok. 3 s przycisku DOWN, powoduje zmianę przedrostka z Hz na kH, z kH na MHz lub z MHz na Hz.

Do zapisania wprowadzonych zmian, służy podmenu SAVE. W podmenu SWITCH użytkownik może załączać lub wyłączać poszczególne kanały. Po wyborze wybranego kanału, należy nacisnąć ENTER, a następnie załączyć lub wyłączy dany kanał używając przycisku UP, DOWN. Będąc w stanie, w którym dokonuje się zmiany załączenia/wyłączenia (migająca ramka), naciśnięcie i przytrzymanie przycisku DOWN przez ok. 3 s. powoduje załączenie lub wyłączenie wszystkich trzech kanałów jednocześnie, natomiast naciśnięcie i przytrzymanie przycisku UP przez ok. 3 s. powoduje zmianę kształtu sygnału kanału, w którym dokonujemy zmian. Będąc w menu SWITCH, ale nie mając aktywowanej edycji żadnego kanału, krótkotrwałe naciśnięcie przycisku ESC powoduje wyjście z podmenu do menu głównego, natomiast naciśnięcie i przytrzymanie przez ok. 3 s przycisku ESC, powoduje synchronizację wszystkich trzech faz wraz ze zmianą kształtu sygnału wszystkich kanałów.

Przełączając przełączniki ON/OFF, załączamy lub wyłączamy składową stałą, która jest sumowana z generowanym sygnałem. Do regulacji wartości składowej stałej służą potencjometry wieloobrotowe.

Krzysztof Miękus
lordwest1989@tlen.pl

Wykaz elementów:
Rezystory: (SMD 1206)
  • R1, R12, R15, R18: 1 kΩ
  • R3: 0,22 Ω
  • R4…R11, R13, R14, R16, R17: 10 kΩ
  • J1…J5: 0 Ω
Kondensatory: (SMD 1206)
  • C12, C13, C16, C30, C44: 22 pF
  • C1, C2, C8…C10, C14, C17,C20, C24…C28, C31, C34, C38, C40…C42, C45, C48, C52…
  • C56: 100 nF
  • C3: 470 μF 16V
  • C4: 330 μF/16 V
  • C5: 2,2 nF
  • C6: 2200 μF/16 V
  • C7: 100 μF/16 V
  • C21…C23, C35…C37, C49…C51: 1 μF
  • C19, C33, C47: 10 nF
  • C18, C15, C29, C32, C43, C46: 10 μF 16 V
Półprzewodniki:
  • D1…D3: dioda Schottky (SMD)
  • IC1: ATmega32 (SMD)
  • IC2: LM2575-5
  • IC3: MC34063
  • U2, U5, U8: AD8022
  • U1, U4, U7: AD9833
  • DAC1, DACL2, DACL3: MCP4921
  • U3, U6, U9: AD835
Inne:
  • L1, L2: 330 μH
  • Q1: rezonator kwarcowy 16 MHz
  • F1: bezpiecznik 500 mA
  • Y1: SG-8002JC (generator kwarcowy 25 MHz)
  • Wyświetlacz 128×64 ze sterownikiem KS0108
Artykuł ukazał się w
Elektronika Praktyczna
listopad 2018
DO POBRANIA
Pobierz PDF Download icon
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik czerwiec 2021

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio czerwiec 2021

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka Podzespoły Aplikacje maj 2021

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna czerwiec 2021

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich czerwiec 2021

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów