- IC PT2258
- PT2258 IC Nasıl Çalışır?
- Şematik
- Gerekli Bileşenler
- Arduino Kodu
- Dijital Ses Hacmi Kontrol Devresinin Test Edilmesi
- Daha Fazla Geliştirme
Potansiyometre, direnci istenen değere göre ayarlayabilen, böylece içinden geçen akımı değiştirebilen mekanik bir cihazdır. Bir potansiyometre için birçok uygulama vardır, ancak çoğunlukla bir potansiyometre, ses amplifikatörleri için bir ses denetleyicisi olarak kullanılır.
Potansiyometre, sinyalin kazancını kontrol etmez, ancak bir voltaj bölücü oluşturur ve bu nedenle giriş sinyali zayıflar. Bu projede, Dijital Ses Kontrol Cihazınızı IC PT2258 ile nasıl inşa edeceğinizi ve bir amplifikatör devresinin sesini kontrol etmek için bir Arduino ile nasıl arayüzleyeceğinizi göstereceğim. VU ölçer, ton kontrol devresi vb. Dahil olmak üzere burada çeşitli Ses ile ilgili devreleri de kontrol edebilirsiniz.
IC PT2258
Daha önce bahsettiğim gibi, PT2258, 6 Kanallı Elektronik Ses Kontrolörü olarak kullanılmak üzere yapılmış bir IC'dir, bu IC, çok kanallı ses-video uygulamaları için özel olarak tasarlanmış CMOS teknolojisini kullanır.
Bu IC, 1dB / adımda 0 ila -79dB zayıflama aralığına sahip bir I2C Kontrol Arayüzü sağlar ve 20 pimli bir DIP veya SOP paketi içinde gelir.
Temel özelliklerden bazıları şunları içerir:
- 6-Giriş ve çıkış kanalları (5.1 Ev Ses Sistemleri İçin)
- Seçilebilir I2C adresi (Papatya zinciri Uygulaması için)
- Yüksek Kanal Ayrımı (Düşük Gürültülü Uygulama İçin)
- S / N oranı> 100dB
- Çalışma voltajı 5 ila 9V'dur
PT2258 IC Nasıl Çalışır?
Bu IC, SCL ve SDA hatları aracılığıyla mikro denetleyiciden veri iletir ve alır. SDA ve SCL, veri yolu arayüzünü oluşturur. Kararlı çalışmayı sağlamak için bu hatlar iki 4.7K dirençle yukarı çekilmelidir.
Gerçek donanım işlemine geçmeden önce, işte IC'nin ayrıntılı işlevsel açıklaması. Tüm bunları bilmek istemiyorsanız, bu bölümü atlayabilirsiniz çünkü tüm işlevsel kısım Arduino kütüphanesi tarafından yönetilmektedir.
Veri doğrulama
- SDA hattındaki veriler, SCL sinyali YÜKSEK olduğunda sabit kabul edilir.
- SDA hattının YÜKSEK ve DÜŞÜK durumları yalnızca SCL DÜŞÜK olduğunda değişir.
Başlatma ve Durdurma Durumu
Bir Başlangıç Koşulu etkinleştirilir
- SCL, HIGH olarak ayarlanmıştır ve
- SDA, HIGH'dan LOW State'e geçer.
Durdurma Durumu ne zaman etkinleştirilir
- SCL, HIGH olarak ayarlanmıştır ve
- SDA, DÜŞÜK durumdan YÜKSEK duruma geçiyor
Not! Bu bilgi, sinyallerde hata ayıklamak için çok kullanışlıdır.
Veri formatı
SDA Hattına iletilen her bayt, bir bayt oluşturan 8 bitten oluşur. Her baytın ardından bir Onay Biti gelmelidir.
Teşekkür
Onay, kararlı ve doğru çalışmayı sağlar. Acknowledge Clock Pulse sırasında, mikrokontrolör SDA pinini YÜKSEK tam bu anda çevresel aygıt (ses işlemcisi) SDA hattını aşağı (DÜŞÜK) çeker.
Çevresel cihaz (PT2258) artık adreslenmiştir ve bir bayt aldıktan sonra bir onay oluşturması gerekir, aksi takdirde, SDA hattı dokuzuncu (9.) Saat Darbesi sırasında Yüksek seviyede kalacaktır. Böyle bir durumda, ana verici, aktarımı iptal etmek için DURDURMA Bilgileri oluşturacaktır.
Bu, geçerli bir veri aktarımı için yerinde olma gerekliliğini ortadan kaldırır.
Adres Seçimi
Bu IC'nin I2C adresi, CODE1 (Pin No. 17) ve CODE2 (Pin No. 4) durumuna bağlıdır.
CODE1 (PIN No. 17) |
CODE2 (PIN No. 4) |
HEX ADRESİ |
0 |
0 |
0X80 |
0 |
1 |
0X84 |
1 |
0 |
0X88 |
1 |
1 |
0X8C |
Mantık Yüksek = 1
Mantık Düşük = 0
Arayüz Protokolü
Arayüz protokolü aşağıdakilerden oluşur:
- Bir Başlangıç biti
- Bir Çip Adresi Baytı
- ACK = Onay biti
- Bir Veri baytı
- Bir Dur biti
Biraz Temizlik
IC açıldıktan sonra, ilk veri bitini iletmeden önce en az 200 ms beklemesi gerekir, aksi takdirde veri aktarımı başarısız olabilir.
Gecikmeden sonra yapılacak ilk şey, I2C hattına "0XC0" göndererek kaydı temizlemek olur, bu düzgün çalışmayı sağlar.
Yukarıdaki adım tüm kaydı temizler, şimdi kayıt için bir değer belirlememiz gerekir, aksi takdirde kayıt çöp değerini depolar ve çilli bir çıktı elde ederiz.
Doğru ses ayarlamalarını sağlamak için, zayıflatıcıya sırayla 10dB'lik bir çoklu ve ardından 1dB'lik bir kod gönderilmesi gerekir, aksi takdirde IC anormal davranabilir. Aşağıdaki şema bunu daha fazla açıklamaktadır.
Yukarıdaki yöntemlerin her ikisi de düzgün çalışacaktır.
Düzgün çalışmayı sağlamak için, I2C veri aktarım hızının asla 100KHz'yi aşmadığından emin olun.
Bu şekilde IC'ye bir bayt iletebilir ve giriş sinyalini zayıflatabilirsiniz. Yukarıdaki bölüm, IC'nin nasıl çalıştığını öğrenmektir, ancak daha önce de söylediğim gibi, tüm sabit kodu yöneten IC ile iletişim kurmak için bir Arduino kütüphanesi kullanacağız ve sadece bazı fonksiyon çağrıları yapmamız gerekiyor.
Yukarıdaki bilgilerin tümü veri sayfasından alınmıştır, daha fazla bilgi için lütfen ona bakın.
Şematik
Yukarıdaki görüntü, PT2258 tabanlı Hacim Kontrol Devresinin test şemasını gösterir. Veri sayfasından alınır ve ihtiyaca göre değiştirilir.
Gösterim için devre, yukarıda gösterilen şematik yardımıyla lehimsiz bir devre tahtası üzerine inşa edilmiştir.
Not! Tüm bileşenler, parazitik kapasitans endüktansını ve direnci azaltmak için mümkün olduğunca yakın yerleştirilir.
Gerekli Bileşenler
- PT2258 IC - 1
- Arduino Nano Denetleyici - 1
- Genel Breadboard - 1
- Vidalı Klemens 5mm x 3-1
- Basmalı Düğme - 1
- 4.7K Direnç,% 5 - 2
- 150K Direnç,% 5 - 4
- 10k Direnç,% 5 - 2
- 10 uF Kapasitör - 6
- 0.1 uF Kapasitör - 1
- Atlama Telleri - 10
Arduino Kodu
Basit olması için, sunrutcon tarafından yapılan GitHub'dan bir PT2258 kitaplığı kullanacağım.
Bu çok iyi yazılmış bir kitaplık, bu yüzden kullanmaya karar verdim, ancak çok eski olduğu için biraz hatalı ve kullanmadan önce düzeltmemiz gerekiyor.
İlk olarak, kütüphaneyi GitHub deposundan indirin ve çıkarın.
Çıkardıktan sonra yukarıdaki iki dosyayı alacaksınız.
#include #include
Ardından, PT2258.cpp dosyasını favori Metin Düzenleyicinizle açın, Notepad ++ kullanıyorum.
Tel kütüphanesinin "w" harfinin en son Arduino sürümleriyle uyumlu olmayan küçük harflerle yazıldığını ve onu "W" büyük harfleriyle değiştirmeniz gerektiğini görebilirsiniz, hepsi bu.
PT2258 Ses Denetleyicisi için tam kod bu bölümün sonunda bulunabilir. Burada programın önemli kısımları açıklanmıştır.
Tüm gerekli kitaplık dosyalarını ekleyerek kodu başlatıyoruz. Wire kütüphanesi, Arduino ve PT2258 arasında iletişim kurmak için kullanılır. PT2258 kitaplığı, tüm kritik I2C zamanlama bilgilerini ve onayları içerir. EzButton kütüphane butonlar ile arayüz için kullanılır.
Aşağıdaki kod görüntülerini kullanmak yerine, tüm kod örneklerini kod dosyasından kopyalayın ve diğer projelerde yaptığımız gibi biçimlendirin.
#Dahil etmek
Sonra, iki düğme ve PT2258 kitaplığının kendisi için nesneleri yapın.
PT2258 pt2258; ezButton düğmesi_1 (2); ezButton button_2 (4);
Ardından ses seviyesini tanımlayın. Bu, bu IC'nin başlayacağı varsayılan ses seviyesidir.
Int hacim = 40;
Ardından, UART'ı başlatın ve I2C veriyolu için saat frekansını ayarlayın.
Serial.begin (9600); Wire.setClock (100000);
I2C saatini ayarlamak çok önemlidir, aksi takdirde IC çalışmayacaktır çünkü bu IC tarafından desteklenen maksimum saat frekansı 100KHz'dir.
Sonra, IC'nin I2C veriyolu ile düzgün bir şekilde iletişim kurmasını sağlamak için eğer else ifadesiyle küçük bir temizlik yapıyoruz.
Eğer (! Pt2258.init ()) Serial.printIn (“PT2258 Başarıyla Başlatıldı”); Else Serial.printIn ("PT2258 Başlatılamadı");
Ardından, butonlar için geri çevrilme gecikmesini ayarlıyoruz.
Button_1.setDebounceTime (50); Button_2.setDebounceTime (50);
Son olarak, varsayılan kanal hacmi ve Pin numarasıyla ayarlayarak PT2258 IC'yi başlatın.
/ * Varsayılan hacim ve Pin * / Pt2258.setChannelVolume (hacim, 4) ile PT başlatılıyor; Pt2258.setChannelVolume (hacim, 5);
Bu, Void Kurulumu () bölümünün sonunu gösterir.
In Döngü bölümünde, biz buton sınıfından döngü işlevini çağırmanız gerekir; bu bir kütüphane normudur.
Button_1.loop (); // Kitaplık normları Button_2.loop (); // Kütüphane normları
Aşağıdaki if bölümü sesi azaltmak içindir.
/ * eğer koşul doğruysa düğme 1'e basılırsa * / If (button_1.ispressed ()) {Volume ++; // Hacim sayacını artırmak. // Bu if ifadesi, hacmin 79'un üzerine çıkmamasını sağlar If (volume> = 79) {Volume = 79; } Seri.baskı ("cilt:"); // cilt düzeyini yazdırma Serial.printIn (hacim); / * PT2558 IC * / Pt2558.setChannelVolume (hacim, 4) PIN 9'da bulunan kanal 4 için ses seviyesini ayarlayın; / * PT2558 IC * / Pt2558.setChannelVolume (hacim, 5) PIN 10 olan kanal 5 için ses seviyesini ayarlayın; }
Aşağıdaki if bölümü sesi artırmak içindir.
// Aynı durum düğme 2 için de olur If (button_2.isPressed ()) {Volume--; // bu if ifadesi, ses seviyesinin sıfırın altına düşmemesini sağlar. Eğer (hacim <= 0) Hacim = 0; Serial.print ("cilt:"); Serial.printIn (hacim); Pt2258.setChannelVolume (hacim, 4); Pt2558.setChannelVolume (hacim, 5); }
Dijital Ses Hacmi Kontrol Devresinin Test Edilmesi
Devreyi test etmek için aşağıdaki aparat kullanıldı
- 13-0-13 Tapa sahip bir transformatör
- Yük olarak 2 4Ω 20W hoparlör.
- Ses kaynağı (Telefon)
Önceki bir makalede, TDA2050 IC ile Basit 2x32 Watt Ses Amplifikatörünün nasıl yapıldığını size göstermiştim, bunu bu gösteri için de kullanacağım.
Mekanik potansiyometreyi bozdum ve iki ucu iki küçük atlama kablosuyla kısa devre yaptım.
Şimdi, iki buton yardımıyla, amplifikatörün ses seviyesi kontrol edilebilir.
Daha Fazla Geliştirme
Performansını artırmak için devre daha da değiştirilebilir. Devre gibi iyileştirmeler, IC'nin dijital bölümü tarafından üretilen gürültüyü daha da ortadan kaldırmak için bir PCB'de yapılabilir. Yüksek frekanslı sesleri reddetmek için ek bir filtre de ekleyebiliriz. Ayrıca, diğer Ses Yükseltici devrelerine ve Ses ile ilgili diğer projelere göz atın.
Umarım bu makaleyi beğenmiş ve ondan yeni bir şeyler öğrenmişsindir. Herhangi bir şüpheniz varsa, aşağıdaki yorumlarda sorabilir veya detaylı tartışma için forumlarımızı kullanabilirsiniz.