Robotik Kodlama

Robotik Kodlama
Ana Sayfa

İLGİNİZİ ÇEKEBİLECEK LİNKLER :

26 Nisan 2021 Pazartesi

MT8870 DTMF Dekoder Modülü ile Arduino

 

MT8870 DTMF Dekoder Modülü ile Arduino


Telefonlarda darbeli aramanın yerini almak için Bell Labs tarafından Çift Tonlu Çoklu Frekans teknolojileri tanıtıldı. MT8870, DTMF ses sinyaline göre 4 bitlik dijital kod üreten bir DTMF Dekoder modülüdür MT8870 Dekoder IC, kullanıcı tarafından ayarlanabilen Koruma süresine sahip bir işlemsel amplifikatör ile entegre edilmiştir. Gömülü bant bölme filtresi, düşük ve yüksek frekansları alınan sinyalden ayırmak ve ayırmak için anahtar kapasitör tekniklerini kullanır. Modül, üretilen DTMF sinyalini almak için bir ses jakı ile donatılmıştır.








Güç açısından verimli küçük bir modül, performans için yalnızca 5 volt gerektirir. Cep telefonlarına ek olarak, uygulamasını çeşitli gömülü projeler, DIY Robotics ve iletişim sistemlerinde bulur.

MT8870 DTMF Modül Bileşenleri

MT8870 DTMF Dekoder modülü, 18 PIN PLASTİK DIP / SOIC veya 20 PIN SSOP olarak mevcuttur. Dekoder modülü; Kristal Osilatör, Giriş Konektörü, Modül bağlantı Başlıkları, MT8870 Dekoder IC ve Çıkış LED'lerinden oluşur.

MT8870 DTMF Dekoder Modülü bileşenleri

Kristal Osilatör: Osilatör, modülü zamanlamak ve kontrol etmek için saat darbeleri sağlar.

Giriş Konektörü: 3,5 mm giriş Konektörü, herhangi bir çevre birimini çevirmeli tuş takımı ile bağlamak için kullanılır. Ses sinyalini alır.Modül Bağlantı Başlıkları: Bunlar, bir MCU ile modül arasındaki bağlantıdan sorumlu Giriş / Çıkış pinleridir.Dekoder IC: Çip, giriş ses sinyallerini işler ve ikili çıktı verir.Çıkış LED'leri: Çıkış ikili durumları, bu LED'ler aracılığıyla görsel olarak görüntülenir.

MT8870 Pin çıkışı

Aşağıdaki şema, MT8870 DTMF Dekoder modülünün pin çıkışını göstermektedir:

MT8870 DTMF Dekoder Modülü bağlantı şeması

PIN konfigürasyonu

MT8870 DTMF Decoder IC'nin toplam 18/20 pimi vardır, ancak modüle kadar yalnızca 9 pim genişletilmiştir. Tablodaki pim yapılandırma ayrıntısı aşağıda belirtilmiştir:

NumaraPin AdıFonksiyon
NumaraPin AdıFonksiyon
1IN +Ters çevirmeyen giriş pimi
2 İÇİNDE-Giriş pimini ters çevirme
3GSSeçme pimini kazan
4 VRefÇıkış Referans Gerilimi
5 INHGiriş Engelleme pimi
6 PWDNGiriş Gücü Kapatma pimi
7 OSC1Saat giriş pimi
8 OSC2Saat çıkış pimi
9 VSSZemin pimi
10AYAK PARMAĞIDekoder Çıkışı Etkinleştirme pimi
11-14Q1-Q4Dekoder Çıkış pimleri
15StDÇıkış Gecikmeli Direksiyon pimi
16Avustralya, Brezilya ve Kuzey Amerika ülkelerinin kullandığı saat uygulamasıÇıkış Erken Direksiyon pimi
17 St / GTGiriş yönlendirme / Çıkış Koruma Zaman pimi
18VDDPozitif Güç Kaynağı pimi
  • IN + / IN-: Bunlar işlemsel yükselticinin giriş pinleridir.
  • INH: A, B, C ve D gibi karakterlerin ton algılamasını geri tutar.
  • PWDN: Aktif-yüksek bir pindir. Boştayken güç tüketimini azaltmak için amplifikatörü kapatır.
  • TOE: Dekoder pinlerinin çıkışını sağlar.
  • StD: Bir ton çifti alındığında yükselir. Mandal güncellendikten sonra otomatik olarak azalır.
  • ESt: Dijital algılama algoritması tarafından bir ton çifti alındığında yükselir. Sinyal kaybı varsa otomatik olarak azalır.

DTMF Dekoder Modülü Özellikleri ve Spesifikasyonları

  • Çalışma Voltajı: 4,75 - 5,25 Volt
  • Çalışma Sıcaklığı: -40 0 C - 85 0 C
  • Osilatör Frekansı: 3.579545 MHz
  • Kaynak / Sink Akımı: 10 mA
  • Güç Tüketimi: 500 Watt
  • Minimum Op-Amp Kazancı: 0.30 MHz

Ek özellikler

Bazı ekstra özellikler şunları içerir:

  • Bekleme durumunda güç kaybını en aza indirmek için modüle bir güç modu sağlanmıştır.
  • Modül, kullanılırsa sayılar dışındaki karakterlerin tonlarını algılamayacak bir engelleme modu ile donatılmıştır.
  •  MT8870, DTMF alımı için 3,5 mm ses jakı ile birlikte gelir.

MT8870 DTMF Dekoder IC Blok Şeması

IC'nin dahili devrelerini gösteren MT8870 DTMF Dekoder modülünün blok şeması aşağıdaki gibidir:

MT8870 DTMF IC blok şeması

MT8870 DTMF modülü nasıl çalışır?

Çift Tonlu Çoklu Frekans, Dokunmatik Ton olarak da bilinir. Arama tuş takımında bulunan her belirli tuş için benzersiz bir frekans üreten bir sinyalizasyon sistemidir. Tuş takımında bir tuşa basıldığında, benzersiz bir DTMF sinyali üretilir. Bu sinyal, IC tarafından işlenir ve ilgili bir ikili çıktı kodu üretir. Bu, basılan tuşu tanımamıza yardımcı olur.

IC, bir işlemsel yükselticiye, filtre ağına ve bir dijital kod algılayıcısına ve dönüştürücüye sahiptir. İşlemsel amplifikatör, giriş ses sinyalini alır. Güçlendirilmiş sinyal, ses sinyalini ilgili frekans gruplarına ayırmak için bir ön işleme çevirme tonu filtresi, düşük ve yüksek frekans filtresinden oluşan filtre ağına geçirilir. Filtrelenen frekanslar, tespit devresi tarafından tespit edilir ve karşılığında 4 bitlik bir çıkış ikili kodu üretilir. Kod daha sonra çıkış LED'lerinin durumları aracılığıyla görsel olarak gösterilir ve eğer çıkış pinleri bir mikro denetleyici birimi ile arayüz oluşturulmuşsa, bunlar bilgisayarda görüntülenebilir.

Arduino ile 

Bu bölümde MT8870 DTMF Dekoderin Arduino UNO ile arayüzlenmesi ile ilgilidir.

Bağlantı şeması

Aşağıdaki şema, DTMF kod çözücü ve Arduino için arayüz devresini göstermektedir.



  • Aşağıdaki adımları kullanarak MT8870 modülünü Arduino'ya bağlayın.
  • Modülün güç kaynağı pinleri Arduino'ya.
  • Mikrodenetleyicinin dört dijital pininden herhangi birine şifre çözücü çıkış pinleri.
  • StD pinini Arduino'nun herhangi bir dijital pinine bağlayın.
  • Mobil arama tuş takımını bir yardımcı kablo kullanarak DTMF'ye bağlayın.
Arduino UNOMT8870 DTMF Modülü
8StD
12Q1
11S2
10S3
9Q4
5VVDD
GNDVSS

Arduino Kodu

/*Define input pins for DTMF Decoder pins connection */
void setup() {
  Serial.begin(9600); 
  pinMode(8, INPUT); // connect to Std pin
  pinMode(9, INPUT); // connect to Q4 pin
  pinMode(10, INPUT); // connect to Q3 pin
  pinMode(11, INPUT); // connect to Q2 pin
  pinMode(12, INPUT); // connect to Q1 pin
}

void loop() {
  uint8_t number_pressed;
  bool signal ;  
  signal = digitalRead(3);
  if(signal == HIGH)  /* If new pin pressed */
   {
    delay(250);
    number_pressed = ( 0x00 | (digitalRead(7)<<0) | (digitalRead(6)<<1) | (digitalRead(5)<<2) | (digitalRead(4)<<3) );
      switch (number_pressed)
      {
        case 0x01:
        Serial.println("Button Pressed =  1");
        break;
        case 0x02:
        Serial.println("Button Pressed =  2");
        break;
        case 0x03:
        Serial.println("Button Pressed =  3");
        break;
        case 0x04:
        Serial.println("Button Pressed =  4");
        break;
        case 0x05:
        Serial.println("Button Pressed =  5");
        break;
        case 0x06:
        Serial.println("Button Pressed =  6");
        break;
        case 7:
        Serial.println("Button Pressed =  7");
        break;
        case 0x08:
        Serial.println("Button Pressed =  8");
        break;
        case 0x09:
        Serial.println("Button Pressed =  9");
        break;
        case 0x0A:
        Serial.println("Button Pressed =  0");
        break;
        case 0x0B:
        Serial.println("Button Pressed =  *");
        break;
        case 0x0C:
        Serial.println("Button Pressed =  #");
        break;    
      }
  }
}

Kod Nasıl Çalışır?

Kitaplıklar

Bir DTMF modülünün çalışması için kitaplığa gerek yoktur çünkü DTMF'den girişi elde etmek için dahili "digitalRead" işlevini kullanıyoruz. Yürütmek için ayrı bir kitaplık gerektirmez.

void Kurulum

Kurulum işlevinde, ikili koda göre anahtarı görüntülemek için Seri monitör başlatılır. Pim modları, digitalRead işlevini kullanarak pimin değerini belirlemek için bu döngüde de tanımlanır.

/*Define input pins for DTMF Decoder pins connection */
void setup() {
  Serial.begin(9600); 
  pinMode(8, INPUT); // connect to Std pin
  pinMode(9, INPUT); // connect to Q4 pin
  pinMode(10, INPUT); // connect to Q3 pin
  pinMode(11, INPUT); // connect to Q2 pin
  pinMode(12, INPUT); // connect to Q1 pin
}

boşluk döngüsü

İlk olarak, döngü DTMF modülünden alınan ikili kodu ve boole değişkeni "sinyal" i saklamak için bir değişken "sayı" başlatır. Tuş takımındaki herhangi bir tuşa basıldığında, yüksek olacak ve döngü, buna göre if döngüsünü yürütecektir. DigitalRead işlevi, sırasıyla Q1, Q2, Q3 ve Q4'e bağlı olan pin 12, 11, 10 ve 9'daki değeri okur ve kodu sayı değişkenine kaydeder. Kaydedilen değer daha sonra tüm durumlarla karşılaştırılacaktır. Değerlerin eşleştiği durum yürütülecek ve ardından Seri monitör sonucu görüntüleyecektir.

void loop() {
  uint8_t number_pressed;
  bool signal ;  
  signal = digitalRead(3);
  if(signal == HIGH)  /* If new pin pressed */
   {
    delay(250);
    number_pressed = ( 0x00 | (digitalRead(7)<<0) | (digitalRead(6)<<1) | (digitalRead(5)<<2) | (digitalRead(4)<<3) );
      switch (number_pressed)
      {
        case 0x01:
        Serial.println("Button Pressed =  1");
        break;
        case 0x02:
        Serial.println("Button Pressed =  2");
        break;
        case 0x03:
        Serial.println("Button Pressed =  3");
        break;
        case 0x04:
        Serial.println("Button Pressed =  4");
        break;
        case 0x05:
        Serial.println("Button Pressed =  5");
        break;
        case 0x06:
        Serial.println("Button Pressed =  6");
        break;
        case 7:
        Serial.println("Button Pressed =  7");
        break;
        case 0x08:
        Serial.println("Button Pressed =  8");
        break;
        case 0x09:
        Serial.println("Button Pressed =  9");
        break;
        case 0x0A:
        Serial.println("Button Pressed =  0");
        break;
        case 0x0B:
        Serial.println("Button Pressed =  *");
        break;
        case 0x0C:
        Serial.println("Button Pressed =  #");
        break;    
      }
  }
}

Kod Çıkışı

Kodu Arduino'ya yükleyin. Arama tuşlarından herhangi bir tuşa basın. Örneğin, arama tuşlarından 2'ye basıldığında. 2 sayısı özel bir DTMF sinyali üretecektir. Modül alır, farklılaştırır ve ardından Arduino tarafından daha sonra alınacak olan 4 bitlik bir ikili kod üretir. MCU, değeri işler ve "Pim Basıldı: 2" yazar. Farklı sayılara basın ve sonuçları gözlemleyin.

Başvurular

  • Robotik
  • Ev otomasyonu
  • Akıllı telefonlar
  • Çağrı Sistemleri
  • Telekomünikasyon sistemleri
  • Endüstriyel Uygulamalar

2D Diyagram

2D diyagram




ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.