Elektronik / Mikrodenetleyici Projeleri/

DTMF Tonlu Cihaz Kontrolü

Sponsorlu Bağlantılar

Hazırlayanlar: Erkan İslamoğlu ve Berhan Tekdemir Emeği geçen Kişilere Teşekkürler

DTMF sinyalleri telefon hatlarının özelliklerine bağlı olarak gerçekleştirilen aramalarda, aranan ve arayan kişilerin numaralarının kaydedilmesinde, konuşma sürelerinin tespitinde, uzaktan sistem kontrolünde ve telekonferans sistemlerinde kullanılmaktadır.

DTMF (Dual Tone Multi Frequency) sinyalleri DTMF kodlayıcısı tarafından üretilir. Farklı frekansta iki sinüzoidal işaret cebirsel olarak toplanır. Herhangi bir tuşa basıldığında o tuşa ait iki tane farklı frekanslı sinyal üretilir. Bu sinyallerden düşük frekanslı olanı basılan tuşun hangi satırda yer aldığını yüksek frekanslı olanı da hangi sütunda bulunduğunu belirtir. Ton frekansları harmoniklerden ve diğer bozucu girişlerden etkilenmeyecek şekilde seçilmişlerdir.

Sinyallerin telefon tarafından doğru olarak iletilmesi ve merkez santral tarafından doğru olarak algılanması önemlidir. Sinyal frekansları nominal değerin ±%1.5 değerinde olmalıdır. DTMF esas olarak Amerikan ordusu için Bell telefon laboratuarlarında geliştirilmiş bir kodlama sistemidir. Daha sonra telefon şebekelerinde bilgi yollamanın güvenli yolu olarak tercih edilmiş ve telefon abonesinin santrala aradığı abone ile ilgili bilgileri ilettiği standart yöntem olarak günümüzde yaygın olarak kullanılmaktadır.

DTMF kodlama sistemi radyo amatörlüğünde yerini son yirmi yıl içinde yaygın olarak almıştır. Günümüzde telsiz cihazlarının çoğunda DTMF sinyallerini yollamaya ve almaya yarayan modüller ile tuş takımı bulunmaktadır.

Bu imkan sayesinde telsiz yardımıyla DTMF kodlu mesajlar, çağrı kodları yollamak; uzaktan kumanda amaçlı rölelerin kontrolü gibi işler gerçekleştirilebilir.

DTMF sinyallerinin algılanıp kodunun çözülmesinde çok değişik yöntemler kullanılmaktadır:filtre, entegre olarak üretilen kod çözücüler, DSP sayısal işaret işlemcileri.

Entegre olarak üretilen kod çözücü örnek devreleri

5089 entegreli kod çözücü 1
5089-entegreli-kod-cozucu

cm8870 entegreli kod çözücü
8870-kod-cozucu-dtmf-sinyallerinin

PİC 16f84 ile DTMF üretimi 1
16f84-dtmf

DTMF Kod Kombinasyon tablosu

1209 Hz

1336 Hz

1477 Hz

697 Hz

1

2

3

770 Hz

4

5

6

852 Hz

7

8

9

941 Hz

*

0

#


Yukarıdaki DTMF Kod kombinasyon tablosundan görüleceği gibi dört adet frekans satır için, dört adet frekansta kolon için tahsis edilmiştir.

Tablonun ortasındaki rakam ve semboller karşılarında bulunan satır ve sütundaki frekans çiftiyle ifade edilirler. Bir örnek vermek gerekirse 4 rakamını 770 Hz ve 1209 Hz lik ton çiftiyle ifade ederiz. Bu ton çiftleri 16 adet ton kombinasyonuna olanak tanır. Bu tonlardan sıra için adanmış olanlar 1 kHz ‘in altında, kolon için tahsis edilmiş olanlar ise 1 kHz ile 2 kHz arasındadır.

Bu frekansların bu sınırlar dahilinde olmasının sebebi telefon ve telsiz sistemlerinde band geçiren filtreler kullanılır ve bu filtreler 300 Hz – 3000 Hz arasındaki konuşma aralığı dediğimiz aralıktaki frekansları geçirirler.DTMF tonlarında bozulma ve kesintilere uğramaması için bu frekans sınırları içinde kalacak şekilde tasarlanmışlardır.

PİC 16F877 Entegresi
pic-16f877-entegresi-minimum

PIC16F877 Portlarının Fonksiyonları : PIC16F877’nin tüm portları her biri bağımsız olarak sayısal giriş veya çıkış olarak kullanılabilme imkanı vermektedir. Bu portlar kendi aralarında beş ana guruba ayrılmaktadır. (PORTA, PORTB, PORTC, PORTD, PORTE) Şimdi bu portları inceleyelim.

PORTA: Bu port RA0, RA1, RA2, RA3, RA4, RA5 olmak üzere 6 Bitliktir.Bu bitler analog/ sayısal çevirici olarak konfigüre edilirler.

PORTB: RB0, RB1, RB2, RB3, RB4, RB5, RB6, RB7 olmak üzere 8 bit genişliğindedir. B portunun tüm bacakları dahili bir dirençle VDD’ye bağlanmıştır. Fakat bu özellik uygulamalarda göz önünde bulundurulmaz. Bu özellik ancak OPTION yazmacının 7. bitini 0 yaparak aktif hale getirilir.

PORTC: RC0, RC, RC2, RC3, RC4, RC4, RC5, RC6, RC7 olmak üzere 8 bit kapasitelidir. SPI,Doğrudan bilgisayarla iletişim yapma, yakalama/ Karşılaştırma ve PWM gibi özel fonksiyonlar yazmaçların ayarlanmasıyla bu portta kullanılır.

PORTD: RD0, RD1, RD2, RD3, RD4, RD5, RD6, RD7 olmak üzere 8 bitliktir. Bütün portlar Schmitt Trigger girişlidir.

PORTE: RE0, RE1, RE2 olmak üzere 3 bit liktir. Bu bacaklarında Schmitt Trigger girişleri vardır.Ayrıca her bir bacak analog / sayısal çevirici olarakta kullanılmaktadır. Eğer PORTD yi TRISE yazmacının PSPMODE bitini 1 yapıp 8bit genişliğinde mikro işlemci portu olarak kullanırsak (parelel slave port) PORTE bacakları PORTD nin bağlandığı mikroişlemci bus nında sırasıyla OKUMA,YAZMA,CHIP SELECT kontrol girişleri olarak kullanılır.

Uygulama Devresi
8870-dtmf-pic16f877-acik-devre-semasi

Örnek Devre
dtmf-ornek-devre

Baskı Devre Çizimleri

PCB Alttan görünüm
dtmf-pcb-150x150.png

PCB Üstten görünüş
dtmf-pcb-ust

DTFM ton kontrolü 8 adet her hangi bir devrenin ya da cihazın uzaktan kontrolünde kullanılabilir. Buradaki amaç telsizle ve ya telefonla uzaktan bir sistemin çalışmasını sağlayabilmektir.

Devrenin çalışması: Telefondan ve ya telsizden çıkan DTMF ton sinyali bir amplifikatör yardımıyla genliği büyütüldükten sonra 100 n’luk kondansatörden geçerek 100 kW’luk dirençle CM8870 decoder entegresi tarafından 5 bitlik veriye dönüştürülür. Normal telefon DTMF’i için CM8870’e 3.574Mhz’li kristal takılmaktadır. Decoder’den çıkan 5 bitlik veri pic 16F877’nin portlarına aktarılır. Pic 16F877 tarafından klavyeden girilen değerle karşılaştırılır ve ilgili röleleri kontaklar.

DTMF Kontrol hex yazılımı DTMF Tonlu Cihaz Kontrolü

Dosya indirme LINK listesi (HTML formatında) link-4162.zip şifre-pass: 320volt.com

DTMF asm yazımı


; PicBasic Pro Compiler 2.40, (c) 1998, 2001 microEngineering Labs, Inc. All Rights Reserved. 
PM_USED			EQU	1

	INCLUDE	"16F877.INC"


; Define statements.
#define		CODE_SIZE		 8
#define		LCD_BITS		    4
#define		LCD_DREG		    PORTD
#define		LCD_DBIT		    0
#define		LCD_RSREG			PORTE
#define		LCD_RSBIT			2
#define		LCD_EREG			PORTE
#define		LCD_EBIT			1

RAM_START       		EQU	00020h
RAM_END         		EQU	001EFh
RAM_BANKS       		EQU	00004h
BANK0_START     		EQU	00020h
BANK0_END       		EQU	0007Fh
BANK1_START     		EQU	000A0h
BANK1_END       		EQU	000EFh
BANK2_START     		EQU	00110h
BANK2_END       		EQU	0016Fh
BANK3_START     		EQU	00190h
BANK3_END       		EQU	001EFh
EEPROM_START    		EQU	02100h
EEPROM_END      		EQU	021FFh

R0              		EQU	RAM_START + 000h
R1              		EQU	RAM_START + 002h
R2              		EQU	RAM_START + 004h
R3              		EQU	RAM_START + 006h
R4              		EQU	RAM_START + 008h
R5              		EQU	RAM_START + 00Ah
R6              		EQU	RAM_START + 00Ch
R7              		EQU	RAM_START + 00Eh
R8              		EQU	RAM_START + 010h
FLAGS           		EQU	RAM_START + 012h
GOP             		EQU	RAM_START + 013h
RM1             		EQU	RAM_START + 014h
RM2             		EQU	RAM_START + 015h
RR1             		EQU	RAM_START + 016h
RR2             		EQU	RAM_START + 017h
_CIKIS           		EQU	RAM_START + 018h
_DENET           		EQU	RAM_START + 019h
_UMUMI           		EQU	RAM_START + 01Ah
_PORTL           		EQU	PORTB
_PORTH           		EQU	PORTC
_TRISL           		EQU	TRISB
_TRISH           		EQU	TRISC
	INCLUDE	"ERKAN_~1.MAC"
	INCLUDE	"PBPPIC14.LIB"

	MOVE?CB	007h, ADCON1
	MOVE?CB	00Fh, TRISA
	MOVE?CB	000h, TRISB
	MOVE?CB	000h, PORTB
	PAUSE?C	001F4h
	LCDOUT?C	0FEh
	LCDOUT?C	001h
	LCDOUT?C	020h
	LCDOUT?C	020h
	LCDOUT?C	020h
	LCDOUT?C	049h
	LCDOUT?C	059h
	LCDOUT?C	049h
	LCDOUT?C	020h
	LCDOUT?C	047h
	LCDOUT?C	055h
	LCDOUT?C	04Eh
	LCDOUT?C	04Ch
	LCDOUT?C	045h
	LCDOUT?C	052h
	LCDOUT?C	0FEh
	LCDOUT?C	0C0h
	LCDOUT?C	020h
	LCDOUT?C	020h
	LCDOUT?C	044h
	LCDOUT?C	054h
	LCDOUT?C	04Dh
	LCDOUT?C	046h
	LCDOUT?C	020h
	LCDOUT?C	020h
	LCDOUT?C	04Bh
	LCDOUT?C	04Fh
	LCDOUT?C	04Eh
	LCDOUT?C	054h
	LCDOUT?C	052h
	LCDOUT?C	04Fh
	LCDOUT?C	04Ch

	LABEL?L	_YENILE	
	AND?BCB	PORTA, 00Fh, _UMUMI
	CMPEQ?BCL	_UMUMI, 000h, _YENILE
	CMPGE?BCL	_UMUMI, 009h, L00002
	GOSUB?L	_TABLO
	OR?BBB	PORTB, _CIKIS, PORTB
	LCDOUT?C	0FEh
	LCDOUT?C	001h
	LCDOUT?C	020h
	LCDOUT?C	020h
	LCDOUTD?B	_UMUMI
	LCDOUT?C	02Eh
	LCDOUT?C	04Bh
	LCDOUT?C	041h
	LCDOUT?C	04Eh
	LCDOUT?C	041h
	LCDOUT?C	04Ch
	LCDOUT?C	020h
	LCDOUT?C	041h
	LCDOUT?C	04Bh
	LCDOUT?C	054h
	LCDOUT?C	049h
	LCDOUT?C	046h
	LCDOUT?C	0FEh
	LCDOUT?C	0C0h
	LCDOUT?C	020h
	LCDOUT?C	04Bh
	LCDOUT?C	041h
	LCDOUT?C	04Eh
	LCDOUT?C	020h
	LCDOUT?C	026h
	LCDOUT?C	020h
	LCDOUT?C	042h
	LCDOUT?C	045h
	LCDOUT?C	052h
	LCDOUT?C	048h
	LCDOUT?C	041h
	LCDOUT?C	04Eh

	LABEL?L	_DNTL	
	AND?BCB	PORTA, 00Fh, _DENET
	LXOR?BBL	_UMUMI, _DENET, _YENILE
	GOTO?L	_DNTL
	CMPNE?BCL	_UMUMI, 00Ah, L00004
	MOVE?CB	000h, PORTB
	LCDOUT?C	0FEh
	LCDOUT?C	001h
	LCDOUT?C	020h
	LCDOUT?C	020h
	LCDOUT?C	054h
	LCDOUT?C	055h
	LCDOUT?C	04Dh
	LCDOUT?C	020h
	LCDOUT?C	04Bh
	LCDOUT?C	041h
	LCDOUT?C	04Eh
	LCDOUT?C	041h
	LCDOUT?C	04Ch
	LCDOUT?C	04Ch
	LCDOUT?C	041h
	LCDOUT?C	052h
	LCDOUT?C	0FEh
	LCDOUT?C	0C0h
	LCDOUT?C	020h
	LCDOUT?C	020h
	LCDOUT?C	020h
	LCDOUT?C	020h
	LCDOUT?C	020h
	LCDOUT?C	020h
	LCDOUT?C	050h
	LCDOUT?C	041h
	LCDOUT?C	053h
	LCDOUT?C	049h
	LCDOUT?C	046h
	LABEL?L	L00004	
	CMPNE?BCL	_UMUMI, 00Bh, L00006

	LABEL?L	_SRGL	
	PAUSE?C	001h
	AND?BCB	PORTA, 00Fh, _DENET
	GOTO?L	_SRGL

	LABEL?L	_PASIF_Y	
	LCDOUT?C	0FEh
	LCDOUT?C	001h
	LCDOUT?C	020h
	LCDOUT?C	020h
	LCDOUT?C	048h
	LCDOUT?C	041h
	LCDOUT?C	04Eh
	LCDOUT?C	047h
	LCDOUT?C	049h
	LCDOUT?C	020h
	LCDOUT?C	020h
	LCDOUT?C	04Bh
	LCDOUT?C	041h
	LCDOUT?C	04Eh
	LCDOUT?C	041h
	LCDOUT?C	04Ch
	LCDOUT?C	0FEh
	LCDOUT?C	0C0h
	LCDOUT?C	020h
	LCDOUT?C	020h
	LCDOUT?C	020h
	LCDOUT?C	04Bh
	LCDOUT?C	041h
	LCDOUT?C	050h
	LCDOUT?C	041h
	LCDOUT?C	054h
	LCDOUT?C	049h
	LCDOUT?C	04Ch
	LCDOUT?C	053h
	LCDOUT?C	049h
	LCDOUT?C	04Eh

	LABEL?L	_PASIF_BEK	
	AND?BCB	PORTA, 00Fh, _DENET

	ASM?
   NOP    

	ENDASM?

	CMPEQ?BCL	_DENET, 000h, _PASIF_BEK
	AND?BCB	PORTA, 00Fh, _UMUMI
	GOSUB?L	_TABLO
	AND?BBB	PORTB, _CIKIS, _DENET
	CMPEQ?BCL	_DENET, 000h, _GEC
	XOR?BBB	PORTB, _CIKIS, PORTB
	LCDOUT?C	0FEh
	LCDOUT?C	001h
	LCDOUT?C	020h
	LCDOUT?C	020h
	LCDOUTD?B	_UMUMI
	LCDOUT?C	02Eh
	LCDOUT?C	04Bh
	LCDOUT?C	041h
	LCDOUT?C	04Eh
	LCDOUT?C	041h
	LCDOUT?C	04Ch
	LCDOUT?C	020h
	LCDOUT?C	050h
	LCDOUT?C	041h
	LCDOUT?C	053h
	LCDOUT?C	049h
	LCDOUT?C	046h
	LCDOUT?C	0FEh
	LCDOUT?C	0C0h
	LCDOUT?C	020h
	LCDOUT?C	045h
	LCDOUT?C	052h
	LCDOUT?C	04Bh
	LCDOUT?C	041h
	LCDOUT?C	04Eh
	LCDOUT?C	020h
	LCDOUT?C	026h
	LCDOUT?C	020h
	LCDOUT?C	042h
	LCDOUT?C	045h
	LCDOUT?C	052h
	LCDOUT?C	048h
	LCDOUT?C	041h
	LCDOUT?C	04Eh
	GOTO?L	_SRGL2

	LABEL?L	_GEC	
	LCDOUT?C	0FEh
	LCDOUT?C	001h
	LCDOUT?C	020h
	LCDOUT?C	020h
	LCDOUT?C	020h
	LCDOUT?C	020h
	LCDOUT?C	042h
	LCDOUT?C	055h
	LCDOUT?C	020h
	LCDOUT?C	020h
	LCDOUT?C	020h
	LCDOUT?C	04Bh
	LCDOUT?C	041h
	LCDOUT?C	04Eh
	LCDOUT?C	041h
	LCDOUT?C	04Ch
	LCDOUT?C	0FEh
	LCDOUT?C	0C0h
	LCDOUT?C	002h
	LCDOUT?C	020h
	LCDOUT?C	020h
	LCDOUT?C	020h
	LCDOUT?C	020h
	LCDOUT?C	020h
	LCDOUT?C	050h
	LCDOUT?C	041h
	LCDOUT?C	053h
	LCDOUT?C	049h
	LCDOUT?C	046h

	LABEL?L	_SRGL2	
	AND?BCB	PORTA, 00Fh, _DENET
	LXOR?BBL	_UMUMI, _DENET, _YENILE
	GOTO?L	_SRGL2
	LABEL?L	L00006	
	PAUSE?C	004h
	GOTO?L	_YENILE

	LABEL?L	_TABLO	
	LOOKUP?BCLB	_UMUMI, 009h, L00001, _CIKIS
	LURET?C	000h
	LURET?C	001h
	LURET?C	002h
	LURET?C	004h
	LURET?C	008h
	LURET?C	010h
	LURET?C	020h
	LURET?C	040h
	LURET?C	080h

	LABEL?L	L00001	
	RETURN?	

	END
  • Erhan

    Arkadaşım iyi güzel bu proje yapılmış ta orda asm adı altında verilmiş kodlar neyi ifade ediyor yani kodları paylaşmak istemiyorsa hiç onlarıda yazmasın pic basicte yazılmış program pic basicin ürettiği asm kodları direk yapıştırılmış bunun gibi bir çok proje vardı böyle özelliklede hex kodu dahi verilmeyen bitirme projeleri var yani hiç bir kod yoksa o projelerin yayınlanma amacı ne bu iki durum çok rahatsız edici açıkcası

  • Kaynak kodları olan devreler için bakınız http://320volt.com/dtmf-telefon-ile-cihaz-kontrolu

    Bende biliyorum ne yazıkki kaynak kodları tam olarak yok bu tip projeleririn paylaşılma sebebi Türkçe detaylı bilgi olmasıdır açıklamaları okudunuzmu ne kadar faydalı kıymetli bilgiler var

    Yazar projelerimiz dışındaki yazılar bu siteye özel hazırlanmış değildir arşivimden,internet üzerinden seçilmiş projelerdir ve var olan tüm dosyaları ile paylaşılmıştır bir çoğu sizlerin ulaşamıyacağı kadar uzaktan ve çeşitli zorluklar aşılarak buraya taşındı :) var ise hazırlayan kişilerin bilgileri sitelerinin linkleri eklendi en azından herhangi bir kısıtlama olmadan kolayca ulaşabiliyorsunuz varsın bir kaç projenin asm,hex kodlarının yanında pic basic kodu olmasın

  • Erhan

    Arkdaşım projeyi yapan kaynak kodu vermeyebilir hexi verir. veya hiç vermez sorun bu değil yani orda asm kodu diyerek pic basicin ürettiği kodlar eklenmesin siteyi bende yakından takip ediyorum. bir kaçgün arayla sürekli yenileniyor.Güzel projeler, makaleler, tezler paylaşılıyor. ama bu şekildeki hareketler hiç hoş değil ben bunu belirtmek istiyorum.

  • 112 acil

    ben bikeresinde sırf eğlence için telefona kontörü 3310un tuşlarından çıkardığı sesle yüklemiştim

  • Bahattin

    bu devrenin arduino ile yapabilirmiyim eğer yapılıyor ise bana yardımcı olabilirmisiniz