- IC PT2258
- Jak działa układ scalony PT2258
- Schemat
- Wymagane składniki
- Kod Arduino
- Testowanie obwodu regulacji głośności dźwięku cyfrowego
- Dalsze ulepszenia
Potencjometr to urządzenie mechaniczne, za pomocą którego można ustawić rezystancję zgodnie z żądaną wartością, zmieniając w ten sposób przepływający przez niego prąd. Istnieje wiele zastosowań potencjometru, ale głównie potencjometr jest używany jako regulator głośności we wzmacniaczach audio.
Potencjometr nie kontroluje wzmocnienia sygnału, ale tworzy dzielnik napięcia, przez co sygnał wejściowy jest tłumiony. W tym projekcie pokażę, jak zbudować cyfrowy kontroler głośności za pomocą układu scalonego PT2258 i połączyć go z Arduino, aby kontrolować głośność obwodu wzmacniacza. Możesz tutaj również sprawdzić różne obwody związane z dźwiękiem, w tym miernik VU, obwód sterowania tonem itp.
IC PT2258
Jak wspomniałem wcześniej, PT2258 to układ scalony przeznaczony do użytku jako 6 -kanałowy elektroniczny regulator głośności, ten układ scalony wykorzystuje technologię CMOS specjalnie zaprojektowaną do wielokanałowych zastosowań audio-wideo.
Ten układ scalony zapewnia interfejs sterowania I2C z zakresem tłumienia od 0 do -79 dB przy 1 dB / krok i jest dostarczany w 20-pinowej obudowie DIP lub SOP.
Niektóre podstawowe funkcje obejmują:
- 6 kanałów wejściowych i wyjściowych (dla domowych systemów audio 5.1)
- Wybierany adres I2C (dla aplikacji łańcuchowej)
- Wysoka separacja kanałów (do zastosowań o niskim poziomie hałasu)
- Stosunek S / N> 100dB
- Napięcie robocze wynosi od 5 do 9 V.
Jak działa układ scalony PT2258
Ten układ scalony przesyła i odbiera dane z mikrokontrolera za pośrednictwem linii SCL i SDA. SDA i SCL tworzą interfejs magistrali. Linie te muszą być podciągnięte wysoko przez dwa rezystory 4,7K, aby zapewnić stabilną pracę.
Zanim przejdziemy do faktycznej obsługi sprzętu, oto szczegółowy opis funkcjonalny układu scalonego. jeśli nie chcesz tego wszystkiego wiedzieć, możesz pominąć tę część, ponieważ całą częścią funkcjonalną zarządza biblioteka Arduino.
Walidacji danych
- Dane na linii SDA są uważane za stabilne, gdy sygnał SCL jest WYSOKI.
- Stany HIGH i LOW linii SDA zmieniają się tylko wtedy, gdy SCL jest LOW.
Warunek rozpoczęcia i zatrzymania
Warunek początkowy jest aktywowany, gdy
- SCL jest ustawiony na WYSOKI i
- SDA przechodzi ze stanu WYSOKI do NISKIEGO.
Warunek zatrzymania jest aktywowany, gdy
- SCL jest ustawiony na WYSOKI i
- SDA przechodzi ze stanu LOW do HIGH
Uwaga! Ta informacja jest bardzo przydatna do debugowania sygnałów.
Format danych
Każdy bajt przesyłany do linii SDA składa się z 8 bitów, które tworzą bajt. Po każdym bajcie musi następować bit potwierdzenia.
Potwierdzenie
Potwierdzenie zapewnia stabilną i poprawną pracę. Podczas potwierdzania impulsu zegarowego mikrokontroler wyciąga pin SDA WYSOKI w tym momencie, gdy urządzenie peryferyjne (procesor dźwięku) obniża (LOW) linię SDA.
Urządzenie peryferyjne (PT2258) jest teraz zaadresowane i musi wygenerować potwierdzenie po odebraniu bajtu, w przeciwnym razie linia SDA pozostanie na wysokim poziomie podczas dziewiątego (dziewiątego) impulsu zegarowego. W takim przypadku nadajnik główny wygeneruje informację STOP w celu przerwania transferu.
To eliminuje potrzebę istnienia prawidłowego transferu danych.
Wybór adresu
Adres I2C tego układu scalonego zależy od stanu KODU1 (styk nr 17) i KOD2 (styk nr 4).
KOD1 (PIN nr 17) |
KOD2 (PIN nr 4) |
ADRES HEX |
0 |
0 |
0X80 |
0 |
1 |
0X84 |
1 |
0 |
0X88 |
1 |
1 |
0X8C |
Logika wysoka = 1
Logika niska = 0
Protokół interfejsu
Protokół interfejsu składa się z następujących elementów:
- Trochę startu
- Bajt adresu chipa
- ACK = bit potwierdzenia
- Bajt danych
- Trochę Stop
Trochę sprzątania
Po włączeniu układ scalony musi odczekać co najmniej 200 ms przed przesłaniem pierwszego bitu danych, w przeciwnym razie transfer danych może się nie powieść.
Po opóźnieniu pierwszą rzeczą do zrobienia jest wyczyszczenie rejestru poprzez wysłanie „0XC0” vi linii I2C, co zapewnia poprawne działanie.
Powyższy krok czyści cały rejestr, teraz musimy ustawić wartość dla rejestru, w przeciwnym razie rejestr przechowuje wartość śmieci i otrzymujemy piegowate wyjście.
Aby zapewnić odpowiednią regulację głośności, konieczne jest wysłanie po kolei wielokrotności 10 dB, po której następuje kod 1 dB do tłumika, w przeciwnym razie układ scalony może zachowywać się nieprawidłowo. Poniższy diagram wyjaśnia to bardziej.
Obie powyższe metody będą działać poprawnie.
Aby zapewnić prawidłowe działanie, upewnij się, że prędkość przesyłania danych I2C nigdy nie przekracza 100 KHz.
W ten sposób możesz przesłać bajt do układu scalonego i osłabić sygnał wejściowy. Powyższa sekcja ma na celu nauczenie się, jak działa układ scalony, ale jak powiedziałem wcześniej, będziemy używać biblioteki Arduino do komunikacji z układem scalonym, który zarządza całym twardym kodem, i musimy tylko wykonać kilka wywołań funkcji.
Wszystkie powyższe informacje pochodzą z arkusza danych, zapoznaj się z nim w celu uzyskania dalszych informacji.
Schemat
Powyższy obraz przedstawia schemat testowy obwodu regulacji głośności opartego na PT2258. Jest pobierany z arkusza danych i modyfikowany zgodnie z potrzebami.
Dla celów demonstracyjnych obwód jest zbudowany na płytce stykowej bez lutowania za pomocą schematu pokazanego powyżej.
Uwaga! Wszystkie komponenty są umieszczone jak najbliżej, aby zmniejszyć pasożytniczą indukcyjność i rezystancję pojemności.
Wymagane składniki
- Układ scalony PT2258 - 1
- Kontroler Arduino Nano - 1
- Ogólny Breadboard - 1
- Zacisk śrubowy 5 mm x 3-1
- Przycisk - 1
- Rezystor 4,7 K, 5% - 2
- Rezystor 150 K, 5% - 4
- Rezystor 10 k, 5% - 2
- Kondensator 10uF - 6
- Kondensator 0,1 uF - 1
- Przewody połączeniowe - 10
Kod Arduino
Dla uproszczenia użyję biblioteki PT2258 z GitHub, która jest autorstwa sunrutcon.
Jest to bardzo dobrze napisana biblioteka, dlatego zdecydowałem się jej użyć, ale ponieważ jest bardzo stara, jest trochę wadliwa i musimy ją naprawić, zanim będziemy mogli z niej korzystać.
Najpierw pobierz i wyodrębnij bibliotekę z repozytorium GitHub.
Otrzymasz powyższe dwa pliki po rozpakowaniu.
#include #include
Następnie otwórz plik PT2258.cpp w swoim ulubionym edytorze tekstu, używam Notepad ++.
Widać, że „w” biblioteki przewodów jest zapisane małymi literami, co jest niezgodne z najnowszymi wersjami Arduino i trzeba je zastąpić literami „W”, to wszystko.
Pełny kod kontrolera głośności PT2258 można znaleźć na końcu tej sekcji. Tutaj wyjaśniono ważne części programu.
Kod zaczynamy od dołączenia wszystkich wymaganych plików bibliotek. Biblioteka Wire służy do komunikacji między Arduino a PT2258. Biblioteka PT2258 zawiera wszystkie krytyczne informacje o taktowaniu I2C i potwierdzenia. EzButton biblioteka służy do interakcji z przyciskami.
Zamiast używać poniższych obrazów kodu, skopiuj wszystkie wystąpienia kodu z pliku kodu i ustaw je w taki sposób, jak robiliśmy to w innych projektach
#zawierać
Następnie utwórz obiekty dla dwóch przycisków i samą bibliotekę PT2258.
PT2258 pt2258; ezButton button_1 (2); ezButton button_2 (4);
Następnie określ poziom głośności. Jest to domyślny poziom głośności, od którego rozpocznie się ten układ scalony.
Objętość wewnętrzna = 40;
Następnie zainicjuj UART i ustaw częstotliwość zegara dla magistrali I2C.
Serial.begin (9600); Wire.setClock (100000);
Bardzo ważne jest ustawienie zegara I2C, w przeciwnym razie układ scalony nie będzie działał, ponieważ maksymalna częstotliwość zegara obsługiwana przez ten układ wynosi 100 KHz.
Następnie wykonujemy małe porządki z instrukcją if else , aby upewnić się, że układ scalony komunikuje się prawidłowo z magistralą I2C.
Jeśli (! Pt2258.init ()) Serial.printIn („Zainicjowano PT2258 pomyślnie”); Else Serial.printIn („Nie udało się zainicjować PT2258”);
Następnie ustawiamy opóźnienie odbicia dla przycisków.
Button_1.setDebounceTime (50); Button_2.setDebounceTime (50);
Na koniec zainicjuj układ scalony PT2258, ustawiając go z domyślną głośnością kanału i numerem pinu.
/ * Inicjowanie PT z domyślną głośnością i pinem * / Pt2258.setChannelVolume (volume, 4); Pt2258.setChannelVolume (volume, 5);
Oznacza to koniec sekcji Void Setup () .
W sekcji Loop musimy wywołać funkcję loop z klasy przycisku; to norma biblioteczna.
Button_1.loop (); // Normy biblioteczne Button_2.loop (); // Normy biblioteczne
Poniżej, jeśli sekcja ma na celu zmniejszenie głośności.
/ * jeśli naciśnięto przycisk 1, jeśli warunek jest prawdziwy * / If (button_1.ispressed ()) {Volume ++; // Zwiększanie licznika głośności. // Ta instrukcja if zapewnia, że głośność nie przekracza 79 If (volume> = 79) {Volume = 79; } Serial.print („objętość:”); // drukowanie poziomu głośności Serial.printIn (volume); / * ustaw głośność dla kanału 4, który jest w PIN 9 układu scalonego PT2558 * / Pt2558.setChannelVolume (volume, 4); / * ustaw głośność dla kanału 5, czyli PIN 10 układu scalonego PT2558 * / Pt2558.setChannelVolume (volume, 5); }
Poniżej, jeśli sekcja ma zwiększyć głośność.
// To samo dzieje się z przyciskiem 2 If (button_2.isPressed ()) {Volume--; // ta instrukcja if gwarantuje, że poziom głośności nie spadnie poniżej zera. Jeśli (objętość <= 0) Głośność = 0; Serial.print („objętość:”); Serial.printIn (objętość); Pt2258.setChannelVolume (volume, 4); Pt2558.setChannelVolume (objętość, 5); }
Testowanie obwodu regulacji głośności dźwięku cyfrowego
Do testowania obwodu wykorzystano następującą aparaturę
- Transformator z zaczepem 13-0-13
- 2 głośniki 4Ω 20W jako obciążenie.
- Źródło dźwięku (telefon)
W poprzednim artykule pokazałem, jak zrobić prosty wzmacniacz audio 2x32 W z układem scalonym TDA2050, użyję go również do tej demonstracji.
Zepsułem potencjometr mechaniczny i zwarłem dwa przewody dwoma małymi przewodami rozruchowymi.
Teraz za pomocą dwóch przycisków można regulować głośność wzmacniacza.
Dalsze ulepszenia
Obwód można dalej modyfikować w celu poprawy jego wydajności. Ulepszenia, takie jak obwód, można wprowadzić na płytce drukowanej, aby jeszcze bardziej wyeliminować szum generowany przez część cyfrową układu scalonego. Możemy również dodać dodatkowy filtr, aby odrzucić szumy o wysokiej częstotliwości. Sprawdź także inne obwody wzmacniacza audio i inne projekty związane z dźwiękiem.
Mam nadzieję, że spodobał Ci się ten artykuł i nauczyłeś się z niego czegoś nowego. Jeśli masz jakiekolwiek wątpliwości, możesz zapytać w komentarzach poniżej lub skorzystać z naszych forów w celu szczegółowej dyskusji.