- IC PT2258
- Bagaimana IC PT2258 Bekerja
- Skema
- Komponen Diperlukan
- Kode Arduino
- Menguji Sirkuit Kontrol Volume Audio Digital
- Peningkatan Lebih Lanjut
Potensiometer adalah perangkat mekanis yang dapat digunakan untuk mengatur resistansi sesuai dengan nilai yang diinginkan, sehingga mengubah arus yang melewatinya. Ada banyak aplikasi untuk potensiometer, tetapi sebagian besar potensiometer digunakan sebagai pengontrol volume untuk penguat audio.
Potensiometer tidak mengontrol penguatan sinyal, tetapi membentuk pembagi tegangan dan itulah sebabnya sinyal input dilemahkan. Jadi dalam proyek ini, saya akan menunjukkan kepada Anda bagaimana membangun Pengontrol Volume Digital Anda dengan IC PT2258 dan menghubungkannya dengan Arduino untuk mengontrol volume rangkaian penguat. Anda juga dapat memeriksa berbagai sirkuit terkait Audio di sini termasuk VU meter, sirkuit kontrol nada, dll.
IC PT2258
Seperti yang telah saya sebutkan sebelumnya, PT2258 adalah IC yang dibuat untuk digunakan sebagai Pengontrol Volume Elektronik 6 Saluran, IC ini menggunakan teknologi CMOS yang dirancang khusus untuk aplikasi audio-video multi saluran.
IC ini menyediakan Antarmuka Kontrol I2C dengan rentang atenuasi 0 hingga -79dB pada 1dB / langkah dan hadir dalam paket DIP atau SOP 20-pin.
Beberapa fitur dasar meliputi,
- 6-Saluran input dan output (Untuk Sistem Audio Rumah 5.1)
- Alamat I2C yang dapat dipilih (Untuk Aplikasi Daisy-chain)
- Pemisahan Saluran Tinggi (Untuk Aplikasi Kebisingan Rendah)
- Rasio S / N> 100dB
- Tegangan operasi adalah 5 hingga 9V
Bagaimana IC PT2258 Bekerja
IC ini mengirimkan dan menerima data dari mikrokontroler melalui jalur SCL dan SDA. SDA dan SCL membentuk antarmuka bus. Garis-garis ini harus ditarik tinggi oleh dua resistor 4.7K untuk memastikan operasi yang stabil.
Sebelum kita pergi ke operasi perangkat keras yang sebenarnya, berikut adalah deskripsi fungsional rinci dari IC. Jika Anda tidak ingin mengetahui semua ini, Anda dapat melewati bagian ini karena semua bagian fungsional dikelola oleh pustaka Arduino.
Validasi data
- Data pada jalur SDA dianggap stabil saat sinyal SCL TINGGI.
- Status HIGH dan LOW dari garis SDA berubah hanya jika SCL-nya LOW.
Kondisi Start dan Stop
Kondisi Mulai diaktifkan ketika
- SCL diatur ke TINGGI dan
- SDA bergeser dari HIGH ke LOW State.
Kondisi Berhenti diaktifkan ketika
- SCL diatur ke HIGH dan
- SDA bergeser dari LOW ke HIGH State
Catatan! Informasi ini sangat berguna untuk men-debug sinyal.
Format data
Setiap byte yang dikirimkan ke Jalur SDA terdiri dari 8 bit, yang membentuk satu byte. Setiap byte harus diikuti oleh Bit Pengakuan.
Pengakuan
Pengakuan memastikan operasi yang stabil dan tepat. Selama Denyut Jam Akui, mikrokontroler menarik pin SDA TINGGI pada saat yang tepat saat perangkat periferal (prosesor audio) menarik ke bawah (RENDAH) garis SDA.
Perangkat periferal (PT2258) sekarang dialamatkan & itu harus menghasilkan pengakuan setelah menerima byte, jika tidak, garis SDA akan tetap pada tingkat Tinggi selama Pulsa Jam kesembilan (9). Jika ini terjadi, pemancar master akan menghasilkan Informasi STOP untuk membatalkan transfer.
Itu menghapus kebutuhan untuk ada transfer data yang valid.
Pemilihan Alamat
Alamat I2C dari IC ini bergantung pada status CODE1 (Pin No. 17) dan CODE2 (Pin No.4).
KODE1 (PIN No. 17) |
KODE2 (PIN No. 4) |
ALAMAT HEX |
0 |
0 |
0X80 |
0 |
1 |
0X84 |
1 |
0 |
0X88 |
1 |
1 |
0X8C |
Logika Tinggi = 1
Logika Rendah = 0
Protokol Antarmuka
Protokol antarmuka terdiri dari berikut ini:
- A Mulai sedikit
- Sebuah Alamat Chip Byte
- ACK = Akui bit
- A Data byte
- Sedikit Berhenti
Rumah tangga kecil
Setelah IC dihidupkan, IC harus menunggu setidaknya 200 ms sebelum mengirimkan bit data pertama, jika tidak, transfer data mungkin gagal.
Setelah penundaan, hal pertama yang harus dilakukan adalah menghapus register dengan mengirimkan "0XC0" vi jalur I2C, ini memastikan pengoperasian yang benar.
Langkah di atas membersihkan seluruh register, sekarang kita perlu menetapkan nilai ke register, jika tidak, register menyimpan nilai sampah dan kita mendapatkan keluaran berbintik-bintik.
Untuk memastikan penyesuaian volume yang tepat, perlu untuk mengirim kelipatan 10dB diikuti dengan kode 1dB ke attenuator secara berurutan, jika tidak, IC dapat berperilaku tidak normal. Diagram di bawah ini lebih memperjelasnya.
Kedua metode di atas akan bekerja dengan baik.
Untuk memastikan pengoperasian yang benar, pastikan kecepatan transfer data I2C tidak pernah melebihi 100KHz.
Begitulah cara Anda dapat mengirimkan satu byte ke IC dan melemahkan sinyal input. Bagian di atas adalah untuk mempelajari bagaimana IC berfungsi, tetapi seperti yang saya katakan sebelumnya, kita akan menggunakan pustaka Arduino untuk berkomunikasi dengan IC yang mengelola semua kode keras, dan kita hanya perlu melakukan beberapa pemanggilan fungsi.
Semua informasi di atas diambil dari lembar data, silakan merujuk ke informasi lebih lanjut.
Skema
Gambar di atas menunjukkan skema pengujian Rangkaian Kontrol Volume berbasis PT2258. Ini diambil dari lembar data dan dimodifikasi sesuai kebutuhan.
Untuk demonstrasi, sirkuit dibangun pada papan tempat memotong roti tanpa solder dengan bantuan skema yang ditunjukkan di atas.
Catatan! Semua komponen ditempatkan semirip mungkin untuk mengurangi induktansi dan resistansi kapasitansi parasit.
Komponen Diperlukan
- PT2258 IC - 1
- Pengontrol Arduino Nano - 1
- Breadboard Generik - 1
- Terminal Sekrup 5mm x 3 - 1
- Tombol Tekan - 1
- 4.7K Resistor, 5% - 2
- Resistor 150K, 5% - 4
- 10k Resistor, 5% - 2
- Kapasitor 10uF - 6
- Kapasitor 0.1uF - 1
- Kabel Jumper - 10
Kode Arduino
Untuk mempermudah, saya akan menggunakan perpustakaan PT2258 dari GitHub, yang dibuat oleh sunrutcon.
Ini adalah pustaka yang ditulis dengan sangat baik, itulah mengapa saya memutuskan untuk menggunakannya, tetapi karena sudah sangat tua, ini agak bermasalah dan kita perlu memperbaikinya sebelum kita dapat menggunakannya.
Pertama, unduh & ekstrak pustaka dari repositori GitHub.
Anda akan mendapatkan dua file di atas setelah ekstraksi.
#include #include
Selanjutnya buka file PT2258.cpp dengan Text Editor favorit Anda, saya menggunakan Notepad ++.
Anda dapat melihat bahwa "w" dari pustaka kabel dalam huruf kecil, yang tidak kompatibel dengan versi Arduino terbaru, & Anda perlu menggantinya dengan huruf besar "W", itu saja.
Kode lengkap untuk Pengontrol Volume PT2258 dapat ditemukan di akhir bagian ini. Di sini bagian penting dari program dijelaskan.
Kami memulai kode dengan memasukkan semua file perpustakaan yang diperlukan. Perpustakaan Wire digunakan untuk berkomunikasi antara Arduino dan PT2258. Pustaka PT2258 berisi semua informasi waktu dan ucapan terima kasih I2C yang penting. The ezButton perpustakaan digunakan untuk antarmuka dengan push-tombol.
Alih-alih menggunakan gambar kode di bawah ini, Salin semua contoh kode dari file kode dan buat diformat seperti yang biasa kita lakukan di proyek lain
#include
Selanjutnya, buat objek untuk dua tombol dan library PT2258 itu sendiri.
PT2258 pt2258; tombol ezButton_1 (2); tombol ezButton_2 (4);
Selanjutnya, tentukan level volume. Ini adalah level volume default yang akan digunakan IC ini.
Volume int = 40;
Selanjutnya, jalankan UART, dan atur frekuensi clock untuk bus I2C.
Serial.begin (9600); Wire.setClock (100000);
Sangat penting untuk mengatur jam I2C, jika tidak IC tidak akan berfungsi karena frekuensi clock maksimum yang didukung oleh IC ini adalah 100KHz.
Selanjutnya, kami melakukan sedikit tata graha dengan pernyataan if else untuk memastikan IC berkomunikasi dengan benar dengan bus I2C.
If (! Pt2258.init ()) Serial.printIn ("PT2258 Berhasil Dimulai"); Lain Serial.printIn ("Gagal Memulai PT2258");
Selanjutnya, kami menyetel penundaan debounce untuk tombol.
Button_1.setDebounceTime (50); Button_2.setDebounceTime (50);
Terakhir, jalankan IC PT2258 dengan mengaturnya dengan volume saluran default dan nomor Pin.
/ * Memulai PT dengan volume default dan Pin * / Pt2258.setChannelVolume (volume, 4); Pt2258.setChannelVolume (volume, 5);
Ini menandai akhir dari bagian Void Setup () .
Di bagian Loop , kita perlu memanggil fungsi loop dari kelas tombol; itu adalah norma perpustakaan.
Button_1.loop (); // Norma perpustakaan Button_2.loop (); // Norma perpustakaan
Di bawah jika bagian untuk mengurangi volume.
/ * jika tombol 1 ditekan jika kondisi benar * / Jika (button_1.ispressed ()) {Volume ++; // Meningkatkan penghitung volume. // Pernyataan if ini memastikan volume tidak melebihi 79 If (volume> = 79) {Volume = 79; } Serial.print ("volume:"); // mencetak tingkat volume Serial.printIn (volume); / * mengatur volume untuk saluran 4 Yang ada di PIN 9 dari IC PT2558 * / Pt2558.setChannelVolume (volume, 4); / * mengatur volume untuk saluran 5 Yang merupakan PIN 10 dari IC PT2558 * / Pt2558.setChannelVolume (volume, 5); }
Di bawah jika bagian untuk meningkatkan volume.
// Hal yang sama terjadi untuk tombol 2 If (button_2.isPressed ()) {Volume--; // pernyataan if ini memastikan level volume tidak berada di bawah nol. Jika (volume <= 0) Volume = 0; Serial.print ("volume:"); Serial.printIn (volume); Pt2258.setChannelVolume (volume, 4); Pt2558.setChannelVolume (volume, 5); }
Menguji Sirkuit Kontrol Volume Audio Digital
Untuk menguji sirkuit, peralatan berikut digunakan
- Trafo yang memiliki Tap 13-0-13
- 2 speaker 4Ω 20W sebagai beban.
- Sumber audio (Telepon)
Pada artikel sebelumnya, saya telah menunjukkan kepada Anda cara membuat Amplifier Audio 2x32 Watt Sederhana dengan IC TDA2050, saya akan menggunakannya untuk demonstrasi ini juga.
Saya telah mengacaukan potensiometer mekanis dan menyingkat dua kabel dengan dua kabel jumper kecil.
Sekarang, dengan bantuan dua tombol tekan, volume amplifier dapat dikontrol.
Peningkatan Lebih Lanjut
Sirkuit dapat dimodifikasi lebih lanjut untuk meningkatkan kinerjanya. Perbaikan seperti rangkaian dapat dilakukan pada PCB untuk lebih menghilangkan kebisingan yang dihasilkan oleh bagian digital dari IC. Kami juga dapat menambahkan filter tambahan untuk menolak noise frekuensi tinggi. Juga, periksa sirkuit Penguat Audio lainnya dan proyek terkait Audio lainnya.
Saya harap Anda menyukai artikel ini dan mempelajari sesuatu yang baru darinya. Jika Anda ragu, Anda dapat bertanya di komentar di bawah atau dapat menggunakan forum kami untuk diskusi terperinci.