Audio_Gen - generator sygnału sinusoidalnego z DSP

Audio_Gen - generator sygnału sinusoidalnego z DSP
Pobierz PDF Download icon
W czasach, gdy studiowałem, w jednej z gablotek, w której były umieszczane tematy prac dyplomowych, na nieco już pożółkłej kartce wisiała propozycja tematu: "Generator sinusoidy w oparciu o procesor DSP". Ta karta wywieszona w gablotce chyba miała jakieś magiczne właściwości, ponieważ wszyscy omijali ją szerokim łukiem. Współcześnie, dzięki procesorom z rodziny Sigma DSP, taki projekt można zrealizować w jedno popołudnie.

Opisywany generator nie jest urządzeniem dydaktycznym, a pełnoprawnym generatorem przebiegu sinusoidalnego o częstotliwości z zakresu 20 Hz...20 kHz. Sygnał wyjściowy charakteryzuje się małymi zniekształceniami THD+N, wynoszącymi mniej niż 0,15% oraz dobrą stabilnością częstotliwości.

Sygnał sinusoidalny jest generowany w trzech zakresach: 20 Hz...200 Hz, 200 Hz...2 kHz, 2 kHz...20 kHz przy ustalonych częstotliwościach 20/25/32/40/50/63/80/100/125/160/200 i mnożniku 1/10/100. Dodatkowo, generator ma zaimplementowane źródło szumu białego.

Rysunek 1. Schemat blokowy ADAU1701 (za notą AD)

Rysunek 2. Schemat ideowy bloku DSP

Rysunek 3. Schemat filtru/bufora

Dzięki zastosowaniu nowoczesnego procesora DSP typu ADAU1701 generator ma niewielkie, kieszonkowe wymiary. Jest zasilany z typowego zasilacza wtyczkowego 5 V/0,5 A lub z niewielkiego Power-Banku poprzez złącze micro USB.

Schemat blokowy procesora ADAU1701 zastosowanego w generatorze pokazano na rysunku 1. Jest to najmniejszy procesor z rodziny SigmaDSP, ale jego zasoby umożliwiają bezproblemową realizację generatora. W aplikacji procesor pracuje z częstotliwością fs=96 kHz.

Sygnał generowany cyfrowo jest doprowadzony do wbudowanego konwertera C/A. Dzięki wyposażeniu DSP w programowany interfejs GPIO nie jest konieczne stosowanie do zmian nastaw zewnętrznego mikroprocesora. Program i dane dla DSP przechowywane są w zewnętrznej pamięci EEPROM.

Rysunek 4. Zasilacz generatora

Rysunek 5. Sterowanie GPIO

Rysunek 6.Układ wskaźnika częstotliwości generatora

Schemat ideowy bloku DSP generatora zamieszczono na rysunku 2. Procesor DSP (U1) jest taktowany oscylatorem kwarcowym XT1 o częstotliwości 24,576 MHz. Układ ADM811 (U6) jest generatorem sygnału RESET. Tranzystor Q1 i elementy tworzą obwód zasilania rdzenia procesora DSP napięciem 1,8 V. Rezystor R3 oraz kondensatory C12 i C13 są elementami pętli PLL DSP. Pozostałe kondensatory stanowią obwody filtrujące zasilanie DSP.

Wykaz elementów

Rezystory: (SMD 0805, 1%)
R1, R5: 1 kΩ
R2: 18 kΩ
R3: 475 Ω
R4: 100 Ω
R6: 100 kΩ
R7, R8: 4,75 kΩ
R9: 604 Ω
R10...R12: 22 kΩ
R13: 22 Ω
RP1, RP2: 10 kΩ drabinka SMD CRA06S08
RP3: 220 Ω drabinka SMD CRA06S08
RP4: 2,2 kΩ drabinka SMD CRA06S08
FSEL: 47 kΩ (pot. montażowy z ośką CA6V)
VOL: 47 kΩ (pot. montażowy z ośką CA6V)

Kondensatory: (SMD 0805)
C1, C4, C6, C7, C9, C11, C14, C17...C20: 0,1 µF
C2, C3, C5, C8, C10: 10 µF
C12: 56 nF (NP0)
C13: 3,3 nF (NP0)
C15, C16: 22 pF (NP0)
C21: 150 pF (NP0)
C22: 470 pF (NP0)
C23: 1,2 nF (NP0)
C24: 4,7 µF (THT, foliowy R=5 mm)
CE1, CE2, CE5: 10 µF (SMD "A")
CE3, CE4: 47 µF (elektrolit. R=2,5 mm)

Półprzewodniki:
LD1...LD11: dioda LED SMD (0805)
Q1: BC807-40 (SOT-23)
U1, U2: LVC138 (SO16)
U3: ADP3339-33 (SOT-223)
U4: ADAU1701 (VQFP48)
U5: 24LC256 (SO8)
U6: ADM811T (SOT-143)
U7: AD8606AR (SO8)

Inne:
DSEL: 5MS3S102 (przełącznik 3-pozycyjny, suwakowy)
FB1...FB3: PBY201209T-601Y (perełka ferrytowa)
OUT: złącze RCA do druku
SN: 5MS1S102 (przełącznik 2-pozycyjny, suwakowy)
USB: złącze USB Micro
USBI: gniazdo IDC10
WP: zwora SIP2
XT1: 24,576 MHz (kwarc HC49SMD)

Rysunek 7. Schemat blokowy aplikacji generatoraOdfiltrowany

Przetwornik A/C, w który jest wyposażony procesor, w tej aplikacji nie ma zastosowania i dla zmniejszenia poboru mocy jest wprowadzony w tryb Power Down. Pamięć EEPROM typu 24LC256 (U5) przechowuje program procesora DSP pracującego w trybie samodzielnym Selfboot. Złącze USBI umożliwia zaprogramowanie pamięci w systemie poprzez programator USBi (przy zwartej zworze WP).

Sygnał wyjściowy z generatora jest dostępny jest na wyprowadzeniu VOUT0. Konieczną filtrowanie i buforowanie sygnału wyjściowego zapewnia podwójny wzmacniacz operacyjny AD8606 (U7). Odfiltrowany sygnał wyjściowy jest doprowadzony do potencjometru VOL służącego do regulacji poziomu napięcia wyjściowego.

Rezystory R10 i R11 polaryzują wejście nieodwracające bufora wyjściowego przy pracy z niesymetrycznym zasilaniem, natomiast kondensator CE4 separuje składową stałą na wyjściu generatora. Sygnał wyjściowy dostępny jest na gnieździe OUT typu RCA.

Generator zasilany jest z typowego, niskoszumnego stabilizatora LDO o napięciu wyjściowym 3,3 V. Do jego budowy zastosowano układ ADP3339-3.3 (rysunek 4). Do zasilania filtra i bufora wyjściowego służy napięcie 5 V pochodzące z zasilacza zewnętrznego, filtrowane za pomocą dławika FB3 oraz kondensatorów C17 i CE5.

Sterowanie pracą generatora odbywa się poprzez GPIO procesora U4, wg schematu z rysunku 5. Potencjometr FSEL (sygnał FSEL) służy do wyboru generowanej częstotliwości - jego suwak jest doprowadzony do wbudowanego przetwornika A/C. Wybór mnożnika 1/10/100 generatora (sygnał DSEL) odbywa się poprzez przełącznik DSEL, który wraz z rezystorami drabinki RP2 umożliwia doprowadzenie do wbudowanego A/C napięcia: 0, 50%×V33, V33.

Rysunek 8. Generator 20 Hz...160 Hz

Rysunek 9. Generator 200 Hz...1600 Hz

Rysunek 10.Generator 2 kHz...20 kHz

Przełącznik SN (NSEL) służy wyboru rodzaju generowanego sygnału - może to być sygnał o kształcie sinusoidalnym lub biały szum. Położenie przełącznika jest odczytywane za pomocą wejścia GPIO. Dla sygnalizowania aktualnie generowanej częstotliwości służy linijka LED sterowana z multiplekserów kontrolowanych za pomocą wyprowadzeń GPIO procesora DSP. Schemat wskaźnika częstotliwości pokazano na rysunku 6.

Rysunek 11. Blok sterujący wskaźnikiem częstotliwości

Aplikację sterującą pracą generatora utworzona za pomocą oprogramowania Sigma Studio. Jej schemat blokowy zamieszczono na rysunku 7. Sygnał wejściowy FSEL z bloku ADC1, po konwersji formatu jest doprowadzony do bloków poszczególnych generatorów sinusoidy oraz do bloku wskaźnika częstotliwości LED.

Sygnały wyjściowe doprowadzone są do multipleksera "mnożnika" sterowanego sygnałem DSEL. Sterowanie, podobnie jak w wypadku FSEL, wymaga konwersji formatu i przeliczenia rejestru A/C na trzy poziomy sterujące multiplekserem. Ostatni multiplekser umożliwia wybór pomiędzy funkcją generatora przebiegu sinusoidalnego, a białego szumu (sygnałem NSEL).

W obwód szumu jest wprowadzona korekta wzmocnienia wyrównująca amplitudy sygnałów sinusoidy i szumu na wyjściu generatora. Schematy poszczególnych generatorów przebiegów sinusoidalnych przedstawiają rysunki 8...10.

Aby nie powielać w poszczególnych generatorach częstotliwości 200 Hz i 2 kHz jest ona wyprowadzona z odpowiadającego bloku i doprowadzona do multipleksera poprzedzającego generatora. Takie rozwiązanie zmniejsza liczbę używanych generatorów i umożliwia generowane sygnału z "zakładką" w każdym z pasm.

Ostatnim blokiem programu jest układ sterujący wskaźnikiem częstotliwości. Jego schemat pokazano na rysunku 11. Po konwersji formatu, sygnał FSEL z przetwornika C/A jest doprowadzony jest do bloków Tolerance Analyser pełniących funkcję komparatorów, które mierzą czy sygnał wejściowy zawiera się w określonym przedziale.

Rysunek 12. Rozmieszczenie elementów generatora

Rysunek 13. Konfiguracja pamięci EEPROM

Następnie, sygnał za pomocą bramek logicznych jest kodowany binarnie i doprowadzony do wyjść GPIO sterujących demultiplekserami. Ten sposób wybrano pomimo pozornej komplikacji, aby wykorzystać wbudowane GPIO, które niestety nie wystarcza do sterowania wszystkimi LED bezpośrednio, a zmiana procesora na "większy" niepotrzebnie podrożyłaby i skomplikowała układ (np. ADAU1446 ma więcej GPIO, ale nie ma wbudowanego C/A).

Układ generatora zmontowano na niewielkiej, dwustronnej płytce drukowanej. Jej schemat montażowy pokazano na rysunku 12. Montaż jest typowy i nie wymaga opisu. Po sprawdzeniu poprawności lutowania można przejść do uruchomienia układu. Po dołączeniu zasilania (np. z PC) oraz programatora USBI konieczne jest skonfigurowanie pamięci EEPROM układu według rysunku 13. Kolejnym krokiem jest skonfigurowanie peryferiów DSP wg rysunku 14.

Rysunek 14. Konfiguracja DSP

Rysunek 15. Programowanie pamięci EEPROM

Bloki A/C i niewykorzystane wyjścia C/A są wyciszone i wprowadzone w tryb obniżonego pobory mocy. Po prawidłowej konfiguracji procesora należy załadować skompilowane (Link → Compile → Download, klawisz F7) oprogramowanie do pamięci DSP. Jeżeli nie ma błędów montażowych, układ generatora powinien pracować poprawnie.

Można przetestować funkcję generowania sygnału, działanie przełączników i wskaźników częstotliwości LED. Ostatnim krokiem jest zaprogramowanie pamięci EEPROM do pracy samodzielnej (rysunek 15). W tym celu zakładamy zworę WP i wybieramy opcję Write Latest Compilation to EEPROM. Po zdjeciu zwory urządzenie jest gotowe do pracy.

Adam Tatuś, EP

Artykuł ukazał się w
Elektronika Praktyczna
kwiecień 2015
DO POBRANIA
Pobierz PDF Download icon
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik kwiecień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Automatyka, Podzespoły, Aplikacje kwiecień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna kwiecień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich maj 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów