Cyfrowy Przedwzmacniacz


7
Ocena: None Średnia: 7 (3 głosujących)

Przedwzmacniacz ten został zbudowany w oparciu o cyfrowy scalony procesor dźwięku TDA8425 sterowany za pomocą mikrokontrolera ATTiny2313. W układzie nie zastosowano żadnego wyświetlacza a jedynie linijkę diod LED (bargraf), na którym wyświetlane są podstawowe informacje o parametrach dźwięku. Przedwzmacniacz posiada dwa niezależne kanały, przełączane w pełni cyfrowo, oraz regulację głośności i barwy dźwięku. W roli elementu regulacyjnego wykorzystano tani i popularny impulsator (enkoder) obrotowy z wbudowanym przyciskiem. Zapewnia to prostą i intuicyjną obsługę urządzenia, zmniejszając znacznie jego wymiary. Przejście z ustawień głośności do ustawień tonów odbywa się przez naciśnięcie przycisku w impulsatorze. Przedwzmacniacz ten znakomicie nadaje się do współpracy z dowolnym wzmacniaczem, testowany był wraz z układem Mini wzmacniacza 2x15W. W roli źródła sygnału można zastosować odtwarzacz mp3, komputer, magnetofon lub dowolne urządzenie tego typu wyposażone w wyjście słuchawkowe.

Działanie:


Schemat ideowy układu sterującego znajduje się na rysunku poniżej:

Sercem układu jest mikrokontroler U1 (ATTiny2313) wraz z rezonatorem kwarcowym X1 (16MHz) i kondensatorami C1 (22pF) i C2 (22pF). Rezystory R1 (3,3k) i R2 (3,3k) podciągają linie SCL i SDA magistrali I2C do plusa zasilania, zapewniając jej prawidłowe warunki pracy. Sprawą obróbki sygnału zajmuje się scalony procesor dźwięku U2 (TDA8425). Sygnał audio podawany jest na złącza IN1 i IN2 za pośrednictwem kondensatorów C13 - C15 (470nF). Wyjściem przedwzmacniacza jest złącze OUT, do którego sygnał dostaje się za pomocą kondensatorów C17 (2,2uF) i C18 (2,2uF). Pozostałe kondensatory C6 - C12 zostały zastosowane zgodnie z zaleceniem producenta układu na podstawie karty katalogowej, umożliwiają one poprawne jego działanie. Do zasilania całego urządzenia wykorzystano zasilacz zbudowany na stabilizatorach U3 (7812) i U4 (7805) i kondensatorach filtrujących C3 (470uF), C4 (47uF) i C5 (47uF). Dostarcza ona napięć 12V i 5V potrzebnych do pracy mikrokontrolera i procesora dźwięku.

Do zaprogramowania mikrokontrolera U1 służy złącze programujące Prog. Połączenie płytki sterownika z wyświetlaczem jest możliwe dzięki złączom GP1 (Goldpin) i GP2 (Goldpin)

Schemat ideowy wyświetlacza znajduje się na rysunku poniżej:

Płytka wyświetlacza nie zawiera żadnych skomplikowanych połączeń. Główną jej częścią jest wyświetlacz, linijka diod LED W1. Prąd wyświetlacza jest ograniczany za pomocą rezystorów R1 - R10 (330R). Impulsator I1 umożliwia regulację parametrów wzmacniacza, pełni on jednocześnie funkcję przycisku. Złącza GP1 (Goldpin) i GP2 (Goldpin) zapewniają połączenie płytki wyświetlacza z płytką przedwzmacniacza.

Budowa:

Układ sterujący przedwzmacniacza z powodzeniem można zbudować w oparciu o płytkę drukowaną dostępną tutaj. Rysunek w odbiciu lustrzanym dostępny jest tutaj. Montaż należy rozpocząć od wlutowania wszystkich zwór (4 sztuki). Drugie w kolejności powinny być rezystory i podstawki pod mikrokontroler i procesor dźwięku. W dalszej kolejności należy zamontować pozostałe elementy, zgodnie z zasadą od najmniejszych do największych. Goldpin kątowy należy wlutować najpierw do płytki wyświetlacza, stroną krótszą w stronę wyświetlacza (patrz zdjęcia). Wlutowanie Goldpina kątowego w odwrotną stronę sprawi że płytka będzie stała wyżej a co za tym idzie niepotrzebnie zwiększą się wymiary przedwzmacniacza. Pomocą podczas konstrukcji może okazać się schemat montażowy dostępny tutaj.

Wyświetlacz można zbudować w oparciu o płytkę drukowaną dostępną tutaj. Rysunek w odbiciu lustrzanym dostępny jest tutaj. Płytka jest bardzo prosta w montażu i nie zawiera żadnej zworki. Lutowanie należy rozpocząć od rezystorów a zakończyć na impulsatorze. Pod wyświetlacz dobrze jest zastosować podstawkę aby jego wysokość zrównała się z impulsatorem. Po włożeniu do obudowy i przykręceniu impulsatora, wyświetlacz powinien być na równo z obudową. Goldpin kątowy należy zamontować od strony druku, zgodnie z uwagami powyżej i zdjęciami zmontowanej płytki. Pomocą podczas konstrukcji może okazać się schemat montażowy dostępny tutaj

Wykaz Elementów:

Układ Sterujący:


1x Złącze Śrubowe ARK2(podwójne)
3x Listwa Goldpin 1x3 (IN1)
1x Listwa Goldpin 1x4 (Prog)

2x 3,3k

2x 5,6nF
2x 15nF
2x 22pF
2x 33nF
4x 470nF
2x 2,2uF Elektrolit
2x 47uF Elektrolit
1x 100uF Elektrolit
1x 470uF Elektrolit

1x Rezonator Kwarcowy 16MHz
1x Stabilizator 7805
1x Stabilizator 7812
1x Mikrokontroler ATTINY2313 + Podstawka
1x Wzmacniacz TDA8425

Wyświetlacz:


1x Listwa Goldpin 1x7 (Kątowy)
1x Listwa Goldpin 1x8 (Kątowy)
1x Impulsator obrotowy z przyciskiem

10x 330R

1x Wyświetlacz linijka 10 LED (Bargraf)

Programowanie:


Kod Źródłowy do sterownika obrotnicy został napisany w BASCOM AVR firmy MCS Electronics (http://www.mcselec.com/). Program przedstawiony jest poniżej:

'************* Konfiguracja uC *****************
'***********************************************
$regfile = "attiny2313.dat"
$crystal = 16000000
 
Config Portb = &B11111111 : Portb = &B11111111
Config Portd = &B11100011 : Portd = &B11111111
 
Config Scl = Portd.0
Config Sda = Portd.1
I2cinit
 
Port_led Alias Portb
D1 Alias Portd.5
D2 Alias Portd.6
S1 Alias Pind.4
I1 Alias Pind.3
I2 Alias Pind.2
 
Config Timer0 = Timer , Prescale = 256
Enable Timer0 : On Timer0 Prztimer0
 
Enable Interrupts
'********** Konfiguracja uC Koniec  ************
 
'******************  Zmienne *******************
'***********************************************
Dim Glos As Byte
Dim Bass As Byte
Dim Treble As Byte
Dim Funkcje As Byte
 
Dim Flaga_20ms As Bit
Dim Adres As Byte , Wartosc As Byte
Dim Dziel As Byte
Dim Zmieniono As Bit
Dim Autozapis As Byte
 
Dim In1 As Bit , In2 As Bit
Dim Tryb As Byte , Rezultat As Integer
Dim Licz_sw As Byte
 
Dim Poz_menu As Byte
Dim Led As Byte
'*************  Zmienne Koniec  ****************
 
'************ Warunki Poczatkowe ***************
'***********************************************
Readeeprom Glos , 2
Readeeprom Bass , 3
Readeeprom Treble , 4
Readeeprom Funkcje , 5
If Funkcje > 207 And Funkcje < 206 Then
  Gosub Resetowanie
End If
 
Poz_menu = 0
Zmieniono = 1
Gosub Diody
'*******  Warunki Poczatkowe Koniec  ***********
 
'**************  Petla glowna ******************
'***********************************************
Do
 
Gosub Impulsator
If Rezultat <> 0 Then
  Select Case Poz_menu
    Case 0:                                                 'glos
      If Rezultat = 1 Then
        If Glos < 254 Then Incr Glos
      Else
        If Glos > 224 Then Decr Glos
      End If
    Case 1:                                                 'bass
      If Rezultat = 1 Then
        If Bass < 251 Then Incr Bass
      Else
        If Bass > 242 Then Decr Bass
      End If
    Case 2:                                                 'trable
      If Rezultat = 1 Then
        If Treble < 250 Then Incr Treble
      Else
        If Treble > 242 Then Decr Treble
      End If
    Case 3:
      Funkcje.0 = Not Funkcje.0
  End Select
 
  Gosub Diody
  Zmieniono = 1
  Autozapis = 200
End If
 
If Flaga_20ms = 1 Then
  Flaga_20ms = 0
  '***************************** 20ms
  If S1 = 0 Then
    Incr Licz_sw
    If Licz_sw = 4 Then
      Incr Poz_menu
      If Poz_menu = 4 Then Poz_menu = 0
      Gosub Diody
    End If
    If Licz_sw = 250 Then Gosub Resetowanie
  Else
    Licz_sw = 0
  End If
 
  If Zmieniono = 1 Then
    Gosub Wyslij_tda8425
    Zmieniono = 0
  End If
 
  If Autozapis > 0 Then
    Decr Autozapis
    If Autozapis = 0 Then
      'Portb.7 = Not Portb.7
      Gosub Zapis
    End If
  End If
  '***************************** 20ms
End If
 
Loop
End
'************ Petla glowna Koniec **************
 
'************ Przerwanie timer 0 ***************
'***********************************************
Prztimer0:
  Timer0 = 5
  Incr Dziel
  If Dziel = 5 Then
    Dziel = 0
    Set Flaga_20ms
  End If
Return
'******** Przerwanie timer 0 Koniec ************
 
'************ I2c *********************
Wyslij_i2c:
  I2cstart
  I2cwbyte 130
  I2cwbyte Adres
  I2cwbyte Wartosc
  I2cstop
  Waitms 1
Return
 
Wyslij_tda8425:
  Adres = 0
  Wartosc = Glos
  Gosub Wyslij_i2c
 
  Adres = 1
  Wartosc = Glos
  Gosub Wyslij_i2c
 
  Adres = 2
  Wartosc = Bass
  Gosub Wyslij_i2c
 
  Adres = 3
  Wartosc = Treble
  Gosub Wyslij_i2c
 
  Adres = 8
  Wartosc = Funkcje
  Gosub Wyslij_i2c
Return
'************ koniec i2c ***************
 
Diody:
 Select Case Poz_menu
   Case 0:                                                  'glos
      Led = Glos - 224
      Led = Led / 3
      D1 = 0
      D2 = 0
   Case 1:                                                  'bass
      Led = Bass - 242
      D1 = 1
      D2 = 0
   Case 2:                                                  'trable
      Led = Treble - 242
      D1 = 0
      D2 = 1
   Case 3:
      If Funkcje.0 = 0 Then Led = 11 Else Led = 12
      D1 = 1
      D2 = 1
 End Select
 Port_led = Lookup(led , Tabela)
Return
 
Impulsator:
 In1 = I1
 In2 = I2
 Rezultat = 0
 Select Case Tryb
  Case 0:
   If In1 = 1 And In2 = 1 Then Incr Tryb                    'jezeli dwa rozwarte
  Case 1:
   If In1 = 1 And In2 = 0 Then Tryb = 2
   If In1 = 0 And In2 = 1 Then Tryb = 3
  Case 2:
   If In1 = 0 And In2 = 1 Then
     Rezultat = 1
     Tryb = 0
   End If
  Case 3:
   If In1 = 1 And In2 = 0 Then
     Rezultat = -1
     Tryb = 0
   End If
 End Select
 Waitus 100
Return
 
Resetowanie:
  Glos = 230                                                '224-255
  Bass = 246                                                'min=242 0=246  max = 251
  Treble = 246                                              'min=242 0=246  max = 250
  Funkcje = 206                                             '206 '[1][1][mu][efl][stl][1][1][we1=0 we2 =1]    &B11001110
  Gosub Zapis
Return
 
Zapis:
  Writeeeprom Glos , 2
  Writeeeprom Bass , 3
  Writeeeprom Treble , 4
  Writeeeprom Funkcje , 5
Return
 
'*********************************************************
Tabela:
Data &B11111111 , &B01111111 , &B00111111 , &B00011111 , &B00001111 , &B00000111 , &B00000011 , &B00000001 , &B00000000 , &B10000000 , &B11000000 , &B00111111 , &B11110011

Obsługa:

Obsługa przedwzmacniacza jest bardzo prosta. Wszystko dzieje się za pomocą jednego impulsatora z przyciskiem. Zaraz po włączeniu układ pracuje w trybie regulacji głośności. Kręcenie impulsatorem odpowiednio zwiększa lub zmniejsza poziom dźwięku. Naciskając przycisk w impulsatorze przechodzimy do ustawień basu, tonów wysokich i wyboru wejścia.

Dwie pierwsze diody wyświetlacza sygnalizują binarnie cztery tryby ustawień przedwzmacniacza, a pozostałe to zwykła linijka której kolejne diody wskazują poziom ustawienia danego parametru (Więcej zapalonych diod, większy np. poziom głosu).

Zdjęcia Projektu:

ZałącznikWielkość
Przedwzmacniacz Schemat58.81 KB
Przedwzmacniacz Płytka14.85 KB
Przedwzmacniacz Płytka (odbicie lustrzane)14.89 KB
Przedwzmacniacz Płytka (3 na stronie)39.84 KB
Przedwzmacniacz Montowanie20.62 KB
Wyświetlacz Schemat19.73 KB
Wyświetlacz Płytka8.34 KB
Wyświetlacz Płytka (odbicie lustrzane)8.39 KB
Wyświetlacz Płytka (8 na stronie)48.54 KB
Wyświetlacz Montowanie10.12 KB
Kod Źródłowy5.97 KB
Program po kompilacji (BIN)1.82 KB
Program po kompilacji (HEX)5.14 KB



Portret użytkownika Gość

TDA7313

A więc tak: w moim projekcie będą dwa przyciski: jeden od funkcji menu, drugi od funkcji mute oraz impulsator od radia samochodowego Audi Chorus z chowaną gałką. Będzie on zmieniał wartości poszczególnych parametrów oraz dzięki wciskanej gałce będzie on włączać cały wzmacniacz. Wykorzystam wyświetlacz 16 x 2. Podczas pracy wzmacniacza chciałbym, aby wyświetlacz działał jako wskaźnik wysterowania. Po wciśnięciu przycisku "menu" chciałbym przełączać się między parametrami (kolejno): niskie, wysokie, balans, fader, loud, selektor wejść. Regulacja głośności tylko wtedy, gdy wyświetlacz pracuje jako wskaźnik wysterowania impulsatorem. Przyciskiem "mute" chciałbym szybko wyciszyć wzmacniacz.
I tak właśnie ma to w moim projekcie wyglądać. Wasza pomoc byłaby dla mnie bardzo istotna, nawet zacząłem prace nad kodem zródłowym.
Pozdrawiam.

Portret użytkownika EDC

Odp.TDA 7313

Ja myślałem już nad połączeniem tego analizatora >LINK<
Tylko kod w Mega8 zajmuje już 70% i upchanie tam menu i obslugi TDA może się nie zmieścić...a może... Do ATmega328 wszedłby bez gadania :D W razie czego załóż temat na forum bo tutaj miejsce jest na komentarze do tego projektu.

-

BARTek
Moja strona