Dtmf signallarining qabul qiluvchi va uzatuvchisini o'rganish. AVR-da ikki tonnali ko'p chastotali (DTMF) generatori Endi biz nima borligini ko'rib chiqamiz

Ushbu ilovaning birinchi qismida MSP430 mikrokontrolleri yordamida DTMF signallarini qanday yaratish tasvirlangan. Bu holatda ishlatiladigan eng muhim spetsifikatsiyalar haqida tushuntirish berilgan va tegishli analog filtrlar yordamida kvadrat to'lqinlar yordamida sinus to'lqinlarni yaratishning nazariy va matematik asoslari berilgan. Misol shuningdek, MSP430 mikrokontrollerlarining turli taymer konfiguratsiyalari asosida kvadrat to'lqin signallarini yaratish uchun sinovdan o'tgan demo dasturlarni o'z ichiga oladi. Yakuniy qism kvadrat to'lqin signallaridan DTMF signallarini ishlab chiqarish uchun sxemani taqdim etadi.

2 DTMF signal spetsifikatsiyasi

DTMF qisqartmasi "Dual Tone Multi Frequency" degan ma'noni anglatadi va analog aloqa liniyalari orqali uzatish maqsadida turli chastotalardagi raqamlarni ifodalash usulidir, masalan. telefon liniyasi. Standartni ishlab chiqishda shart hisobga olindi - barcha chastotalar "ovoz" diapazonida bo'lishi kerak, bu esa uzatish kanaliga qo'yiladigan talablarni kamaytirishga imkon berdi. Telefon tarmoqlari terish va boshqa ma'lumotlar uchun DTMF signallaridan foydalanadi. Standart bo'lgan pulsli terish usuli hali ham keng qo'llanilishiga qaramay, masalan, Germaniyada terish vaqti sezilarli darajada oshadi, bu esa aloqa liniyalarida samarasiz yuklanishga olib keladi. Bundan tashqari, ko'p qo'shimcha xizmatlar Aloqa faqat ohangli terish yordamida mumkin. DTMF usuli yordamida kodlashda 0-9 raqamlari va A-D harflari, */E va #/F ikki chastotaning kombinatsiyasini ifodalaydi:

Chastotasi 1209 Gts 1336 Gts 1477 Gts 1633 Gts
697 Gts 1 2 3 A
770 Gts 4 5 6 B
852 Gts 7 8 9 C
941 Gts */E 0 #/F D

Ushbu tizimda ustun "yuqori" chastota guruhidagi chastotani (Hi-Group: 1209-1633 Gts) va qator "pastki" chastota guruhidan (Lo-Group: 697-941 Gts) chastotani ifodalaydi. . Harmoniklarning ta'sirini bartaraf etish uchun tonal chastotalar tanlanadi. Chastotalar bir-birining ko'paytmasi emas va boshqa chastotalarni qo'shish yoki ayirish yo'li bilan DTMF chastotasini olish mumkin emas. Deutsche Telekom tarmog'ida raqam teruvchini yaratish uchun quyidagi texnik xususiyatlar talab qilinadi (Zulassungsvorschrift des Bundesamtes fur Post und Telekommunikation, BAPT 223 ZV 5 (Federal pochta va telekommunikatsiyalar vazirligining rasmiy spetsifikatsiyasi) dan olingan):

3 DTMF signallarini yarating

Yuqorida aytib o'tilganidek, DTMF signallari analog bo'lib, ikkita mustaqil sinus to'lqinlardan iborat. Shunday qilib, faqat bunday signallarni yaratish mumkin emas raqamli. Raqamli signallar ADC va/yoki analog filtrlar yordamida kerakli sinus to'lqin shakliga aylantirilishi kerak.

3.1 Kvadrat to'lqinlar yordamida avlod

Agar kvadrat to'lqin signallari DTMF signallarini yaratish uchun ishlatilsa, dasturiy ta'minot va apparat minimal. T davriga ega bo'lgan har qanday uzluksiz signal sinus va kosinus to'lqinlarining cheksiz yig'indisidan iborat Furye qatori bilan quyidagicha ifodalanishi mumkin:

Bu erda a0/2 signalning doimiy komponentidir. Eng past burchak chastotasi (w0) bo'lgan yig'indi elementi asosiy (asosiy) garmonik deb ataladi, qolganlari ohanglar yoki undan yuqori harmonikalardir.

Mikrokontroller yordamida amalga oshiriladigan eng oddiy uzluksiz signal kvadrat to'lqin bo'lib, Furye seriyasi quyidagi shaklga ega:

Har bir chastota komponentining umumiy signalga qo'shgan hissasi eng yaxshi amplituda spektri bilan namoyon bo'ladi (2-rasmga qarang):


Guruch. 2: Kvadrat to'lqin signalining amplituda spektri

Analog filtrdan foydalanganda, DC komponenti va undan yuqori harmoniklar samarali tarzda bostiriladi, chiqishda esa biz asl kvadrat to'lqinning chastotasiga teng chastotali sinusoidal signalga egamiz.

3.2 Mender ishlab chiqarish uchun dasturiy ta'minot

Meander ishlab chiqarish dasturi quyidagi talablarga javob berishi kerak:

  • Ikkita mustaqil to‘rtburchak signallarni sintez qila olish.
  • Signallarni ajratish uchun "yuqori" (Hi-Group) va "pastki" (Lo-Group) signallarini yaratish uchun ikkita chiqish pinlari talab qilinadi. chastota diapazonlari mos ravishda.
  • Dasturiy ta'minot talab qilinadigan signal davomiyligini taxminan 65 ms - 100 ms oralig'ida o'rnatishi kerak.

MSP430 seriyali mikrokontrollerlar kvadrat to'lqinli signallarni ishlab chiqarishga qodir turli xil o'rnatilgan taymerlarga ega. '31x/'32x oilasi har ikkala kvadrat to'lqin signalini yaratish uchun 8 bitli taymer va taymer portidan foydalanadi. Bu dastur 1,048 MGts ga teng MCLK chastotasida sinovdan o'tkazildi. '33x oilasidagi Timer_A ikkala kerakli signalni mustaqil ravishda ishlab chiqishi mumkin. Ikkinchi dastur kvadrat to'lqinlarni yaratish uchun ushbu taymerdan foydalanadi va har qanday MCLK chastotalari bilan ishlaydi. Ikkala dastur ham quyida batafsil muhokama qilinadi.

3.2.1 8-bitli taymer va taymer porti yordamida kvadrat to'lqinlarni yaratish

Shaklda. 3 - bu DTMF signallarini yaratish uchun ishga tushirish protsedurasining sxemasi. Ikki chastotani sintez qilish uchun taymer porti va 8 bitli taymer hisoblagichlari ishlatiladi. Ularning har biri kerakli chastotalarni aniq sintez qilish uchun zarur bo'lgan dasturlashtiriladigan hisoblagich registridir. Taymer-port hisoblagichlari bitta 16-bitli taymerga kaskadlangan bo'lsa va MCLK tizim chastotasida soatlansa, u holda yuqori diapazonli chastotalar yuqori aniqlik bilan yaratilishi mumkin. Uzilish sodir bo'lganda, mos keladigan chiqish almashtiriladi va ikkala 8 bitli hisoblagich registrlari qayta o'rnatiladi. Yuklangan qiymatlar boshqa vazifalar uchun ichki registrlarni saqlash uchun RAMda ikkita o'zgaruvchida saqlanadi.

Past diapazonli chastotalar 8 bitli taymer tomonidan ishlab chiqariladi. Ushbu taymerning hisoblagich registrining kengligi 8 bit bo'lganligi sababli, faqat har uchinchi uzilish kerakli chiqish pinidagi daraja o'zgarishiga olib keladi va bir xil chastota hisoblagichini yaratishga imkon beradi.

Ikkita taymer chiqishi - portlar turli chastotalarning ikkita meanderini hosil qilish uchun ishlatiladi.

Guruch. 3 DTMF signallarini yaratish uchun ishga tushirish jarayonining sxemasi

Boshlash jarayoni faqat bir marta amalga oshiriladi. U tugallangandan so'ng, uzatilgan belgining o'n oltilik qiymati RAMdagi global o'zgaruvchidan o'qiladi. Yuqori va past DTMF ohanglarini tashkil etuvchi ikkita chastota ikkita jadvaldan hosil bo'lgach, talab qilinadigan narsa ikkala taymerni ishga tushirish va ishga tushirishdir. Yuborish davomiyligi "pastki" chastotaning yarim davrlarini hisoblash orqali nazorat qilinadi va qo'shimcha jadvaldan o'qiladi. Ushbu protsedura tugagandan so'ng, siz ovoz berish funksiyasiga qaytasiz. Tegishli uzilishlarni qayta ishlash tartiblari port pinlarini almashtiradi. Bu jarayon rasmda ko'rsatilgan. 4 va 5.

Taymer-portning vazifalari faqat jurnalni yozishni o'z ichiga oladi. port chiqishidagi daraja va hisoblagichni RAMdan qayta yuklash, 8 bitli taymerning ishlashi biroz murakkabroq tuzilishga ega: uzilishga har bir kirish hisoblagich registri tomonidan hisoblanadi. Chiqish holatini faqat uchta uzilishdan keyin o'zgartirishi mumkin. Bundan tashqari, har bir yarim tsikl ham hisobga olinadi. Yarim sikllarning ma'lum soniga erishilganda avlod to'xtaydi.


Guruch. 4-blok - 8 bitli taymerdan uzilish davri (Lo-Group)


Guruch. 5 Blok - taymer-port uzilish davri (Hi-Group)

; Maxsus ta'riflar FLLMPY equ 32; 1,048 MGts chastotada FLL chastotasi multiplikatori TCLK equ FLLMPY*32768; TCLK: FLLMPY x f kvarts DL equ 85; DTMF signalining davomiyligi (65..100 ms) LO_OUT equ 02h ; “Pastki” chastotaning chiqishi HI_OUT equ 04h ; Yuqori chastotali chiqish RCOUNT equ r14; Uzunlik hisoblagichi DTMF RTEMP equ r15; xizmat registri.global DTMF_NR ; RAMdagi global o'zgaruvchi; DTMF raqami uchun (0..F) ; Ta'riflar RAM.hatto .bss DTMF_TL ; Hatto manzil alignment.bss DTMF_TH .bss DTMF_NR ; RAMdagi global o'zgaruvchi; DTMF raqami uchun (0..F).juft ; 8-bitli taymer uchun ta'riflar TCCTL EQU 42H TCPLD EQU 43H TCDAT EQU 44H ; Universal taymer porti uchun ta'riflar TPCTL equ 04bh ; Taymer-port nazorati TPCNT1 equ 04ch ; Taymer-port hisoblagichi 1 TPCNT2 equ 04dh ; Taymer-port hisoblagichi 2 TPD equ 04eh ; Taymer-port ma'lumotlari TPE equ 04fh ; Timer-port-resolution.text ; DTMF chastota jadvallari: jadval o'z ichiga oladi; bir yarim tsikl uchun MCLK tsikllari soni. ; "Yuqori" chastota uchun jadval; Tuzatuvchi tuzatish kiritildi; uzilishga kirish vaqtini hisobga olish DTMF_HI .so'z 0ffffh-(TCLK/(1336*2))+25 ; 0 .so'z uchun yuqori chastota 0ffffh-(TCLK/(1207*2))+28 ; 1 .so'z uchun yuqori chastota 0ffffh-(TCLK/(1336*2))+25 ; 2 .so'z uchun yuqori chastota 0ffffh-(TCLK/(1477*2))+24 ; 3 so'z uchun yuqori chastota 0ffffh-(TCLK/(1207*2))+28 ; 4 .so'z uchun yuqori chastota 0ffffh-(TCLK/(1336*2))+25 ; 5 .so'z uchun yuqori chastota 0ffffh-(TCLK/(1477*2))+24 ; 6 .so'z uchun yuqori chastota 0ffffh-(TCLK/(1207*2))+28 ; 7 .so'z uchun yuqori chastota 0ffffh-(TCLK/(1336*2))+25 ; 8 .so'z uchun yuqori chastota 0ffffh-(TCLK/(1477*2))+24 ; 9 .so'z uchun yuqori chastota 0ffffh-(TCLK/(1633*2))+22 ; A .so'z uchun yuqori chastota 0ffffh-(TCLK/(1633*2))+22 ; B uchun yuqori chastota .so'z 0ffffh-(TCLK/(1633*2))+22 ; C .word uchun yuqori chastota 0ffffh-(TCLK/(1633*2))+22 ; D .word uchun yuqori chastota 0ffffh-(TCLK/(1207*2))+28 ; * .word 0ffffh-(TCLK/(1477*2))+24 uchun yuqori chastota; # uchun yuqori chastota; "Quyi" chastotasi uchun jadval DTMF_LO .bayt 0ffh-(TCLK/(941*2*3)) ; 0 .bayt 0ffh-(TCLK/(697*2*3)) uchun past chastotali; 1 .bayt 0ffh-(TCLK/(697*2*3)) uchun past chastotali; 2 .bayt 0ffh-(TCLK/(697*2*3)) uchun past chastotali; 3 .bayt 0ffh-(TCLK/(770*2*3)) uchun past chastotali; 4 .bayt 0ffh-(TCLK/(770*2*3)) uchun past chastotali; 5 .bayt 0ffh-(TCLK/(770*2*3)) uchun past chastotali; 6 .bayt 0ffh-(TCLK/(853*2*3)) uchun past chastotali; 7 .bayt 0ffh-(TCLK/(853*2*3)) uchun past chastotali; 8 .bayt 0ffh-(TCLK/(853*2*3)) uchun past chastotali; 9 .bayt 0ffh-(TCLK/(697*2*3)) uchun past chastotali; A .bayt uchun past chastota 0ffh-(TCLK/(770*2*3)) ; B .bayt uchun past chastota 0ffh-(TCLK/(853*2*3)) ; C .bayt 0ffh-(TCLK/(941*2*3)) uchun past chastotali; D .bayt 0ffh-(TCLK/(941*2*3)) uchun past chastotali; *.bayt 0ffh-(TCLK/(941*2*3)) uchun past chastotali; # uchun past chastota; Signal davomiyligi jadvali DTMF_L .bayt 2*941*DL/1000; 0 .bayt 2*697*DL/1000 uchun yarim davrlar; 1 .bayt 2*697*DL/1000 uchun yarim davrlar; 2 .bayt 2*697*DL/1000 uchun yarim davrlar; 3 .bayt 2*770*DL/1000 uchun yarim davrlar; 4 .bayt 2*770*DL/1000 uchun yarim davrlar; 5 .bayt 2*770*DL/1000 uchun yarim davrlar; 6 .bayt 2*852*DL/1000 uchun yarim davrlar; 7 .bayt 2*852*DL/1000 uchun yarim davrlar; 8 .bayt 2*852*DL/1000 uchun yarim davrlar; 9 .bayt 2*697*DL/1000 uchun yarim davrlar; A .bayt 2*770*DL/1000 uchun yarim davrlar; B .bayt 2*852*DL/1000 uchun yarim davrlar; C .bayt 2*941*DL/1000 uchun yarim davrlar; D .bayt 2*941*DL/1000 uchun yarim davrlar; *.bayt 2*941*DL/1000 uchun yarim davrlar; # uchun yarim sikl;******************************************** ********* ******************************** ; DTMF-TX DTMF quyi dasturi;************************************************ ******************************** DTMF_TX mov.b DTMF_NR,RTEMP ; Raqamni vaqtinchalik registrda saqlang mov.b DTMF_L(RTEMP),RCOUNT ; Davomiylik hisoblagichini saqlash; DTMF-Lo chastotasi uchun 8 bitli taymerni tayyorlang mov.b #0a8h,&TCCTL ; MCLK mov.b dan soat DTMF_LO(RTEMP),&TCPLD ; Ro'yxatga olishni tayyorlash; oldindan yuklash mov.b # 000, & TCDAT ; Hisoblagichni registrdan yuklash; oldindan yuklash bis.b # 008h, & IE1; Uzilishlarni yoqish; 8 bitli taymerdan; DTMF-Hi chastotasi rla r15 uchun taymer portini tayyorlash; * 16-bitli jadval mov uchun 2 DTMF_HI(RTEMP),&DTMF_TL ; yuqori chastotali mov uchun so'zni saqlang #003,RTEMP ; 8-bitli taymer uchun hisoblagich bis.b #008h,IE2 ; Uzilishlarni yoqish; taymer-portdan mov.b &DTMF_TH,&TPCNT2 ; Yuqori baytni TC2 mov.b ga yuklash &DTMF_TL,&TPCNT1 ; TC1 bis.b ga past bayt yuklanmoqda #080h,&TPD ; 16-bitli taymerni yoqish bis.b #HI_OUT+LO_OUT,&TPE ; DTMF-Hi/Lo chiqishlarini yoqish mov.b #090h,&TPCTL ; Taymerni yoqish;************************************************ ******** ******************************** ; Taymer-port uzilishi;************************************************ *** ******************************* TP_INT xor.b #HI_OUT,&TPD ; Invert DTMF-Hi chiqish mov.b &DTMF_TH,&TPCNT2 ; Katta ba. yuklanmoqda

3.2.2 1 Timer_A yordamida kvadrat to'lqinlarni hosil qilish

Ushbu DTMF signalini yaratish tartibi istalgan chastotalarni kvadrat to'lqinlash uchun faqat Timer_A dan foydalanadi. Yig'ish jarayoni MCLK chastotasi qiymatidan qat'i nazar, dasturdan foydalanish uchun taymer uchun tegishli qiymatlarni hisoblab chiqadi. Chiqish signalining davomiyligi millisekundlarda DL doimiysi bilan belgilanadi.

; Uskuna ta'riflari; FLLMPY .equ 32 ; Chastota multiplikatori FLL 1,048 MGts TCLK .equ FLLMPY*32768 ; TCLK: FLLMPY x f kvarts DL .equ 82 ; DTMF signalining davomiyligi milodiy; (65..100 ms) STACK .equ 600h ; Stackni ishga tushirish manzili; RAM ta'riflari; STDTMF .equ 202h ; Salom va past chastota holati TIM32B .equ 204 ; Taymer registrining kengaytmasi LENGTH .equ 206h ; DTMF davomiyligi hisoblagichi; .matn 0F000h ; Dasturning boshlang'ich manzili; ; Timer_A ishga tushirish: MCLK, Uzluksiz rejim, uzilishlar yoqilgan; Taymer chiqish modullarini tayyorlash Timer_A MCLK = 1,048 MGts (avtomatik) ; INIT MOV #STACK,SP ;Stek ko'rsatkichini ishga tushirish CALL #INITSR ;Ko'paytirgichni ishga tushirish; FLL chastotalari va RAM MOV #ISMCLK+TAIE+CLR,&TACTL; Taymerni ishga tushirish MOV.B #TA2+TA1,&P3SEL ; P3.5/4 CLR TIM32B portlarida TA2 va TA1 chiqadi; Kengaytirilgan taymer registrini tozalash BIS #MCONT,&TACTL ; Boshlash taymeri Timer_A EINT ; Umumiy uzilishni yoqish MAINLOOP ... ; Asosiy halqa; ;Klaviatura bosish: SDTMF jadval ofsetini o'z ichiga oladi; yuqori va past baytda 2 chastota (0..6,0..6) uchun; MOV&TAR,R5 ; Darhol boshlash uchun: ADD FDTMFLO,R5 ; Qisqaroq vaqt uchun ofset MOV R5, & CCR1 ; 0,71 ms dan keyin birinchi holat o'zgarishi MOV R5, & CCR2 ; 1/(2x697) = 0,71 ms MOV #OMT+CCIE, & CCTL1; Chiqish inversiyasi, bit uzilishi. MOV #OMT+CCIE, & CCTL2; Chiqishni teskari, uzilish bitini MOV.B STDTMF,R5 ; 82 milodiy hisoblagich RRA R5; pastki chastota holati o'zgarishlar soni MOV.B DTMFL(R5),LENGTH ; signal davomiyligi uchun... ; dasturni davom ettirish; ; CCR0 dan uzilish ishlovchisi (bu yerda ishlatilmaydi); TIMMOD0 ... RETI; ; Tugatish-qiyoslash registrlaridan uzilish ishlovchisi 1..4; TIM_HND QO'SHISH &TAIV,PC ; Eng yuqori so'rovni qayta ishlash; RETI ustuvorligi; uzilish so'rovi yo'q: RETI JMP HCCR1 ; CCR1 (DTMF past chastotasi) dan so'rov JMP HCCR2 ; CCR2 (DTMF yuqori chastotasi) dan so'rov JMP HCCR3 ; CCR3 JMP HCCR4 dan so'rov; CCR4 dan so'rov; TIMOVH INC TIM32B; Timer_A ni 32 bit RETI gacha kengaytirish; ; DTMF past chastotasi: TA1 1-chiqish birligining chiqishini o'zgartiradi; Har bir holat o'zgarishi signalning davomiyligini nazorat qilish uchun hisoblanadi; HCCR1 PUSH R5; Ishlatilgan registrlarni saqlash MOV.B STDTMF,R5 ; Past chastota holati DTMF ADD FDTMFLO(R5),&CCR1 ; Yarim davr davomiyligini qo'shing DEC.B LENGTH ; DL signalining davomiyligi tugallandimi? JNZ TARET; Yo'q; ; Ha, DTMF signalini to'xtating: uzilishlarni o'chiring; BIC #OMRS+OUT+CCIE,&CCTL1; TA1 BIC #OMRS+OUT+CCIE,&CCTL2 ni tiklash; TA2 TARET POP R5 ni tiklash; R5 RETI ni tiklash; Uzilishdan qaytish; ; Yuqori chastotali DTMF: TA2 2-chiqish blokining chiqishini o'zgartiradi; HCCR2 PUSH R5; Ishlatilgan MOV registrlarini saqlash. B STDTMF+1,R5; Yuqori chastota holati DTMF ADD FDTMFHI(R5),&CCR2; POP R5 yarim davr davomiyligini qo'shing; R5 RETI-ni tiklash; Uzilishdan qaytish; HCCR3 ... ;Vazifa CCR3 RETI registri bilan boshqariladi HCCR4 ... ;Vazifa CCR4 RETI registri bilan boshqariladi ; ; DTMF chastotalar jadvali: Jadvalda; yarim sikl uchun MCLK tsikllari soni. Qiymatlar uchun sozlangan; yig'ish jarayonida samarali chastota MCLK; va minimal darajaga yaxlitlanadi mumkin bo'lgan xato chastotalar; FDTMFLO .word ((TCLK/697)+1)/2 ; Past chastotali DTMF 697Hz .word ((TCLK/770)+1)/2 ; 770Hz .so'z ((TCLK/852)+1)/2 ; 852Hz .so'z ((TCLK/941)+1)/2 ; 941Hz FDTMFHI .so'z ((TCLK/1209)+1)/2 ; Yuqori chastotali DTMF1209Hz .word ((TCLK/1336)+1)/2 ; 1336Hz .so'z ((TCLK/1477)+1)/2 ; 1477Hz .so'z ((TCLK/1633)+1)/2 ; 1633 Gts; ; Jadvalda DL signalining davomiyligi (ms) uchun yarim davrlar soni mavjud. ; Hisoblash uchun pastki DTMF chastotasi ishlatiladi; DTMFL .bayt 2*697*DL/1000; Yarim sikllar soni.bayt 2*770*DL/1000 ; ms.baytda DL uchun 2*852*DL/1000 ; .bayt 2*941*DL/1000; ; .sect "TIMVEC",0FFF0h ; Taymer uzilish vektorlari Timer_A .so'z TIM_HND ; Modullar vektori 1..4 taymer.word TIMMOD0 ; Taymer moduli 0 vektor.sect "INITVEC",0FFFEh ; Vektor Qayta o'rnatish.so'z INIT

Quyida biroz tezroq yechim mavjud. Biroq, u ko'proq RAM talab qiladi, chunki ... Jadvallardan olingan ma'lumotlar har safar qayta hisoblanmaydi, lekin qisqacha DTMFLO va DTMFHI operativ xotirasida saqlanadi. O'qish Timer_A taymerining uzilish tartiblaridan amalga oshiriladi. Amaldagi jadvallar oldingi misolda ko'rsatilganlarga o'xshash.

FLLMPY .equ 32 ; Chastota multiplikatori FLL 1,048 MGts TCLK .equ FLLMPY*32768 ; TCLK: FLLMPY x f kvarts DL .equ 82 ; DTMF signalining davomiyligi; milodiy (65..100 ms) da STDTMF .equ 202h ; Salom va past chastota holati TIM32B .equ 204 ; Taymer registrining kengaytmasi LENGTH .equ 206h ; DTMF davomiyligi hisoblagichi DTMFLO .equ 208h ; Pastki chastotali DTMFHI ning yarim davri .equ 20Ah; Yuqori chastotali yarim sikl STACK .equ 600h ; Stackni ishga tushirish manzili.text 0F000h ; Dasturning boshlang'ich manzili; Timer_A ishga tushirish: MCLK, Uzluksiz rejim, uzilishlar yoqilgan; Taymer chiqish modullarini tayyorlash Timer_A MCLK = 1,048 MGts (avtomatik) ; INIT MOV #STACK,SP ; Stack ko'rsatkichini ishga tushirish CALL #INITSR ; Multiplikatorni ishga tushirish; FLL chastotalari va RAM MOV #ISMCLK+TAIE+CLR,&TACTL; Taymerni ishga tushirish MOV.B #TA2+TA1,&P3SEL ; P3.5/4 CLR TIM32B portlarida TA2 va TA1 chiqadi; Kengaytirilgan taymer registrini tozalash BIS #MCONT,&TACTL ;Taymerni ishga tushirish_A EINT ; Umumiy uzilishni yoqish MAINLOOP ... ; Asosiy tsikl;Klaviaturani bosish: SDTMF jadval ofsetini o'z ichiga oladi; yuqori va past baytda 2 chastota (0..6,0..6) uchun; MOV&TAR,R5 ; Darhol boshlash uchun FDTMFLO, R5 qo'shing; Qisqaroq vaqt uchun ofset MOV R5, & CCR1 ; 0,71 ms dan keyin birinchi holat o'zgarishi MOV R5, & CCR2 ; 1/(2x697) = 0,71 ms; ; DTMF chastotalari uchun ikkita sikl hisobini oling; MOV.B STDTMF+1,R5 ; Yuqori chastotali DTMF MOV FDTMFHI(R5),DTMFHI; Yarim davr davomiyligi MOV.B STDTMF,R5 ; Past chastotali DTMF MOV DTMFLO(R5),DTMFLO ; Yarim tsiklning davomiyligi; ; Davomiylik hisoblagichi RRA R5; Bayt indeksini tayyorlang MOV.B DTMFL(R5),LENGTH ; pastki chastota holati o'zgarishlar soni MOV # OMT + CCIE, & CCTL1 ; Chiqish inversiyasi, bit uzilishi. MOV #OMT+CCIE, & CCTL2; Chiqish inversiyasi, bit uzilishi. ... ; Asosiy tsiklga qaytish; ; CCR0 dan uzilish ishlovchisi (bu yerda ishlatilmaydi); TIMMOD0 ... RETI; ; Tugatish-qiyoslash registrlaridan uzilish ishlovchisi 1..4; TIM_HND QO'SHISH &TAIV,PC ; Eng yuqori so'rovni qayta ishlash; RETI ustuvorligi; uzilish so'rovi yo'q: RETI JMP HCCR1 ; CCR1 (DTMF past chastotasi) dan so'rov JMP HCCR2 ; CCR2 (DTMF yuqori chastotasi) dan so'rov JMP HCCR3 ; CCR3 JMP HCCR4 dan so'rov; CCR4 dan so'rov; TIMOVH INC TIM32B; Timer_A ni 32 bit RETI gacha kengaytirish; ; DTMF past chastotasi: TA1 1-chiqish birligining chiqishini o'zgartiradi; HCCR1 AQSH DTMFLO, & CCR1 ; Yarim davr davomiyligini qo'shing DEC.B LENGTH ; DL signalining davomiyligi tugallandimi? JNZ TARET; Yo'q; ; Ha, DTMF signalini to'xtating: uzilishlarni o'chiring; BIC #OMRS+OUT+CCIE,&CCTL1; TA1 BIC #OMRS+OUT+CCIE,&CCTL2 ni tiklash; TA2 TARET RETI ni tiklash; Uzilishdan qaytish; Yuqori chastotali DTMF: TA2 2-chiqish blokining chiqishini o'zgartiradi; HCCR2 DTMFHI qo'shish, & CCR2 ; Yarim davr davomiyligini qo'shing RETI ; Uzilishdan qaytish; HCCR3. .. ;Vazifa CCR3 RETI HCCR4 registri bilan boshqariladi ... ;Vazifa CCR4 RETI registri bilan boshqariladi ; ; Uzilish jadvallari va vektorlari oldingi misolda ko'rsatilganlarga o'xshash.

3.3 DTMF signallarini ishlab chiqarish uchun uskunalar

Yuqorida aytib o'tilganidek, 200 Hz.. 4600 Hz chastota diapazonida uzatish chastotasining signal darajasi tashqi signallar (shovqin) darajasidan kamida 20 dB bo'lishi kerak. Bundan tashqari, spetsifikatsiyaga asoslanib, "yuqori" va "pastki" guruhlarning signallari turli darajalarga ega bo'lishi kerak, shuning uchun har bir signal o'z filtrini talab qiladi. Sinusoidal chastota amplitudalarini Furye seriyasidan olish mumkin.

Analog filtrni loyihalashda kesish chastotalarini tanlash uchun siz quyidagi talablarga rioya qilishingiz kerak:

  • Chunki "pastki" guruh chastotalarining "yuqori" guruh chastotalari bilan har qanday kombinatsiyasi imkoniyatini ta'minlash kerak, guruhdagi eng past va eng yuqori chastotalar o'rtasidagi darajadagi farq 3 dB dan oshmasligi kerak.
  • Guruhdagi eng past chastota uchun (f1) harmonik bostirish (3f1) 20 dB dan kam bo'lmasligi kerak. Ushbu shartning bajarilishi guruhdagi past chastotalar uchun eng muhim hisoblanadi, chunki u filtrni kesish chastotasidan iloji boricha uzoqroqda joylashgan.

Formula n-tartibdagi yuqori o'tkazuvchan Butterworth filtrining chiqishidagi mutlaq qiymatning kvadratini tavsiflaydi:

Ushbu formula Butterworth yuqori o'tkazuvchan filtri daromadining chastotaga bog'liqligini ifodalaydi. fg va n parametrlari mos ravishda filtrning kesish chastotasi va tartibini aniqlaydi.

Avvalo, yuqoridagi talablarga muvofiqligini hisobga olgan holda, kerakli filtr tartibini hisoblash kerak.

Birinchi shartni qondirish uchun guruhdagi eng past va eng yuqori chastotalarning mutlaq qiymatlari kvadratlarining nisbati 3 dB dan oshmasligi kerak yoki:

Ikkinchi shart, agar f1 va 3f1 chastotalarining mutlaq qiymatlari kvadratlarining nisbati 10/3 dan ortiq bo'lsa, avtomatik ravishda qondiriladi, bu holda to'rtburchaklar signaldagi uchinchi harmonik 1/3 ga kam bo'ladi (Qarang: Furye qator va 2-rasm):

Ikkala guruhning chastotalari uchun hisob-kitoblar natijasida biz kerakli filtrlash tartibiga ega bo'lamiz n=1,15. Shunday qilib, talablar operatsion kuchaytirgichda qurilishi mumkin bo'lgan 2-darajali filtr tomonidan qondiriladi. Agar siz uchinchi tartibli filtrdan foydalansangiz, sizga faqat ikkita qo'shimcha element kerak bo'ladi. Biroq, bu komponent parametrlarining tarqalishiga bo'lgan talablarni kamaytiradi. Agar kesish chastotasi quyidagi chegaralar ichida bo'lsa, yuqoridagi ikkala talab ham qondiriladi:

Pastki guruh fg>880 Hz fg<1418 Гц
Yuqori guruh fg>1527 Hz fg<2460 Гц

Agar kesish chastotasi minimal bo'lsa, maksimal garmonik pasayish sodir bo'ladi. Biroq, bu holda guruhdagi eng past va eng yuqori chastotalar orasidagi farq 3 dB bo'ladi. Mumkin bo'lgan eng yuqori kesish chastotasida daraja farqi minimal, ammo harmonik komponentlar faqat 20 dB bilan bostiriladi.

Filtrni hisoblashda harmonik bostirishga katta e'tibor berildi, guruh ichidagi darajadagi farq 2 dB ga o'rnatildi. Natijada, o'chirish chastotalari 977 Gts va 1695 Gts ni tashkil qiladi. Olingan harmonik bostirish talablardan sezilarli darajada oshadi. Guruhdagi chastotalar darajasidagi farq, ishlatiladigan komponentlarning parametrlarida tarqalish bilan bog'liq bo'lgan kesish chastotasining og'ishida ham talablar doirasida bo'ladi. Filtr elementlarining qiymatlarini hisoblashda rezistorlar E12 seriyasining standart qiymatlariga maksimal yaqinligi asosida tanlangan.

Filtrning chiqishlarida natija sezilarli darajada bostirilgan harmoniklarga ega bo'lgan ikkita sinusoidal signaldir. Ushbu signallarni birlashtirish uchun qo'shimcha qo'shimcha kiritiladi.

Shunday qilib, faqat 3 ta op-amp va bir nechta passiv elementlardan foydalangan holda, biz muhim hisoblash resurslaridan foydalanmasdan mikrokontroller yordamida DTMF signallarini yaratishimiz mumkin.

Simulyator dasturlari yordamida taxminiy qiymatlar tekshirildi. Filtrlarning javobi hisoblangan chastota javobiga juda mos keladi.


Guruch. 6: 3-darajali filtr chiqishida 697 Gts chastotali to'rtburchak signalning amplituda spektri

Shaklda. 6-rasmda 3-tartibli filtrdan o'tgan chastotasi 697 Gts bo'lgan to'rtburchaklar signalning amplituda spektri ko'rsatilgan. Rasmdan ko'rinib turibdiki, uchinchi va beshinchi harmonikalar (2091 Hz va 3485 Hz) sezilarli darajada zaiflashadi (-25,6 dB).


Guruch. 7: 3-darajali filtr chiqishida 941 Gts chastotali to'rtburchak signalning amplituda spektri

Shaklda. 7-rasmda 941 Gts chastotali kvadrat to'lqin signalining spektri ko'rsatilgan. Bizni qiziqtiradigan chastota mintaqasida 4600 Gts gacha, faqat bitta harmonik mavjud. Filtrdan o'tgandan so'ng, bu 2823 Hz harmonik sezilarli darajada zaiflashadi (-27,9 dB). Guruhdagi eng past va eng yuqori chastotalar orasidagi daraja farqi 1,9 dB dan oshmaydi.

Parametrlarning yuqori o'zgarishiga ega bo'lgan arzon komponentlardan foydalanish uchun qo'shimcha modellashtirish amalga oshirildi. Simulyatsiya natijalari shuni ko'rsatdiki, rezistorlar va kondansatkichlar qiymatlarida ruxsat etilgan tarqalish 10% ni tashkil qiladi.


8-rasm: Histogramma - guruhdagi signal darajalarining taqsimlanishi


9-rasm: Gistogramma - Garmonik bostirish

Shaklda. 8 va 9 Monte-Karlo tahlili yordamida olingan histogrammalarni ko'rsatadi. Bunday holda, komponent qiymatlari 10% tarqalish doirasida tasodifiy o'zgargan. 100 marta takrorlangandan so'ng, barcha simulyatsiya qilingan filtrlar natijalari gistogrammalarda chiziladi. Shakldagi gistogrammada. 8-rasmda guruh ichidagi chastotalar orasidagi darajadagi farq ko'rsatilgan. Minimal va maksimal chastotalar o'rtasidagi 3 dB maksimal ruxsat etilgan farq hech qanday holatda erishilmadi. O'rtacha qiymat 1,6 dB ni tashkil qiladi, bu 2 dB hisoblangan qiymatdan biroz yaxshiroq.

Shaklda. 9-rasmda "pastki" chastotalar guruhi uchun harmoniklarning susayishi ko'rsatilgan. 20 dB talab qilinadigan qiymat barcha holatlarda erishiladi, o'rtacha qiymat taxminan 27 dB ni tashkil qiladi. Eng yomon holatda, harmonik 24,2 dB tomonidan bostiriladi.

"Quyi" chastota guruhi filtri uchun hisoblangan qiymatlar "yuqori" chastota guruhi filtri uchun ham amalga oshiriladi.

Ikkala filtr ham bir xil sxemaga ega. Faqatgina farq yuqori va pastki chastotali guruhlar uchun filtrlarning kesish chastotalarida. R1 va C1 1-darajali yuqori o'tkazuvchan filtrni tashkil qiladi. Chunki sxemaning kirish qarshiligi ham R1 ga bog'liq, bu elementning qiymati juda kichik bo'lmasligi kerak; aks holda, mikrokontroller chiqishlari ortiqcha yuklanadi va kvadrat to'lqin shakli buziladi. Bunday holda, intermodulyatsiya buzilishidan kelib chiqadigan qo'shimcha chastotalar signalga qo'shiladi, bu signal-shovqin nisbatiga salbiy ta'sir qiladi.

Yuqori tartibli filtrlarning uzatish funksiyasini faqat passiv komponentlar yordamida olish mumkin emas.

Shunday qilib, 2-tartibli filtrda op-amp bo'lishi kerak. R1-1 va R1-2 rezistorlari yordamida faol filtrning daromadi 0,2 ga o'rnatiladi. Ko'rib turganingizdek, signal biroz zaiflashgan. Bu op-ampni ortiqcha yuklamaslik uchun kerak, chunki kvadrat to'lqin signalining asosiy sinusoidal harmonikasining eng yuqori amplitudasi kvadrat to'lqin signalining amplitudasidan oshib ketadi (Qarang: Furye seriyasi va 2-rasm). Qo'shimcha to'ldiruvchi kerakli chiqish darajasini sozlaydi. To'rtburchak signalning doimiy komponenti tufayli op-ampning ish nuqtasi Vcc / 2 darajasida o'rnatiladi (Shuningdek, Fourier seriyali va 2-rasmga qarang). Bunday holda, doimiy komponentni R1-1 / R1-2 kirish bo'linmasi bilan bartaraf etish mumkin emas. OS pallasini doimiy kuchlanish bilan ajratish uchun C3 kondansatörü ishlatiladi.

Analog filtrning har bir chiqishida mos ravishda yuqori va pastki chastotali guruhlarning signali hosil bo'ladi. Qo'shimcha qo'shimchada bu signallar qo'shiladi. Ushbu elektron elementda R4 va R5 rezistorlari yordamida umumiy signaldagi "pastki" va "yuqori" chastotalar va chiqish signali darajasi o'rtasidagi munosabatni o'rnatishingiz mumkin. Shunday qilib, chiqish amplitudasi turli mamlakatlardagi turli talablarga mos ravishda osongina sozlanishi mumkin.

Komponent qiymatlarini hisoblashda kondansatör qiymatlari odatdagidek o'zgarmas edi va qarshilik qiymatlari ularga muvofiq hisoblab chiqildi. Ushbu sxemada standart E12 seriyali kondansatörler va rezistorlar 10% tarqalishi bilan ishlatilgan.

Shaklda. 10-rasmda analog filtrlar va biriktiruvchining sxematik diagrammasi ko'rsatilgan:


Guruch. 10: Sxematik diagramma qo'shimcha qo'shimchali analog filtrlar

C1-1 va C1-2 kondansatkichlari ikkita signalni Vcc/2 ish nuqtasida birlashtiradi. Ushbu elementlar uchun juda katta qiymatlarni tanlamaslik kerak, chunki ular past chastotali subharmoniklarni yo'q qilish uchun past chastotali filtr elementlari. Filtr kondansatörü C5 mos yozuvlar kuchlanish shovqinini yo'q qiladi. R6 teskari rezistoriga parallel ravishda ulangan qo'shimcha kondansatör C6 birinchi darajali yuqori o'tkazuvchan filtrni hosil qiladi. Eng past filtrni kesish chastotasi tanlangan bo'lsa, yuqori chastotali intermodulyatsiya aralashuvining qo'shimcha filtrlanishi chiqish signalining sifatini yaxshilaydi, ammo "yuqori" guruhning eng yuqori chastotalarining biroz susayishi bo'ladi. Ba'zi hollarda, 1633 Gts eng yuqori DTMF chastotasini yaratish kerak emas, chunki u faqat A-D xizmat belgilarini shakllantirish uchun ishlatiladi va signal-shovqin nisbati filtrni kesish chastotasini pasaytirish orqali yaxshilanishi mumkin. Shunday qilib, kesish chastotasini oshirish yuqori chastotali shovqin darajasining oshishiga olib keladi, lekin ayni paytda DTMF signalining eng yuqori chastotali komponentlariga salbiy ta'sir kamayadi.

4 DTMF uzatuvchi signallarini o'rganish natijalari

Quyidagi spektrogrammalar (11 va 12-rasm) turli chastotalarda DTMF transmitterining chiqish signallarini ko'rsatadi. Shaklda. 11-rasmda "1" belgisining amplituda spektri ko'rsatilgan. Uning uzatilishi uchun zarur bo'lgan chastotalar - 697 va 1207 Hz - mos ravishda -10,5 dB va -8,5 dB darajasida. 2091 va 3621 Gts chastotadagi harmoniklar deyarli 30 dB bilan bostiriladi. "D" belgisini uzatish uchun ikkita eng yuqori chastotalar hosil bo'ladi - 941 va 1633 Gts. Shakldan ko'rinib turibdiki. 12, past chastota darajasi -12 dB, yuqori chastota darajasi -11 dB. Tegishli harmonikalar 30 dB dan ortiq zaiflashadi. Shunday qilib, o'lchangan qiymatlar simulyatsiya natijalari va spetsifikatsiya talablariga mos keladi.


Guruch. 11: “1” belgisining amplituda spektri: 697 va 1207 Gts


Guruch. 12: “D” belgisining amplituda spektri: 941 va 1633 Gts

Ikki xil taymerdan foydalanganda hosil qilingan kvadrat to'lqin signallarining mutlaq chastota aniqligiga erishib bo'lmaydi; natija ikki chastotaning kombinatsiyasiga va ishlatiladigan taymerlar turiga bog'liq bo'ladi. Buning sababi - taymer uzilishlari to'qnashuvi. Shu bilan birga, ± 1,8% talab qilinadigan aniqlik katta marj bilan bajariladi.

Agar 8 bitli taymer va Timer Port taymer MCLK 1,048 MGts tizim chastotasida ishlatilsa, u holda "pastki" guruhning chastotalari 0,3% dan kam bo'lmagan aniqlik bilan hosil bo'ladi. "Yuqori" guruhning chastotalari uchun amalda 0,5% dan ko'p bo'lmagan og'ish olindi.

Faqat istisno bu DTMF belgisi "D" bo'lib, ular uchun eng yuqori chastotalar hosil bo'ladi. Natijada, bu kombinatsiyada "yuqori" guruhning chastotasi 1633 Hz -0,97% og'ish.

Ushbu istisnosiz, hatto 1633 Gts eng yuqori chastotasi ham 0,5% dan yuqori aniqlik bilan ishlab chiqariladi. Turli chastotalar uchun maksimal og'ishlar jadvalda keltirilgan:

Agar chastotalarni yaratish uchun Timer_A ishlatilsa, xato MCLK chastotasiga bog'liq bo'ladi:

MCLK, MGts 1,048 2,096 3,144 3,800
FLL multiplikatori 32 64 96 116
697 Gts +0,027% +0,027% +0,027% +0,027%
770 Gts -0,015% -0,016% +0,033% -0,016%
852 Gts +0,059% -0,023% +0,005% +0,031%
941 Gts +0,029% +0,029% +0,029% +0,035%
1209 Gts -0,079% +0,036% +0,036% -0,003%
1336 Gts +0,109% -0,018% +0,025% +0,025%
1447 Gts -0,009% -0,009% -0,009% -0,009%
1633 Gts +0,018% +0,018% +0,018% +0,018%

5 Xulosa

Ushbu misol uchun dasturiy ta'minot juda oddiy va taxminan 300 baytni egallaydi, kichik hajmdagi RAM va ROMni talab qiladi. O'rnatilgan taymer moduli tufayli kerakli chastotalar protsessor yukini behuda sarf qilmasdan yuqori aniqlik bilan ishlab chiqariladi. Ishlab chiqarish uchun 8 bitli taymer va taymer/port ishlatiladigan konfiguratsiyada uzilish tartiblari protsessor resursining taxminan 12% ni egallaydi. Chastotalar Timer_A taymer tomonidan yaratilgan bo'lsa, uzilishlar tartiblarini qayta ishlash uchun CPU yuki 6% gacha kamayadi. Natijada, DTMF signallari uzatilayotganda boshqa vazifalar ishlayotgan bo'lishi mumkin yoki oqim sarfini kamaytirish uchun CPU kam quvvat rejimiga o'tkazilishi mumkin.

Kvadrat to'lqin signallari yordamida DTMF signallarini yaratish uchun tavsiflangan modulning yaxshi funksionalligi apparat sxemasi dizayni bilan ko'rsatilgan. Chunki Sxemada keng parametrlarga ega bo'lgan komponentlardan foydalanish mumkin, bunday yechimning narxi juda past. Barcha spetsifikatsiya talablari katta darajada qondiriladi, shuning uchun MSP430 ni boshqaruvchi boshqaruvchi sifatida ishlatadigan asboblarda alohida DTMF signal generator moduli talab qilinmaydi.

Agar ma'lum bir holatda qo'shimcha op-amp yordamida signal-shovqin nisbatini oshirish zarur bo'lsa, intermodulyatsiya buzilishini yanada bostirish uchun filtr qurilishi mumkin. Bunday qo'shimcha operatsion kuchaytirgich allaqachon DIL14 paketidagi to'rtta op-ampda mavjud.

6 havola

Bundesamt fur Post und Telekommunikation (Pochta va telekommunikatsiyalar federal idorasi): BAPT 223 ZV 5, Zulassungsvorschrift fur Endeinrichtungen zur Anschaltung va Wahlanschlusse (ausgenommen Notruf- und Durchwahlanschlusse) (ausgenommen Notruf- und Durchwahlanschlusse) uchun maxsus telefon tarmog'iga ulangan telefon tarmog'i uchun terminallar. xavfsizlik va qo'ng'iroq talablari) / Deutschen Bundespost Telekom ISDN; Bundesministerium fur Post und Telekommunikation, Draft, Bonn, Aprel 1994 Papula: Mathematik fur Ingenieure 2 (muhandislar uchun matematika); Vieweg Verlag, Braunschweig 1990 Tietze / Schenk: Halbleiterschaltungstechnik; (Titze/Schenk, Semiconductor Circuit Engineering), 10-nashr; Springer Verlag, Berlin 1993 Lutz Bierl / Texas Instruments: MSP430 oilasi, oʻlchash qoʻllanmasi hisoboti, Texas Instruments, 2.1-son, 1997 yil yanvar, SLAAE10B Texas Instruments: MSP430 oilasi, arxitektura foydalanuvchi qoʻllanmasi va modul kutubxonasi, Texas1, SLA1960 modullari MSP430 oilasi, Software User's Guide, Texas Instruments, 1996 Texas Instruments: MSP430 Family, Assembly Language Tools User's Guide, Texas Instruments, 1996 Siwy, Robert: Systementwicklung einer Telekom-Applikation zum Senden und Empfangen-Sign SPControl D0F MSP430 mikrokontrolleri asosida raqamli signallarni qabul qilish va uzatish uchun telekommunikatsiya tizimi; Diplomarbeit, Fachhochschule Landshut, 1997 yil may

Oddiy qurilmalar mavzusida men bir xil ATtiny2313 yordamida DTMF signal generatorini yig'ishga qaror qildim. Bilmaydiganlar uchun DTMF (Dual-Tone Multi-Frequency) telefon raqamini terish uchun ishlatiladigan ikki rangli ko'p chastotali analog signaldir. Vikipediyani o'qing.

Bunday qurilmani yig'ish qarori mikrokontroller yordamida murakkab analog signallarni amalga oshirishga harakat qilish istagi bilan bog'liq. Ushbu qurilma uchun amaliy foydalanish rejalashtirilmagan, lekin ehtimol kimdir bunday qurilmani foydali deb topadi? Buni ishlat!

DTMF generator manbai


Keling, nima borligini ko'rib chiqaylik.

Signal PWM yordamida ishlab chiqariladi va unga kerakli shaklni berish uchun RC sxemasidan foydalaniladi. Natijada, RC zanjiridan keyin biz quyidagi signalni olamiz (6-tugma bosiladi):

Foydali signalning butun egri chizig'i bo'ylab biz yuqori chastotali taroqni kuzatamiz (chastota eshitiladigandan yuqori, shuning uchun u shovqin yaratmaydi) - bu RC sxemasining ishi. Kondensatorning sig'imini yoki rezistorning qarshiligini oshirish orqali chiziqni silliqroq qilishingiz mumkin, ammo bu holda foydali signalning diapazoni sezilarli darajada kamayadi.

Biz signalning spektriga qaraymiz va ikkita alohida chastota mavjudligiga ishonch hosil qilamiz (PWM chastotasi displey maydonidan tashqariga chiqdi), bu hamma narsa yaxshi ekanligini anglatadi - qurilma kerak bo'lganda ishlaydi.

Tayyor echimlar

DTMF signalini yaratish va dekodlash vazifalari uchun tayyor echimlar mavjud. Mana bu mikrosxemalar uchun bir nechta ma'lumotlar jadvallari.

DTMF generatori
- DTMF dekoderi


P.S. ATtiny2313-da ADC yo'qligi achinarli - siz DTMF dekoderidan ham foydalanishingiz mumkin! Lekin hammasi yaxshi, men uni mega-da takrorlayman, men uni albatta biriktiraman.

(6,868 marta tashrif buyurilgan, bugun 1 marta tashrif buyurilgan)

Tone terish (Dual-tone multi-frequency signaling, DTMF) o'tgan asrning 50-yillarida Bell Labs tomonidan o'sha paytdagi inqilobiy tugmachali telefon uchun ishlab chiqilgan. Raqamli ma'lumotlarni ohang rejimida ko'rsatish va uzatish uchun nutq chastotasi diapazonining bir juft chastotasi (tonlari) ishlatiladi. Tizim to'rt chastotali ikkita guruhni belgilaydi va ma'lumotlar bir vaqtning o'zida ikkita chastotani, har bir guruhdan bittadan uzatish orqali kodlanadi. Bu o'n olti xil raqamlar, belgilar va harflarni ifodalash uchun jami o'n olti kombinatsiyani beradi. DTMF kodlash hozirda keng doiradagi aloqa va boshqaruv dasturlarida qo'llanilmoqda, masalan, Xalqaro elektraloqa ittifoqining (XEI) Q.23 tavsiyanomasi tasdiqlaydi.

Ushbu maqola barcha sakkiz chastotani takrorlaydigan va natijada ikki tonnali chiqish signalini yaratadigan DTMF ohang generatorining sxemasini tasvirlaydi. Ko'rib chiqilayotgan tizim Silego GreenPAK™ SLG46620V chipida qurilgan va operatsion kuchaytirgichlar Silego SLG88104V. Olingan signal telefon klaviaturasining satri va ustuni tomonidan aniqlangan ikkita chastota yig'indisidir.

Taklif etilayotgan sxema hosil qilinadigan chastota birikmasini tanlash uchun to'rtta kirishdan foydalanadi. Sxema, shuningdek, generatsiyani ishga tushiradigan va signalning uzatilish vaqtini aniqlaydigan faollashtiruvchi kirishga ega. Generatorning chiqish chastotasi DTMF uchun ITU standartiga mos keladi.

DTMF ohanglari

DTMF standarti 0-9 raqamlari, A, B, C va D harflari hamda * va # belgilarining kodlanishini ikkita chastota birikmasi sifatida belgilaydi. Ushbu chastotalar ikki guruhga bo'linadi: yuqori chastotali guruh va past chastotali guruh. 1-jadvalda chastotalar, guruhlar va tegishli belgilar ko'rinishlari ko'rsatilgan.

1-jadval. DTMF ohangini kodlash

Trebl guruhi

Past o'tish guruhi

Chastotalar bir nechta harmoniklardan qochish uchun tanlangan. Bundan tashqari, ularning yig'indisi yoki farqi boshqa DTMF chastotasini keltirib chiqarmaydi. Shunday qilib, harmonika yoki modulyatsiya buzilishining oldini oladi.

Q.23 standarti har bir uzatiladigan chastotaning xatosi nominal qiymatdan ± 1,8% oralig'ida bo'lishi kerakligini va umumiy buzilish (harmonika yoki modulyatsiya tufayli) asosiy chastotalardan 20 dB past bo'lishi kerakligini belgilaydi.

Yuqorida tavsiflangan natijaviy signalni quyidagicha ta'riflash mumkin:

s(t) = Acos(2pfhight)+ Acos(2pflowt),

bu erda fhigh va oqim yuqori va past chastotali guruhlardan mos keladigan chastotalardir.

1-rasmda "1" raqami uchun olingan signal ko'rsatilgan. 2-rasmda ushbu signalga mos keladigan chastota spektri ko'rsatilgan.

Guruch. 1. DTMF ohangi

Guruch. 2. DTMF ohang spektri

DTMF ohanglarining davomiyligi ohang kodlashdan foydalanadigan maxsus dasturga qarab farq qilishi mumkin. Eng keng tarqalgan ilovalar uchun muddat qiymatlari odatda qo'lda va avtomatik terish o'rtasida bo'ladi. 2-jadvalda ikkita ishga qabul qilish turi uchun odatiy vaqt uzunligining qisqacha tavsifi ko'rsatilgan.

2-jadval. Ohangli terish signallarining davomiyligi

Terish turi

Trebl guruhi

Trebl guruhi

Qo'lda terish

Avtomatik terish

Ko'proq moslashuvchanlikni ta'minlash uchun ushbu qo'llanmada taqdim etilgan DTMF generatori signal ishlab chiqarishni boshlash va uning davomiyligini aniqlash uchun ishlatiladigan yoqish kiritish bilan jihozlangan. Bunday holda, signalning davomiyligi faollashtirilgan kirishdagi impulsning davomiyligiga teng.

DTMF generator sxemasining analog qismi

XEI Q.23 tavsiyasi DTMF signallarini ikkita sinus to'lqinlar tomonidan yaratilgan analog signallar sifatida belgilaydi. Tavsiya etilgan DTMF generator pallasida Silego GreenPAK SLG46620V IC kerakli DTMF chastotalari bilan kvadrat to'lqinli signallarni hosil qiladi. Kerakli chastotali sinusoidal signallarni olish va natijada olingan signalni (ikkita sinusoidal to'lqinlar yig'indisi) hosil qilish uchun analog filtrlar va toplayıcı kerak. Shu sababli, ushbu loyihada SLG88104V operatsion kuchaytirgichlari asosidagi filtrlar va kombaynlardan foydalanishga qaror qilindi.

3-rasmda qurilmaning tavsiya etilgan analog qismining tuzilishi ko'rsatilgan.

Guruch. 3. DTMF signalini qabul qilish uchun analog ishlov berish sxemasi

Analog filtrlar to'rtburchak impulslardan sinusoidal signallarni olish uchun ishlatiladi. Filtrlash amalga oshirilgandan so'ng, ikkita signal yig'iladi va kerakli chiqish ikki rangli DTMF signali hosil bo'ladi.

4-rasmda kvadrat to'lqin signalining spektrini olish uchun foydalanilgan Furye transformatsiyasining natijasi ko'rsatilgan.

Guruch. 4. Kvadrat to'lqin signalining spektri

Ko'rib turganingizdek, kvadrat to'lqin faqat g'alati harmonikani o'z ichiga oladi. Agar amplitudasi A bo'lgan bunday signalni Furye qatori ko'rinishida ifodalasak, u quyidagi ko'rinishga ega bo'ladi:

Ushbu ifodani tahlil qilish, agar analog filtrlar harmoniklar uchun etarli darajada zaiflashuvga ega bo'lsa, u holda asl kvadrat to'lqin signalining chastotasiga teng chastotali sinusoidal signallarni olish juda mumkin degan xulosaga kelishimizga imkon beradi.

Q.23 standartida belgilangan shovqin darajasining bardoshliligini hisobga olgan holda, barcha harmoniklarning 20 dB yoki undan ko'proq zaiflashishini ta'minlash kerak. Bundan tashqari, past chastotali guruhning har qanday chastotasi yuqori o'tish guruhining har qanday chastotasi bilan birlashtirilishi kerak. Ushbu talablarni hisobga olgan holda, har bir guruh uchun bittadan ikkita filtr ishlab chiqildi.

Ikkala filtr ham past chastotali Butterworth filtrlari edi. Butterworth filtri buyurtmasining susayishi quyidagicha hisoblanishi mumkin:

A(f)[dB] = 10 log(A(f) 2) = 10log(1+(f/fc) 2n),

Bu erda fc - filtrni kesish chastotasi, n - filtrlash tartibi.

Har bir guruhning eng past chastotasi va eng yuqori chastotasi o'rtasidagi zaiflashuvdagi farq 3 dB dan oshmasligi mumkin, shuning uchun:

A(fYUQOR)[dB] - A(FLOWER)[dB] > 3 dB.

Berilgan mutlaq qiymatlar:

A(fYUQOR) 2 / A(gul) 2 > 2.

Bundan tashqari, yuqorida aytib o'tganimizdek, harmonik zaiflashuv 20 dB yoki undan ko'p bo'lishi kerak. Bunday holda, eng yomon holat guruhdagi eng past chastota bo'ladi, chunki uning 3-harmonikasi eng past chastotadir va filtrni kesish chastotasiga eng yaqin. 3-harmonik asosiydan 3 baravar kam ekanligini hisobga olsak, filtr shartga javob berishi kerak (mutlaq qiymatlar):

A(3fLOWER) 2 / A(gul) 2 > 10/3.

Agar ushbu tenglamalar ikkala guruhga ham qo'llanilsa, ishlatiladigan filtrlar ikkinchi tartibli filtrlar bo'lishi kerak. Bu shuni anglatadiki, agar op-amplar yordamida amalga oshirilsa, ular ikkita rezistor va ikkita kondansatörga ega bo'ladi. Agar uchinchi tartib filtrlari ishlatilsa, komponentlarning tolerantliklariga nisbatan sezgirlik past bo'lar edi. Tanlangan filtrni kesish chastotalari past chastotali guruh uchun 977 Gts va yuqori o'tish guruhi uchun 1695 Gts ni tashkil qiladi. Ushbu qiymatlarda chastota guruhlaridagi signal darajalaridagi farqlar yuqoridagi talablarga mos keladi va komponentlarning tolerantliklari tufayli kesish chastotasining o'zgarishiga sezgirlik minimaldir.

SLG88104V yordamida amalga oshirilgan filtrlarning sxematik diagrammalari 5-rasmda keltirilgan. Birinchisining reytinglari R-C juftlari SLG46620V chipining chiqish oqimini cheklaydigan tarzda tanlangan. Ikkinchi filtr aloqasi daromadni aniqlaydi, bu 0,2 ga teng. Kvadrat to'lqin signallarining amplitudasi operatsion kuchaytirgichning ish nuqtasini 2,5 V ga o'rnatadi. Kiruvchi kuchlanishlar chiqish filtri kondansatkichlari tomonidan bloklanadi.

Guruch. 5. Chiqish filtrlarining sxematik sxemalari

Chiqishda filtr signallari yig'iladi va natijada olingan signal past va yuqori chastotalar guruhidan tanlangan harmonikalar yig'indisidir. Filtrning zaiflashishini qoplash uchun chiqish signalining amplitudasi ikkita R9 va R10 rezistorlari yordamida sozlanishi mumkin. 6-rasmda qo'shimchaning sxemasi ko'rsatilgan. 7-rasmda sxemaning butun analog qismi ko'rsatilgan.

Guruch. 6. Qo'shimcha qurilmaning sxematik diagrammasi

Guruch. 7. Sxemaning analog qismi

DTMF ohang generatori sxemasining raqamli qismi

DTMF ohang generatori pallasining raqamli qismi kvadrat to'lqin generatorlarining butun to'plamini o'z ichiga oladi - har bir DTMF chastotasi uchun bittadan. Ushbu generatorlarni yaratish uchun sakkizta hisoblagich kerak bo'lganligi sababli, ularni amalga oshirish uchun GreenPAK SLG46620V chipi tanlangan. Raqamli kontaktlarning zanglashiga olib chiqishlarida har bir chastota guruhi uchun bittadan ikkita to'rtburchaklar signal hosil bo'ladi.

Kvadrat to'lqin signallari hisoblagichlar va D flip-floplar yordamida ishlab chiqariladi va ish aylanishi 50% ni tashkil qiladi. Shu sababli, hisoblagichni almashtirish chastotasi zarur bo'lgan DTMF chastotasidan ikki baravar ko'pdir va DFF flip-flop chiqish signalini ikkiga ajratadi.

Hisoblagichlar uchun soat manbai o'rnatilgan 2 MGts chastotali RC osilator bo'lib, uning chastotasi qo'shimcha ravishda 4 yoki 12 ga bo'linadi. Ajratuvchi bit sig'imi va ma'lum bir hisoblash uchun zarur bo'lgan har bir hisoblagichning maksimal qiymatini hisobga olgan holda tanlanadi. chastota.

Yuqori chastotalarni yaratish uchun kamroq namunalar talab qilinadi, shuning uchun ularni ishlab chiqarish uchun signali 4 ga bo'lingan ichki RC osilatoridan soatlangan 8 bitli hisoblagichlar ishlatiladi. Xuddi shu sababga ko'ra, past chastotalar 14 bitli hisoblagichlar yordamida amalga oshiriladi.

SLG46620V faqat uchta standart 14 bitli hisoblagichga ega, shuning uchun past chastotalardan biri 8 bitli CNT8 hisoblagich yordamida amalga oshirildi. Namunalar soni 0...255 oralig'ida bo'lishi uchun ushbu CNT8 ni soatlash uchun 12 ga bo'lingan RC osilator signalidan foydalanish kerak edi. Ushbu sxema uchun eng ko'p namunalar soniga ega chastota, ya'ni hisoblanadi, eng past chastota, tanlangan. Bu bizga xatoni minimallashtirishga imkon berdi.

3-jadvalda har bir kvadrat to'lqinning parametrlari ko'rsatilgan.

3-jadval. Kvadrat impuls generatorlarining parametrlari

Soat

Chastota xatosi [%]

Past o'tish guruhi

Trebl guruhi

Jadvaldan ko'rinib turibdiki, barcha chastotalar 1,8% dan kam xatoga ega, shuning uchun ular DTMF standartiga mos keladi. Ideal RC osilator chastotasiga asoslangan ushbu hisoblangan xususiyatlar RC osilatorining chiqish chastotasini o'lchash orqali sozlanishi mumkin.

Tavsiya etilgan sxemada barcha generatorlar parallel ravishda ishlayotgan bo'lsa-da, har bir guruhdan faqat bitta generatorning signali mikrosxemaning chiqishiga yuboriladi. Muayyan signallarni tanlash foydalanuvchi tomonidan belgilanadi. Bu 4-jadvalda ko'rsatilgan haqiqat jadvali bilan to'rtta GPIO kirish (har bir guruh uchun ikkita bit) yordamida amalga oshiriladi.

4-jadval. Past chastotali guruhdan chastotalarni tanlash jadvali

Past o'tish guruhi

5-jadval. Yuqori chastotalar guruhidan chastotalarni tanlash jadvali

Trebl guruhi

8-rasmda 852 Hz kvadrat to'lqin generatorining mantiqiy sxemasi ko'rsatilgan. Ushbu naqsh tegishli hisoblagich sozlamalari va LUT konfiguratsiyasi bilan har bir chastota uchun takrorlanadi.

Guruch. 8. To'rtburchak impuls generatori

Hisoblagich o'z sozlamalari bilan aniqlangan chiqish chastotasini ishlab chiqaradi. Bu chastota mos keladigan DTMF ohangining ikki barobar chastotasiga teng. Hisoblagich konfiguratsiya parametrlari 9-rasmda ko'rsatilgan.

Guruch. 9. To'rtburchaklar impuls generatori hisoblagichini o'rnatish misoli

Hisoblagich chiqish signali ulangan soat kiritish D-Flip Flop trigger. DFF chiqishi teskari sifatida tuzilganligi sababli, agar siz DFF chiqishini uning kirishiga ulasangiz, D flip-flop T flip-flopga aylanadi. DFF konfiguratsiya parametrlarini 10-rasmda ko'rish mumkin.

Guruch. 10. To'g'ri to'rtburchak impuls generatorini ishga tushirishga misol

DFF chiqishidan signal LUT haqiqat jadvalining kirishiga beriladi. LUTlar har bir aniq R1-R0 kombinatsiyasi uchun bitta signalni tanlash uchun ishlatiladi. LUT konfiguratsiyasiga misol 11-rasmda ko'rsatilgan. B bu misolda, agar R1 "1" ni qabul qilsa va R0 "0" ni qabul qilsa, kirish signali chiqishga uzatiladi. Boshqa hollarda, chiqishda "0" mavjud.

Guruch. 11. Kvadrat impuls generatorining haqiqat jadvalini o'rnatishga misol

Yuqorida aytib o'tilganidek, taklif qilingan sxema "Enable enable" kirishiga ega. Agar "Enable" ruxsatnomasi kirishida mantiqiy birlik "1" bo'lsa, hosil qilingan to'rtburchaklar signallar mikrosxemaning bir juft chiqishiga beriladi. Uzatish davomiyligi yoqilgan kirishdagi impuls davomiyligiga teng. Ushbu xususiyatni amalga oshirish uchun yana bir nechta LUT kerak edi.

Yuqori o'tish guruhi 12-rasmda ko'rsatilganidek, bitta 4 bitli LUT va bitta 2 bitli LUT dan foydalanadi.

Guruch. 12. Treble guruhining chiqish sxemasi

4-bitli LUT1 sifatida sozlangan mantiqiy element YOKI, shuning uchun agar biron bir kirishda “1” mavjud bo'lsa, u mantiqiy “1”ni chiqaradi. C1/C0 haqiqat jadvallari osilatorlardan faqat bittasini tanlash imkonini beradi, shuning uchun 4-bitli LUT1 qaysi signal chiqishini aniqlaydi. Ushbu LUTning chiqishi 2-bitli LUT4 ga ulangan, u faqat agar yoqish kirish mantiqiy "1" bo'lsa, signalni uzatadi. 13 va 14-rasmlarda 4-bitli LUT1 va 2-bitli LUT4 konfiguratsiyasi koʻrsatilgan.

Guruch. 13. 4-bitli LUT1 konfiguratsiyasi

Guruch. 14. 2-bitli LUT4 konfiguratsiyasi

Endi 4-bitli haqiqat jadvallari LUTlari yo'qligi sababli, past chastotali guruh uchun ikkita 3-bitli LUT ishlatilgan.

Guruch. 15. Past o'tish guruhining chiqish davri

GreenPAK SLG46620V ning to'liq ichki sxemasi 16-rasmda ko'rsatilgan. 17-rasmda DTMF generatorining yakuniy sxemasi ko'rsatilgan.

Guruch. 16. DTMF ohang generatorining blok diagrammasi

Guruch. 17. DTMF ohang generatorining sxematik diagrammasi

DTMF generator sxemasini sinovdan o'tkazish

Taklif etilgan DTMF generatorini sinovdan o'tkazishning birinchi bosqichida osiloskop yordamida barcha yaratilgan to'rtburchaklar signallarning chastotalarini tekshirishga qaror qilindi. Misol sifatida, 18 va 19-rasmlarda 852 Gts va 1477 Gts uchun kvadrat to'lqin chiqishlari ko'rsatilgan.

Guruch. 18. Kvadrat to'lqin 852 Hz

Guruch. 19. Kvadrat to'lqin 1477 Hz

Barcha kvadrat to'lqin signallarining chastotalari tekshirilgandan so'ng, kontaktlarning zanglashiga olib keladigan analog qismini sinovdan o'tkazish boshlandi. Past va yuqori chastotalarning barcha kombinatsiyalari uchun chiqish signallari tekshirildi. Misol tariqasida, 20-rasmda 770 Gts va 1209 Gts chastotali signallarning yig'indisi, 21-rasmda 941 Gts va 1633 Gts chastotali signallarning yig'indisi ko'rsatilgan.

Guruch. 20. DTMF ohangi 770 Gts va 1209 Gts

Guruch. 21. DTMF ohangi 941 Gts va 1633 Gts

Xulosa

Ushbu maqolada Silego GreenPAK SLG46620V chipi va Silego SLG88104V operatsion kuchaytirgichlari asosida DTMF ohang generatori uchun sxema taklif qilingan. Jeneratör foydalanuvchiga to'rtta kirishdan foydalangan holda kerakli chastotalar kombinatsiyasini tanlash va chiqish signallarining davomiyligini belgilaydigan yoqish kiritishni boshqarish imkonini beradi.

SLG46620V chipining xususiyatlari:

  • Turi: Dasturlashtiriladigan aralash signal IC;
  • Analog bloklar: 8-bitli ADC, ikkita DAC, oltita komparator, ikkita filtr, ION, to'rtta o'rnatilgan osilator;
  • Raqamli bloklar: 18 tagacha kiritish-chiqarish portlari, o'zaro bog'lanish matritsasi va kombinatoryal mantiq, dasturlashtiriladigan kechikish davrlari, dasturlashtiriladigan funksiya generatori, oltita 8-bitli hisoblagichlar, uchta 14-bitli hisoblagichlar, uchta PWM osilatorlari / taqqoslagichlari;
  • Aloqa interfeysi: SPI;
  • Ta'minot kuchlanish diapazoni: 1,8…5 V;
  • Ishlash harorati diapazoni: -40…85 °C;
  • Paket versiyasi: 2 x 3 x 0,55 mm 20 pinli STQFN.

O'ziga xos xususiyatlar:

  • Impuls kengligi modulyatsiyasi (PWM) yordamida sinus to'lqinlarni yaratish
  • Turli xil sinus to'lqin signallarini bitta DTMF signaliga birlashtirish
  • Manba kodlari assembly va C tillarida
  • STK500 bilan ishlash uchun mo'ljallangan
  • Dastur kodi hajmi 260 bayt / doimiy jadval hajmi 128 bayt
  • Jadvalni aylantirish usulidan foydalanish

Kirish

Ushbu hujjat impuls kengligi modulyatsiyasi (PWM) birligi va statik RAMni o'z ichiga olgan har qanday AVR mikrokontrolleri yordamida DTMF signallarini (ikki tonnali ko'p chastotali signallar) ishlab chiqarish texnikasini tavsiflaydi. Ushbu signallar telefoniyada keng qo'llaniladi, ular telefon apparatining terish tugmalarini bosganingizda qayta ishlab chiqariladi. DTMF signalini to'g'ri yaratish uchun siz ikkita chastotani bir-biriga joylashtirishingiz kerak: past chastotali(fb) va yuqori chastotali (fa). 1-jadvalda turli tugmalar bosilganda DTMF ohanglarini hosil qilish uchun turli chastotalar qanday aralashtirilganligi ko'rsatilgan.

1-rasm - DTMF signal generatori sxemasi

1-jadval - Ohang signalini yaratish matritsasi

fb/fa 1209 Gts 1336 Gts 1477 Gts 1633 Gts
697 Gts 1 2 3 A
770 Gts 4 5 6 B
852 Gts 7 8 9 C
941 Gts * 0 # D

1-jadvalning satrlari past chastotali qiymatlarni, ustunlar esa yuqori chastotali qiymatlarni ko'rsatadi. Misol uchun, matritsa "5" tugmasini bosganingizda fb = 770 Hz va fa = 1336 Hz chastotalarini aralashtirish kerakligini ko'rsatadi. Turli chastotali ikkita sinusoidal signalning qo'shilishi natijasida DTMF signali hosil bo'ladi.

amplituda nisbati qayerda K=A b /A a manba signallari shartga javob berishi kerak

Ishlash printsipi

Bundan tashqari Umumiy ma'lumot Impuls kengligi modulyatsiyasidan foydalanish haqida quyida impuls kengligi modulyatsiyasi sinusoidal signallarni yaratishga imkon beradi. Keyingi paragraf turli chastotalarni olish uchun asosiy kommutatsiya chastotasidan qanday foydalanishni tavsiflaydi. Ko'rib chiqqandan keyin nazariy asoslar DTMF signal generatorining o'zi tavsifi beriladi. Sinus to'lqinlarning paydo bo'lishi

Yuqori VH va past VL kuchlanish darajalarining davomiyligi nisbatiga qarab, PWM chiqishidagi o'rtacha qiymat o'zgaradi. Agar ikkala darajaning davomiyligi o'rtasidagi nisbat doimiy bo'lsa, natijada doimiy VAV kuchlanish darajasi hosil bo'ladi. 2-rasmda impuls kengligi modulyatsiyalangan signal ko'rsatilgan.


Shakl 2 - doimiy kuchlanish darajasini ishlab chiqarish

Kuchlanish darajasi quyidagi ifoda bilan aniqlanadi:

(3)

Sinusoidal signal impuls kengligi modulyatsiyasi natijasida hosil bo'lgan kuchlanishning o'rtacha qiymati har bir PWM siklida o'zgarishi sharti bilan yaratilishi mumkin. Yuqori va past darajalar o'rtasidagi munosabatlar sinus to'lqinining tegishli vaqtda kuchlanish darajasiga mos ravishda o'rnatilishi kerak. 3-rasmda bu jarayon tasvirlangan. PWM uchun manba ma'lumotlari uning har bir davri uchun hisoblab chiqiladi va konversiya jadvalida (TC) qayd etiladi.

3-rasmda asosiy sinus to'lqin chastotasi va namunalar soni o'rtasidagi bog'liqlik ham ko'rsatilgan. Namunalar soni (Nc) qanchalik ko'p bo'lsa, natijada olingan signalni modellashtirishning aniqligi shunchalik yuqori bo'ladi:

(4)

PWM chastotasi PWM ruxsatiga bog'liq. 8 bitli ruxsatda taymerning yakuniy qiymati (hisobning yuqori qismi) 0xFF (255). Chunki Taymer oldinga va orqaga sanaydi, keyin berilgan qiymat ikki barobar bo'lishi kerak. Shuning uchun kommutatsiya chastotasini bo'lish yo'li bilan hisoblash mumkin soat chastotasi taymer f CK da 510. Shunday qilib, 8 MGts taymer soat chastotasi bilan, natijada PWM chastotasi 15,6 kHz bo'ladi.


3-rasm - PWM yordamida sinusoidal signalni yaratish

Sinus to'lqinining chastotasini o'zgartirish

Faraz qilaylik, sinusoidal namunalar qidiruv jadvalidan ketma-ket emas, birma-bir o'qiladi. Bunday holda, bir xil namuna olish tezligida ikki barobar chastotali signal hosil bo'ladi (4-rasmga qarang).


4-rasm - Olingan chastotani ikki baravar oshirish (XSW = 2)

O'xshashlik bo'yicha, agar siz har bir ikkinchi qiymatni emas, balki har uchinchi, to'rtinchi, beshinchi (mos ravishda qadam kengligi 3, 4, 5 ...) o'qisangiz va hokazo. diapazonda Nc chastotalarni hosil qilish mumkin. E'tibor bering, yuqori chastotalar uchun hosil bo'lgan to'lqin shakli sinusoidal bo'lmaydi. Biz konvertatsiya jadvaliga muvofiq qadam kengligini belgilaymiz XSW, Qayerda

(5)

Keyingi PWM davri uchun TPdagi joriy pozitsiyani hisoblash (taymer to'lib ketganda) ifoda (6) yordamida amalga oshiriladi. Joydagi yangi qiymat X LUT oldingi holatiga bog'liq X" LUT qadam kengligi ortishi bilan XSW

(6)

DTMF signalini olish uchun turli chastotalarni qo'shish

DTMF signali (1) va (2) iboralar yordamida yaratilishi mumkin. Arifmetik amallarning soddaligi uchun arifmetik amalni mantiqiy siljishlar bilan almashtirish uchun K koeffitsientining qiymati 0,75 ga teng qabul qilinadi. (6) ifodasini hisobga olgan holda, PWM boshqaruvining joriy qiymati quyidagi ifoda bilan hisoblanishi mumkin:

va buni hisobga olgan holda X LUTa=X" LUta + XSWa ,X LUTb=X" LUTb + XSWb, keling, nihoyat yozamiz

DTMF generatorini joriy qilish

IN ushbu ilova 8-bitli PWM chiqishi (OC1A) va har biri 7 bit (n) bilan belgilangan 128 sinus funksiyasi (Nc) namunalari bo'lgan jadval yordamida DTMF ohang generatorini qurishni muhokama qiladi. Quyidagi iboralar ushbu bog'liqlikni ko'rsatadi va shuningdek, qidiruv jadvali yozuvlarini qanday hisoblashni ko'rsatadi:

(9)

7 bitdan foydalanishning afzalligi shundaki, yuqori va past chastotali signal qiymatlarining yig'indisi bir bayt o'lchamda. DTMF ohanglarining to'liq to'plamini qo'llab-quvvatlash uchun 1-jadvaldagi har bir DTMF chastotasi uchun 8 ta qiymat hisoblanishi va qidiruv jadvaliga kiritilishi kerak.

Yuqori aniqlikka erishish uchun quyidagi yechim amalga oshirildi: 5 ifodasi yordamida hisoblangan qiymatlar faqat 5 baytni talab qiladi. Yaxlitlash xatolarini kamaytiradigan barcha 8 baytdan foydalanish uchun bu qiymat 8 ga ko'paytiriladi. Qidiruv jadvaliga ko'rsatgich xuddi shu tarzda yoziladi. Ammo bu holda qiymatdan 8 barobar ko'p saqlash uchun ikki bayt kerak bo'ladi. Bu shuni anglatadiki, bu baytlarni sinus to'lqin qiymatlariga ko'rsatgich sifatida ishlatishdan oldin 3 ta o'ngga siljish va radix Nc moduli operatsiyasi (Nc-1 ga mantiqiy ko'paytirish) bajarilishi kerak.


5-rasm - STK500 ga ulanish uchun modul diagrammasi

PWM signali OC1A (PD5) pinida ishlab chiqariladi. Qo'shimcha chiqish filtri signalning sinusoidal to'lqin shakliga mos kelishiga yordam beradi. PWM chastotasini pasaytirishda yaxshi natijaga erishish uchun yuqori chastotali filtrdan foydalanish kerak bo'lishi mumkin.

Klaviatura ulanishi 1-rasmda ko'rsatilgan. Klaviaturaning ishlashi shunday tashkil etilishi kerakki, bosilgan tugmani aniqlash mumkin bo'ladi. Buni quyidagi algoritm yordamida amalga oshirish mumkin:

  1. Bosilgan tugma satrini aniqlash
    • B portining past tartibli daftarini chiqish sifatida sozlang va jurnalni o'rnating. "0"
    • tortuvchi rezistorlar ulanishi bilan kirish sifatida B portining yuqori tetradasini sozlang
    • tugmasi bosilgan chiziq log bilan eng yuqori tetradning raqami sifatida aniqlanadi. "0"
  2. Bosilgan tugma ustunini aniqlash
    • B portining yuqori noutbukini chiqish sifatida sozlang va jurnalni o'rnating. "0"
    • tortuvchi rezistorlarni ulash orqali B portining past tartibli tetradasini kirish sifatida sozlang
    • tugmasi bosilgan ustun log bilan past tartibli tetradning raqami sifatida aniqlanadi. "0"

Eslatma: STK200 da rezistorlar PORTB ulagichi pinlari va BP5, PB6 va PB7 mikrokontroller pinlari o'rtasida ketma-ket ulanadi (STK200 diagrammasiga qarang). Agar klaviatura PORTB ulagichiga ulangan bo'lsa, bu muammolarga olib keladi.

6-rasmda bosilgan tugmani aniqlash uchun pastki dasturning ishlashi ko'rsatilgan. Bosilgan tugmachaga qarab, intervalning davomiyligi aniqlanadi. Uzilish tartibi ushbu qiymatdan ikkita DTM ton sinus to'lqinlari uchun PWM sozlamalarini hisoblash uchun foydalanadi. Uzilishlarni qayta ishlash tartibi 7 va 8-rasmlarda ko'rsatilgan.

Ushbu tartib keyingi PWM davri uchun taymer chiqishi bilan solishtirish uchun qiymatni hisoblab chiqadi. Uzilish tartibi birinchi navbatda qidiruv jadvalidagi keyingi namuna qiymatining o'rnini hisoblab chiqadi va u erda saqlangan qiymatni o'qiydi.

Qidiruv jadvalidagi namunaning pozitsiyasi impuls kengligi bilan belgilanadi va haqiqiy impuls kengligi hosil qilingan chastota bilan aniqlanadi.

Taymerni taqqoslash registriga yozilgan yakuniy qiymat formula (7) yordamida aniqlanadi, bu ikkala DTMF chastotasining namunaviy qiymatlarini hisobga oladi.


6-rasm - Asosiy dasturning blok diagrammasi

Zamonaviy joriy etish bilan raqamli ATS Rossiya Federatsiyasining telefon tarmoqlarida DTMF (Dual-Tone Multiple-Frequency) ingliz qisqartmasi bilan belgilangan terish signallarini uzatishning ko'p chastotali usuli asta-sekin tarqalmoqda. Ba'zan ushbu terish signalini uzatish tizimini nomlash uchun boshqa inglizcha atama ishlatiladi - Touch-None (tone dialing). Bu usul 1960 yilda ishlab chiqilgan, ammo uning haqiqiy tarqalishi 80-yillarda raqamli (elektron) telefon stansiyalarining tarqalishi bilan boshlangan.

Boshqaruv signallarini uzatishning ushbu usuli bilan har bir ko'p chastotali raqamli signal ITU-T Q.23 "Tech-terish telefonlarining texnik xususiyatlari" tavsiyasiga muvofiq ikki tonnadan iborat.

DTMF chastotalari harmonik tarzda tanlanmagan. Bu shuni anglatadiki, chastotalarda 1 dan boshqa butun son bo'luvchisi yo'q. Masalan, 1200 va 1600 Gts chastotalar 400 Gts (3x400=1200 va 4x400=1600) chastotali harmonikalar, 697 va 770 Gts chastotalar esa harmonik emas.

Har bir signal ikkita chastotani o'z ichiga oladi: biri pastki chastotadan, ikkinchisi esa yuqori chastotalar guruhidan tanlangan.

O'tkazilgan ma'lumotlar va chastotalar o'rtasidagi yozishmalar laboratoriya o'rnatishning old panelidagi jadvalda keltirilgan.

Ikki chastotali paketdagi uzatish darajasi 600 Ohm yuk bilan o'lchanadi: pastki chastotalar guruhi uchun - minus 6 dBmO ± 2 dB, yuqori chastotalar guruhi uchun - minus 3 dBmO ± 2 dB. Umumiy signaldagi chastotalarning yuqori guruhining chastota darajasi pastki guruhning chastota darajasidan 2 ± 1 dB yuqori. Barcha yuqori tartibli chastota komponentlarining umumiy darajasi pastki tartibli chastota darajasidan kamida 20 dB past.

Oddiy signalni qabul qilish sodir bo'lishi kerak bo'lgan shartlar quyidagilardan iborat: signalda ikkita chastotaning mavjudligi, ulardan biri pastki guruhdan, ikkinchisi esa yuqoridan tanlanadi; chastotalar nominal qiymatlaridan 1,8% dan ortiq farq qilmaydi; ikki chastotaning har birining darajasi minus 7 dan minus 30 dBmO gacha; ikki chastotaning darajalari orasidagi farq 3 dB dan oshmaydi; chastota signalining davomiyligi kamida 40 ms.

O'rnatishni yoqishdan oldin quyidagi amallarni bajaring:

S6 kalitini pastki holatga o'rnating;

S13 kalitini yuqori holatga o'rnating;

Yuqori va pastki chastota guruhlari generatorlarining kalitlarini "O'chirish" holatiga o'rnating;

Analog kalit kalitini (AK) "On" holatiga o'rnating;

Jeneratörlar va R3 rezistorlarining chiqish kuchlanishini sozlash uchun tugmachalarni ular to'xtaguncha soat miliga teskari burang.

dtmf signalni sozlash

1.1 O'rnatishni yoqing.

1.2 Osiloskopni KT3 sinov nuqtasiga ulang.

1.3 Yuqori chastotalar guruhining generatorini yoqing, almashtirish tugmalaridan birini bosib, ushbu guruhning har qanday chastotasini tanlang.

1.4 CT3 da signal amplitudasini 0,5 voltga o'rnatish uchun generatorning chiqish kuchlanishini sozlash tugmachasini aylantiring.

1.5 Osiloskopning kirishini KT4 sinov nuqtasiga o'tkazing. Pastki chastotali guruhning generatori uchun 1.3, 1.4-bosqichlarni takrorlang, KT4-dagi kuchlanishni 0,5 V ga o'rnating.

ESLATMA: Amalga oshirilgan operatsiyalar natijasida yuqori va pastki chastotali guruhlardan teng amplitudali signallar qo'shimcha qurilmaning kirishiga beriladi. Ushbu darajalarni o'rnatgandan so'ng, generatorlarning chiqish kuchlanishini sozlash uchun tugmachalarni qulflang.

1.6 Osiloskopning kirishini KT7 sinov nuqtasiga o'tkazing. DTMF signal konditsionerining chiqish kuchlanishini sozlash uchun rezistor tugmachasini (R3) aylantirib, CT7 dagi kuchlanishni 0,5 voltga o'rnating.

ESLATMA: Amalga oshirilgan operatsiyalar natijasida qabul qiluvchining kirishiga uzluksiz ikki tonna signal beriladi va qabul qilingan belgining indikatorida yuqori va pastki chastota guruhlari generatorlari chastotalari kombinatsiyasiga mos keladigan belgi ko'rsatilishi kerak. , jadvalga muvofiq. Qabul qilingan va aniqlangan signalning ko'rsatkichi STD qabul qilgichining chiqishida signal mavjudligi (LED porlashi).

      Yuqori va pastki chastotali guruhlarning chastotalarini almashtirish orqali ushbu chastotalarning kombinatsiyasi qabul qilingan belgilarga mos kelishiga ishonch hosil qiling.