MT8870 DTMF Dekoder Modülü ile Arduino
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.
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:
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:
Numara | Pin Adı | Fonksiyon |
---|---|---|
Numara | Pin Adı | Fonksiyon |
1 | IN + | Ters çevirmeyen giriş pimi |
2 | İÇİNDE- | Giriş pimini ters çevirme |
3 | GS | Seçme pimini kazan |
4 | VRef | Çıkış Referans Gerilimi |
5 | INH | Giriş Engelleme pimi |
6 | PWDN | Giriş Gücü Kapatma pimi |
7 | OSC1 | Saat giriş pimi |
8 | OSC2 | Saat çıkış pimi |
9 | VSS | Zemin pimi |
10 | AYAK PARMAĞI | Dekoder Çıkışı Etkinleştirme pimi |
11-14 | Q1-Q4 | Dekoder Çıkış pimleri |
15 | StD | Çıkış Gecikmeli Direksiyon pimi |
16 | Avustralya, Brezilya ve Kuzey Amerika ülkelerinin kullandığı saat uygulaması | Çıkış Erken Direksiyon pimi |
17 | St / GT | Giriş yönlendirme / Çıkış Koruma Zaman pimi |
18 | VDD | Pozitif 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 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 UNO | MT8870 DTMF Modülü |
---|---|
8 | StD |
12 | Q1 |
11 | S2 |
10 | S3 |
9 | Q4 |
5V | VDD |
GND | VSS |
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
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.