Ana içeriğe git
Konu: Dijital Ses Kontrolü (977 Kez okunmuş)

Dijital Ses Kontrolü

Merhabalar.
Aliexpress'ten 6 adet motor sipariş etmiştim ancak 6 paket switch geldi.
Switchler çift kontak, 6 bacaklı. Momentary dedikleri düğmelerden. Türkçesini bilmiyorum, kusura bakmayın :)
Ben de para iadesini aldıktan sonra bununla ne yapabilirim diye düşünmeye başladım.
Normal konumda iken orta bacağın sağ ve sol bacakla irtibatı yok. Hangi yöne basarsanız o yöndeki bacakla orta bacak irtibatlanıyor.
Biraz düşündükten sonra en iyi seçeneğin dijital olarak ses kontrolü olduğunu düşündüm.
İstediğim şey dijital olarak ses, bas ve tiz seviyelerini kontrol etmek. Fakat bas ve tiz ayar frekanslarının değiştirilebilir olması lazım.
Böyle bir şey aradım ancak bulamadım. Bu konu hakkında fikir sahibi olan var mı?
Dijital Ses Kontrolü : %90 Tamamlandı
TEA2025B Ampli : %70 Tamamlandı
LM1875 2.1 Ampli : %40 Tamamlandı
Transistörlü Ampli v1.0 : Hazırda Bekliyor
Sırada : STK4191II Ampli

Ynt: Dijital Ses Kontrolü

Yanıt #1
Switchlerin resmi.
Dijital Ses Kontrolü : %90 Tamamlandı
TEA2025B Ampli : %70 Tamamlandı
LM1875 2.1 Ampli : %40 Tamamlandı
Transistörlü Ampli v1.0 : Hazırda Bekliyor
Sırada : STK4191II Ampli

Ynt: Dijital Ses Kontrolü

Yanıt #2
butona basılı tuttukca tiz ve basın değilşmesinimi istiyorsun ? anlamadım ben soruyu galiba sende ne yapmak istediğini tam anlayamamışsın. bu butonlar ile tizz-midd-bass-volume  ne alaka dijital olarak kontrol etmek istiyorsan bu değerleri. TDA serisinde dijital olarak kontrol gerçekleştiren entegreler var fakat mikro denetleyici ile kontrol edip programını yazman gerekiyor.
Mekatronik Teknikeri.
Elektrik-Elektronik Teknisyeni.

Ynt: Dijital Ses Kontrolü

Yanıt #3
butona basılı tuttukca tiz ve basın değilşmesinimi istiyorsun ? anlamadım ben soruyu galiba sende ne yapmak istediğini tam anlayamamışsın. bu butonlar ile tizz-midd-bass-volume  ne alaka dijital olarak kontrol etmek istiyorsan bu değerleri. TDA serisinde dijital olarak kontrol gerçekleştiren entegreler var fakat mikro denetleyici ile kontrol edip programını yazman gerekiyor.
Aynen abi.
Şöyle ki butonun üst kısmına basınca ses artacak, alt kısmına basınca ses azalacak. Aynı işle bass ve tiz içinde geçerli olacak.
Hangi entegre imiş o abi ben göremedim :-[
Dijital Ses Kontrolü : %90 Tamamlandı
TEA2025B Ampli : %70 Tamamlandı
LM1875 2.1 Ampli : %40 Tamamlandı
Transistörlü Ampli v1.0 : Hazırda Bekliyor
Sırada : STK4191II Ampli

Ynt: Dijital Ses Kontrolü

Yanıt #4
https://www.bucek.name/pdf/tda7315.pdf

TDA7315.  stereo olarak calışır. LOUDNESS FONKSİYONU VAR.  volume kontrolü var 1.25dB adımlarla . tiz ve bas kontrolüde var.

Stereo olduğu için sağ-sol ayarıda var.

Entegrenin kullandığı ileitşim protokolü seri asenkron bir iletişim protokolü . I2C . bunu biliyorsan ve program yazabiliyorsan ki I2C biliyorsan yazıyorsundurda. programını yazman 30 dakikanı alır.

Devreye harici componentler bağlanması lazım bunuda örnek devre şemasında vermiş yani sana sadece kalan programı yazıp haberleşmek.
Mekatronik Teknikeri.
Elektrik-Elektronik Teknisyeni.

Ynt: Dijital Ses Kontrolü

Yanıt #5
https://www.bucek.name/pdf/tda7315.pdf

TDA7315.  stereo olarak calışır. LOUDNESS FONKSİYONU VAR.  volume kontrolü var 1.25dB adımlarla . tiz ve bas kontrolüde var.

Stereo olduğu için sağ-sol ayarıda var.

Entegrenin kullandığı ileitşim protokolü seri asenkron bir iletişim protokolü . I2C . bunu biliyorsan ve program yazabiliyorsan ki I2C biliyorsan yazıyorsundurda. programını yazman 30 dakikanı alır.

Devreye harici componentler bağlanması lazım bunuda örnek devre şemasında vermiş yani sana sadece kalan programı yazıp haberleşmek.
Hocam entegreyi araştırıp bulmuşsunuz teşekkür ederim ama daha önce hiç program yazmadım elimde Arduino var onu bile kullanamıyorum.
Acaba hazır program yazan var mıdır bir araştırıp bakayım.
Dijital Ses Kontrolü : %90 Tamamlandı
TEA2025B Ampli : %70 Tamamlandı
LM1875 2.1 Ampli : %40 Tamamlandı
Transistörlü Ampli v1.0 : Hazırda Bekliyor
Sırada : STK4191II Ampli

Ynt: Dijital Ses Kontrolü

Yanıt #6
@Furkan41
Hocam araştırdım.
Kod yazan var, fakat sistem PIC ile kontrol edilmiş, ve 2.1 sistemler için yapılmış.

Fakat ben stereo sistemler için yapmak, sistemi Arduino ile kontrol etmek, ve kontrol ettiğim değerleri bir LCD'ye yazdırmak istiyorum.

Entegrede 0dB'den -75dB'e kadar 1.25dB aralıkla Volume kontrol imkanı var. Bu da 61 adım yapıyor.
Ben de bu adımları LCD'ye yazdırmak istiyorum.
Mesela en düşük değer olan -75dB seviyesinde iken LCD'de "Volume: 0" yazacak, en yüksek değer olan 0dB seviyesinde iken LCD üzerinde "Volume: 60" yazacak.

Entegrenin Mute özelliği de var. Mute özelliğini açınca LCD'de "Mute: ON" yazacak, kapattığımda ise "Mute: OFF" yazacak.

Bas ve tiz kontrolleri için de aynı şeyleri yapmak istiyorum.

Bunun gibi bir şey arıyordum, buldum da. Ancak dijital potansiyometre kullanılmış. Ben sadece düğmelerle yapmak istiyorum.
Dijital Ses Kontrolü : %90 Tamamlandı
TEA2025B Ampli : %70 Tamamlandı
LM1875 2.1 Ampli : %40 Tamamlandı
Transistörlü Ampli v1.0 : Hazırda Bekliyor
Sırada : STK4191II Ampli

Ynt: Dijital Ses Kontrolü

Yanıt #7
Arduino da hazır kütüphaneler var.  I2C kütüphanesi nasıl kullanılıyor öğren. zaten bu entegrenin 10 sayfa datasheeti falan var.  driverini yazarsın. kullanırsın rahatlıkla.
 bu arada TDA7313 diye de bir entegre var neredeyse aynılar. TDA7313 ün stereo kanalı fazla galiba ve karıştırma özelliğide varmı tam hatırlamıyorum bakmam lazım.

Ama emin ol I2C nasıl kullandığını öğrendin mi gerisini yaparsın. hem bunla yapılmış örneklerde var. Çinliler bu ampli işlerine baya düşkün.

@Yusuf usta  Yusuf ustaya zamanında bir tane entegre ismi söylemiştim. yazılıma falan gerek kalmadan buton bağlayıp volume ayarı yapılabiliyordu butonlar ile. ve loudness özelliğide vardı. bu entegrenin ismini unuttum. OSD icin kullanmıştım.  o entegrenin serisinde tizz ve bas kontrolü yapan entegrede olabilir. araştır.
Mekatronik Teknikeri.
Elektrik-Elektronik Teknisyeni.

Ynt: Dijital Ses Kontrolü

Yanıt #8
16x2 lcd ekranda güzel olmuyor sana söyliyeyim. GLCD kullanırsan daha hoş görüntü elde edersin.  veya 2.4 inchllik bir nexiton ekran alırsın dokunmatik bir kaç bir şey daha eklersin güzel bir şey olur. hatta arduino ile yaparsan. sd kart ile müzikte oynatırsın. yeterki hayal et. :D ama yapta
Mekatronik Teknikeri.
Elektrik-Elektronik Teknisyeni.

Ynt: Dijital Ses Kontrolü

Yanıt #9
@Furkan41
Arduino programını biraz kurcalayınca Wire örneklerini buldum.
Şimdi bir sorum var. Bu verileri ikili birimden(00000010 gibi) herhangi bir dönüştürme yapmadan(decimal veya hex) kullanabilir miyim?
Binary değerleri decimal'e çevirmek lazımmış.

Şimdi @Mr_YAMYAM hocamıza bir sorum var.
Bahsi geçen TDA7315 entegresinin bass turnover frekansı 100Hz olarak belirlenmiş. Bunu nasıl 30Hz'e çekebiliriz?
Devrenin datasheet şeması:

Devrede bas ve tiz ayarları değiştiğinde oluşan grafik:
Dijital Ses Kontrolü : %90 Tamamlandı
TEA2025B Ampli : %70 Tamamlandı
LM1875 2.1 Ampli : %40 Tamamlandı
Transistörlü Ampli v1.0 : Hazırda Bekliyor
Sırada : STK4191II Ampli

Ynt: Dijital Ses Kontrolü

Yanıt #10
Datasheet verilerinde INCREASED TONE CONTROL verileri olması lazımdır.
Bu veilerin grafiğini inceleyip, turnover frekansı istenildiği gibi ise, bu uygulamadaki direnç ve kondansatör değişimini yapmak yeterlidir.

Ynt: Dijital Ses Kontrolü

Yanıt #11
Datasheet verilerinde INCREASED TONE CONTROL verileri olması lazımdır.
Bu veilerin grafiğini inceleyip, turnover frekansı istenildiği gibi ise, bu uygulamadaki direnç ve kondansatör değişimini yapmak yeterlidir.

@Mr_YAMYAM
Hocam üstteki resim çıkmamış, düzelttim.
Dijital Ses Kontrolü : %90 Tamamlandı
TEA2025B Ampli : %70 Tamamlandı
LM1875 2.1 Ampli : %40 Tamamlandı
Transistörlü Ampli v1.0 : Hazırda Bekliyor
Sırada : STK4191II Ampli

Ynt: Dijital Ses Kontrolü

Yanıt #12
Evet decimal ve hex te kullanabilirsin ayni degere geldikten sonra sikinti olmaz.  Binary sekilde yapmalarinin sebebi bir hata olursa hemen bit degerlerine ordan bakip nerede oldugunu anlamak icindir.  I2C de su kelimeleri arastie oncelikle

I2C start biti.
I2C cihaz adresi.
I2C stop biti.
I2C ACK isareti nedir ?
I2C NACK isareti nedir ?
Son olarak I2C data gonderimi nasildir. Hem oku hemde  iletisim grafigine dikkatlice bakip cozumle zaten anliyacaksin.

 Daha sonra entegrenin cihaz adresi ne datasheeten bak veriyi nasil gondermen gerekiyor orda yazar. Kac khz iletisim kuracaginida soyler.
Mekatronik Teknikeri.
Elektrik-Elektronik Teknisyeni.

Ynt: Dijital Ses Kontrolü

Yanıt #13
Evet decimal ve hex te kullanabilirsin ayni degere geldikten sonra sikinti olmaz.  Binary sekilde yapmalarinin sebebi bir hata olursa hemen bit degerlerine ordan bakip nerede oldugunu anlamak icindir.  I2C de su kelimeleri arastie oncelikle

I2C start biti.
I2C cihaz adresi.
I2C stop biti.
I2C ACK isareti nedir ?
I2C NACK isareti nedir ?
Son olarak I2C data gonderimi nasildir. Hem oku hemde  iletisim grafigine dikkatlice bakip cozumle zaten anliyacaksin.

 Daha sonra entegrenin cihaz adresi ne datasheeten bak veriyi nasil gondermen gerekiyor orda yazar. Kac khz iletisim kuracaginida soyler.
Hocam 100kbit/s diyor bu kaç kHz frekansa denk geliyor?
Entegrenin adresi hex olarak 80 imiş.
Decimal olarak 128'e denk geliyor.

Sistem bu şekilde çalışıyor.
Arduino'da da start ve stop bitlerini ayarlamak gerekiyor mu?
Wire.beginTransmission(128);
Bununla iletişimi başlatıp,
Wire.endTransmission();
bununla bitirmiyor muyuz?
Dijital Ses Kontrolü : %90 Tamamlandı
TEA2025B Ampli : %70 Tamamlandı
LM1875 2.1 Ampli : %40 Tamamlandı
Transistörlü Ampli v1.0 : Hazırda Bekliyor
Sırada : STK4191II Ampli

Ynt: Dijital Ses Kontrolü

Yanıt #14
@Furkan41
Hocam kodu bitirdim.
Bir eksiklik, yanlışlık var ise düzeltmem adına yardımcı olursanız sevinirim.
Kod: [Seç]
#include <Wire.h>
byte volume = 30;
byte leftmute = 128;
byte rightmute = 160;
byte loud = 68;
byte bass = 111;
byte treble = 127;
int VolumeUp = 2;
int VolumeDown = 3;
int Mute = 4;
int Loudness = 5;
int BassUp = 6;
int BassDown = 7;
int TrebleUp = 8;
int TrebleDown = 9;
void setup() {
  pinMode(VolumeUp, INPUT);
  pinMode(VolumeDown, INPUT);
  pinMode(Mute, INPUT);
  pinMode(Loudness, INPUT);
  pinMode(BassUp, INPUT);
  pinMode(BassDown, INPUT);
  pinMode(TrebleUp, INPUT);
  pinMode(TrebleDown, INPUT);
  Wire.begin();
  Wire.beginTransmission(128);
  Wire.write(volume);
  Wire.write(leftmute);
  Wire.write(rightmute);
  Wire.write(loud);
  Wire.write(bass);
  Wire.write(treble);
  Wire.endTransmission();
}

void loop() {
  Wire.beginTransmission(128);
  if (VolumeUp == HIGH, volume < 60) {
    volume++;
    Wire.write(volume);
  } else if (VolumeUp == HIGH, volume == 60) {
    volume = 60;
    Wire.write(volume);
  }
  if (VolumeDown == HIGH, volume > 0) {
    volume--;
    Wire.write(volume);
  } else if (VolumeDown == HIGH, volume == 0) {
    volume = 0;
    Wire.write(volume);
  }
  if (Mute == HIGH) {
    leftmute = 159;
    rightmute = 191;
    Wire.write(leftmute);
    Wire.write(rightmute);
  } else {
    leftmute = 128;
    rightmute = 160;
    Wire.write(leftmute);
    Wire.write(rightmute);
  }
  if (Loudness == HIGH) {
    loud = 64;
    Wire.write(loud);
  } else {
    loud = 68;
    Wire.write(loud);
  }
  if (BassUp == HIGH, bass == 104) {
    bass = 104;
    Wire.write(bass);
  } else if (BassUp == HIGH, bass <= 111, bass >= 104) {
    bass--;
    Wire.write(bass);
  } else if (BassUp == HIGH, bass == 102) {
    bass + 9;
    Wire.write(bass);
  } else if (BassUp == HIGH, bass <= 102, bass >= 96) {
    bass++;
    Wire.write(bass);
  }
  if (BassDown == HIGH, bass == 96) {
    bass = 96;
    Wire.write(bass);
  } else if (BassDown == HIGH, bass > 96, bass <= 102) {
    bass--;
    Wire.write(bass);
  } else if (BassDown == HIGH, bass == 111) {
    bass - 9;
    Wire.write(bass);
  } else if (BassDown == HIGH, bass <= 111, bass >= 104) {
    bass++;
    Wire.write(bass);
  }
  if (TrebleUp == HIGH, treble == 120) {
    treble = 104;
    Wire.write(treble);
  } else if (TrebleUp == HIGH, treble <= 127, treble >= 120) {
    treble--;
    Wire.write(treble);
  } else if (TrebleUp == HIGH, treble == 118) {
    treble + 9;
    Wire.write(treble);
  } else if (TrebleUp == HIGH, treble <= 118, treble >= 112) {
    treble++;
    Wire.write(treble);
  }
  if (TrebleDown == HIGH, treble == 112) {
    treble = 96;
    Wire.write(treble);
  } else if (TrebleDown == HIGH, treble > 112, treble <= 127) {
    treble--;
    Wire.write(treble);
  } else if (TrebleDown == HIGH, treble == 127) {
    treble - 9;
    Wire.write(treble);
  } else if (TrebleDown == HIGH, treble <= 127, treble >= 120) {
    treble++;
    Wire.write(treble);
  }
  Wire.endTransmission();
}

@Mr_YAMYAM
Hocam bu resimlere bakarak hangi elemanları değiştirmem gerektiğini söyleyebilir misiniz?
Devre Şeması:

Ton Kontrol Cevabı:
Dijital Ses Kontrolü : %90 Tamamlandı
TEA2025B Ampli : %70 Tamamlandı
LM1875 2.1 Ampli : %40 Tamamlandı
Transistörlü Ampli v1.0 : Hazırda Bekliyor
Sırada : STK4191II Ampli