AVT5540 B - nieduży radioodbiornik z RDS dla każdego
Funkcję tunera radiowego pełni moduł z układem RDA5807. Jego płytka, pokazana na fotografii 1, ma wymiary 11×11×2 mm. Zawiera układ scalony radioodbiornika, rezonator kwarcowy oraz kilka komponentów biernych. Moduł jest bardzo łatwy w montażu, a jego cena pozytywnie zaskakuje.
Na rysunku 2 pokazano rozmieszczenie wyprowadzeń modułu. Oprócz doprowadzenia zasilania o napięciu ok. 3 V wymaga jeszcze tylko sygnału zegarowego i doprowadzenia anteny. Na wyjściu jest dostępny stereofoniczny sygnał audio, a odczyt informacji RDS, statusu oraz konfigurowanie układu odbywa się za pomocą interfejsu szeregowego.
Budowa
Schemat ideowy radioodbiornika pokazano na rysunku 3. Jego budowę można podzielić na kilka bloków: zasilania (IC1, IC2), radiowy (IC6, IC7), wzmacniacza mocy audio (IC3) oraz blok sterowania i interfejsu użytkownika (IC4, IC5, SW1, SW2).
Blok zasilania dostarcza dwóch napięć stabilizowanych: +5 V do zasilania wzmacniacza mocy audio i wyświetlacza oraz +3,3 V dla modułu radiowego i mikrokontrolera sterującego. Układ RDA5807 ma wbudowany wzmacniacz audio o ma - łej mocy, który umożliwia bezpośrednie wysterowanie np. słuchawek.
Aby nie obciążać wyjścia tak delikatnego układu oraz dla uzyskania większej mocy, w prezentowanym urządzeniu zastosowano dodatkowy wzmacniacz mocy audio. Jest to typowa aplikacja układu TDA2822, która pozwala na osiągnięcie mocy wyjściowej rzędu kilku watów.
Wyjście sygnału jest dostępne na trzech złączach: CON4 (popularne gniazdo minijack pozwalające na dołączenie np. słuchawek), CON2 i CON3 (pozwalają na dołączenie do radioodbiornika głośników). Dołączenie słuchawek odłącza sygnał od głośników.
Montaż
Schemat montażowy radioodbiornika pokazano na rysunku 4. Montaż wykonujemy zgodnie z ogólnymi zasadami. Płytka drukowana ma miejsce do zamontowania gotowego modułu radiowego, ale także umożliwia montaż pojedynczych elementów składających się na moduł, czyli: układu RDA, rezonatora kwarcowego i dwóch kondensatorów. Dlatego na schemacie i płytce znajdują się elementy IC6 oraz IC7 - budując radioodbiornik, należy wybrać jedną z opcji, wygodniejszą i dopasowaną do posiadanych komponentów. Wyświetlacz oraz impulsatory należy zamontować od strony lutowania. Pomocna przy montażu będzie fotografia 5, przedstawiająca zmontowaną płytkę radioodbiornika.
Po zmontowaniu radioodbiornik wymaga jedynie ustawienia kontrastu wyświetlacza za pomocą potencjometru R1. Po tej czynności jest gotowy do pracy.
Obsługa
Na wyświetlaczu są pokazywane podstawowe informacje. Słupek wyświetlany po lewej stronie ilustruje poziom mocy odbieranego sygnału radiowego. W centralnej części wyświetlacza znajduje się informacja o aktualnie ustawionej częstotliwości radiowej. Po prawej stronie - również w postaci słupka - jest pokazywany poziom sygnału audio (rysunek 6).
Po kilku sekundach bezczynności - jeśli jest możliwy odbiór danych RDS – wskazanie odbieranej częstotliwości zostaje "zasłonięte" podstawową informacją RDS, a w dolnej linii wyświetlacza pokazuje się rozszerzona informacja RDS. Podstawowa informacja zawiera tylko osiem znaków. Zwykle zobaczymy tam nazwę stacji, na zmianę z nazwą aktualnego programu lub wykonawcy. Informacja rozszerzona może zawierać do 64 znaków. Jej tekst jest przewijany w dolnej linii wyświetlacza, aby pokazać cały komunikat.
Do obsługi radioodbiornika służą dwa impulsatory. Tym po lewej stronie ustawimy odbieraną częstotliwość, natomiast ten po prawej pozwala na regulowanie głośności. Ponadto, przyciśnięcie lewego impulsatora pozwala na zapamiętanie aktualnej częstotliwości w jednej z ośmiu przeznaczonych do tego lokacji pamięci. Po wybraniu numeru programu należy potwierdzić działanie, ponownie przyciskając impulsator (rysunek 7).
Dodatkowo urządzenie zapamiętuje ostatnio zapisany program oraz ustawioną głośność i każdorazowo po włączeniu zasilania uruchamia ten program z taką właśnie głośnością. Przyciskanie prawego impulsatora powoduje przełączenie odbioru na następny zapisany program.
Działanie
Układ RDA5807 komunikuje się z mikrokontrolerem poprzez interfejs szeregowy I2C. Jego praca jest kontrolowana za pomocą szesnastu rejestrów 16-bitowych, ale nie wszystkie bity i rejestry są wykorzystywane. Rejestry o adresach od 0x02 do 0x07 służą przede wszystkim do zapisu. Przy rozpoczęciu transmisji I2C z funkcją zapisu, automatycznie pierwszym zapisywanym rejestrem jest ten o adresie 0x02.
Rejestry o adresach 0x0A do 0x0F zawierają informacje tylko do odczytu. Rozpoczęcie transmisji I2C z zamiarem odczytania statusu lub zawartości rejestrów RDS, automatycznie rozpoczyna odczyt od rejestru o adresie 0x0A.
Adres I2C układu RDA to wg dokumentacji 0x20 (0x21 dla funkcji odczytu), jednak w przykładach programów dla tego modułu znaleziono funkcje zawierające adres 0x22. Okazało się, że przy użyciu tego adresu można zapisać jeden konkretny rejestr układu, a nie całą grupę, zaczynając od rejestru o adresie 0x02. Informacji tej zabrakło w dokumentacji.
Na kolejnych listingach pokazano ważniejsze fragmenty programu napisanego w języku C++. Listing 1 zawiera definicje istotnych rejestrów i bitów - ich dokładniejszy opis dostępny jest w dokumentacji układu. Na listingu 2 zamieszczono procedurę inicjującą układ scalony odbiornika radiowego RDA. Na listingu 3 przedstawiono procedurę ustawiającą układ radiowy na odbiór danej częstotliwości. Procedura wykorzystuje funkcje zapisu pojedynczego rejestru.
Odbiór danych RDS wymaga ciągłego odczytywania rejestrów układu RDA zawierających adekwatną informację. Program zawarty w pamięci mikrokontrolera wykonuje tę czynność co około 0,2 sekundy. Służy do tego funkcja RadioRead(). Struktury danych RDS były już opisywane na łamach EP, np. przy okazji projektu AVT5401 (EP 6/2013), więc zachęcam osoby zainteresowane poszerzeniem swojej wiedzy do lektury wspomnianego artykułu, dostępnego za darmo w archiwum "Elektroniki Praktycznej" (http://ep.com.pl/archiwum.html). Na koniec tego opisu warto poświęcić kilka zdań rozwiązaniom zastosowanym w prezentowanym radioodbiorniku.
Odebrane z modułu dane RDS są podzielone na cztery rejestry RDSA…RDSD (umieszczone w rejestrach o adresach od 0x0C do 0x0F). W rejestrze RDSB mieści się informacja o grupie danych. Istotne grupy to 0x0A, zawierająca podstawowy tekst RDS (osiem znaków), oraz 0x2A, zawierająca tekst rozszerzony (64 znaki). Oczywiście tekst nie znajduje się w jednej grupie, tylko w wielu kolejnych grupach o tym samym numerze. Każda z nich zawiera informacje o pozycji danej części tekstu, dzięki czemu możliwe jest skompletowanie całego komunikatu.
Dużym problemem okazało się filtrowanie danych, aby prawidłowy komunikat złożyć w całość bez "krzaczków". W urządzeniu zastosowano rozwiązanie z podwójnym buforem komunikatów RDS. Odebrany fragment komunikatu jest porównywany z jego poprzednią wersją umieszczoną w pierwszym buforze - roboczym, na tej samej pozycji. Gdy wynik porównania wypadnie pozytywnie, komunikat zostaje zapamiętany w drugim buforze - wynikowym. Metoda wymaga dużo pamięci, ale jest bardzo skuteczna.
KS