dtmf дохионы хүлээн авагч ба дамжуулагчийн судалгаа. AVR дээрх хос дуут олон давтамжийн генератор (DTMF) Одоо бид юу авсныг харцгаая

Энэ програмын эхний хэсэг нь MSP430 микроконтроллер ашиглан DTMF дохиог хэрхэн үүсгэхийг тайлбарладаг. Энэ тохиолдолд ашигласан хамгийн чухал үзүүлэлтүүдийн тайлбарыг өгч, тохирох аналог шүүлтүүр ашиглан дөрвөлжин долгион ашиглан синусын долгион үүсгэх онолын болон математик үндэслэлийг өгсөн болно. Энэ жишээнд MSP430 микроконтроллерын янз бүрийн таймер тохиргоон дээр тулгуурлан дөрвөлжин долгионы дохио үүсгэх туршилтын хөтөлбөрүүдийг багтаасан болно. Эцсийн хэсэг нь дөрвөлжин долгионы дохионоос DTMF дохио үүсгэх хэлхээний диаграммыг өгдөг.

2 DTMF дохионы тодорхойлолт

DTMF товчлол нь "Хос авианы олон давтамж" гэсэн үг бөгөөд аналог харилцаа холбооны шугамаар дамжуулах зорилгоор өөр өөр давтамжийн цифрүүдийг илэрхийлэх арга юм. утасны шугам. Стандартыг боловсруулахдаа нөхцөл байдлыг харгалзан үзсэн - бүх давтамж нь "дуу хоолой" мужид байх ёстой бөгөөд энэ нь дамжуулах сувагт тавигдах шаардлагыг багасгах боломжийг олгосон. Утасны сүлжээ нь залгах болон бусад мэдээлэлд DTMF дохиог ашигладаг. Жишээлбэл, Герман улсад импульсийн залгах аргыг өргөн ашигладаг хэвээр байгаа ч залгах хугацаа ихээхэн нэмэгдэж, харилцаа холбооны шугамд үр ашиггүй ачаалал үүсгэдэг. Үүнээс гадна олон Нэмэлт үйлчилгээХарилцаа холбоог зөвхөн дуудлагын тусламжтайгаар хийх боломжтой. DTMF аргыг ашиглан кодлохдоо 0-9 ба A-D үсэг, */E ба #/F нь хоёр давтамжийн хослолыг илэрхийлнэ:

Давтамж 1209 Гц 1336 Гц 1477 Гц 1633 Гц
697 Гц 1 2 3 А
770 Гц 4 5 6 Б
852 Гц 7 8 9 C
941 Гц */Э 0 #/F Д

Энэ системд багана нь "дээд" давтамжийн бүлгийн давтамжийг (Hi-Group: 1209-1633 Гц), мөр нь "доод" давтамжийн бүлгийн (Lo-Group: 697-941 Гц) давтамжийг илэрхийлнэ. . Гармоникийн нөлөөллийг арилгахын тулд дууны давтамжийг сонгоно. Давтамжууд нь бие биенийхээ үржвэр биш бөгөөд бусад давтамжийг нэмэх, хасах замаар DTMF давтамжийг олж авах боломжгүй. Deutsche Telekom сүлжээнд залгагч үүсгэхийн тулд дараах үзүүлэлтүүд шаардлагатай (Zulassungsvorschrift des Bundesamtes fur Post und Telekommunikation, BAPT 223 ZV 5 (Холбооны шуудан, харилцаа холбооны яамны албан ёсны тодорхойлолт) -аас авсан болно):

3 DTMF дохио үүсгэх

Дээр дурдсанчлан DTMF дохио нь аналог бөгөөд бие даасан хоёр синус долгионоос бүрдэнэ. Тиймээс зөвхөн ийм дохио үүсгэх боломжгүй юм дижитал байдлаар. Дижитал дохиог ADC ба/эсвэл аналог шүүлтүүр ашиглан шаардлагатай синус долгионы хэлбэрт хөрвүүлэх ёстой.

3.1 Дөрвөлжин долгион ашиглан үүсгэх

Хэрэв дөрвөлжин долгионы дохиог DTMF дохио үүсгэхэд ашигладаг бол программ хангамж ба техник хангамжхамгийн бага. Т үетэй аливаа тасралтгүй дохиог синус ба косинусын долгионы хязгааргүй нийлбэрээс бүрдэх Фурье цувралаар дараах байдлаар илэрхийлж болно.

Энд a0/2 нь дохионы тогтмол бүрэлдэхүүн хэсэг юм. Хамгийн бага өнцгийн давтамжтай (w0) нийлбэр элементийг үндсэн (үндсэн) гармоник гэж нэрлэдэг, үлдсэн хэсэг нь хэт авиа эсвэл илүү өндөр гармоник юм.

Микроконтроллер ашиглан хэрэгжүүлсэн хамгийн энгийн тасралтгүй дохио бол дөрвөлжин долгион бөгөөд Фурье цуврал нь дараах хэлбэртэй байна.

Давтамжийн бүрэлдэхүүн хэсэг бүрийн нийт дохионд оруулах хувь нэмрийг далайцын спектрээр хамгийн сайн харуулдаг (2-р зургийг үз):


Цагаан будаа. 2: Дөрвөлжин долгионы дохионы далайцын спектр

Аналог шүүлтүүрийг ашиглах үед тогтмол гүйдлийн бүрэлдэхүүн хэсэг ба түүнээс дээш гармоникууд үр дүнтэй дарагддаг бол гаралт дээр бид анхны дөрвөлжин долгионы давтамжтай тэнцүү давтамжтай синусоид дохиотой байдаг.

3.2 Меандр үүсгэх програм хангамж

Меандер үүсгэх хөтөлбөр нь дараахь шаардлагыг хангасан байх ёстой.

  • Хоёр бие даасан тэгш өнцөгт дохиог нэгтгэх чадвартай байх.
  • Сигналыг салгахын тулд "дээд" (Hi-Group) ба "доод" (Lo-Group) -аас дохио үүсгэх хоёр гаралтын зүү шаардлагатай. давтамжийн хүрээтус тус.
  • Програм хангамж нь шаардлагатай дохионы үргэлжлэх хугацааг ойролцоогоор 65 ms - 100 ms хооронд тохируулах боломжтой байх ёстой.

MSP430 цуврал микроконтроллерууд нь дөрвөлжин долгионы дохио үүсгэх чадвартай төрөл бүрийн таймеруудтай. '31x/'32x гэр бүл нь дөрвөлжин долгионы дохиог үүсгэхийн тулд 8 битийн таймер болон Таймер портыг ашигладаг. Энэ програм 1.048 МГц-тэй тэнцүү MCLK давтамжаар туршсан. '33x гэр бүлийн Timer_A нь шаардлагатай дохиог хоёуланг нь бие даан үүсгэж чаддаг. Хоёрдахь программ нь дөрвөлжин долгион үүсгэхийн тулд энэ таймерыг ашигладаг бөгөөд ямар ч MCLK давтамжтай ажилладаг. Хоёр хөтөлбөрийг доор дэлгэрэнгүй авч үзэх болно.

3.2.1 8 битийн таймер ба таймер порт ашиглан дөрвөлжин долгион үүсгэх

Зураг дээр. 3 нь DTMF дохиог үүсгэхийн тулд эхлүүлэх процедурын схем юм. Хоёр давтамжийг нэгтгэхийн тулд Таймер порт болон 8 битийн таймер тоолуурыг ашигладаг. Тэд тус бүр нь шаардлагатай давтамжийг нарийн нэгтгэхэд шаардлагатай програмчлагдсан тоолуур юм. Хэрэв таймер-портын тоолуурыг 16 битийн нэг таймер руу нэгтгэж, MCLK системийн давтамжаар цагийг тохируулсан бол өндөр давтамжийн давтамжийг өндөр нарийвчлалтайгаар үүсгэж болно. Тасалдал гарах үед харгалзах гаралтыг сольж, 8 битийн тоолуурыг хоёуланг нь дахин тохируулна. Ачаалагдсан утгууд нь бусад ажлуудын дотоод бүртгэлийг хадгалахын тулд RAM-д хоёр хувьсагчид хадгалагддаг.

Бага хүрээний давтамжийг 8 битийн таймер үүсгэдэг. Энэ таймерын тоолуурын регистр нь 8 битийн өргөнтэй тул зөвхөн гурав дахь тасалдал бүр шаардлагатай гаралтын зүү дээр түвшний өөрчлөлтийг үүсгэж, ижил давтамжийн тоолуур үүсгэх боломжийг олгодог.

Хоёр таймер гаралт - портууд нь өөр өөр давтамжтай хоёр меандр үүсгэхэд ашиглагддаг.

Цагаан будаа. 3 DTMF дохиог үүсгэх эхлэлийн горимын схем

Эхлүүлэх процедурыг зөвхөн нэг удаа гүйцэтгэдэг. Үүнийг дуусгасны дараа дамжуулсан тэмдэгтийн арван арван тоот утгыг RAM дахь глобал хувьсагчаас уншина. Хоёр хүснэгтээс өндөр ба бага DTMF аялгууг үүсгэдэг хоёр давтамжийг үүсгэсний дараа шаардлагатай бүх зүйл бол хоёр цаг хэмжигчийг эхлүүлж, эхлүүлэх явдал юм. Илгээлтийн үргэлжлэх хугацааг "доод" давтамжийн хагас циклийг тоолох замаар хянаж, нэмэлт хүснэгтээс уншина. Энэ процедурыг дуусгасны дараа та санал авах функц руу буцна. Харгалзах тасалдлыг зохицуулах горимууд нь портын зүүг шилжүүлдэг. Энэ үйл явцыг Зураг дээр үзүүлэв. 4 ба 5.

Таймер портын даалгавар нь зөвхөн бүртгэлийг бүртгэх явдал юм. портын гаралтын түвшин ба тоолуурыг RAM-аас дахин ачаалдаг бол 8 битийн таймерын ажиллагаа нь арай илүү төвөгтэй бүтэцтэй байдаг: тасалдал руу орох оролт бүрийг тоолуурын бүртгэлээр тооцдог. Гаралт нь зөвхөн гурван тасалдсаны дараа төлөвийг өөрчлөх боломжтой. Үүнээс гадна хагас мөчлөг бүрийг бас тооцдог. Тодорхой тооны хагас мөчлөгт хүрэхэд үе зогсдог.


Цагаан будаа. 4 Блок - 8 битийн таймераас тасалдлын хэлхээ (Lo-Group)


Цагаан будаа. 5 Блок - таймер-порт тасалдлын хэлхээ (Hi-Group)

; Захиалгат тодорхойлолтууд FLLMPY equ 32 ; 1.048 МГц давтамжийн үржүүлэгч FLL TCLK equ FLLMPY*32768 ; TCLK: FLLMPY x f кварц DL equ 85; DTMF дохионы үргэлжлэх хугацаа (65..100 мс) LO_OUT equ 02h ; “Доод” давтамжийн гаралт HI_OUT equ 04h ; Өндөр давтамжийн гаралт RCOUNT equ r14 ; Урт тоолуур DTMF RTEMP equ r15 ; үйлчилгээний бүртгэл.global DTMF_NR ; RAM дахь глобал хувьсагч; DTMF дугаарын хувьд (0..F); Тодорхойлолт RAM.тэр ч байтугай .bss DTMF_TL ; Бүр хаягийн тэгшитгэх.bss DTMF_TH .bss DTMF_NR ; RAM дахь глобал хувьсагч; DTMF дугаарын хувьд (0..F).тэгш ; 8 битийн таймерын тодорхойлолтууд TCCTL EQU 42H TCPLD EQU 43H TCDAT EQU 44H ; Бүх нийтийн таймер портын тодорхойлолтууд TPCTL equ 04bh ; Таймер портын удирдлага TPCNT1 equ 04ch ; Таймер-портын тоолуур 1 TPCNT2 equ 04dh ; Таймер-портын тоолуур 2 TPD equ 04eh ; Таймер портын өгөгдөл TPE equ 04fh ; Timer-port-resolution.text ; DTMF давтамжийн хүснэгтүүд: хүснэгт агуулсан; нэг хагас мөчлөгийн MCLK циклийн тоо. ; "Дээд" давтамжийн хүснэгт; Залруулах нэмэлт өөрчлөлт оруулсан; тасалдалд орох хугацааг харгалзан үзэх DTMF_HI .word 0ffffh-(TCLK/(1336*2))+25 ; Өндөр давтамж 0 .word 0ffffh-(TCLK/(1207*2))+28 ; Өндөр давтамжийн хувьд 1 .word 0ffffh-(TCLK/(1336*2))+25 ; Өндөр давтамжийн хувьд 2 .word 0ffffh-(TCLK/(1477*2))+24 ; 3 үгийн өндөр давтамж 0ffffh-(TCLK/(1207*2))+28 ; Өндөр давтамжийн хувьд 4 .word 0ffffh-(TCLK/(1336*2))+25 ; Өндөр давтамж 5 .word 0ffffh-(TCLK/(1477*2))+24 ; Өндөр давтамж 6 .word 0ffffh-(TCLK/(1207*2))+28 ; Өндөр давтамж 7 .word 0ffffh-(TCLK/(1336*2))+25 ; Өндөр давтамж 8 .word 0ffffh-(TCLK/(1477*2))+24 ; Өндөр давтамж 9 .word 0ffffh-(TCLK/(1633*2))+22 ; Өндөр давтамж нь A .word 0ffffh-(TCLK/(1633*2))+22 ; B-ийн хувьд өндөр давтамж .word 0ffffh-(TCLK/(1633*2))+22 ; C .word-ийн өндөр давтамж 0ffffh-(TCLK/(1633*2))+22 ; Өндөр давтамж D .word 0ffffh-(TCLK/(1207*2))+28 ; Өндөр давтамжийн хувьд * .word 0ffffh-(TCLK/(1477*2))+24 ; # хувьд өндөр давтамж; “Доод” давтамжийн хүснэгт DTMF_LO .байт 0ffh-(TCLK/(941*2*3)) ; 0 .байтын хувьд бага давтамж 0ffh-(TCLK/(697*2*3)) ; 1 .байтын хувьд бага давтамж 0ffh-(TCLK/(697*2*3)) ; 2 .байтын хувьд бага давтамж 0ffh-(TCLK/(697*2*3)) ; 3 .байтын хувьд бага давтамж 0ffh-(TCLK/(770*2*3)) ; 4 .байтын хувьд бага давтамж 0ffh-(TCLK/(770*2*3)) ; 5 .байтын хувьд бага давтамж 0ffh-(TCLK/(770*2*3)); 6 .байтын хувьд бага давтамж 0ffh-(TCLK/(853*2*3)) ; 7 .байтын хувьд бага давтамж 0ffh-(TCLK/(853*2*3)) ; 8 .байтын хувьд бага давтамж 0ffh-(TCLK/(853*2*3)) ; 9 .байтын хувьд бага давтамж 0ffh-(TCLK/(697*2*3)) ; A .байтын хувьд бага давтамж 0ffh-(TCLK/(770*2*3)) ; B .байтын хувьд бага давтамж 0ffh-(TCLK/(853*2*3)) ; C .байтын хувьд бага давтамж 0ffh-(TCLK/(941*2*3)) ; D .байтын хувьд бага давтамж 0ffh-(TCLK/(941*2*3)) ; *.байтын хувьд бага давтамж 0ffh-(TCLK/(941*2*3)) ; # хувьд бага давтамж; Дохионы үргэлжлэх хугацааны хүснэгт DTMF_L .байт 2*941*DL/1000; Хагас цикл 0 .байт 2*697*DL/1000 ; Хагас цикл 1 .байт 2*697*DL/1000 ; Хагас цикл 2 .байт 2*697*DL/1000 ; Хагас цикл 3 .байт 2*770*DL/1000; 4 .байт 2*770*DL/1000-д зориулсан хагас мөчлөг; 5 .байт 2*770*DL/1000-ийн хагас цикл; 6 .байт 2*852*DL/1000-ийн хагас цикл; Хагас цикл 7 .байт 2*852*DL/1000; 8 .байт 2*852*DL/1000-ийн хагас цикл; Хагас цикл 9 .байт 2*697*DL/1000 ; A .byte 2*770*DL/1000-ийн хагас цикл; B .byte 2*852*DL/1000-д зориулсан хагас мөчлөг; C .byte 2*941*DL/1000-д зориулсан хагас мөчлөг; D .byte 2*941*DL/1000-д зориулсан хагас мөчлөг; Хагас мөчлөг *.байт 2*941*DL/1000 ; Хагас мөчлөг # ;******************************************** ********* ******************************** ; DTMF-TX DTMF дэд програм ;******************************************** ******************************** DTMF_TX mov.b DTMF_NR,RTEMP ; Дугаарыг түр бүртгэлд хадгалах mov.b DTMF_L(RTEMP),RCOUNT ; Үргэлжлэх хугацаа тоолуурыг хадгалах; DTMF-Lo давтамжийн mov.b #0a8h,&TCCTL-д 8 битийн таймер бэлтгэх; MCLK mov.b-аас цаг DTMF_LO(RTEMP),&TCPLD ; Бүртгэлийн бэлтгэл; урьдчилан ачаалах mov.b # 000,&TCDAT ; Бүртгэлээс тоолуур ачаалах; урьдчилан ачаалах bis.b # 008h,&IE1; Тасалдлыг идэвхжүүлэх; 8 битийн таймераас; DTMF-Hi давтамж rla r15-д зориулсан таймер портыг бэлтгэх; * 2 16 бит хүснэгтийн mov DTMF_HI(RTEMP),&DTMF_TL ; өндөр давтамжийн mov #003,RTEMP-д зориулж үг хадгалах; 8 битийн таймерын тоолуур bis.b #008h,IE2 ; Тасалдлыг идэвхжүүлэх; таймер-портоос mov.b &DTMF_TH,&TPCNT2 ; Өндөр байтыг TC2 mov.b &DTMF_TL,&TPCNT1 руу ачаалж байна; TC1 bis.b руу бага байт ачаалж байна #080h,&TPD ; 16 битийн таймерыг идэвхжүүлэх bis.b #HI_OUT+LO_OUT,&TPE ; DTMF-Hi/Lo гаралтыг идэвхжүүлэх mov.b #090h,&TPCTL ; Цаг хэмжигчийг идэвхжүүлэх;************************************************ ******** ******************************** ; Таймер портын тасалдал;************************************************ *** ******************************** TP_INT xor.b #HI_OUT,&TPD ; DTMF-Hi гаралтыг эргүүлэх mov.b &DTMF_TH,&TPCNT2 ; Ахлах багшийг ачаалж байна

3.2.2 1 Timer_A ашиглан квадрат долгион үүсгэх

Энэхүү DTMF дохио үүсгэх горим нь хүссэн давтамжийг квадрат долгион болгохын тулд зөвхөн Timer_A-г ашигладаг. Угсрах процесс нь MCLK давтамжийн утгаас үл хамааран програмыг ашиглах таймерт тохирох утгыг тооцдог. Гаралтын дохионы үргэлжлэх хугацааг миллисекундээр DL тогтмолоор тодорхойлно.

; Техник хангамжийн тодорхойлолт; FLLMPY .equ 32 ; 1.048 МГц давтамжийн давтамжийн үржүүлэгч FLL TCLK .equ FLLMPY*32768 ; TCLK: FLLMPY x f кварц DL .equ 82 ; DTMF дохионы үргэлжлэх хугацаа нь мс; (65..100 мс) STACK .equ 600h ; Стек эхлүүлэх хаяг; RAM-ийн тодорхойлолт; STDTMF .equ 202h ; Hi and Lo давтамжийн төлөв TIM32B .equ 204 ; Таймер бүртгэлийн өргөтгөл LENGTH .equ 206h ; DTMF үргэлжлэх хугацааны тоолуур; .текст 0F000h ; Програмын эхлэх хаяг; ; Timer_A эхлүүлэх: MCLK, Тасралтгүй горим, тасалдлыг идэвхжүүлсэн; Таймер гаралтын модулиудыг бэлтгэх Timer_A MCLK = 1.048 MHz (автомат) ; INIT MOV #STACK,SP ;Стек заагчийг эхлүүлж байна CALL #INITSR ;Үржүүлэгчийг эхлүүлж байна; FLL давтамж болон RAM MOV #ISMCLK+TAIE+CLR,&TACTL; Таймерыг эхлүүлж байна MOV.B #TA2+TA1,&P3SEL ; P3.5/4 CLR TIM32B портууд дээр TA2 ба TA1 гаралт; Өргөтгөсөн таймер бүртгэлийг арилгах BIS #MCONT,&TACTL ; Эхлэх цаг хэмжигч Timer_A EINT ; Ерөнхий тасалдлыг идэвхжүүлэх MAINLOOP ... ; Үндсэн гогцоо; ;Товч дарах: SDTMF нь хүснэгтийн офсетийг агуулна; өндөр ба бага байт дахь 2 давтамжийн хувьд (0..6,0..6); MOV&TAR,R5 ; Нэн даруй эхлүүлэхийн тулд: ADD FDTMFLO,R5 ; Богино хугацаанд офсет MOV R5,&CCR1 ; 0.71ms дараа анхны төлөвийн өөрчлөлт MOV R5,&CCR2 ; 1/(2x697) = 0.71ms MOV #OMT+CCIE,&CCTL1; Гаралтын урвуу, битийн тасалдал. MOV #OMT+CCIE,&CCTL2 ; Гаралтыг эргүүлэх, таслах бит MOV.B STDTMF,R5 ; 82 мс тоолуур RRA R5 ; бага давтамжийн төлөвийн өөрчлөлтийн тоо MOV.B DTMFL(R5),LENGTH ; дохионы үргэлжлэх хугацаанд... ; хөтөлбөрийг үргэлжлүүлэх; ; CCR0-ийн тасалдал зохицуулагч (энд ашиглагдаагүй); TIMMOD0 ... RETI ; ; Татаж авах-харьцуулах регистрээс тасалдлын зохицуулагч 1..4; TIM_HND ADD &TAIV,PC ; Хүсэлтийг хамгийн өндөр дүнтэй боловсруулах; RETI тэргүүлэх чиглэл; тасалдлын хүсэлт байхгүй: RETI JMP HCCR1 ; CCR1 (DTMF бага давтамж) JMP HCCR2-аас хүсэлт; CCR2 (DTMF өндөр давтамж) JMP HCCR3-аас хүсэлт; CCR3 JMP HCCR4-ийн хүсэлт; CCR4-ийн хүсэлт; TIMOVH INC TIM32B; Timer_A-г 32 бит RETI болгон сунгаж байна; ; DTMF бага давтамж: TA1 нь гаралтын нэгж 1-ийн гаралтыг эргүүлнэ; Дохионы үргэлжлэх хугацааг хянахын тулд төлөвийн өөрчлөлт бүрийг тоолно; HCCR1 PUSH R5 ; Ашигласан регистрүүдийг хадгалах MOV.B STDTMF,R5 ; Бага давтамжийн төлөв DTMF ADD FDTMFLO(R5),&CCR1 ; Хагас мөчлөгийн үргэлжлэх хугацааг нэмэх DEC.B LENGTH ; DL дохионы үргэлжлэх хугацаа дууссан уу? JNZ TARET; Үгүй; ; Тиймээ, DTMF дохиог зогсоох: тасалдлыг идэвхгүй болгох; BIC #OMRS+OUT+CCIE,&CCTL1 ; TA1 BIC #OMRS+OUT+CCIE,&CCTL2-г дахин тохируулах; TA2 TARET POP R5-г дахин тохируулах; R5 RETI-г сэргээх; Тасалдлаас буцах; ; Өндөр давтамжийн DTMF: TA2 нь гаралтын нэгж 2-ын гаралтыг эргүүлнэ; HCCR2 PUSH R5 ; Ашигласан MOV бүртгэлийг хадгалж байна. B STDTMF+1,R5 ; Өндөр давтамжийн төлөв DTMF ADD FDTMFHI(R5),&CCR2; Хагас мөчлөгийн үргэлжлэх хугацааг нэмэх POP R5 ; R5 RETI-г сэргээх; Тасалдлаас буцах; HCCR3 ... ;CCR3 RETI регистрээр удирддаг даалгавар HCCR4 ... ;CCR4 RETI регистрээр удирддаг даалгавар ; ; DTMF давтамжийн хүснэгт: Хүснэгтэнд; хагас мөчлөгт MCLK циклийн тоо. Тохируулсан утгууд; угсрах явцад үр дүнтэй давтамж MCLK; ба хамгийн бага хэмжээнд хүртэл дугуйрсан болзошгүй алдаадавтамж; FDTMFLO .word ((TCLK/697)+1)/2 ; Бага давтамжийн DTMF 697Hz .word ((TCLK/770)+1)/2 ; 770Гц .үг ((TCLK/852)+1)/2 ; 852 Гц .үг ((TCLK/941)+1)/2 ; 941 Гц FDTMFHI .word ((TCLK/1209)+1)/2 ; Өндөр давтамжийн DTMF1209Hz .word ((TCLK/1336)+1)/2 ; 1336 Гц .үг ((TCLK/1477)+1)/2 ; 1477Гц .үг ((TCLK/1633)+1)/2 ; 1633 Гц; ; Хүснэгт нь DL дохионы (ms) үргэлжлэх хугацааны хагас мөчлөгийн тоог агуулна. ; Доод DTMF давтамжийг тоолоход ашигладаг; DTMFL .байт 2*697*DL/1000; Хагас мөчлөгийн тоо.байт 2*770*DL/1000 ; ms.byte дахь DL-ийн хувьд 2*852*DL/1000; .байт 2*941*DL/1000; ; .секц "TIMVEC",0FFF0h ; Таймер тасалдлын векторууд Timer_A .word TIM_HND ; Модулуудын вектор 1..4 таймер.word TIMMOD0 ; Таймер модуль 0 vector.sect "INITVEC",0FFFEh ; Вектор Дахин тохируулах.word INIT

Доорх нь арай хурдан шийдэл юм. Гэсэн хэдий ч, энэ нь илүү их RAM шаарддаг, учир нь ... Хүснэгтээс олж авсан өгөгдлийг дахин тооцоолдоггүй бөгөөд товчхондоо DTMFLO болон DTMFHI RAM-д хадгалагддаг. Унших нь Timer_A таймер тасалдлын горимуудаас хийгддэг. Ашигласан хүснэгтүүд нь өмнөх жишээнд үзүүлсэнтэй ижил байна.

FLLMPY .equ 32 ; 1.048 МГц давтамжийн давтамжийн үржүүлэгч FLL TCLK .equ FLLMPY*32768 ; TCLK: FLLMPY x f кварц DL .equ 82 ; DTMF дохионы үргэлжлэх хугацаа; мс-ээр (65..100 мс) STDTMF .equ 202h ; Hi and Lo давтамжийн төлөв TIM32B .equ 204 ; Таймер бүртгэлийн өргөтгөл LENGTH .equ 206h ; DTMF үргэлжлэх хугацааны тоолуур DTMFLO .equ 208h ; Доод давтамжийн хагас мөчлөг DTMFHI .equ 20Ah; Дээд давтамжийн хагас цикл STACK .equ 600h ; Стек эхлүүлэх хаяг.текст 0F000h ; Програмын эхлэх хаяг; Timer_A эхлүүлэх: MCLK, Тасралтгүй горим, тасалдлыг идэвхжүүлсэн; Таймер гаралтын модулиудыг бэлтгэх Timer_A MCLK = 1.048 MHz (автомат) ; INIT MOV #STACK,SP ; Стек заагчийг эхлүүлж байна CALL #INITSR ; Үржүүлэгчийг эхлүүлэх; FLL давтамж болон RAM MOV #ISMCLK+TAIE+CLR,&TACTL; Эхлэх таймер MOV.B #TA2+TA1,&P3SEL ; P3.5/4 CLR TIM32B портууд дээр TA2 ба TA1 гаралт; Өргөтгөсөн таймерын бүртгэлийг цэвэрлэж байна BIS #MCONT,&TACTL ;Таймерыг эхлүүлж байна_A EINT ; Ерөнхий тасалдлыг идэвхжүүлэх MAINLOOP ... ; Үндсэн давталт;Товчлуур: SDTMF нь хүснэгтийн офсетийг агуулдаг; өндөр ба бага байт дахь 2 давтамжийн хувьд (0..6,0..6); MOV&TAR,R5 ; Нэн даруй эхлүүлэхийн тулд FDTMFLO,R5 ; Богино хугацаанд офсет MOV R5,&CCR1 ; 0.71ms дараа анхны төлөвийн өөрчлөлт MOV R5,&CCR2 ; 1/(2x697) = 0.71мс; ; DTMF давтамжийн хоёр мөчлөгийн тоог татаж авах; MOV.B STDTMF+1,R5 ; Өндөр давтамжийн DTMF MOV FDTMFHI(R5),DTMFHI; Хагас мөчлөгийн үргэлжлэх хугацаа MOV.B STDTMF,R5 ; Бага давтамжийн DTMF MOV DTMFLO(R5),DTMFLO ; Хагас мөчлөгийн үргэлжлэх хугацаа; ; Үргэлжлэх хугацаа тоолуур RRA R5 ; Байтын индекс бэлтгэх MOV.B DTMFL(R5),LENGTH ; бага давтамжийн төлөвийн өөрчлөлтийн тоо MOV #OMT+CCIE,&CCTL1 ; Гаралтын урвуу, битийн тасалдал. MOV #OMT+CCIE,&CCTL2 ; Гаралтын урвуу, битийн тасалдал. ... ; Үндсэн гогцоо руу буцах; ; CCR0-ийн тасалдал зохицуулагч (энд ашиглагдаагүй); TIMMOD0 ... RETI ; ; Татаж авах-харьцуулах регистрээс тасалдлын зохицуулагч 1..4; TIM_HND ADD &TAIV,PC ; Хүсэлтийг хамгийн өндөр дүнтэй боловсруулах; RETI тэргүүлэх чиглэл; тасалдлын хүсэлт байхгүй: RETI JMP HCCR1 ; CCR1 (DTMF бага давтамж) JMP HCCR2-аас хүсэлт; CCR2 (DTMF өндөр давтамж) JMP HCCR3-аас хүсэлт; CCR3 JMP HCCR4-ийн хүсэлт; CCR4-ийн хүсэлт; TIMOVH INC TIM32B; Timer_A-г 32 бит RETI болгон сунгаж байна; ; DTMF бага давтамж: TA1 нь гаралтын нэгж 1-ийн гаралтыг эргүүлнэ; HCCR1 ADD DTMFLO, & CCR1 ; Хагас мөчлөгийн үргэлжлэх хугацааг нэмэх DEC.B LENGTH ; DL дохионы үргэлжлэх хугацаа дууссан уу? JNZ TARET; Үгүй; ; Тиймээ, DTMF дохиог зогсоох: тасалдлыг идэвхгүй болгох; BIC #OMRS+OUT+CCIE,&CCTL1 ; TA1 BIC #OMRS+OUT+CCIE,&CCTL2-г дахин тохируулах; TA2 TARET RETI-г дахин тохируулах; Тасалдлаас буцах; Өндөр давтамжийн DTMF: TA2 нь гаралтын нэгж 2-ын гаралтыг эргүүлнэ; HCCR2 ADD DTMFHI, & CCR2 ; Хагас мөчлөгийн үргэлжлэх хугацааг нэмэх RETI ; Тасалдлаас буцах; HCCR3. .. ;CCR3 RETI HCCR4 регистрээр удирддаг даалгавар ... ;CCR4 RETI регистрээр удирддаг даалгавар ; ; Тасалдлын хүснэгтүүд болон векторууд нь өмнөх жишээнд үзүүлсэнтэй ижил байна.

3.3 DTMF дохио үүсгэх техник хангамж

Дээр дурдсанчлан 200 Гц.. 4600 Гц давтамжийн мужид дамжуулах давтамжийн дохионы түвшин нь гадны дохионы (дуу чимээ) түвшингээс дор хаяж 20 дБ байх ёстой. Нэмж дурдахад, тодорхойлолтод үндэслэн "дээд" ба "доод" бүлгийн дохио нь өөр өөр түвшинтэй байх ёстой тул дохио бүр өөрийн шүүлтүүрийг шаарддаг. Синусоидын давтамжийн далайцыг Фурье цувралаас авч болно.

Аналог шүүлтүүрийг зохион бүтээхдээ хязгаарлах давтамжийг сонгохын тулд та дараах шаардлагыг хангасан байх ёстой.

  • Учир нь "доод" бүлгийн давтамжийг "дээд" бүлгийн давтамжтай хослуулах боломжийг хангах шаардлагатай; бүлгийн хамгийн бага ба хамгийн өндөр давтамжийн түвшний зөрүү 3 дБ-ээс хэтрэхгүй байх ёстой.
  • Бүлэг дэх хамгийн бага давтамжийн хувьд (f1) гармоник дарангуйлал (3f1) 20 дБ-ээс багагүй байх ёстой. Энэ нөхцлийн биелэлт нь бүлгийн доод давтамжийн хувьд хамгийн чухал, учир нь шүүлтүүрийн таслах давтамжаас аль болох хол байна.

Томъёо нь n дарааллын өндөр дамжуулалттай Баттерворт шүүлтүүрийн гаралтын үнэмлэхүй утгын квадратыг тодорхойлдог.

Энэ томъёо нь Баттервортын өндөр нэвтрүүлэх шүүлтүүрийн ашигын давтамжаас хамаарах хамаарлыг илэрхийлдэг. fg ба n параметрүүд нь шүүлтүүрийн таслах давтамж ба дарааллыг тус тус тодорхойлно.

Юуны өмнө дээрх шаардлагыг дагаж мөрдөхийг харгалзан шаардлагатай шүүлтүүрийн дарааллыг тооцоолох шаардлагатай.

Эхний нөхцлийг хангахын тулд бүлгийн хамгийн бага ба хамгийн өндөр давтамжийн үнэмлэхүй утгын квадратуудын харьцаа 3 дБ-ээс ихгүй байх ёстой, эсвэл:

Хэрэв f1 ба 3f1 давтамжийн үнэмлэхүй утгуудын квадратуудын харьцаа 10/3-аас их байвал хоёр дахь нөхцөл автоматаар хангагдана, энэ тохиолдолд тэгш өнцөгт дохионы гурав дахь гармоник нь 1/3-аас бага байна (Фурье-г үзнэ үү). цуврал ба Зураг 2):

Хоёр бүлгийн давтамжийн тооцооллын үр дүнд бид шаардлагатай шүүлтүүрийн дараалал n=1.15 байна. Иймээс шаардлагыг үйлдлийн өсгөгч дээр суурилуулж болох 2-р дарааллын шүүлтүүрээр хангана. Хэрэв та 3-р зэрэглэлийн шүүлтүүр ашигладаг бол танд зөвхөн хоёр нэмэлт элемент хэрэгтэй. Гэсэн хэдий ч энэ нь бүрэлдэхүүн хэсгийн параметрүүдийн тархалтад тавигдах шаардлагыг багасгах болно. Таслах давтамж нь дараах хязгаарт байгаа тохиолдолд дээрх хоёр шаардлагыг хангана.

Доод бүлэг fg>880 Гц fg<1418 Гц
Дээд бүлэг fg>1527 Гц fg<2460 Гц

Хэрэв таслах давтамж хамгийн багадаа байвал гармоникийн хамгийн их бууралт үүснэ. Гэхдээ энэ тохиолдолд бүлгийн хамгийн бага ба хамгийн өндөр давтамжийн зөрүү 3 дБ байна. Боломжит хамгийн дээд хязгаарын давтамжтай үед түвшний зөрүү хамгийн бага боловч гармоник бүрэлдэхүүн хэсгүүд нь зөвхөн 20 дБ-ээр дарагддаг.

Шүүлтүүрийг тооцоолохдоо гармоник дарангуйлалд ихээхэн анхаарал хандуулж, бүлгийн доторх түвшний зөрүүг 2 дБ-ээр тогтоов. Үүний үр дүнд таслах давтамж нь 977 Гц ба 1695 Гц байна. Үүссэн гармоник дарангуйлал нь шаардлагаас ихээхэн давж гардаг. Бүлэг дэх давтамжийн түвшний ялгаа нь ашигласан бүрэлдэхүүн хэсгүүдийн параметрүүдийн тархалттай холбоотой таслах давтамжийн хазайлттай байсан ч гэсэн шаардлагад нийцдэг. Шүүлтүүрийн элементүүдийн утгыг тооцоолохдоо резисторуудыг E12 цувралын стандарт утгуудтай хамгийн ойр байхаар нь сонгосон.

Шүүлтүүрийн гаралт дээр үр дүн нь мэдэгдэхүйц дарагдсан гармоник бүхий хоёр синусоид дохио юм. Эдгээр дохиог нэгтгэхийн тулд нэмэлт нэмэгчийг нэвтрүүлсэн.

Тиймээс бид зөвхөн 3 op-amps болон цөөн хэдэн идэвхгүй элементүүдийг ашиглан томоохон тооцооллын нөөц ашиглахгүйгээр микроконтроллер ашиглан DTMF дохиог үүсгэх боломжтой.

Симулятор програмуудыг ашиглан ойролцоо утгыг шалгасан. Шүүлтүүрийн хариу нь тооцоолсон давтамжийн хариутай маш нягт таарч байна.


Цагаан будаа. 6: 3-р зэрэглэлийн шүүлтүүрийн гаралтын үед 697 Гц давтамжтай тэгш өнцөгт дохионы далайцын спектр

Зураг дээр. Зураг 6-д 3-р эрэмбийн шүүлтүүрээр дамжсан 697 Гц давтамжтай тэгш өнцөгт дохионы далайцын спектрийг үзүүлэв. Зургаас харахад гурав ба тав дахь гармоникууд (2091 Гц ба 3485 Гц) мэдэгдэхүйц суларсан (-25.6 дБ).


Цагаан будаа. 7: 3-р зэрэглэлийн шүүлтүүрийн гаралтын үед 941 Гц давтамжтай тэгш өнцөгт дохионы далайцын спектр

Зураг дээр. Зураг 7-д 941 Гц давтамжтай дөрвөлжин долгионы дохионы спектрийг үзүүлэв. Бидний сонирхож буй давтамжийн бүсэд 4600 Гц хүртэл зөвхөн нэг гармоник байдаг. Шүүлтүүрийг дамжуулсны дараа энэ 2823 Гц гармоник мэдэгдэхүйц суларсан (-27.9 дБ). Бүлэг дэх хамгийн бага ба хамгийн өндөр давтамжийн түвшний зөрүү 1.9 дБ-ээс хэтрэхгүй.

Параметрийн өндөр өөрчлөлт бүхий хямд өртөгтэй бүрэлдэхүүн хэсгүүдийг ашиглахын тулд нэмэлт загварчлалыг хийсэн. Симуляцийн үр дүнгээс харахад резистор ба конденсаторын утгын зөвшөөрөгдөх тархалт 10% байна.


Зураг 8: Гистограмм – бүлгийн дохионы түвшний тархалт


Зураг 9: Гистограм – Гармоник дарангуйлал

Зураг дээр. 8 ба 9-д Монте-Карлогийн шинжилгээгээр олж авсан гистограммуудыг харуулав. Энэ тохиолдолд бүрэлдэхүүн хэсгийн утгууд 10% -ийн тархалтын хүрээнд санамсаргүй байдлаар өөрчлөгддөг. 100 давталтын дараа бүх загварчилсан шүүлтүүрийн үр дүнг гистограммд зурна. Зураг дээрх гистограммд. Зураг 8-д бүлгийн доторх давтамжуудын түвшний зөрүүг харуулав. Хамгийн бага ба хамгийн их давтамжийн хоорондох зөвшөөрөгдөх хамгийн их зөрүү 3 дБ ямар ч тохиолдолд хүрч чадаагүй. Дундаж утга нь 1.6 дБ бөгөөд энэ нь тооцоолсон 2 дБ-ээс арай дээр юм.

Зураг дээр. Зураг 9-д "доод" давтамжийн бүлгийн гармоникийн унтралтыг харуулав. Шаардлагатай 20 дБ-ийн утга нь бүх тохиолдолд хүрдэг, дундаж утга нь ойролцоогоор 27 дБ байна. Хамгийн муу тохиолдолд гармоник нь 24.2 дБ-ээр дарагддаг.

"Доод" давтамжийн бүлгийн шүүлтүүрт тооцсон утгыг "дээд" давтамжийн бүлгийн шүүлтүүрт мөн хийдэг.

Хоёр шүүлтүүр хоёулаа ижил хэлхээтэй. Цорын ганц ялгаа нь дээд ба доод давтамжийн бүлгийн шүүлтүүрүүдийн таслах давтамж юм. R1 ба C1 нь 1-р зэрэглэлийн өндөр дамжуулалтын шүүлтүүрийг бүрдүүлдэг. Учир нь хэлхээний оролтын эсэргүүцэл нь R1-ээс хамаарна, энэ элементийн утга нь хэтэрхий бага байх ёсгүй; эс бөгөөс микроконтроллерийн гаралт хэт ачаалалтай байх ба дөрвөлжин долгионы хэлбэрийг гажуудуулна. Энэ тохиолдолд интермодуляцийн гажуудлаас үүссэн нэмэлт давтамжууд нь дохионд нэмэгдэх бөгөөд энэ нь дохио ба дуу чимээний харьцаанд сөргөөр нөлөөлнө.

Дээд зэрэглэлийн шүүлтүүрүүдийн дамжуулах функцийг зөвхөн идэвхгүй бүрэлдэхүүн хэсгүүдийг ашиглан олж авах боломжгүй.

Тиймээс 2-р дарааллын шүүлтүүр нь op-amp агуулсан байх ёстой. R1-1 ба R1-2 резисторуудыг ашиглан шүүлтүүрийн идэвхтэй олзыг 0.2 болгож тохируулна. Таны харж байгаагаар дохио бага зэрэг суларсан байна. Энэ нь op-amp-ийг хэт ачаалахгүйн тулд зайлшгүй шаардлагатай, учир нь дөрвөлжин долгионы дохионы үндсэн синусоид гармоникийн оргил далайц нь дөрвөлжин долгионы дохионы далайцаас давсан байна (Фурье цуврал ба 2-р зургийг үз). Нэмэлт нэмэгч нь шаардлагатай гаралтын түвшинг тохируулдаг. Тэгш өнцөгт дохионы тогтмол бүрэлдэхүүн хэсгийн улмаас op-amp-ийн ажиллах цэгийг Vcc/2 түвшинд тохируулсан (Мөн Фурье цуврал ба 2-р зургийг үз). Энэ тохиолдолд тогтмол бүрэлдэхүүн хэсгийг R1-1/R1-2 оролтын хуваагчаар арилгах боломжгүй. OS хэлхээг тогтмол хүчдэлээр салгахын тулд конденсатор C3 ашигладаг.

Аналог шүүлтүүрийн гаралт бүрт дээд ба доод давтамжийн бүлгүүдийн дохиог тус тус үүсгэдэг. Нэмэлт нэмэгчид эдгээр дохиог нэмдэг. Энэ хэлхээний элементэд та R4 ба R5 резисторыг ашиглан нийт дохионы "доод" ба "дээд" давтамж ба гаралтын дохионы түвшний хоорондын хамаарлыг тохируулж болно. Тиймээс гаралтын далайцыг янз бүрийн улс орны янз бүрийн шаардлагад нийцүүлэн хялбархан тохируулж болно.

Бүрэлдэхүүн хэсгүүдийн утгыг тооцоолохдоо конденсаторын утгууд нь ердийнх шиг тогтмол байсан бөгөөд резисторын утгыг тэдгээрийн дагуу тооцоолсон. Энэ хэлхээнд стандарт E12 цувралын конденсатор ба резисторыг 10% -ийн тархалттай ашигласан.

Зураг дээр. Зураг 10-д аналог шүүлтүүр ба нэмэгчийн бүдүүвч диаграммыг үзүүлэв.


Цагаан будаа. 10: Бүдүүвч диаграммнэмэлт нэмэгчтэй аналог шүүлтүүрүүд

C1-1 ба C1-2 конденсаторууд нь Vcc/2 үйлдлийн цэг дээр хоёр дохиог нэгтгэдэг. Та эдгээр элементүүдийн хувьд хэт том утгыг сонгох ёсгүй, учир нь тэдгээр нь бага давтамжийн дэд гармоникуудыг арилгахад зориулагдсан нам дамжуулалтын шүүлтүүр элементүүд юм. Шүүлтүүрийн конденсатор C5 нь жишиг хүчдэлийн дуу чимээг арилгадаг. R6 санал хүсэлтийн эсэргүүцэлтэй зэрэгцээ холбогдсон нэмэлт конденсатор C6 нь нэгдүгээр зэрэглэлийн өндөр дамжуулалтын шүүлтүүрийг үүсгэдэг. Хэрэв шүүлтүүрийн хамгийн бага таслах давтамжийг сонгосон бол өндөр давтамжийн интермодуляцийн хөндлөнгийн шүүлтүүрийг нэмэлт шүүлтүүрээр хийх нь гаралтын дохионы чанарыг сайжруулах боловч "дээд" бүлгийн хамгийн өндөр давтамжийн зарим сулралт болно. Зарим тохиолдолд 1633 Гц-ийн хамгийн өндөр DTMF давтамжийг үүсгэх шаардлагагүй, учир нь энэ нь зөвхөн A-D үйлчилгээний тэмдэг үүсгэхэд ашиглагддаг бөгөөд шүүлтүүрийн таслах давтамжийг бууруулснаар дохио-дуу чимээний харьцааг сайжруулж болно. Тиймээс таслах давтамжийг нэмэгдүүлэх нь өндөр давтамжийн хөндлөнгийн оролцооны түвшинг нэмэгдүүлэхэд хүргэдэг боловч үүнтэй зэрэгцэн DTMF дохионы хамгийн өндөр давтамжийн бүрэлдэхүүн хэсгүүдэд үзүүлэх сөрөг нөлөөллийг бууруулдаг.

4 DTMF дамжуулагч дохионы судалгааны үр дүн

Доорх спектрограммууд (Зураг 11 ба 12) янз бүрийн давтамжийн DTMF дамжуулагчийн гаралтын дохиог харуулав. Зураг дээр. Зураг 11-д "1" тэмдгийн далайцын спектрийг харуулав. Үүнийг дамжуулахад шаардлагатай давтамжууд - 697 ба 1207 Гц нь -10.5 дБ ба -8.5 дБ түвшинд байна. 2091 ба 3621 Гц давтамжтай гармоникууд бараг 30 дБ-ээр дарагддаг. "D" тэмдгийг дамжуулахын тулд хамгийн өндөр хоёр давтамжийг үүсгэдэг - 941 ба 1633 Гц. Зураг дээрээс харж болно. 12, бага давтамжийн түвшин -12 дБ, өндөр давтамжийн түвшин -11 дБ байна. Холбогдох гармоникууд нь 30 дБ-ээс их хэмжээгээр сулардаг. Тиймээс хэмжсэн утгууд нь симуляцийн үр дүн болон техникийн шаардлагад нийцэж байна.


Цагаан будаа. 11: “1” тэмдгийн далайцын спектр: 697 ба 1207 Гц


Цагаан будаа. 12: “D” тэмдгийн далайцын спектр: 941 ба 1633 Гц

Хоёр өөр таймер ашиглах үед үүссэн дөрвөлжин долгионы дохионы үнэмлэхүй давтамжийн нарийвчлалд хүрэх боломжгүй бөгөөд үр дүн нь хоёр давтамжийн хослол болон ашигласан таймерын төрлөөс хамаарна. Үүний шалтгаан нь таймер тасалдлын зөрчил юм. Гэсэн хэдий ч шаардлагатай ±1.8% -ийн нарийвчлалыг их хэмжээгээр хангадаг.

Хэрэв 8 битийн таймер ба Таймер портын таймерыг MCLK 1.048 МГц давтамжтайгаар ашигладаг бол "доод" бүлгийн давтамжийг 0.3% -иас багагүй нарийвчлалтайгаар үүсгэдэг. "Дээд" бүлгийн давтамжийн хувьд практик дээр 0.5% -иас ихгүй хазайлтыг авсан.

Цорын ганц үл хамаарах зүйл бол хамгийн өндөр давтамжийг үүсгэдэг DTMF тэмдэгт "D" юм. Үүний үр дүнд энэхүү хослолд "дээд" бүлгийн 1633 Гц давтамж нь -0.97% -ийн хазайлттай байна.

Үүнийг эс тооцвол хамгийн өндөр давтамжтай 1633 Гц хүртэл 0.5% -иас илүү нарийвчлалтайгаар үүсдэг. Төрөл бүрийн давтамжийн хамгийн их хазайлтыг хүснэгтэд үзүүлэв.

Хэрэв Timer_A-г давтамж үүсгэхэд ашигладаг бол алдаа нь ашигласан MCLK давтамжаас хамаарна.

MCLK, МГц 1,048 2,096 3,144 3,800
Үржүүлэгч FLL 32 64 96 116
697 Гц +0,027% +0,027% +0,027% +0,027%
770 Гц -0,015% -0,016% +0,033% -0,016%
852 Гц +0,059% -0,023% +0,005% +0,031%
941 Гц +0,029% +0,029% +0,029% +0,035%
1209 Гц -0,079% +0,036% +0,036% -0,003%
1336 Гц +0,109% -0,018% +0,025% +0,025%
1447 Гц -0,009% -0,009% -0,009% -0,009%
1633 Гц +0,018% +0,018% +0,018% +0,018%

5 Дүгнэлт

Энэ жишээний програм хангамж нь маш энгийн бөгөөд ойролцоогоор 300 байт багтаамжтай бөгөөд бага хэмжээний RAM болон ROM шаарддаг. Баригдсан таймер модулийн ачаар CPU-ийн ачааллыг дэмий үрэлгүйгээр шаардлагатай давтамжийг өндөр нарийвчлалтайгаар үүсгэдэг. 8 битийн таймер болон таймер/портыг үйлдвэрлэхэд ашигладаг тохиргоонд тасалдлын горимууд нь CPU-ийн нөөцийн ойролцоогоор 12%-ийг эзэлдэг. Timer_A таймер давтамжийг үүсгэсэн тохиолдолд тасалдлын горимыг боловсруулах CPU-ийн ачаалал 6% хүртэл буурдаг. Үүний үр дүнд DTMF дохиог дамжуулах үед бусад ажлууд хийгдэж болно, эсвэл одоогийн хэрэглээг багасгахын тулд CPU-г бага чадлын горимд оруулж болно.

Дөрвөлжин долгионы дохиог ашиглан DTMF дохиог үүсгэх тайлбарласан модулийн сайн ажиллагаа нь техник хангамжийн хэлхээний загвараар нотлогддог. Учир нь Хэлхээнд өргөн хүрээний параметр бүхий бүрэлдэхүүн хэсгүүдийг ашиглах боломжтой бөгөөд ийм шийдлийн үнэ маш бага байдаг. Техникийн техникийн бүх шаардлагыг их хэмжээгээр хангасан тул MSP430-ийг хяналтын хянагч болгон ашигладаг төхөөрөмжүүдэд DTMF дохио үүсгэгчийн тусдаа модуль шаардлагагүй.

Хэрэв тодорхой тохиолдолд нэмэлт op-amp ашиглан дохио-дуу чимээний харьцааг нэмэгдүүлэх шаардлагатай бол интермодуляцийн гажуудлыг цаашид таслан зогсоох шүүлтүүрийг барьж болно. Ийм нэмэлт үйлдлийн өсгөгч нь DIL14 багц дахь дөрвөлжин өсгөгч дээр аль хэдийн байдаг.

6 холбоос

Bundesamt fur Post und Telekommunikation (Холбооны шуудан, харилцаа холбооны алба): BAPT 223 ZV 5, Zulassungsvorschrift fur Endeinrichtungen zur Anschaltung болон аналог Wahlanschlusse (ausgenommen Notruf- und Durchwahlanschlusse) (ausgenommen Notruf- und Durchwahlanschlusse) (телефон сүлжээний тусгай төхөөрөмжид холбогдсон утасны сүлжээ) аюулгүй байдал, дуудлагын шаардлага) / Deutschen Bundespost Telekom-ын ISDN; Bundesministerium fur Post und Telekommunikation, Draft, Бонн 1994 оны 4-р сар Папула: Mathematik fur Ingenieure 2 (Инженерүүдэд зориулсан математик); Vieweg Verlag, Braunschweig 1990 Tietze / Schenk: Halbleiterschaltungstechnik; (Titze/Schenk, Semiconductor Circuit Engineering), 10-р хэвлэл; Springer Verlag, Berlin 1993 Lutz Bierl / Texas Instruments: MSP430 Family, Metering Application Report, Texas Instruments, Issue 2.1, 1997, SLAAE10B Texas Instruments: MSP430 Family, Architecture User's Guide and Module Library, Texas LA Instruments, Texas1 Instruments:B MSP430 Family, 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 SP4Controller (M3Development SP4Control) MSP430 микроконтроллер дээр суурилсан тоон дохиог хүлээн авах, дамжуулах харилцаа холбооны систем); Diplomarbeit, Fachhochschule Landshut, 1997 оны Май

Энгийн төхөөрөмжүүдийн сэдвээр би ижил ATtiny2313 ашиглан DTMF дохио үүсгэгчийг угсрахаар шийдсэн. Мэдэхгүй хүмүүсийн хувьд DTMF (Хос авианы олон давтамж) нь утасны дугаарыг залгахад ашигладаг хоёр авианы олон давтамжийн аналог дохио юм. Википедиа уншина уу.

Ийм төхөөрөмжийг угсрах шийдвэр нь микроконтроллер ашиглан нарийн төвөгтэй аналог дохиог хэрэгжүүлэхийг оролдох хүслээс үүдэлтэй юм. Энэ төхөөрөмжид ямар ч практик хэрэглээ төлөвлөөгүй байсан ч хэн нэгэн ийм төхөөрөмжийг ашигтай гэж үзэх болов уу? Үүнийг хэрэглэ!

DTMF генераторын эх үүсвэр


Одоо бид юу авснаа харцгаая.

Дохио нь PWM ашиглан үүсгэгддэг бөгөөд хүссэн хэлбэрийг өгөхийн тулд RC хэлхээг ашигладаг. Үүний үр дүнд RC гинжин хэлхээний дараа бид дараах дохиог авна (товчлуур 6 дарагдсан):

Ашигтай дохионы бүх муруйн дагуу бид өндөр давтамжийн самыг ажигладаг (давтамж нь сонсогдохоос өндөр байдаг тул чимээ шуугиан үүсгэхгүй) - энэ бол RC хэлхээний ажил юм. Та конденсаторын багтаамж эсвэл резисторын эсэргүүцлийг нэмэгдүүлэх замаар шугамыг жигд болгож чадна, гэхдээ энэ тохиолдолд ашигтай дохионы хүрээ мэдэгдэхүйц буурах болно.

Бид дохионы спектрийг харж, хоёр тусдаа давтамж байгаа эсэхийг шалгана (PWM давтамж нь дэлгэцийн талбайн гадна гарсан) бөгөөд энэ нь бүх зүйл хэвийн байна гэсэн үг юм - төхөөрөмж зохих ёсоор ажиллаж байна.

Бэлэн шийдлүүд

DTMF дохиог үүсгэх, тайлах даалгавруудын бэлэн шийдлүүд байдаг. Эдгээр микро схемд зориулсан хэд хэдэн мэдээллийн хуудас энд байна.

DTMF генератор
- DTMF декодер


P.S. ATtiny2313-д ADC байхгүй байгаа нь харамсалтай - та DTMF декодер ашиглаж болно! Гэхдээ зүгээр, би үүнийг мега дээр давтах болно, би үүнийг заавал хавсаргана.

(6,868 удаа зочилсон, өнөөдөр 1 удаа зочилсон)

Tone dialing (Хос дуут олон давтамжтай дохиолол, DTMF) нь өнгөрсөн зууны 50-аад онд Bell Labs-аас тухайн үеийн хувьсгал болсон товчлууртай утсанд зориулж бүтээгдсэн. Тоон өгөгдлийг дууны горимд илэрхийлэх, дамжуулахын тулд ярианы давтамжийн хүрээний хос давтамжийг (тонус) ашигладаг. Уг систем нь дөрвөн давтамжийн хоёр бүлгийг тодорхойлдог бөгөөд мэдээлэл нь бүлэг бүрээс нэг давтамжтай хоёр давтамжийг нэгэн зэрэг дамжуулах замаар кодчилдог. Энэ нь арван зургаан өөр тоо, тэмдэг, үсгийг илэрхийлэх нийт арван зургаан хослолыг өгдөг. DTMF кодчилол нь одоо харилцаа холбоо, хяналтын өргөн хүрээний хэрэглээнд ашиглагдаж байгаа нь жишээ нь Олон улсын цахилгаан холбооны холбооны (ОУЦХБ) 23-р зөвлөмжөөс нотлогдсон.

Энэ нийтлэлд бүх найман давтамжийг хуулбарлаж, хоёр тонн гаралтын дохиог үүсгэдэг DTMF дууны генераторын хэлхээг тайлбарласан болно. Энэ системийг Silego GreenPAK™ SLG46620V чип дээр суурилуулсан ба үйл ажиллагааны өсгөгч Silego SLG88104V. Үүссэн дохио нь утасны товчлуурын мөр ба баганаар тодорхойлогддог хоёр давтамжийн нийлбэр юм.

Санал болгож буй хэлхээ нь үүсгэх давтамжийн хослолыг сонгохдоо дөрвөн оролтыг ашигладаг. Уг хэлхээнд мөн идэвхжүүлэх оролт байдаг бөгөөд энэ нь үүслийг өдөөж, дохио дамжуулах хугацааг тодорхойлдог. Генераторын гаралтын давтамж нь DTMF-ийн ITU стандартад нийцдэг.

DTMF аялгуу

DTMF стандарт нь 0-9 хүртэлх тоо, A, B, C, D үсэг, * ба # тэмдэгтүүдийн кодчиллыг хоёр давтамжийн хослол гэж тодорхойлдог. Эдгээр давтамжийг өндөр давтамжийн бүлэг, бага давтамжийн бүлэг гэж хоёр бүлэгт хуваадаг. Хүснэгт 1-д давтамж, бүлэг, харгалзах тэмдгийн дүрслэлийг харуулав.

Хүснэгт 1. DTMF дууны кодчилол

Гурвалсан бүлэг

Бага дамжуулалтын бүлэг

Олон гармоникаас зайлсхийхийн тулд давтамжийг сонгосон. Үүнээс гадна, тэдгээрийн нийлбэр эсвэл зөрүү нь өөр DTMF давтамжийг үүсгэдэггүй. Ийм байдлаар гармоник эсвэл модуляцийн гажуудал үүсэхээс сэргийлнэ.

Q.23 стандарт нь дамжуулж буй давтамж бүрийн алдаа нь нэрлэсэн утгын ±1.8% дотор байх ёстой бөгөөд нийт гажуудал (гармоник эсвэл модуляцын улмаас) үндсэн давтамжаас 20 дБ доогуур байх ёстой.

Дээр тайлбарласан дохиог дараах байдлаар тодорхойлж болно.

s(t) = Acos(2πfhight)+ Acos(2πflowt),

Энд fhigh ба урсгал нь өндөр ба нам давтамжийн бүлгүүдийн харгалзах давтамж юм.

Зураг 1-д "1" гэсэн цифрийн дохиог харуулав. Зураг 2-т энэ дохионд тохирох давтамжийн спектрийг харуулав.

Цагаан будаа. 1. DTMF ая

Цагаан будаа. 2. DTMF дууны спектр

DTMF дууны үргэлжлэх хугацаа нь дууны кодчилол ашигладаг тусгай програмаас хамаарч өөр өөр байж болно. Хамгийн түгээмэл хэрэглээний хувьд үргэлжлэх хугацааны утга нь ихэвчлэн гар болон автомат залгах хооронд байдаг. Хүснэгт 2-т ажилд авах хоёр төрлийн ердийн цагийн хураангуйг харуулав.

Хүснэгт 2. Дууны дууны дохионы үргэлжлэх хугацаа

Залгах төрөл

Гурвалсан бүлэг

Гурвалсан бүлэг

Гараар залгах

Автомат залгах

Илүү уян хатан байдлыг хангахын тулд энэхүү гарын авлагад санал болгож буй DTMF генератор нь дохио үүсгэж эхлэх, үргэлжлэх хугацааг тодорхойлоход ашигладаг идэвхжүүлэх оролтоор тоноглогдсон. Энэ тохиолдолд дохионы үргэлжлэх хугацаа нь идэвхжүүлэх оролт дахь импульсийн үргэлжлэх хугацаатай тэнцүү байна.

DTMF генераторын хэлхээний аналог хэсэг

ITU Зөвлөмж Q.23 нь DTMF дохиог хоёр синус долгионоор үүсгэгдсэн аналог дохио гэж тодорхойлдог. Санал болгож буй DTMF генераторын хэлхээнд Silego GreenPAK SLG46620V IC нь хүссэн DTMF давтамжтай дөрвөлжин долгионы дохиог үүсгэдэг. Шаардлагатай давтамжийн синусоид дохиог авч, үүссэн дохиог (хоёр синусоид долгионы нийлбэр) үүсгэхийн тулд аналог шүүлтүүр ба нэмэгч шаардлагатай. Ийм учраас энэ төсөлд SLG88104V үйлдлийн өсгөгч дээр суурилсан шүүлтүүр, нэгтгэгчийг ашиглахаар шийдсэн.

Зураг 3-т төхөөрөмжийн санал болгож буй аналог хэсгийн бүтцийг харуулав.

Цагаан будаа. 3. DTMF дохиог хүлээн авах аналог боловсруулах хэлхээ

Тэгш өнцөгт импульсээс синусоид дохио авахын тулд аналог шүүлтүүрийг ашигладаг. Шүүлтүүр хийсний дараа хоёр дохиог нэгтгэж, хүссэн гаралтын хоёр өнгийн DTMF дохиог үүсгэнэ.

4-р зурагт дөрвөлжин долгионы дохионы спектрийг авахад ашигласан Фурье хувирлын үр дүнг харуулав.

Цагаан будаа. 4. Дөрвөлжин долгионы дохионы спектр

Таны харж байгаагаар дөрвөлжин долгион нь зөвхөн сондгой гармоникуудыг агуулдаг. Хэрэв бид ийм A далайцтай дохиог Фурье цуврал хэлбэрээр илэрхийлбэл дараах хэлбэртэй байна.

Энэхүү илэрхийлэлд хийсэн дүн шинжилгээ нь хэрэв аналог шүүлтүүрүүд гармоникийн хувьд хангалттай унтрах чадвартай бол анхны дөрвөлжин долгионы дохионы давтамжтай тэнцүү давтамжтай синусоид дохиог авах боломжтой гэж дүгнэх боломжийг олгодог.

Q.23 стандартад тодорхойлсон хөндлөнгийн түвшний хүлцлийг харгалзан бүх гармоникуудыг 20 дБ ба түүнээс дээш сулруулсан эсэхийг баталгаажуулах шаардлагатай. Нэмж дурдахад нам дамжуулалтын бүлгийн аливаа давтамжийг өндөр дамжуулалтын бүлгийн аль ч давтамжтай хослуулах ёстой. Эдгээр шаардлагыг харгалзан бүлэг тус бүрт нэг шүүлтүүрийг хоёр шүүлтүүр боловсруулсан.

Хоёр шүүлтүүр нь бага дамжуулалттай Баттерворт шүүлтүүр байсан. Баттерворт шүүлтүүрийн захиалгын сулралтыг дараах байдлаар тооцоолж болно.

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

fc нь шүүлтүүрийн таслах давтамж, n нь шүүлтүүрийн дараалал юм.

Бүлэг бүрийн хамгийн бага давтамж ба хамгийн өндөр давтамжийн хоорондох сулралтын зөрүү нь 3 дБ-ээс ихгүй байж болох тул:

A(fӨНДӨР)[дБ] - A(цэцэг)[дБ] > 3 дБ.

Өгөгдсөн үнэмлэхүй утгууд:

A(fӨНДӨР) 2 / A(цэцэг) 2 > 2.

Түүнчлэн, бидний өмнө хэлсэнчлэн гармоник унтралт нь 20 дБ ба түүнээс дээш байх ёстой. Энэ тохиолдолд хамгийн муу тохиолдол нь бүлгийн хамгийн бага давтамж байх болно, учир нь түүний 3-р гармоник нь хамгийн бага давтамж бөгөөд шүүлтүүрийн таслах давтамжтай хамгийн ойр байдаг. Гурав дахь гармоник нь үндсэнээс 3 дахин бага гэдгийг харгалзан шүүлтүүр нь нөхцөлийг хангасан байх ёстой (үнэмлэхүй утга):

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

Хэрэв эдгээр тэгшитгэлийг хоёр бүлэгт хэрэглэвэл ашигласан шүүлтүүрүүд нь хоёр дахь дарааллын шүүлтүүр байх ёстой. Энэ нь хэрэв оп-ампер ашиглан хэрэгжүүлсэн бол тэдгээр нь хоёр резистор, хоёр конденсатортой болно гэсэн үг юм. Хэрэв гуравдахь дарааллын шүүлтүүрийг ашигласан бол бүрэлдэхүүн хэсгийн хүлцлийн мэдрэмж бага байх болно. Сонгосон шүүлтүүрийн таслах давтамж нь бага дамжуулалтын бүлгийн хувьд 977 Гц, өндөр дамжуулалтын бүлгийн хувьд 1695 Гц байна. Эдгээр утгуудын хувьд давтамжийн бүлгүүдийн дохионы түвшний ялгаа нь дээрх шаардлагуудтай нийцэж байгаа бөгөөд бүрэлдэхүүн хэсгийн хүлцлийн улмаас хязгаарлах давтамжийн өөрчлөлтийн мэдрэмж хамгийн бага байна.

SLG88104V ашиглан хэрэгжүүлсэн шүүлтүүрүүдийн бүдүүвч диаграммыг Зураг 5-д үзүүлэв. Эхнийхүүдийн үнэлгээг R-C хосууд SLG46620V чипийн гаралтын гүйдлийг хязгаарлах байдлаар сонгосон. Хоёрдахь шүүлтүүрийн холбоос нь 0.2 гэсэн ашгийг тодорхойлдог. Дөрвөлжин долгионы дохионы далайц нь үйлдлийн өсгөгчийн ажиллах цэгийг 2.5 В-д тохируулдаг. Хүсээгүй хүчдэлийг гаралтын шүүлтүүрийн конденсатороор хаадаг.

Цагаан будаа. 5. Гаралтын шүүлтүүрийн бүдүүвч зураг

Гаралтын үед шүүлтүүрийн дохиог нэгтгэж, үр дүнгийн дохио нь бага ба өндөр давтамжийн бүлгээс сонгосон гармоникуудын нийлбэр юм. Шүүлтүүрийн уналтыг нөхөхийн тулд гаралтын дохионы далайцыг R9 ба R10 хоёр резистор ашиглан тохируулж болно. Зураг 6-д нэмэгчийн хэлхээг үзүүлэв. Зураг 7-д хэлхээний аналог хэсгийг бүхэлд нь харуулав.

Цагаан будаа. 6. Нэмэгчийн бүдүүвч зураг

Цагаан будаа. 7. Хэлхээний аналог хэсэг

DTMF дууны генераторын хэлхээний дижитал хэсэг

DTMF дууны генераторын хэлхээний дижитал хэсэг нь бүхэл бүтэн дөрвөлжин долгион үүсгэгчийг агуулдаг - DTMF давтамж бүрт нэг. Эдгээр генераторуудыг бий болгохын тулд найман тоолуур шаардлагатай тул тэдгээрийг хэрэгжүүлэхийн тулд GreenPAK SLG46620V чипийг сонгосон. Тоон хэлхээний гаралт дээр давтамжийн бүлэг тус бүрт нэг ширхэг тэгш өнцөгт хэлбэртэй хоёр дохио үүсдэг.

Дөрвөлжин долгионы дохиог тоолуур болон D флип-флоп ашиглан үүсгэдэг бөгөөд 50% -ийн ажлын мөчлөгтэй байдаг. Ийм учраас тоолуур солих давтамж нь шаардлагатай DTMF давтамжаас хоёр дахин их байдаг бөгөөд DFF флип-флоп нь гаралтын дохиог хоёр хуваадаг.

Тоологчдын цагны эх үүсвэр нь суурилуулсан 2 МГц давтамжтай RC осциллятор бөгөөд давтамжийг 4 эсвэл 12-т хуваадаг. Хуваагчийг битийн багтаамж, тодорхой тоологч авахын тулд тоолуур бүрийн хамгийн их утгыг харгалзан сонгоно. давтамж.

Өндөр давтамжийг үүсгэхийн тулд цөөн тооны дээж шаардлагатай байдаг тул тэдгээрийг үүсгэхийн тулд дохио нь 4-т хуваагддаг дотоод RC осциллятороос ажилладаг 8 битийн тоолуурыг ашигладаг. Үүнтэй ижил шалтгаанаар бага давтамжийг 14 битийн тоолуур ашиглан хэрэгжүүлдэг.

SLG46620V нь зөвхөн гурван стандарт 14 бит тоолууртай тул доод давтамжуудын нэгийг 8 битийн CNT8 тоолуур ашиглан хэрэгжүүлсэн. Дээжийн тоо 0...255-ын хүрээнд байхын тулд энэ CNT8-ийг цаглахын тулд RC осцилляторын дохиог 12-т хуваах шаардлагатай байв. Энэ хэлхээний хувьд хамгийн олон дээж бүхий давтамж, нь хамгийн бага давтамжийг сонгосон. Энэ нь алдааг багасгах боломжийг бидэнд олгосон.

3-р хүснэгтэд квадрат долгион бүрийн параметрүүдийг харуулав.

Хүснэгт 3. Квадрат импульсийн генераторын параметрүүд

Цаг

Давтамжийн алдаа [%]

Бага дамжуулалтын бүлэг

Гурвалсан бүлэг

Хүснэгтээс харахад бүх давтамжууд нь 1.8% -иас бага алдаатай байдаг тул DTMF стандартад нийцдэг. Тохиромжтой RC осцилляторын давтамж дээр суурилсан эдгээр тооцоолсон шинж чанаруудыг RC осцилляторын гаралтын давтамжийг хэмжих замаар тохируулж болно.

Санал болгож буй хэлхээнд бүх генераторууд зэрэгцээ ажиллаж байгаа боловч бүлэг бүрээс зөвхөн нэг генераторын дохиог микро схемийн гаралт руу илгээнэ. Тодорхой дохионы сонголтыг хэрэглэгч өөрөө тодорхойлно. Үүнийг Хүснэгт 4-т үзүүлсэн үнэний хүснэгттэй дөрвөн GPIO оролт (бүлэг тус бүрт хоёр бит) ашиглан хийдэг.

Хүснэгт 4. Бага давтамжийн бүлгээс давтамжийг сонгох хүснэгт

Бага дамжуулалтын бүлэг

Хүснэгт 5. Өндөр давтамжийн бүлгээс давтамж сонгох хүснэгт

Гурвалсан бүлэг

Зураг 8-д 852 Гц давтамжтай квадрат долгион үүсгэгчийн логик хэлхээг үзүүлэв. Энэ загвар нь тохирох тоолуурын тохиргоо болон LUT тохиргоотой давтамж бүрт давтагдана.

Цагаан будаа. 8. Тэгш өнцөгт импульс үүсгэгч

Тоолуур нь түүний тохиргоогоор тодорхойлогдсон гаралтын давтамжийг үүсгэдэг. Энэ давтамж нь харгалзах DTMF дууны давтамжаас хоёр дахин их байна. Тоолуурын тохиргооны параметрүүдийг Зураг 9-д үзүүлэв.

Цагаан будаа. 9. Тэгш өнцөгт импульсийн генераторын тоолуур суурилуулах жишээ

Тоолуурын гаралтын дохио нь холбогдсон байна цагны оролт D-Flip Flop гох. DFF гаралтыг урвуу байдлаар тохируулсан тул хэрэв та DFF гаралтыг түүний оролттой холбовол D флип-флоп нь T флип-флоп болж хувирна. DFF тохиргооны параметрүүдийг Зураг 10-аас харж болно.

Цагаан будаа. 10. Тэгш өнцөгт импульсийн генераторын гохыг тохируулах жишээ

DFF гаралтын дохио нь LUT үнэний хүснэгтийн оролт руу ордог. LUT нь тодорхой R1-R0 хослол бүрт нэг дохио сонгоход хэрэглэгддэг. LUT тохиргооны жишээг Зураг 11. Б-д үзүүлэв энэ жишээнд, хэрэв R1 нь "1", R0 нь "0"-ийг хүлээн авбал оролтын дохио нь гаралт руу дамждаг. Бусад тохиолдолд гаралт нь "0"-г агуулна.

Цагаан будаа. 11. Дөрвөлжин импульсийн генераторын үнэний хүснэгтийг тохируулах жишээ

Дээр дурдсанчлан санал болгож буй хэлхээнд Enable enable оролт байна. Хэрэв "Идэвхжүүлэх" зөвшөөрлийн оролт дээр "1" логик нэгж байгаа бол үүсгэсэн тэгш өнцөгт дохиог микро схемийн хос гаралтад нийлүүлнэ. Дамжуулах хугацаа нь идэвхжүүлсэн оролт дээрх импульсийн үргэлжлэх хугацаатай тэнцүү байна. Энэ функцийг хэрэгжүүлэхийн тулд хэд хэдэн LUT шаардлагатай байсан.

Өндөр дамжуулалтын бүлэг нь Зураг 12-т үзүүлсэн шиг нэг 4 битийн LUT болон нэг 2 битийн LUT ашигладаг.

Цагаан будаа. 12. Гурвалсан бүлгийн гаралтын хэлхээ

4 битийн LUT1 гэж тохируулсан логик элементЭСВЭЛ, хэрэв оролтын аль нэгэнд нь “1” байвал логик нэг “1” гаргана. C1/C0 үнэний хүснэгтүүд нь осцилляторуудаас зөвхөн нэгийг нь сонгох боломжийг олгодог тул 4 битийн LUT1 нь ямар дохио гарахыг тодорхойлдог. Энэхүү LUT-ийн гаралт нь 2 битийн LUT4-д холбогдсон бөгөөд идэвхжүүлэх оролт нь логик "1" байвал зөвхөн дохио дамжуулдаг. 13 ба 14-р зурагт 4 битийн LUT1 ба 2 бит LUT4-ийн тохиргоог харуулав.

Цагаан будаа. 13. 4 битийн LUT1 тохиргоо

Цагаан будаа. 14. 2 битийн LUT4 тохиргоо

4 битийн үнэний хүснэгтийн LUT байхгүй болсон тул бага дамжуулалтын бүлэгт хоёр 3 битийн LUT ашигласан.

Цагаан будаа. 15. Бага дамжуулалтын бүлгийн гаралтын хэлхээ

GreenPAK SLG46620V-ийн бүрэн дотоод хэлхээг Зураг 16-д үзүүлэв. Зураг 17-д DTMF генераторын эцсийн хэлхээний диаграммыг үзүүлэв.

Цагаан будаа. 16. DTMF дуу үүсгэгчийн блок диаграмм

Цагаан будаа. 17. DTMF дууны үүсгүүрийн бүдүүвч зураг

DTMF генераторын хэлхээг турших

Санал болгож буй DTMF генераторыг турших эхний шатанд осциллограф ашиглан бүх үүсгэсэн тэгш өнцөгт дохионы давтамжийг шалгахаар шийдсэн. Жишээ болгон 18, 19-р зурагт 852 Гц ба 1477 Гц давтамжийн квадрат долгионы гаралтыг харуулав.

Цагаан будаа. 18. Дөрвөлжин долгион 852 Гц

Цагаан будаа. 19. Дөрвөлжин долгион 1477 Гц

Бүх дөрвөлжин долгионы дохионы давтамжийг шалгасны дараа хэлхээний аналог хэсгийг туршиж эхлэв. Бага ба өндөр давтамжийн бүх хослолын гаралтын дохиог шалгасан. Жишээ болгон 20-р зурагт 770 Гц ба 1209 Гц дохионы нийлбэрийг, Зураг 21-д 941 Гц ба 1633 Гц дохионы нийлбэрийг үзүүлэв.

Цагаан будаа. 20. DTMF ая 770 Гц ба 1209 Гц

Цагаан будаа. 21. DTMF ая 941 Гц ба 1633 Гц

Дүгнэлт

Энэ нийтлэлд Silego GreenPAK SLG46620V чип болон Silego SLG88104V үйлдлийн өсгөгч дээр суурилсан DTMF дууны генераторын хэлхээг санал болгосон. Генератор нь хэрэглэгчдэд дөрвөн оролтыг ашиглан хүссэн давтамжийн хослолыг сонгож, гаралтын дохионы үргэлжлэх хугацааг тодорхойлдог идэвхжүүлэх оролтыг удирдах боломжийг олгодог.

SLG46620V чипийн шинж чанарууд:

  • Төрөл: Програмчлагдах холимог дохионы IC;
  • Аналог блокууд: 8 битийн ADC, хоёр DAC, зургаан харьцуулагч, хоёр шүүлтүүр, ION, дөрвөн нэгдсэн осциллятор;
  • Дижитал блокууд: 18 хүртэлх оролт гаралтын порт, харилцан холболтын матриц ба комбинатор логик, програмчлагдах саатлын хэлхээ, программчлагдах функц үүсгүүр, зургаан 8 бит тоолуур, гурван 14 бит тоолуур, гурван PWM осциллятор/харьцуулагч;
  • Харилцаа холбооны интерфейс: SPI;
  • Нийлүүлэлтийн хүчдэлийн хүрээ: 1.8…5 В;
  • Ашиглалтын температурын хүрээ: -40…85 °C;
  • Багцын хувилбар: 2 x 3 x 0.55 мм 20 зүү STQFN.

Онцлог шинж чанарууд:

  • Импульсийн өргөн модуляц (PWM) ашиглан синус долгион үүсгэх
  • Өөр өөр синус долгионы дохиог нэг DTMF дохио болгон нэгтгэх
  • Эх кодуудассемблер болон Си хэл дээр
  • STK500-тай ажиллахад зориулагдсан
  • Програмын кодын хэмжээ 260 байт / тогтмол хүснэгтийн хэмжээ 128 байт
  • Хүснэгтийг хөрвүүлэх аргыг ашиглах

Оршил

Энэхүү баримт бичигт импульсийн өргөн модуляц (PWM) болон статик RAM агуулсан дурын AVR микроконтроллер ашиглан DTMF дохио (хос дуут олон давтамжийн дохио) үүсгэх аргыг тайлбарласан болно. Эдгээр дохионууд нь утаснуудад өргөн хэрэглэгддэг бөгөөд утасны залгах товчийг дарах үед тэдгээрийг хуулбарладаг. DTMF дохиог зөв үүсгэхийн тулд та хоёр давтамжийг давхарлах хэрэгтэй. бага давтамж(fb) ба өндөр давтамж (fa). Хүснэгт 1-д өөр өөр товчлуур дарахад DTMF аяыг бий болгохын тулд өөр өөр давтамжийг хэрхэн хольж байгааг харуулав.

Зураг 1 – DTMF дохио үүсгэгчийн хэлхээ

Хүснэгт 1 – Аяны дохио үүсгэх матриц

fb/fa 1209 Гц 1336 Гц 1477 Гц 1633 Гц
697 Гц 1 2 3 А
770 Гц 4 5 6 Б
852 Гц 7 8 9 C
941 Гц * 0 # Д

Хүснэгт 1-ийн мөрөнд бага давтамжийн утгыг, багана нь өндөр давтамжийн утгыг харуулав. Жишээлбэл, матрицаас харахад "5" товчийг дарахад fb = 770 Гц ба fa = 1336 Гц давтамжууд холилдох ёстой. Өөр өөр давтамжийн хоёр синусоид дохиог нэмсний үр дүнд DTMF дохио үүсдэг.

далайцын харьцаа хаана байна K=A b /A aэх үүсвэрийн дохио нь нөхцөлийг хангасан байх ёстой

Үйл ажиллагааны зарчим

Түүнээс гадна ерөнхий мэдээлэлИмпульсийн өргөн модуляцийг ашиглахын тулд импульсийн өргөн модуляц нь синусоид дохиог хэрхэн үүсгэх боломжийг танд олгоно. Дараагийн догол мөрөнд өөр өөр давтамжийг олж авахын тулд үндсэн шилжих давтамжийг хэрхэн ашиглах талаар тайлбарласан болно. Харгалзсаны дараа онолын үндэс DTMF дохио үүсгэгчийн тайлбарыг өөрөө өгөх болно. Синусын долгион үүсгэх

Өндөр VH ба бага VL хүчдэлийн үргэлжлэх хугацааны харьцаанаас хамааран PWM гаралтын дундаж утга өөрчлөгддөг. Хэрэв хоёр түвшний үргэлжлэх хугацааны хоорондын харьцаа тогтмол байвал үр дүнд нь тогтмол VAV хүчдэлийн түвшин үүснэ. Зураг 2-т импульсийн өргөн модуляцлагдсан дохиог үзүүлэв.


Зураг 2 – Тогтмол гүйдлийн хүчдэлийн түвшин үүсгэх

Хүчдэлийн түвшинг дараахь томъёогоор тодорхойлно.

(3)

Импульсийн өргөн модуляцаар үүсгэгдсэн хүчдэлийн дундаж утга нь PWM мөчлөг бүрт өөрчлөгдөх тохиолдолд синусоид дохиог үүсгэж болно. Өндөр ба доод түвшний хоорондын хамаарлыг тухайн үеийн синус долгионы хүчдэлийн түвшний дагуу тохируулах ёстой. Зураг 3-т энэ үйл явцыг харуулав. PWM-ийн эх өгөгдлийг түүний үе тус бүрээр тооцож, хөрвүүлэх хүснэгтэд (TC) тэмдэглэнэ.

Зураг 3-т мөн үндсэн синус долгионы давтамж ба дээжийн тоо хоорондын хамаарлыг харуулсан болно. Дээжийн тоо (Nc) их байх тусам үүссэн дохиог загварчлах нарийвчлал өндөр болно.

(4)

PWM давтамж нь PWM-ийн нягтралаас хамаарна. 8 битийн нарийвчлалтайгаар таймерын эцсийн утга (тооцооны дээд) нь 0xFF (255) байна. Учир нь Дараа нь таймер урагш хойш тоолно өгөгдсөн үнэ цэнэхоёр дахин нэмэгдэх ёстой. Тиймээс шилжих давтамжийг хуваах замаар тооцоолж болно цагийн давтамжтаймер f CK at 510. Иймээс 8 МГц-ийн таймерын давтамжтайгаар ХОУХШ-ийн давтамж 15.6 кГц болно.


Зураг 3 – PWM ашиглан синусоид дохио үүсгэх

Синусын долгионы давтамжийг өөрчлөх

Хайлтын хүснэгтээс синусоид дээжийг дараалан биш, нэг нэгээр нь уншина гэж бодъё. Энэ тохиолдолд ижил түүвэрлэлтийн хурдаар хоёр дахин их давтамжтай дохио үүснэ (Зураг 4-ийг үз).


Зураг 4 – Үр дүнгийн давтамжийг хоёр дахин нэмэгдүүлэх (XSW = 2)

Үүнтэй адилтгаж үзвэл, хэрэв та хоёр дахь утгыг биш, харин гурав, дөрөв, тав болгоныг уншвал (тус тусад нь алхамын өргөн нь 3, 4, 5 ...) гэх мэт. мужид Nc давтамж үүсгэх боломжтой. Өндөр давтамжийн хувьд үүссэн долгионы хэлбэр нь синусоид биш гэдгийг анхаарна уу. Бид хөрвүүлэх хүснэгтийн дагуу алхамын өргөнийг тэмдэглэнэ XSW, Хаана

(5)

Дараагийн ХОУХ-ны хугацаанд (таймер халих үед) TP дахь одоогийн байрлалын тооцоог (6) илэрхийлэл ашиглан гүйцэтгэнэ. Байршил дахь шинэ үнэ цэнэ X LUTөмнөх байрлалаас хамаарна X" LUTалхамын өргөнтэй хамт XSW

(6)

DTMF дохиог авахын тулд өөр өөр давтамжийг нэмж оруулав

DTMF дохиог (1) ба (2) илэрхийллийг ашиглан үүсгэж болно. Арифметик үйлдлүүдийг хялбар болгох үүднээс арифметик үйлдлийг логик шилжилтээр солихын тулд K коэффициентийн утгыг 0.75-тай тэнцүү авна. (6) илэрхийлэлийг харгалзан PWM хяналтын одоогийн утгыг дараах томъёогоор тооцоолж болно.

мөн үүнийг харгалзан үзнэ X LUTA=X" LUta + XSWa ,X LUTb=X" LUTb + XSWb, эцэст нь үүнийг бичье

DTMF генераторын хэрэгжилт

IN энэ програм 8 битийн PWM гаралт (OC1A) болон тус бүр нь 7 бит (n)-ээр тодорхойлогдсон 128 синус функц (Nc) дээж бүхий хүснэгтийг ашиглан DTMF дуу үүсгэгчийг бүтээх талаар ярилцав. Дараах илэрхийллүүд нь энэ хамаарлыг харуулах ба хайлтын хүснэгтийн оруулгуудыг хэрхэн тооцоолохыг харуулж байна:

(9)

7 бит ашиглахын давуу тал нь өндөр ба бага давтамжийн дохионы утгуудын нийлбэр нь нэг байт хэмжээтэй байдаг. DTMF дууны бүрэн багцыг дэмжихийн тулд 1-р хүснэгтээс DTMF давтамж бүрийн 8 утгыг тооцоолж, хайлтын хүснэгтэд оруулах шаардлагатай.

Илүү нарийвчлалтай болгохын тулд дараах шийдлийг хэрэгжүүлсэн: 5-р илэрхийлэлийг ашиглан тооцоолсон утгуудад ердөө 5 байт шаардлагатай. Бүх 8 байтыг ашиглахын тулд дугуйлах алдааг багасгахын тулд энэ утгыг 8-аар үржүүлнэ. Хайлтын хүснэгтийн заагчийг мөн адил бичнэ. Гэхдээ энэ тохиолдолд 8 дахин их утгыг хадгалахад хоёр байт шаардлагатай. Энэ нь эдгээр байтуудыг синусын долгионы утгыг заагч болгон ашиглахаас өмнө 3 баруун тийш шилжих ба радикс Nc модулийн үйлдлийг (Nc-1-ээр логик үржүүлэх) хийх ёстой гэсэн үг юм.


Зураг 5 – STK500-д холбогдох модулийн диаграмм

PWM дохио нь OC1A (PD5) зүү дээр үүсдэг. Нэмэлт гаралтын шүүлтүүр нь дохиог синусоид долгионы хэлбэрт илүү нийцүүлэхэд тусална. PWM давтамжийг бууруулахдаа сайн үр дүнд хүрэхийн тулд илүү эгц давтамжтай шүүлтүүр ашиглах шаардлагатай байж болно.

Гарын холболтыг 1-р зурагт үзүүлэв.Гарны үйл ажиллагаа нь дарагдсан товчлуурыг тодорхойлох боломжтой байхаар зохион байгуулалттай байх ёстой. Үүнийг дараах алгоритмыг ашиглан хийж болно.

  1. Дарагдсан товчлуурын мөрийг тодорхойлох
    • В портын доод эрэмбийн тэмдэглэлийн дэвтэрийг гаралт болгон тохируулж, бүртгэлийг тохируулна уу. "0"
    • В портын өндөр тетрадыг татах резисторын холболттой оролт болгон тохируулах
    • товчлууртай мөрийг логтой хамгийн өндөр тетрадын цифр гэж тодорхойлно. "0"
  2. Дарагдсан товчлуурын баганыг тодорхойлох
    • В портын өндөр дэвтэрийг гаралт болгон тохируулж, бүртгэлийг тохируулна уу. "0"
    • татах резисторыг холбож оролт болгон B портын доод эрэмбийн тетрадыг тохируулах
    • товчлууртай багана нь логтой бага эрэмбийн тетрадын цифр гэж тодорхойлогдоно. "0"

Тайлбар: STK200-д резисторууд нь PORTB холбогч зүү болон BP5, PB6 ба PB7 микроконтроллерийн зүү хооронд цувралаар холбогдсон байна (STK200 диаграмыг үз). Хэрэв гар нь PORTB холбогчтой холбогдсон бол энэ нь асуудал үүсгэх болно.

Зураг 6-д дарагдсан товчлуурыг тодорхойлох дэд програмын ажиллагааг харуулсан болно. Дарагдсан товчлуураас хамааран интервалын үргэлжлэх хугацааг тодорхойлно. Тасалдлын горим нь энэ утгыг хоёр DTM дууны синусын долгионы PWM тохиргоог тооцоолоход ашигладаг. Тасалдалтай ажиллах журмыг Зураг 7 ба 8-д үзүүлэв.

Энэ горим нь дараагийн PWM хугацааны таймерын гаралттай харьцуулах утгыг тооцдог. Тасалдлын горим эхлээд хайлтын хүснэгт дэх дараагийн түүврийн утгын байрлалыг тооцоолж, тэнд хадгалагдсан утгыг уншина.

Хайлтын хүснэгт дэх дээжийн байрлалыг импульсийн өргөнөөр, бодит импульсийн өргөнийг үүсгэсэн давтамжаар тодорхойлно.

Таймерын харьцуулалтын бүртгэлд бичигдсэн эцсийн утгыг DTMF давтамжийн түүврийн утгыг харгалзан үзсэн томъёо (7) ашиглан тодорхойлно.


Зураг 6 – Үндсэн програмын блок диаграмм

Орчин үеийн танилцуулгатай хамт дижитал PBXОХУ-ын утасны сүлжээнд англи хэлний DTMF (Dual-Tone Multiple-Frequency) товчлолоор тэмдэглэгдсэн залгах дохиог дамжуулах олон давтамжийн арга аажмаар тархаж байна. Заримдаа энэ залгах дохио дамжуулах системийг нэрлэхийн тулд өөр нэг англи хэллэгийг ашигладаг - Touch-None (аягаар залгах). Энэ аргыг 1960 онд боловсруулсан боловч түүний жинхэнэ тархалт 80-аад онд дижитал (цахим) утасны станцууд тархсанаар эхэлсэн.

Хяналтын дохиог дамжуулах энэ аргын тусламжтайгаар олон давтамжийн оронтой дохио бүр нь ITU-T зөвлөмж Q.23 "Мэдрэмжтэй залгах утасны техникийн шинж чанарууд"-ын дагуу хоёр тонноос бүрдэнэ.

DTMF давтамжийг гармоникоор сонгоогүй. Энэ нь давтамжууд нь 1-ээс өөр бүхэл тоо хуваагчгүй гэсэн үг юм. Жишээлбэл, 1200 ба 1600 Гц давтамж нь 400 Гц давтамжийн гармоникууд (3x400=1200 ба 4х400=1600), 697 ба 770 Гц давтамжууд нь гармоник бус байдаг.

Дохио бүр нь хоёр давтамжийг агуулдаг: нэг нь доод давтамжаас, хоёр дахь нь дээд бүлгийн давтамжаас сонгогддог.

Дамжуулсан мэдээлэл ба давтамжийн хоорондын хамаарлыг лабораторийн суурилуулалтын урд талын хүснэгтэд өгсөн болно.

600 Ом ачааллын үед хэмжигдэх хоёр давтамжийн багц дахь дамжуулах түвшин нь: доод давтамжийн бүлгийн хувьд - хасах 6 dBmO ± 2 дБ, дээд давтамжийн бүлгийн хувьд - хасах 3 дБмО ± 2 дБ. Нийт дохионы давтамжийн дээд бүлгийн давтамжийн түвшин нь доод бүлгийн давтамжийн түвшнээс 2 ±1 дБ өндөр байна. Дээд зэрэглэлийн давтамжийн бүх бүрэлдэхүүн хэсгүүдийн нийт түвшин нь доод түвшний давтамжийн түвшнээс дор хаяж 20 дБ доогуур байна.

Хэвийн дохио хүлээн авах нөхцөл нь дараах байдалтай байна: дохионд хоёр давтамж байгаа бөгөөд тэдгээрийн нэг нь доод бүлгээс, нөгөө нь дээд хэсгээс сонгогддог; давтамж нь нэрлэсэн утгаасаа 1.8% -иас их ялгаатай биш; хоёр давтамж бүрийн түвшин хасах 7-оос хасах 30 дБмО хооронд хэлбэлздэг; хоёр давтамжийн түвшний зөрүү 3 дБ-ээс хэтрэхгүй; давтамжийн дохионы үргэлжлэх хугацаа дор хаяж 40 мс байна.

Суулгацыг асаахаас өмнө дараах үйлдлүүдийг гүйцэтгэнэ.

S6 шилжүүлэгчийг доод байрлалд тохируулна уу;

S13 шилжүүлэгчийг дээд байрлалд тохируулна уу;

Дээд ба доод давтамжийн бүлгүүдийн генераторын унтраалгыг "Унтраах" байрлалд тохируулах;

Аналог түлхүүр шилжүүлэгчийг (AK) "Асаах" байрлалд тохируулна уу;

Генератор ба резистор R3-ийн гаралтын хүчдэлийг тохируулах товчлууруудыг зогсох хүртэл цагийн зүүний эсрэг эргүүлнэ.

dtmf дохионы тохируулга

1.1 Суулгацыг идэвхжүүлнэ.

1.2 Осциллографыг KT3 туршилтын цэгт холбоно.

1.3 Дээд давтамжийн бүлгийн генераторыг асааж, шилжүүлэгч товчлууруудын аль нэгийг дарж, энэ бүлгийн аль нэг давтамжийг сонгоно.

1.4 CT3 дахь дохионы далайцыг 0.5 вольт болгож тохируулахын тулд генераторын гаралтын хүчдэлийн тохируулгын бариулыг эргүүлнэ.

1.5 Осциллографын оролтыг KT4 туршилтын цэг рүү шилжүүлнэ. Доод давтамжийн бүлгийн генераторын хувьд 1.3, 1.4-р алхамуудыг давтаж, KT4 дэх хүчдэлийг 0.5 В хүртэл тохируулна.

ЖИЧ: Гүйцэтгэсэн үйлдлүүдийн үр дүнд дээд ба доод давтамжийн бүлгүүдээс ижил далайцтай дохиог нэмэгчийн оролтод өгдөг. Эдгээр түвшинг тохируулсны дараа генераторын гаралтын хүчдэлийн тохируулгын бариулыг түгжинэ.

1.6 Осциллографын оролтыг KT7 туршилтын цэг рүү шилжүүлнэ. DTMF дохионы тохируулагчийн гаралтын хүчдэлийг тохируулах резисторын бариулыг (R3) эргүүлснээр CT7 дахь хүчдэлийг 0.5 вольт болгож тохируулна.

ЖИЧ: Гүйцэтгэсэн үйлдлүүдийн үр дүнд хүлээн авагчийн оролтод тасралтгүй хоёр өнгийн дохио өгч, дээд ба доод давтамжийн бүлгийн генераторуудын давтамжийн хослолд тохирох тэмдгийг хүлээн авсан тэмдгийн заагч дээр харуулах ёстой. , хүснэгтийн дагуу. Хүлээн авсан болон тодорхойлсон дохионы шинж тэмдэг нь STD хүлээн авагчийн гаралт (LED гэрэлтэх) дээр дохио байгаа явдал юм.

      Дээд ба доод давтамжийн бүлгүүдийн давтамжийг солих замаар эдгээр давтамжийн хослолууд нь хүлээн авсан тэмдэгтүүдтэй тохирч байгаа эсэхийг шалгаарай.