Bagian: I2C Volume Volume Potensiometer (DS1807)

DS1807 terdiri dari dua potensiometer digital logaritmik (pot) untuk penyesuaian volume audio. Setiap pot memiliki 64 level volume ditambah pengaturan bisu. Tingkat volume dari setiap pot diatur melalui antarmuka serial I2C dua kawat. Kami akan menunjukkan kepada Anda cara menghubungkan dan menghubungkan DS1807 di bawah ini.

DS1807 I2C Audio Volume Potensiometer (Digikey # DS1807 + -ND, $ 3.04)

Koneksi

Bajak laut bus.
Ds1807 (pin #)

Gnd.
GND (1)

Gnd.
A2 (2)

Gnd.
A1 (3)

Gnd.
A0 (4)

Gnd.
Agnd (11)

SDA.
Sda (12)

Jam
SCL (13)

+ 5volts.
VCC (14)

Kami menghubungkan DS1807 ke bus bajak laut Universal Serial Interface Tool seperti yang ditunjukkan pada tabel, kepala sekolah dasar yang sama berlaku untuk konfigurasi yang dibuat khusus. Kami menggunakan catu daya 5volt bus bajak laut, tetapi DS1807 juga akan berfungsi pada 3.3Volts. I2C membutuhkan resistor pull-up pada setiap garis sinyal, kami menggunakan resistor on-board bus bajak laut yang terhubung ke catu daya 5volt on-board.

Hubungkan DS1807 ke sumber audio seperti yang ditunjukkan pada halaman 3 dari lembar data. Hubungkan sinyal audio mentah ke PIN H dan hubungkan PIN L ke ground, sinyal audio yang dilemahkan akan datang dari W PIN.

Interfacing.

Pertama, setup bajak laut bus untuk mode I2C, dan aktifkan catu daya 5volt. Kami membahas prosedur ini di postingan terakhir kami.

I2c> v <-voltage monitor 9xx Monitor Tegangan: 5V: 4.9 | 3.3V: 0.0 | VPullup: 5.0 | I2c>

Dengan catu daya yang dikonfigurasi, periksa monitor tegangan (V) untuk memastikan pasokan 5Volt aktif dan bahwa 5Volts hadir pada resistor pull-up.

I2C> (0) <- Daftar MACROS yang tersedia 0.Macro Menu. 1.7bit pencarian alamat I2c> (1) <- jalankan pencarian alamat xxx mencari ruang alamat 7bit i2c. Perangkat yang ditemukan di: 0x50 0x51 0x52 <-pottential alamat I2C>

Pencarian Alamat Bus Pirate Makro adalah cara cepat untuk menemukan perangkat i2c tanpa memeriksa lembar data. 0x50 adalah alamat tulis i2C karena bit terakhir adalah 0, 0x51 adalah alamat baca (bit terakhir 1). 0x52 mungkin merupakan alamat grup / tulis global karena tidak memiliki alamat baca yang sesuai.

Kami juga dapat mengetahui alamat dari lembar data: Alamat dasar adalah 0101 ditambah tiga alamat pilih bit (A0-2, semua ground, 000) dan bit tulis atau baca (0 atau 1) memberikan 0B01010000 (0x50).

I2c> [0x51 r r] <- Baca nilai pot 210 kondisi mulai I2C 220 I2C Tulis: 0x51 GOT ACK: Ya <-device Baca alamat 230 i2c Baca: 0x3f <-pot0 230 i2c Baca: 0x3f <-pot1 240 i2c stop syarat I2C>

Pertama, kami membaca nilai-nilai potensiometer saat startup. [masalah kondisi mulai I2C, 0x51 adalah alamat baca perangkat, “R” membaca dua byte, dan] mengeluarkan perintah hentikan I2C. Nilai startup default adalah 63 (0x3F), satu posisi di atas bisu (lembar data.

I2c> [0x50 0b10101001 0] <- tulis pot0 210 kondisi mulai I2C 220 I2C Tulis: 0x50 GOT ACK: Ya <-ds1807 Alamat Tulis 220 I2C Tulis: 0xA9 Mendapat Ack: Ya <-pot0 Write Command 220 I2C Tulis: 0x00 GOT ACK: Ya <-Volume untuk mengatur 240 i2c stop syarat I2c> [0x50 0b10101010 64] <- tulis pot1 210 kondisi mulai i2c 220 I2C Tulis: 0x50 GOT ACK: Ya <-ds1807 Alamat Tulis 220 I2C Write: 0xAA Got ACK: Ya <-pot1 menulis perintah 220 I2C Tulis: 0x40 Mendapat Ack: Ya <-Volume untuk mengatur 240 i2c stop syarat I2c> [0x51 r r] <- membaca nilai kembali untuk memverifikasi 210 kondisi mulai i2c 220 I2C Tulis: 0x51 GOT ACK: Ya <-ds1807 Baca alamat 230 i2c Baca: 0x00 <-pot0 Nilai 230 I2C Baca: 0x40 <-pot1 Nilai 240 i2c stop syarat I2C>

Selanjutnya, kami memperbarui setiap pot volume dengan perintah terpisah. 0x50 adalah alamat tulis DS1807, 0B10101001 (0xA9) adalah perintah untuk memperbarui pot0, dan 0 mengatur volume ke penuh. Urutan selanjutnya menggunakan perintah pembaruan pot1, 0B10101010 (0xAA), dan menetapkan volume ke Mute (64, 0x40). Akhirnya, kami menggunakan prosedur baca untuk memverifikasi bahwa nilai-nilainya benar.

I2C> [0x50 0xA9 64 0] <- Tulis kedua nilai pot 210 kondisi mulai I2C 220 I2C Tulis: 0x50 GOT ACK: Ya 220 I2C Tulis: 0xA9 Mendapat Ack: Ya <-Update Pot0 Command 220 I2C Tulis: 0x40 GOT ACK: Ya <-pot0 Nilai 220 I2C Tulis: 0x00 GOT ACK: Ya <-pot1 Nilai 240 i2c stop syarat I2c> [0x51 r r] <- Baca kembali nilai 210 kondisi mulai I2C 220 I2C Tulis: 0x51 GOT ACK: Ya 230 i2c Baca: 0x40 <-pot0 Nilai 230 I2C Baca: 0x00 <-pot1 Nilai 240 i2c stop syarat I2C>

Perintah Tulis Pot 0 juga dapat digunakan untuk mengatur kedua nilai potensiometer dengan satu perintah. Gunakan perintah Pot0 Update (0B10101001, 0xA9), dan kirim Nilai Pot1 (0) Mengikuti Nilai Pot0 (64).

I2c> [0x50 0b10101111 0x20] <- perbarui kedua pot dengan nilai yang sama 210 kondisi mulai I2C 220 I2C Tulis: 0x50 GOT ACK: Ya 220 I2C Tulis: 0xaf GOT ACK: Ya <-Dual Perintah pembaruan 220 I2C Tulis: 0x20 Mendapat Ack: Ya <-Value untuk mengatur 240 i2c stop syarat I2c> [0x51 r r] <- Baca kembali nilai 210 kondisi mulai i2c 220 I2C Tulis: 0x51 GOT ACK: Ya 230 I2C Baca: 0x20 <-pot0 Nilai 230 i2c Baca: 0x20 <-pot1 Nilai 240 i2c stop syarat I2C>

Akhirnya, 0xAF (0B10101111) dapat digunakan untuk memperbarui kedua potensiometer dengan nilai yang sama. Ini mungkin perintah yang paling menguntungkan untuk kontrol volume audio stereo di mana keduanyaSaluran memiliki nilai yang sama dan berubah secara bersamaan.

Apakah ada keripik atau komponen yang ingin Anda sampaikan di postingan suku cadang masa depan?

Leave a Reply

Your email address will not be published. Required fields are marked *