Dtmf signālu uztvērēja un raidītāja izpēte. Divu toņu daudzfrekvenču (DTMF) ģenerators AVR Tagad redzēsim, kas mums ir

Šīs lietojumprogrammas pirmajā daļā ir aprakstīts, kā ģenerēt DTMF signālus, izmantojot MSP430 mikrokontrolleri. Ir sniegts svarīgāko šajā gadījumā izmantoto specifikāciju skaidrojums, kā arī teorētiskais un matemātiskais pamatojums sinusoidālo viļņu ģenerēšanai, izmantojot kvadrātveida viļņus, izmantojot atbilstošus analogos filtrus. Piemērā ir iekļautas arī pārbaudītas demonstrācijas programmas kvadrātviļņu signālu ģenerēšanai, pamatojoties uz dažādām MSP430 mikrokontrolleru taimera konfigurācijām. Pēdējā daļā ir sniegta shēmas shēma DTMF signālu ģenerēšanai no kvadrātviļņu signāliem.

2 DTMF signāla specifikācija

Saīsinājums DTMF apzīmē “Dual Tone Multi Frequency” un ir metode ciparu attēlošanai dažādās frekvencēs, lai tos pārraidītu pa analogajām sakaru līnijām, piem. telefona līnija. Izstrādājot standartu, tika ņemts vērā nosacījums - visām frekvencēm jābūt “balss” diapazonā, kas ļāva samazināt prasības pārraides kanālam. Tālruņu tīkli izmanto DTMF signālus numura sastādīšanai un citai informācijai. Neskatoties uz to, ka joprojām plaši tiek izmantota impulsa numura sastādīšanas metode, kas ir standarts, piemēram, Vācijā, zvanīšanas laiks ievērojami palielinās, izraisot neproduktīvu sakaru līniju slodzi. Turklāt daudzi Papildu pakalpojumi Sakari ir iespējami, tikai izmantojot tonālo numuru sastādīšanu. Kodējot, izmantojot DTMF metodi, skaitļi 0-9 un burti A-D, */E un #/F apzīmē divu frekvenču kombinācijas:

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

Šajā sistēmā kolonna attēlo frekvenci no “augšējās” frekvenču grupas (Hi-Group: 1209-1633 Hz), un rinda attēlo frekvenci no “zemākās” frekvenču grupas (Lo-Group: 697-941 Hz). . Tonālās frekvences tiek izvēlētas, lai novērstu harmoniku ietekmi. Frekvences nav viena otras reizes, un DTMF frekvenci nevar iegūt, saskaitot vai atņemot citas frekvences. Lai ģenerētu zvanītājprogrammu Deutsche Telekom tīklā, ir nepieciešamas šādas specifikācijas (ņemtas no Zulassungsvorschrift des Bundesamtes fur Post und Telekommunikation, BAPT 223 ZV 5 (Federālās pasta un telekomunikāciju ministrijas oficiālā specifikācija):

3. Ģenerējiet DTMF signālus

Kā aprakstīts iepriekš, DTMF signāli ir analogi un sastāv no diviem neatkarīgiem sinusoidālajiem viļņiem. Tādējādi nav iespējams ģenerēt tikai šādus signālus digitāli. Digitālie signāli ir jāpārveido vajadzīgajā sinusoidālā viļņa formā, izmantojot ADC un/vai analogos filtrus.

3.1 Ģenerēšana, izmantojot kvadrātveida viļņus

Ja DTMF signālu ģenerēšanai tiek izmantoti kvadrātviļņu signāli, programmatūra un aparatūra minimāls. Jebkuru nepārtrauktu signālu ar periodu T var attēlot ar Furjē sēriju, kas sastāv no bezgalīgas sinusa un kosinusa viļņu summas šādi:

Kur a0/2 ir signāla nemainīgā sastāvdaļa. Summas elements ar zemāko leņķisko frekvenci (w0) tiek saukts par galveno (fundamentālo) harmoniku, pārējie ir virstoņi vai augstākās harmonikas.

Vienkāršākais nepārtrauktais signāls, kas tiek realizēts, izmantojot mikrokontrolleri, ir kvadrātveida vilnis, kura Furjē sērijai ir šāda forma:

Katras frekvences komponentes devumu kopējā signālā vislabāk parāda amplitūdas spektrs (skat. 2. att.):


Rīsi. 2: kvadrātviļņu signāla amplitūdas spektrs

Izmantojot analogo filtru, līdzstrāvas komponents un augstākās harmonikas tiek efektīvi nomāktas, savukārt izejā mums ir sinusoidāls signāls ar frekvenci, kas vienāda ar sākotnējā kvadrātveida viļņa frekvenci.

3.2 Programmatūra meander ģenerēšanai

Meklēšanas programmai jāatbilst šādām prasībām:

  • Spēt sintezēt divus neatkarīgus taisnstūra signālus.
  • Lai atdalītu signālus, ir nepieciešami divi izejas kontakti, lai ģenerētu signālus no “augšējā” (Hi-Group) un “apakšējā” (Lo-Group) frekvenču diapazoni attiecīgi.
  • Programmatūrai vajadzētu būt iespējai iestatīt nepieciešamo signāla ilgumu diapazonā no aptuveni 65 ms līdz 100 ms.

MSP430 sērijas mikrokontrolleriem ir dažādi iebūvēti taimeri, kas spēj ģenerēt kvadrātviļņu signālus. '31x/'32x saime izmanto 8 bitu taimeri un taimera portu, lai ģenerētu abus kvadrātviļņu signālus. Šī programma pārbaudīts ar MCLK frekvenci, kas vienāda ar 1,048 MHz. Timer_A ‘33x saimē var neatkarīgi ģenerēt abus nepieciešamos signālus. Otrā programma izmanto šo taimeri, lai ģenerētu kvadrātveida viļņus un darbojas ar jebkurām MCLK frekvencēm. Abas programmas tiks detalizēti aplūkotas turpmāk.

3.2.1. Kvadrātveida viļņu ģenerēšana, izmantojot 8 bitu taimeri un taimera portu

Attēlā 3 ir DTMF signālu ģenerēšanas inicializācijas procedūras blokshēma. Lai sintezētu divas frekvences, tiek izmantots taimera ports un 8 bitu taimera skaitītāji. Katrs no tiem ir programmējams skaitītāju reģistrs, kas nepieciešams nepieciešamo frekvenču precīzai sintēzei. Ja taimera porta skaitītāji tiek kaskādēti vienā 16 bitu taimeri un tiek iestatīti sistēmas frekvencē MCLK, tad augsta diapazona frekvences var ģenerēt ar augstu precizitāti. Kad notiek pārtraukums, tiek pārslēgta atbilstošā izeja un tiek atiestatīti abi 8 bitu skaitītāja reģistri. Ielādētās vērtības tiek saglabātas divos mainīgajos RAM, lai saglabātu iekšējos reģistrus citiem uzdevumiem.

Zemās frekvences ģenerē 8 bitu taimeris. Tā kā šī taimera skaitītāja reģistrs ir 8 biti plats, tikai katrs trešais pārtraukums izraisa līmeņa izmaiņas vajadzīgajā izvades tapā, ļaujot ģenerēt tādu pašu frekvences skaitītāju.

Divas taimera izejas - pieslēgvietas tiek izmantotas divu dažādu frekvenču meanderu veidošanai.

Rīsi. 3 Inicializācijas procedūras blokshēma DTMF signālu ģenerēšanai

Inicializācijas procedūra tiek veikta tikai vienu reizi. Pēc tā pabeigšanas pārraidītās rakstzīmes heksadecimālā vērtība tiek nolasīta no RAM globālā mainīgā. Kad no abām tabulām ir ģenerētas divas frekvences, kas veido augsto un zemo DTMF signālu, viss, kas nepieciešams, ir inicializēt un palaist abus taimerus. Sūtīšanas ilgums tiek kontrolēts, skaitot “zemākās” frekvences pusciklus un tiek nolasīts no papildu tabulas. Pēc šīs procedūras pabeigšanas jūs atgriežaties pie aptaujas funkcijas. Atbilstošās pārtraukumu apstrādes rutīnas pārslēdz porta tapas. Šis process ir parādīts attēlā. 4 un 5.

Taimera porta uzdevumi ietver tikai žurnāla ierakstīšanu. līmenī pie porta izejas un skaitītāja pārlādēšanu no RAM, savukārt 8 bitu taimera darbībai ir nedaudz sarežģītāka struktūra: katru pārtraukuma ievadi uzskaita skaitītāja reģistrs. Izvades stāvokli var mainīt tikai pēc trim pārtraukumiem. Turklāt tiek skaitīts arī katrs puscikls. Rašanās apstājas, kad ir sasniegts noteikts pusciklu skaits.


Rīsi. 4 Block — pārtraukuma ķēde no 8 bitu taimera (Lo-Group)


Rīsi. 5 bloks — taimera-porta pārtraukuma ķēde (Hi-Group)

; Pielāgotas definīcijas FLLMPY equ 32 ; Frekvences reizinātājs FLL pie 1,048 MHz TCLK ekv FLLMPY*32768 ; TCLK: FLLMPY x f quartz DL equ 85 ; DTMF signāla ilgums (65..100 ms) LO_OUT equ 02h ; “Zemākas” frekvences izeja HI_OUT equ 04h ; Augstas frekvences izeja RCOUNT equ r14 ; Garuma skaitītājs DTMF RTEMP equ r15 ; pakalpojumu reģistrs.global DTMF_NR ; globālais mainīgais RAM; DTMF numuram (0..F) ; Definīcijas RAM.even .bss DTMF_TL ; Pat adreses saskaņošana.bss DTMF_TH .bss DTMF_NR ; globālais mainīgais RAM; DTMF numuram (0..F).pat ; 8 bitu taimera TCCTL EQU 42H TCPLD EQU 43H TCDAT EQU 44H definīcijas ; Universālā taimera porta TPCTL equ 04bh definīcijas; Taimera porta vadība TPCNT1 equ 04ch ; Taimera porta skaitītājs 1 TPCNT2 equ 04dh ; Taimera porta skaitītājs 2 TPD equ 04eh ; Taimera porta dati TPE equ 04fh ; Timer-port-resolution.text ; DTMF frekvenču tabulas: tabula satur; MCLK ciklu skaits vienam pusciklam. ; “Augšējās” frekvences tabula; Pievienots labojošs grozījums; ņemt vērā ieiešanas laiku pārtraukumā DTMF_HI .word 0ffffh-(TCLK/(1336*2))+25 ; Augsta frekvence 0 .word 0ffffh-(TCLK/(1207*2))+28 ; Augsta frekvence 1 vārdam 0ffffh-(TCLK/(1336*2))+25 ; Augsta frekvence 2 vārdam 0ffffh-(TCLK/(1477*2))+24 ; Augsta frekvence 3 vārdiem 0ffffh-(TCLK/(1207*2))+28 ; Augsta frekvence 4 .word 0ffffh-(TCLK/(1336*2))+25 ; Augsta frekvence 5 .word 0ffffh-(TCLK/(1477*2))+24 ; Augsta frekvence 6 .word 0ffffh-(TCLK/(1207*2))+28 ; Augsta frekvence 7 .word 0ffffh-(TCLK/(1336*2))+25 ; Augsta frekvence 8 .word 0ffffh-(TCLK/(1477*2))+24 ; Augsta frekvence 9 .word 0ffffh-(TCLK/(1633*2))+22 ; Augsta frekvence A .word 0ffffh-(TCLK/(1633*2))+22 ; Augsta frekvence B .word 0ffffh-(TCLK/(1633*2))+22 ; Augsta frekvence C .word 0ffffh-(TCLK/(1633*2))+22 ; Augsta frekvence D .word 0ffffh-(TCLK/(1207*2))+28 ; Augsta frekvence * .word 0ffffh-(TCLK/(1477*2))+24 ; Augsta frekvence # ; Tabula “zemākai” frekvencei DTMF_LO .baits 0ffh-(TCLK/(941*2*3)) ; Zema frekvence 0 .baitam 0ffh-(TCLK/(697*2*3)) ; Zema frekvence 1 baitam 0ffh-(TCLK/(697*2*3)) ; Zema frekvence 2 baitu 0ffh-(TCLK/(697*2*3)) ; Zema frekvence 3 baitu 0ffh-(TCLK/(770*2*3)) ; Zema frekvence 4 baitu 0ffh-(TCLK/(770*2*3)) ; Zema frekvence 5 baitu 0ffh-(TCLK/(770*2*3)) ; Zema frekvence 6 .baitu 0ffh-(TCLK/(853*2*3)) ; Zema frekvence 7 .baitam 0ffh-(TCLK/(853*2*3)) ; Zema frekvence 8 .baitu 0ffh-(TCLK/(853*2*3)) ; Zema frekvence 9 .baitu 0ffh-(TCLK/(697*2*3)) ; Zema frekvence A .baitam 0ffh-(TCLK/(770*2*3)) ; Zema frekvence B .baitam 0ffh-(TCLK/(853*2*3)) ; Zema frekvence C .byte 0ffh-(TCLK/(941*2*3)) ; Zema frekvence D .baitam 0ffh-(TCLK/(941*2*3)) ; Zema frekvence *.byte 0ffh-(TCLK/(941*2*3)) ; Zema frekvence # ; Signāla ilguma tabula DTMF_L .baits 2*941*DL/1000 ; Puscikli 0 .baitam 2*697*DL/1000 ; Puscikli 1 .baitam 2*697*DL/1000 ; Puscikli 2 .baitiem 2*697*DL/1000 ; Puscikli 3 .baitiem 2*770*DL/1000 ; Puscikli 4 .baitiem 2*770*DL/1000 ; Puscikli 5 .baitiem 2*770*DL/1000 ; Puscikli 6 .baitiem 2*852*DL/1000 ; Puscikli 7 .baitiem 2*852*DL/1000 ; Puscikli 8 .baitiem 2*852*DL/1000 ; Puscikli 9 .baitiem 2*697*DL/1000 ; Puscikli A .baitam 2*770*DL/1000 ; Puscikli B .baitam 2*852*DL/1000 ; Puscikli C .baitam 2*941*DL/1000 ; Puscikli D .baitam 2*941*DL/1000 ; Puscikli *.baitam 2*941*DL/1000 ; Puscikli # ;************************************************ ********** ********************************** ; DTMF-TX DTMF apakšprogramma ;************************************************ ******************************** DTMF_TX mov.b DTMF_NR,RTEMP ; Saglabājiet numuru pagaidu reģistrā mov.b DTMF_L(RTEMP),RCOUNT ; Saglabāt ilguma skaitītāju; sagatavot 8 bitu taimeri DTMF-Lo frekvencei mov.b #0a8h,&TCCTL ; Pulkstenis no MCLK mov.b DTMF_LO(RTEMP),&TCPLD ; Reģistra sagatavošana; priekšielādēt mov.b #000,&TCDAT ; Skaitītāja ielāde no reģistra; preload bis.b #008h,&IE1 ; Iespējot pārtraukumus; no 8 bitu taimera; taimera porta sagatavošana DTMF-Hi frekvencei rla r15; * 2 16 bitu tabulai mov DTMF_HI(RTEMP),&DTMF_TL ; saglabāt vārdu augstfrekvences mov #003,RTEMP ; skaitītājs 8 bitu taimeram bis.b #008h,IE2 ; Iespējot pārtraukumus; no taimera porta mov.b &DTMF_TH,&TPCNT2 ; Augstā baita ielāde TC2 mov.b &DTMF_TL,&TPCNT1 ; Notiek zema baita ielāde TC1 bis.b #080h,&TPD ; Iespējot 16 bitu taimeri bis.b #HI_OUT+LO_OUT,&TPE ; Iespējot DTMF-Hi/Lo izejas mov.b #090h,&TPCTL ; Iespējot taimera retināšanu ;********************************************** ******* *********************************** ; Taimera porta pārtraukums;************************************************ *** ********************************** TP_INT xor.b #HI_OUT,&TPD ; Invertēt DTMF-Hi izvadi mov.b &DTMF_TH,&TPCNT2 ; Ielādē vecākais ba

3.2.2 1 Kvadrātveida viļņu ģenerēšana, izmantojot Timer_A

Šī DTMF signāla ģenerēšanas rutīna izmanto tikai Timer_A, lai kvadrātveida vilnis abās vēlamajās frekvencēs. Montāžas procesā tiek aprēķinātas atbilstošās vērtības, lai taimeris varētu izmantot programmu neatkarīgi no MCLK frekvences vērtības. Izejas signāla ilgumu nosaka DL konstante milisekundēs.

; Aparatūras definīcijas; FLLMPY .equ 32; Frekvences reizinātājs FLL pie 1,048 MHz TCLK .equ FLLMPY*32768 ; TCLK: FLLMPY x f quartz DL .equ 82 ; DTMF signāla ilgums ms; (65..100 ms) STACK .equ 600h ; Stack inicializācijas adrese; RAM definīcijas; STDTMF .equ 202h; Augstas un zemās frekvences statuss TIM32B .equ 204; Taimera reģistra paplašinājums LENGTH .equ 206h ; DTMF ilguma skaitītājs; .text 0F000h ; Programmas sākuma adrese; ; Timer_A inicializācija: MCLK, nepārtraukts režīms, pārtraukumi ir iespējoti; Taimera izejas moduļu sagatavošana Timer_A MCLK = 1,048 MHz (automātiski) ; INIT MOV #STACK,SP ;Steka rādītāja inicializācija CALL #INITSR ;Reizinātāja inicializēšana; FLL frekvences un RAM MOV #ISMCLK+TAIE+CLR,&TACTL ; Taimera inicializācija MOV.B #TA2+TA1,&P3SEL ; Izejas TA2 un TA1 portos P3.5/4 CLR TIM32B; Notīrīt paplašināto taimera reģistru BIS #MCONT,&TACTL ; Start timer Timer_A EINT ; Vispārēja pārtraukuma iespējošana MAINLOOP ... ; Galvenā cilpa; ;Taustiņu nospiešana: SDTMF satur tabulas nobīdi; 2 frekvencēm (0..6,0..6) augstajā un zemajā baitā; MOV&TAR,R5 ; Lai sāktu nekavējoties: ADD FDTMFLO,R5 ; Nobīde uz īsāku laiku MOV R5,&CCR1 ; Pirmā stāvokļa maiņa pēc 0,71 ms MOV R5,&CCR2 ; 1/(2x697) = 0,71 ms MOV #OMT+CCIE,&CCTL1 ; Izvades inversija, bitu pārtraukums. MOV #OMT+CCIE,&CCTL2 ; Apgrieztā izeja, pārtraukuma bits MOV.B STDTMF,R5 ; 82 ms skaitītājs RRA R5 ; zemākas frekvences stāvokļa izmaiņu skaits MOV.B DTMFL(R5),LENGTH ; signāla ilgumam... ; programmas turpināšana; ; Pārtraukumu apstrādātājs no CCR0 (šeit netiek izmantots); TIMMOD0 ... RETI ; ; Pārtraukumu apstrādātājs no uztveršanas-salīdzināšanas reģistriem 1..4; TIM_HND PIEVIENOT &TAIV,PC ; Pieprasījuma apstrāde ar augstāko; RETI prioritāte; bez pārtraukuma pieprasījuma: RETI JMP HCCR1 ; pieprasījums no CCR1 (DTMF zemas frekvences) JMP HCCR2 ; pieprasījums no CCR2 (augstfrekvences DTMF) JMP HCCR3 ; pieprasījums no CCR3 JMP HCCR4 ; pieprasījums no CCR4; TIMOVH INC TIM32B ; Taimera_A pagarināšana līdz 32 bitiem RETI ; ; DTMF zemā frekvence: TA1 invertē 1. izvades bloka izvadi; Katra stāvokļa maiņa tiek skaitīta, lai kontrolētu signāla ilgumu; HCCR1 PUSH R5 ; Lietoto reģistru saglabāšana MOV.B STDTMF,R5 ; Zemas frekvences statuss DTMF ADD FDTMFLO(R5),&CCR1 ; Pievienot puscikla ilgumu DEC.B LENGTH ; Vai DL signāla ilgums ir pabeigts? JNZ TARET ; Nē; ; Jā, apturēt DTMF signālu: atspējot pārtraukumus; BIC #OMRS+OUT+CCIE,&CCTL1 ; Atiestatīt TA1 BIC #OMRS+OUT+CCIE,&CCTL2 ; Atiestatīt TA2 TARET POP R5 ; Atjaunot R5 RETI; Atgriezties no pārtraukuma; ; Augstas frekvences DTMF: TA2 invertē 2. izejas bloka izvadi; HCCR2 PUSH R5 ; Lietoto MOV reģistru saglabāšana. B STDTMF+1,R5 ; Augstas frekvences statuss DTMF ADD FDTMFHI(R5),&CCR2 ; Pievienot puscikla ilgumu POP R5 ; Atjaunot R5 RETI; Atgriezties no pārtraukuma; HCCR3 ... ;Uzdevums, ko kontrolē reģistrs CCR3 RETI HCCR4 ... ;Uzdevums, ko kontrolē reģistrs CCR4 RETI ; ; DTMF frekvences tabula: Tabula satur; MCLK ciklu skaits pusciklā. Vērtības pielāgotas; efektīvā frekvence MCLK montāžas procesā; un noapaļots līdz minimumam iespējama kļūda frekvences; FDTMFLO .vārds ((TCLK/697)+1)/2 ; Zemfrekvences DTMF 697Hz .word ((TCLK/770)+1)/2 ; 770Hz .vārds ((TCLK/852)+1)/2 ; 852Hz .vārds ((TCLK/941)+1)/2 ; 941Hz FDTMFHI .word ((TCLK/1209)+1)/2 ; Augstas frekvences DTMF1209Hz .word ((TCLK/1336)+1)/2 ; 1336Hz .vārds ((TCLK/1477)+1)/2 ; 1477Hz .vārds ((TCLK/1633)+1)/2 ; 1633 Hz; ; Tabulā ir norādīts pusciklu skaits DL signāla darbības laikā (ms). ; Skaitīšanai tiek izmantota zemākā DTMF frekvence; DTMFL .baits 2*697*DL/1000 ; Pusciklu skaits.baits 2*770*DL/1000 ; DL m.baitos 2*852*DL/1000; .baits 2*941*DL/1000 ; ; .sect "TIMVEC",0FFF0h ; Taimera pārtraukumu vektori Timer_A .word TIM_HND ; Moduļu vektors 1..4 taimeri.vārds TIMMOD0 ; Taimera modulis 0 vector.sect "INITVEC",0FFFEh ; Vektors Atiestatīt.word INIT

Zemāk ir nedaudz ātrāks risinājums. Tomēr tas prasa vairāk RAM, jo... No tabulām iegūtie dati netiek katru reizi pārrēķināti, bet īsumā tiek saglabāti RAM DTMFLO un DTMFHI. Lasīšana tiek veikta no Timer_A taimera pārtraukumu rutīnām. Izmantotās tabulas ir identiskas tām, kas parādītas iepriekšējā piemērā.

FLLMPY .equ 32; Frekvences reizinātājs FLL pie 1,048 MHz TCLK .equ FLLMPY*32768 ; TCLK: FLLMPY x f quartz DL .equ 82 ; DTMF signāla ilgums; ms (65..100 ms) STDTMF .equ 202h ; Augstas un zemās frekvences statuss TIM32B .equ 204; Taimera reģistra paplašinājums LENGTH .equ 206h ; DTMF ilguma skaitītājs DTMFLO .equ 208h ; Zemākās frekvences puscikls DTMFHI .equ 20Ah; Augšējās frekvences puscikls STACK .equ 600h ; Steka inicializācijas adrese.teksts 0F000h ; Programmas sākuma adrese; Timer_A inicializācija: MCLK, nepārtraukts režīms, pārtraukumi ir iespējoti; Taimera izejas moduļu sagatavošana Timer_A MCLK = 1,048 MHz (automātiski) ; INIT MOV #STACK,SP ; Notiek steka rādītāja inicializācija CALL #INITSR ; Reizinātāja inicializācija; FLL frekvences un RAM MOV #ISMCLK+TAIE+CLR,&TACTL ; Iedarbināt taimeri MOV.B #TA2+TA1,&P3SEL ; Izejas TA2 un TA1 portos P3.5/4 CLR TIM32B; Paplašinātā taimera reģistra dzēšana BIS #MCONT,&TACTL ;Taimera palaišana Timer_A EINT ; Vispārēja pārtraukuma iespējošana MAINLOOP ... ; Galvenā cilpa; Taustiņu nospiešana: SDTMF satur tabulas nobīdi; 2 frekvencēm (0..6,0..6) augstajā un zemajā baitā; MOV&TAR,R5 ; Lai sāktu nekavējoties ADD FDTMFLO,R5 ; Nobīde uz īsāku laiku MOV R5,&CCR1 ; Pirmā stāvokļa maiņa pēc 0,71 ms MOV R5,&CCR2 ; 1/(2x697) = 0,71 ms; ; Iegūstiet divu ciklu skaitu DTMF frekvencēm; MOV.B STDTMF+1,R5 ; Augstas frekvences DTMF MOV FDTMFHI(R5),DTMFHI; Puscikla ilgums MOV.B STDTMF,R5 ; Zemas frekvences DTMF MOV DTMFLO(R5),DTMFLO ; Puscikla ilgums; ; Ilguma skaitītājs RRA R5 ; Sagatavot baitu indeksu MOV.B DTMFL(R5),LENGTH ; zemākas frekvences stāvokļa izmaiņu skaits MOV #OMT+CCIE,&CCTL1 ; Izvades inversija, bitu pārtraukums. MOV #OMT+CCIE,&CCTL2 ; Izvades inversija, bitu pārtraukums. ... ; Atgriezties uz galveno cilpu; ; Pārtraukumu apstrādātājs no CCR0 (šeit netiek izmantots); TIMMOD0 ... RETI ; ; Pārtraukumu apstrādātājs no uztveršanas-salīdzināšanas reģistriem 1..4; TIM_HND PIEVIENOT &TAIV,PC ; Pieprasījuma apstrāde ar augstāko; RETI prioritāte; bez pārtraukuma pieprasījuma: RETI JMP HCCR1 ; pieprasījums no CCR1 (DTMF zemas frekvences) JMP HCCR2 ; pieprasījums no CCR2 (augstfrekvences DTMF) JMP HCCR3 ; pieprasījums no CCR3 JMP HCCR4 ; pieprasījums no CCR4; TIMOVH INC TIM32B ; Taimera_A pagarināšana līdz 32 bitiem RETI ; ; DTMF zemā frekvence: TA1 invertē 1. izvades bloka izvadi; HCCR1 ADD DTMFLO,&CCR1 ; Pievienot puscikla ilgumu DEC.B LENGTH ; Vai DL signāla ilgums ir pabeigts? JNZ TARET ; Nē; ; Jā, apturēt DTMF signālu: atspējot pārtraukumus; BIC #OMRS+OUT+CCIE,&CCTL1 ; Atiestatīt TA1 BIC #OMRS+OUT+CCIE,&CCTL2 ; Atiestatīt TA2 TARET RETI ; Atgriezties no pārtraukuma; Augstas frekvences DTMF: TA2 invertē 2. izejas bloka izvadi; HCCR2 ADD DTMFHI,&CCR2 ; Pievienot puscikla ilgumu RETI ; Atgriezties no pārtraukuma; HCCR3. .. ;Uzdevums, ko kontrolē reģistrs CCR3 RETI HCCR4 ... ;Uzdevums, ko kontrolē reģistrs CCR4 RETI ; ; Pārtraukumu tabulas un vektori ir identiski tiem, kas parādīti iepriekšējā piemērā.

3.3. Aparatūra DTMF signālu ģenerēšanai

Kā minēts iepriekš, frekvenču diapazonā 200 Hz... 4600 Hz pārraides frekvences signāla līmenim jābūt vismaz 20 dB virs svešu signālu (trokšņu) līmeņa. Turklāt, pamatojoties uz specifikāciju, signāliem no “augšējās” un “apakšējās” grupas ir jābūt dažādiem līmeņiem, tāpēc katram signālam ir nepieciešams savs filtrs. Sinusoidālās frekvences amplitūdas var iegūt no Furjē sērijas.

Lai izvēlētos robežfrekvences, izstrādājot analogo filtru, jums jāievēro šādas prasības, pamatojoties uz:

  • Jo ir jānodrošina iespēja jebkādām “zemākās” grupas frekvenču kombinācijām ar “augšējās” grupas frekvencēm; līmeņu atšķirība starp zemāko un augstāko grupas frekvenci nedrīkst pārsniegt 3 dB.
  • Grupas zemākajai frekvencei (f1) harmonikas slāpēšanai (3f1) jābūt ne mazākai par 20 dB. Šī nosacījuma izpilde ir viskritiskākā zemākai frekvencei grupā, jo tas atrodas pēc iespējas tālāk no filtra izslēgšanas frekvences.

Formula apraksta absolūtās vērtības kvadrātu n kārtas augstfrekvences Batervorta filtra izvadē:

Šī formula atspoguļo Batervorta augstfrekvences filtra pastiprinājuma atkarību no frekvences. Parametri fg un n nosaka attiecīgi filtra izslēgšanas frekvenci un secību.

Pirmkārt, ir nepieciešams aprēķināt nepieciešamo filtru secību, ņemot vērā atbilstību iepriekš minētajām prasībām.

Lai izpildītu pirmo nosacījumu, grupas zemāko un augstāko frekvenču absolūto vērtību kvadrātu attiecība nedrīkst būt lielāka par 3 dB vai:

Otrais nosacījums tiks izpildīts automātiski, ja frekvenču f1 un 3f1 absolūto vērtību kvadrātu attiecība ir lielāka par 10/3, šajā gadījumā trešā harmonika taisnstūra signālā ir par 1/3 mazāka (skat. Furjē sērija un 2. att.):

Aprēķinu rezultātā abu grupu frekvencēm iegūstam nepieciešamo filtru secību n=1,15. Tādējādi prasības apmierinās 2. kārtas filtrs, ko var uzbūvēt uz darbības pastiprinātāja. Ja izmantojat 3. kārtas filtru, jums ir nepieciešami tikai divi papildu elementi. Tomēr tas samazinās prasības komponentu parametru izkliedēšanai. Abas iepriekš minētās prasības tiks izpildītas, ja izslēgšanas frekvence ir šādās robežās:

Apakšējā grupa fg>880 Hz fg<1418 Гц
Augšējā grupa fg>1527 Hz fg<2460 Гц

Ja izslēgšanas frekvence ir minimāla, notiks maksimālais harmonikas samazinājums. Tomēr šajā gadījumā atšķirība starp zemāko un augstāko frekvenci grupā būs 3 dB. Pie augstākās iespējamās nogriešanas frekvences līmeņa atšķirība ir minimāla, bet harmoniskās sastāvdaļas tiek nomāktas tikai par 20 dB.

Aprēķinot filtru, pastiprināta uzmanība tika pievērsta harmonikas slāpēšanai, līmeņa starpība grupā tika fiksēta 2 dB. Rezultātā robežfrekvences ir 977 Hz un 1695 Hz. Iegūtā harmoniskā slāpēšana ievērojami pārsniedz prasības. Frekvenču līmeņu atšķirība grupā ir prasību robežās pat robežfrekvences novirzes gadījumā, kas saistīta ar izmantoto komponentu parametru izkliedi. Aprēķinot filtra elementu vērtības, rezistori tika izvēlēti, pamatojoties uz to maksimālo tuvumu E12 sērijas standarta vērtībām.

Filtra izejās rezultāts ir divi sinusoidāli signāli ar ievērojami slāpētām harmonikām. Lai apvienotu šos signālus, tiek ieviests papildu papildinātājs.

Tādējādi, izmantojot tikai 3 darbības pastiprinātājus un dažus pasīvos elementus, mēs varam ģenerēt DTMF signālus, izmantojot mikrokontrolleri, neizmantojot ievērojamus skaitļošanas resursus.

Izmantojot simulatora programmas, tika pārbaudītas aptuvenās vērtības. Filtru reakcija ļoti precīzi atbilst aprēķinātajai frekvences reakcijai.


Rīsi. 6: Taisnstūra signāla amplitūdas spektrs ar frekvenci 697 Hz pie trešās kārtas filtra izejas

Attēlā 6. attēlā parādīts taisnstūra signāla amplitūdas spektrs ar frekvenci 697 Hz, kas izlaists caur 3. kārtas filtru. Kā redzams attēlā, trešā un piektā harmonika (2091 Hz un 3485 Hz) ir ievērojami vājinātas (-25,6 dB).


Rīsi. 7: Taisnstūra signāla amplitūdas spektrs ar frekvenci 941 Hz pie trešās kārtas filtra izejas

Attēlā 7. attēlā parādīts kvadrātviļņu signāla spektrs ar frekvenci 941 Hz. Mūs interesējošajā frekvences reģionā līdz 4600 Hz ir tikai viena harmonika. Pēc filtra izlaišanas šī 2823 Hz harmonika ir ievērojami vājināta (-27,9 dB). Līmeņu starpība starp zemāko un augstāko frekvenci grupā nepārsniedz 1,9 dB.

Lai izmantotu zemu izmaksu komponentus ar lielu parametru variāciju, tika veikta papildu modelēšana. Simulācijas rezultāti parādīja, ka pieļaujamā rezistoru un kondensatoru vērtību izkliede ir 10%.


8. attēls: Histogramma – signāla līmeņu sadalījums grupā


9. attēls. Histogramma – harmoniskā slāpēšana

Attēlā 8 un 9 parāda histogrammas, kas iegūtas, izmantojot Montekarlo analīzi. Šajā gadījumā komponentu vērtības nejauši mainījās 10% robežās. Pēc 100 iterācijām visu simulēto filtru rezultāti tiek attēloti histogrammās. Attēlā redzamajā histogrammā. 8. attēlā parādīta līmeņa atšķirība starp frekvencēm grupā. Maksimālā pieļaujamā 3 dB atšķirība starp minimālo un maksimālo frekvenci netika sasniegta nevienā gadījumā. Vidējā vērtība ir 1,6 dB, kas ir nedaudz labāka par aprēķināto vērtību 2 dB.

Attēlā 9. attēlā parādīts harmoniku vājināšanās “zemākās” frekvenču grupas. Nepieciešamā vērtība 20 dB tiek sasniegta visos gadījumos, vidējā vērtība ir aptuveni 27 dB. Sliktākajā gadījumā harmonika tiek nomākta par 24,2 dB.

“Apakšējās” frekvenču grupas filtram aprēķinātās vērtības tiek veiktas arī “augšējās” frekvenču grupas filtram.

Abiem filtriem ir identiska shēma. Vienīgā atšķirība ir augšējo un apakšējo frekvenču grupu filtru robežfrekvencēs. R1 un C1 veido 1. kārtas augstas caurlaidības filtru. Jo ķēdes ieejas pretestība ir atkarīga arī no R1, šī elementa vērtība nedrīkst būt pārāk maza; pretējā gadījumā mikrokontrollera izejas tiks pārslogotas un kvadrātveida viļņu forma tiks izkropļota. Šajā gadījumā signālam tiks pievienotas papildu frekvences, kas rodas intermodulācijas kropļojumu rezultātā, kas negatīvi ietekmēs signāla un trokšņa attiecību.

Augstākas kārtas filtru pārsūtīšanas funkciju nevar iegūt, izmantojot tikai pasīvos komponentus.

Tādējādi otrās kārtas filtram ir jābūt darbības pastiprinātājam. Aktīvā filtra pastiprinājums ir iestatīts uz 0,2, izmantojot rezistorus R1-1 un R1-2. Kā redzat, signāls ir nedaudz vājināts. Tas ir nepieciešams, lai nepārslogotu op-amp, jo kvadrātviļņu signāla sinusoidālās fundamentālās harmonikas maksimālā amplitūda pārsniedz paša kvadrātviļņa signāla amplitūdu (skat. Furjē sēriju un 2. att.). Papildu papildinātājs pielāgo nepieciešamo izvades līmeni. Taisnstūra signāla nemainīgās sastāvdaļas dēļ operētājsistēmas pastiprinātāja darbības punkts ir iestatīts Vcc/2 līmenī (sk. arī Furjē sēriju un 2. att.). Šajā gadījumā konstanto komponentu nevar novērst ar ievades dalītāju R1-1/R1-2. Lai atsaistītu OS ķēdi ar līdzstrāvas spriegumu, tiek izmantots kondensators C3.

Katrā no analogā filtra izejām tiek ģenerēts attiecīgi augšējās un apakšējās frekvenču grupas signāls. Papildu sumatorā šie signāli tiek pievienoti. Šajā ķēdes elementā, izmantojot rezistorus R4 un R5, varat iestatīt attiecības starp “zemāko” un “augšējo” frekvenci kopējā signālā un izejas signāla līmeni. Tādējādi izejas amplitūdu var viegli pielāgot, lai tā atbilstu dažādām prasībām dažādās valstīs.

Aprēķinot komponentu vērtības, kondensatoru vērtības, kā parasti, tika fiksētas, un rezistoru vērtības tika aprēķinātas saskaņā ar tām. Šajā shēmā tika izmantoti standarta E12 sērijas kondensatori un rezistori ar izkliedi 10%.

Attēlā 10. attēlā parādīta analogo filtru un summatora shematiska diagramma:


Rīsi. 10: Shematiska diagramma analogie filtri ar papildu papildinātāju

Kondensatori C1-1 un C1-2 apvieno abus signālus kopā Vcc/2 darbības punktā. Nevajadzētu šiem elementiem izvēlēties pārāk lielas vērtības, jo tie ir zemfrekvences filtru elementi, lai novērstu zemfrekvences subharmonikas. Filtra kondensators C5 novērš atsauces sprieguma troksni. Papildu kondensators C6, kas savienots paralēli atgriezeniskās saites rezistoram R6, veido pirmās kārtas augstfrekvences filtru. Ja ir izvēlēta zemākā filtra nogriešanas frekvence, augstfrekvences intermodulācijas traucējumu papildu filtrēšana uzlabo izejas signāla kvalitāti, bet “augšējās” grupas augstākajās frekvencēs būs zināma vājināšanās. Dažos gadījumos augstākās DTMF frekvences 1633 Hz ģenerēšana nav nepieciešama, jo to izmanto tikai pakalpojumu simbolu A-D veidošanai, un signāla un trokšņa attiecību var uzlabot, pazeminot filtra izslēgšanas frekvenci. Tādējādi nogriešanas frekvences palielināšana noved pie augstfrekvences traucējumu līmeņa paaugstināšanās, bet tajā pašā laikā tiek samazināta negatīvā ietekme uz DTMF signāla augstākās frekvences komponentiem.

4 DTMF raidītāja signālu pētījumu rezultāti

Zemāk redzamās spektrogrammas (11. un 12. att.) parāda DTMF raidītāja izejas signālus dažādās frekvencēs. Attēlā 11. attēlā parādīts simbola “1” amplitūdas spektrs. Tās pārraidīšanai nepieciešamās frekvences - 697 un 1207 Hz - ir attiecīgi -10,5 dB un -8,5 dB līmenī. Harmonikas pie 2091 un 3621 Hz tiek nomāktas gandrīz par 30 dB. Lai pārraidītu simbolu “D”, tiek ģenerētas divas augstākās frekvences - 941 un 1633 Hz. Kā redzams no att. 12, zemās frekvences līmenis ir -12 dB, augstfrekvences līmenis ir -11 dB. Atbilstošās harmonikas tiek vājinātas par vairāk nekā 30 dB. Tādējādi izmērītās vērtības atbilst simulācijas rezultātiem un specifikācijas prasībām.


Rīsi. 11: simbola “1” amplitūdas spektrs: 697 un 1207 Hz


Rīsi. 12: simbola “D” amplitūdas spektrs: 941 un 1633 Hz

Ģenerēto kvadrātviļņu signālu absolūto frekvenču precizitāti nevar sasniegt, izmantojot divus dažādus taimerus; rezultāts būs atkarīgs no abu frekvenču kombinācijas un izmantoto taimeru veida. Iemesls tam ir taimera pārtraukuma konflikts. Tomēr nepieciešamā precizitāte ±1,8% tiek sasniegta ar lielu rezervi.

Ja tiek izmantots 8 bitu taimeris un taimera porta taimeris ar sistēmas frekvenci MCLK 1,048 MHz, tad “zemākās” grupas frekvences tiek ģenerētas ar precizitāti, kas nav sliktāka par 0,3%. “Augšējās” grupas frekvencēm praksē tika iegūta novirze ne vairāk kā 0,5%.

Vienīgais izņēmums ir DTMF rakstzīme “D”, kurai tiek ģenerētas augstākās frekvences. Rezultātā šajā kombinācijā “augšējās” grupas 1633 Hz frekvences novirze ir -0,97%.

Bez šī izņēmuma pat augstākā frekvence 1633 Hz tiek ģenerēta ar precizitāti, kas ir labāka par 0,5%. Maksimālās novirzes dažādām frekvencēm ir norādītas tabulā:

Ja frekvenču ģenerēšanai tiek izmantots Timer_A, kļūda būs atkarīga no izmantotās MCLK frekvences:

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

5 Secinājums

Šī piemēra programmatūra ir ļoti vienkārša, un, aizņemot aptuveni 300 baitus, ir nepieciešams neliels RAM un ROM apjoms. Pateicoties iebūvētajam taimera modulim, nepieciešamās frekvences tiek ģenerētas ar augstu precizitāti, netērējot CPU slodzi. Konfigurācijā, kurā ģenerēšanai tiek izmantots 8 bitu taimeris un taimeris/ports, pārtraukumu rutīnas aizņem aptuveni 12% no CPU resursiem. Gadījumā, ja frekvences ģenerē taimeris Timer_A, CPU slodze pārtraukumu rutīnu apstrādei tiek samazināta līdz 6%. Tā rezultātā, kamēr tiek pārraidīti DTMF signāli, var tikt veikti citi uzdevumi, vai arī centrālais procesors var tikt pārslēgts mazjaudas režīmā, lai samazinātu strāvas patēriņu.

Aprakstītā moduļa labo funkcionalitāti DTMF signālu ģenerēšanai, izmantojot kvadrātviļņu signālus, parāda aparatūras shēmas konstrukcija. Jo Ķēdē ir iespējams izmantot komponentus ar plašu parametru diapazonu, šāda risinājuma cena ir ļoti zema. Visas specifikācijas prasības lielā mērā ir izpildītas, tāpēc instrumentos, kas izmanto MSP430 kā vadības kontrolieri, nav nepieciešams atsevišķs DTMF signāla ģeneratora modulis.

Ja konkrētā gadījumā ir nepieciešams palielināt signāla-trokšņa attiecību, izmantojot papildu darbības pastiprinātāju, var izveidot filtru, lai vēl vairāk slāpētu intermodulācijas kropļojumus. Šāds papildu darbības pastiprinātājs jau ir iekļauts četru op-amp DIL14 pakotnē.

6 Saites

Bundesamt fur Post und Telekommunikation (Federālais pasta un telekomunikāciju birojs): BAPT 223 ZV 5, Zulassungsvorschrift fur Endeinrichtungen zur Anschaltung an analoge Wahlanschlusse (ausgenommen Notruf- und Durchwahlanschlusse) des analoģisku līniju, kas savienotas ar telefontīkliem, kas paredzēti specifiskiem telefona tīkliem drošības un zvanu prasības) / Deutschen Bundespost Telekom ISDN; Bundesministerium fur Post und Telekommunikation, projekts, Bonna, 1994. gada aprīlis Papula: Mathematik fur Ingenieure 2 (matemātika inženieriem); Vieweg Verlag, Braunschweig 1990 Tietze / Schenk: Halbleiterschaltungstechnik; (Titze/Schenk, Semiconductor Circuit Engineering), 10. izdevums; Springer Verlag, Berlin 1993 Lutz Bierl / Texas Instruments: MSP430 ģimene, mērīšanas lietojuma ziņojums, Texas Instruments, 2.1. izdevums, 1997. gada janvāris, SLAAE10B Texas Instruments: MSP430 ģimene, Arhitektūras lietotāja rokasgrāmata un moduļu bibliotēka, Texas Instruments, SLAUE196B, Texas Instruments: 1996B MSP430 saime, programmatūras lietotāja rokasgrāmata, Texas Instruments, 1996. gads Texas Instruments: MSP430 saime, montāžas valodas rīku lietotāja rokasgrāmata, Texas Instruments, 1996. Sivija, Roberts: Systementwicklung einer Telekom-Applikation zum Senden und Empfangen von DTMF-Signalen (Mikrokontroles MSP43 demontāžas signāls telekomunikāciju sistēma ciparu signālu saņemšanai un pārraidīšanai, pamatojoties uz MSP430 mikrokontrolleri); Diplomarbeit, Fachhochschule Landshut, 1997. gada maijs

Par vienkāršu ierīču tēmu es nolēmu salikt DTMF signāla ģeneratoru, izmantojot to pašu ATtiny2313. Tiem, kas nezina, DTMF (Dual-Tone Multi-Frequency) ir divu toņu daudzfrekvenču analogais signāls, ko izmanto, lai sastādītu tālruņa numuru. Izlasi Wikipedia.

Lēmumu montēt šādu ierīci noteica vēlme mēģināt ieviest sarežģītus analogos signālus, izmantojot mikrokontrolleri. Praktisks pielietojums šai ierīcei nebija paredzēts, bet varbūt kādam šāda ierīce noderētu? Lieto to!

DTMF ģeneratora avots


Tagad paskatīsimies, kas mums ir.

Signāls tiek ģenerēts, izmantojot PWM, un tiek izmantota RC ķēde, lai piešķirtu tam vēlamo formu. Rezultātā pēc RC ķēdes mēs saņemam šādu signālu (tiek nospiesta poga 6):

Pa visu noderīgā signāla līkni mēs novērojam augstfrekvences ķemmi (frekvence ir augstāka par dzirdamo, tāpēc tas neradīs troksni) - tas ir RC ķēdes darbs. Jūs varat padarīt līniju gludāku, palielinot kondensatora kapacitāti vai rezistora pretestību, taču šajā gadījumā noderīgā signāla diapazons ievērojami samazināsies.

Mēs skatāmies signāla spektru un pārliecināmies, ka ir divas atsevišķas frekvences (PWM frekvence ir izgājusi ārpus displeja zonas), kas nozīmē, ka viss ir kārtībā - ierīce darbojas kā nākas.

Gatavi risinājumi

DTMF signāla ģenerēšanas un dekodēšanas uzdevumiem ir gatavi risinājumi. Šeit ir dažas šo mikroshēmu datu lapas.

DTMF ģenerators
- DTMF dekodētājs


P.S.Žēl, ka ATtiny2313 nav ADC — jūs varētu izmantot arī DTMF dekodētāju! Bet tas ir labi, es atkārtošu to mega, es to noteikti pievienošu.

(Apmeklēts 6 868 reizes, 1 apmeklējumi šodien)

Tonālo numuru sastādīšanu (Dual-tone multi-frekvenču signalizācija, DTMF) izstrādāja Bell Labs pagājušā gadsimta 50. gados toreiz revolucionārajam spiedpogu tālrunim. Lai attēlotu un pārraidītu digitālos datus toņu režīmā, tiek izmantots runas frekvenču diapazona frekvenču (toņu) pāris. Sistēma definē divas četru frekvenču grupas, un informācija tiek kodēta, vienlaikus pārraidot divas frekvences, pa vienai no katras grupas. Tādējādi tiek iegūtas sešpadsmit kombinācijas, kas attēlo sešpadsmit dažādus ciparus, simbolus un burtus. DTMF kodējums tagad tiek izmantots plašā sakaru un vadības lietojumu klāstā, par ko liecina, piemēram, Starptautiskās Telekomunikāciju savienības (ITU) ieteikums Q.23.

Šajā rakstā ir aprakstīta DTMF toņu ģeneratora shēma, kas atveido visas astoņas frekvences un ģenerē iegūto divu toņu izejas signālu. Attiecīgā sistēma tika veidota uz Silego GreenPAK™ SLG46620V mikroshēmas un operacionālie pastiprinātāji Silego SLG88104V. Iegūtais signāls ir divu frekvenču summa, ko nosaka tālruņa tastatūras rinda un kolonna.

Piedāvātā shēma izmanto četras ieejas, lai izvēlētos ģenerējamo frekvenču kombināciju. Ķēdei ir arī iespējošanas ieeja, kas aktivizē ģenerēšanu un nosaka signāla pārraidīšanas laiku. Ģeneratora izejas frekvence atbilst ITU standartam DTMF.

DTMF toņi

DTMF standarts definē ciparu 0-9, burtu A, B, C un D, ​​kā arī rakstzīmju * un # kodējumu kā divu frekvenču kombināciju. Šīs frekvences ir sadalītas divās grupās: augstfrekvences grupa un zemas frekvences grupa. 1. tabulā parādītas frekvences, grupas un atbilstošie simbolu attēlojumi.

1. tabula. DTMF toņu kodēšana

Treble grupa

Zemās caurlaides grupa

Frekvences tika izvēlētas, lai izvairītos no vairākām harmonikām. Turklāt to summa vai atšķirība neizraisa atšķirīgu DTMF frekvenci. Tādā veidā tiek novērsti harmonikas vai modulācijas traucējumi.

Q.23 standarts nosaka, ka katras pārraidītās frekvences kļūdai jābūt ±1,8% robežās no nominālās vērtības, un kopējam kropļojumam (harmonikas vai modulācijas dēļ) jābūt par 20 dB zem pamatfrekvences.

Iepriekš aprakstīto iegūto signālu var raksturot šādi:

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

kur fhigh un flow ir atbilstošās frekvences no augsto un zemo frekvenču grupām.

1. attēlā parādīts iegūtais signāls ciparam "1". 2. attēlā parādīts šim signālam atbilstošais frekvenču spektrs.

Rīsi. 1. DTMF tonis

Rīsi. 2. DTMF toņu spektrs

DTMF signālu ilgums var atšķirties atkarībā no konkrētās lietojumprogrammas, kas izmanto toņu kodēšanu. Visbiežāk lietotajām lietojumprogrammām ilguma vērtības parasti ir starp manuālo un automātisko numuru sastādīšanu. 2. tabulā parādīts kopsavilkums par tipisko laika ilgumu diviem darbā pieņemšanas veidiem.

2. tabula. Tonālo zvanu signālu ilgums

Numura veids

Treble grupa

Treble grupa

Manuālā numura sastādīšana

Automātiskā numura sastādīšana

Lai nodrošinātu lielāku elastību, šajā rokasgrāmatā piedāvātais DTMF ģenerators ir aprīkots ar iespējošanas ieeju, ko izmanto signāla ģenerēšanas sākšanai un tā ilguma noteikšanai. Šajā gadījumā signāla ilgums ir vienāds ar impulsa ilgumu iespējošanas ieejā.

DTMF ģeneratora ķēdes analogā daļa

ITU ieteikums Q.23 definē DTMF signālus kā analogus signālus, ko rada divi sinusoidālie viļņi. Ierosinātajā DTMF ģeneratora shēmā Silego GreenPAK SLG46620V IC ģenerē kvadrātviļņu signālus ar vēlamajām DTMF frekvencēm. Lai iegūtu vajadzīgās frekvences sinusoidālos signālus un izveidotu iegūto signālu (divu sinusoidālo viļņu summu), ir nepieciešami analogie filtri un summators. Šī iemesla dēļ šajā projektā tika nolemts izmantot filtrus un kombinatoru, pamatojoties uz SLG88104V darbības pastiprinātājiem.

3. attēlā parādīta ierīces piedāvātās analogās daļas struktūra.

Rīsi. 3. Analogās apstrādes shēma DTMF signāla uztveršanai

Analogos filtrus izmanto, lai iegūtu sinusoidālus signālus no taisnstūrveida impulsiem. Pēc filtrēšanas abi signāli tiek summēti un tiek ģenerēts vēlamais izejas divu toņu DTMF signāls.

4. attēlā parādīts Furjē transformācijas rezultāts, ko izmanto kvadrātviļņu signāla spektra iegūšanai.

Rīsi. 4. Kvadrātviļņu signāla spektrs

Kā redzat, kvadrātveida vilnis satur tikai nepāra harmonikas. Ja mēs attēlojam šādu signālu ar amplitūdu A Furjē sērijas formā, tad tam būs šāda forma:

Šīs izteiksmes analīze ļauj secināt, ka, ja analogajiem filtriem ir pietiekams harmonikas vājinājums, tad ir pilnīgi iespējams iegūt sinusoidālus signālus ar frekvenci, kas vienāda ar sākotnējā kvadrātveida viļņa signāla frekvenci.

Ņemot vērā Q.23 standartā noteikto traucējumu līmeņa pielaidi, ir jānodrošina, lai visas harmonikas tiktu vājinātas par 20 dB vai vairāk. Turklāt jebkura frekvence no zemas caurlaidības grupas ir jāapvieno ar jebkuru frekvenci no augstfrekvences grupas. Ņemot vērā šīs prasības, tika izstrādāti divi filtri, pa vienam katrai grupai.

Abi filtri bija zemas caurlaidības Butterworth filtri. Pasūtījuma n Batervorta filtra vājinājumu var aprēķināt šādi:

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

kur fc ir filtra izslēgšanas frekvence, n ir filtra secība.

Vājināšanās starpība starp katras grupas zemāko un augstāko frekvenci nedrīkst būt lielāka par 3 dB, tāpēc:

A(fHIGHER)[dB] - A(ZIEDS)[dB] > 3 dB.

Dotās absolūtās vērtības:

A(fHIGHER) 2 / A(FLOWER) 2 > 2.

Tāpat, kā jau teicām iepriekš, harmoniskajam vājinājumam jābūt 20 dB vai vairāk. Šajā gadījumā sliktākajā gadījumā būs zemākā frekvence grupā, jo tās 3. harmonika ir zemākā frekvence un ir vistuvāk filtra nogriešanas frekvencei. Ņemot vērā, ka 3. harmonika ir 3 reizes mazāka par pamata harmoniku, filtram jāatbilst nosacījumam (absolūtās vērtības):

A(3ZIEDS) 2 / A(ZIEDS) 2 > 10/3.

Ja šie vienādojumi tiek piemēroti abām grupām, tad izmantotajiem filtriem ir jābūt otrās kārtas filtriem. Tas nozīmē, ka tiem būs divi rezistori un divi kondensatori, ja tie tiks ieviesti, izmantojot darbības pastiprinātājus. Ja tiktu izmantoti trešās kārtas filtri, jutība pret komponentu pielaidēm būtu mazāka. Atlasītās filtra robežfrekvences ir 977 Hz zemo caurlaidību grupai un 1695 Hz augstfrekvences grupai. Pie šīm vērtībām signāla līmeņu atšķirības frekvenču grupās atbilst iepriekš minētajām prasībām, un jutīgums pret izslēgšanas frekvences izmaiņām komponentu pielaides dēļ ir minimāls.

Izmantojot SLG88104V realizēto filtru shematiskās diagrammas ir parādītas 5. attēlā. Pirmā reitingi R-C pāri izvēlēts tā, lai ierobežotu SLG46620V mikroshēmas izejas strāvu. Otrā filtra saite nosaka pastiprinājumu, kas ir 0,2. Kvadrātviļņu signālu amplitūda nosaka darbības pastiprinātāja darbības punktu uz 2,5 V. Nevēlamo spriegumu bloķē izejas filtra kondensatori.

Rīsi. 5. Izejas filtru shematiskās diagrammas

Izejā filtra signāli tiek summēti, un iegūtais signāls ir harmoniku summa, kas atlasīta no zemo un augsto frekvenču grupas. Lai kompensētu filtra vājināšanos, izejas signāla amplitūdu var regulēt, izmantojot divus rezistorus R9 un R10. 6. attēlā parādīta summatora ķēde. 7. attēlā parādīta visa shēmas analogā daļa.

Rīsi. 6. Summētāja shematiskā diagramma

Rīsi. 7. Ķēdes analogā daļa

DTMF toņu ģeneratora ķēdes digitālā daļa

DTMF toņu ģeneratora shēmas digitālajā daļā ietilpst vesels kvadrātviļņu ģeneratoru komplekts - viens katrai DTMF frekvencei. Tā kā šo ģeneratoru izveidošanai ir nepieciešami astoņi skaitītāji, to ieviešanai tika izvēlēta GreenPAK SLG46620V mikroshēma. Digitālās shēmas izejās tiek ģenerēti divi taisnstūrveida signāli, pa vienam katrai frekvenču grupai.

Kvadrātviļņu signāli tiek ģenerēti, izmantojot skaitītājus un D flip-flops, un to darbības cikls ir 50%. Šī iemesla dēļ skaitītāja pārslēgšanas frekvence ir divreiz lielāka par nepieciešamo DTMF frekvenci, un DFF flip-flop sadala izejas signālu divās daļās.

Skaitītāju pulksteņa avots ir iebūvēts 2 MHz RC oscilators, kura frekvence vēl tiek dalīta ar 4 vai 12. Dalītājs tiek izvēlēts, ņemot vērā bitu ietilpību un katra skaitītāja maksimālo vērtību, kas nepieciešama, lai iegūtu konkrētu biežums.

Lai ģenerētu augstas frekvences, ir nepieciešams mazāk paraugu, tāpēc to ģenerēšanai tiek izmantoti 8 bitu skaitītāji, kas tiek iestatīti no iekšējā RC oscilatora, kura signāls ir dalīts ar 4. Tā paša iemesla dēļ tiek ieviestas zemākas frekvences, izmantojot 14 bitu skaitītājus.

SLG46620V ir tikai trīs standarta 14 bitu skaitītāji, tāpēc viena no zemākajām frekvencēm tika ieviesta, izmantojot 8 bitu CNT8 skaitītāju. Lai paraugu skaits iekļautos diapazonā no 0...255, šī CNT8 pulksteņa noteikšanai bija nepieciešams izmantot RC oscilatora signālu, kas dalīts ar 12. Šai shēmai frekvence ar lielāko paraugu skaitu, kas ir izvēlēta zemākā frekvence. Tas ļāva mums samazināt kļūdu.

3. tabulā parādīti katra kvadrātviļņa parametri.

3. tabula. Kvadrātveida impulsu ģeneratoru parametri

Pulksteņošana

Biežuma kļūda [%]

Zemās caurlaides grupa

Treble grupa

Kā redzams tabulā, visām frekvencēm kļūda ir mazāka par 1,8%, tāpēc tās atbilst DTMF standartam. Šos aprēķinātos raksturlielumus, pamatojoties uz ideālo RC oscilatora frekvenci, var pielāgot, izmērot RC oscilatora izejas frekvenci.

Lai gan piedāvātajā shēmā visi ģeneratori darbojas paralēli, tikai viena ģeneratora signāls no katras grupas tiks nosūtīts uz mikroshēmas izeju. Konkrētu signālu izvēli nosaka lietotājs. Tas tiek darīts, izmantojot četras GPIO ievades (divi biti katrai grupai) ar patiesības tabulu, kas parādīta 4. tabulā.

4. tabula. Tabula frekvenču atlasei no zemo frekvenču grupas

Zemās caurlaides grupa

5. tabula. Frekvenču atlases tabula no augstfrekvences grupas

Treble grupa

8. attēlā parādīta 852 Hz kvadrātviļņu ģeneratora loģiskā shēma. Šis modelis tiek atkārtots katrai frekvencei ar atbilstošiem skaitītāja iestatījumiem un LUT konfigurāciju.

Rīsi. 8. Taisnstūra impulsu ģenerators

Skaitītājs ģenerē izejas frekvenci, ko nosaka tā iestatījumi. Šī frekvence ir divreiz lielāka par atbilstošā DTMF signāla frekvenci. Skaitītāja konfigurācijas parametri ir parādīti 9. attēlā.

Rīsi. 9. Taisnstūra impulsu ģeneratora skaitītāja iestatīšanas piemērs

Skaitītāja izejas signāls ir pievienots pulksteņa ieeja D-Flip Flop sprūda. Tā kā DFF izeja ir konfigurēta kā apgriezta, ja pievienojat DFF izvadi tās ieejai, D flip-flop tiek pārveidots par T flip-flop. DFF konfigurācijas parametrus var redzēt 10. attēlā.

Rīsi. 10. Taisnstūra impulsu ģeneratora sprūda iestatīšanas piemērs

Signāls no DFF izejas tiek padots uz LUT patiesības tabulas ieeju. LUT tiek izmantoti, lai izvēlētos vienu signālu katrai konkrētai R1-R0 kombinācijai. LUT konfigurācijas piemērs ir parādīts 11. attēlā. B šajā piemērā, ja R1 saņem “1” un R0 saņem “0”, ieejas signāls tiek pārraidīts uz izeju. Citos gadījumos izvade satur “0”.

Rīsi. 11. Kvadrātveida impulsu ģeneratora patiesības tabulas iestatīšanas piemērs

Kā minēts iepriekš, piedāvātajai shēmai ir ieeja Iespējot iespējo. Ja ieejā Iespējot atļauju ir loģiskā vienība “1”, ģenerētie taisnstūrveida signāli tiek piegādāti uz mikroshēmas izeju pāri. Pārraides ilgums ir vienāds ar impulsa ilgumu iespējošanas ieejā. Lai ieviestu šo funkciju, bija nepieciešami vēl vairāki LUT.

Augstas caurlaidības grupa izmanto vienu 4 bitu LUT un vienu 2 bitu LUT, kā parādīts 12. attēlā.

Rīsi. 12. Augsto frekvenču grupas izejas ķēde

4 bitu LUT1 konfigurēts kā loģikas elements VAI, tā izvada loģisko vienumu “1”, ja jebkurā no ieejām ir “1”. C1/C0 patiesības tabulas ļauj izvēlēties tikai vienu no oscilatoriem, tāpēc 4 bitu LUT1 nosaka, kurš signāls tiek izvadīts. Šī LUT izeja ir savienota ar 2 bitu LUT4, kas pārraida signālu tikai tad, ja iespējošanas ieeja ir loģiskā "1". 13. un 14. attēlā parādītas 4 bitu LUT1 un 2 bitu LUT4 konfigurācijas.

Rīsi. 13. 4 bitu LUT1 konfigurācija

Rīsi. 14. 2 bitu LUT4 konfigurācija

Tā kā vairs nebija 4 bitu patiesības tabulu LUT, zemas caurlaidības grupai tika izmantoti divi 3 bitu LUT.

Rīsi. 15. Zemas caurlaidības grupas izejas ķēde

Pilna GreenPAK SLG46620V iekšējā shēma ir parādīta 16. attēlā. 17. attēlā parādīta DTMF ģeneratora galīgā shēma.

Rīsi. 16. DTMF toņu ģeneratora blokshēma

Rīsi. 17. DTMF toņu ģeneratora shematiskā diagramma

DTMF ģeneratora ķēdes pārbaude

Piedāvātā DTMF ģeneratora testēšanas pirmajā posmā tika nolemts pārbaudīt visu ģenerēto taisnstūrveida signālu frekvences, izmantojot osciloskopu. Piemēram, 18. un 19. attēlā parādītas kvadrātviļņu izejas 852 Hz un 1477 Hz.

Rīsi. 18. Kvadrātvilnis 852 Hz

Rīsi. 19. Kvadrātvilnis 1477 Hz

Kad tika pārbaudītas visu kvadrātviļņu signālu frekvences, sākās ķēdes analogās daļas testēšana. Tika pārbaudīti izejas signāli visām zemo un augsto frekvenču kombinācijām. Piemēram, 20. attēlā parādīta 770 Hz un 1209 Hz signālu summa, bet 21. attēlā parādīta 941 Hz un 1633 Hz signālu summa.

Rīsi. 20. DTMF tonis 770 Hz un 1209 Hz

Rīsi. 21. DTMF tonis 941 Hz un 1633 Hz

Secinājums

Šajā rakstā tika piedāvāta shēma DTMF toņu ģeneratoram, kura pamatā ir Silego GreenPAK SLG46620V mikroshēma un Silego SLG88104V darbības pastiprinātāji. Ģenerators ļauj lietotājam izvēlēties vēlamo frekvenču kombinācijas, izmantojot četras ieejas, un kontrolēt iespējošanas ieeju, kas nosaka izejas signālu ilgumu.

SLG46620V mikroshēmas īpašības:

  • Tips: Programmējama jaukta signāla IC;
  • Analogie bloki: 8 bitu ADC, divi DAC, seši komparatori, divi filtri, ION, četri integrēti oscilatori;
  • Digitālie bloki: līdz 18 I/O portiem, starpsavienojumu matrica un kombinatoriskā loģika, programmējamas aizkaves shēmas, programmējams funkciju ģenerators, seši 8 bitu skaitītāji, trīs 14 bitu skaitītāji, trīs PWM oscilatori/komparatori;
  • Komunikācijas interfeiss: SPI;
  • Barošanas sprieguma diapazons: 1,8…5 V;
  • Darba temperatūras diapazons: -40…85 °C;
  • Iepakojuma versija: 2 x 3 x 0,55 mm 20-pin STQFN.

Specifiskas īpatnības:

  • Sinusoidālo viļņu ģenerēšana, izmantojot impulsa platuma modulāciju (PWM)
  • Dažādu sinusoidālo viļņu signālu apvienošana vienā DTMF signālā
  • Avota kodi montāžas un C valodās
  • Paredzēts darbam ar STK500
  • Programmas koda lielums 260 baiti / nemainīgs tabulas izmērs 128 baiti
  • Izmantojot tabulas konvertēšanas metodi

Ievads

Šajā dokumentā ir aprakstīta metode DTMF signālu (divtoņu daudzfrekvenču signālu) ģenerēšanai, izmantojot jebkuru AVR mikrokontrolleri, kas satur impulsa platuma modulācijas (PWM) bloku un statisko RAM. Šos signālus plaši izmanto telefonijā, kur tie tiek atskaņoti, nospiežot tālruņa aparāta numura sastādīšanas pogas. Lai pareizi ģenerētu DTMF signālu, jums ir jāpārklāj divas frekvences kopā: zema frekvence(fb) un augsta frekvence (fa). 1. tabulā parādīts, kā tiek sajauktas dažādas frekvences, lai radītu DTMF signālus, nospiežot dažādus taustiņus.

1. attēls – DTMF signālu ģeneratora shēma

1. tabula – Toņu signālu ģenerēšanas matrica

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

1. tabulas rindās ir redzamas zemas frekvences vērtības, bet kolonnās - augstas frekvences vērtības. Piemēram, matrica parāda, ka, nospiežot pogu “5”, frekvences fb = 770 Hz un fa = 1336 Hz jāsajauc. Divu dažādu frekvenču sinusoidālu signālu pievienošanas rezultātā veidojas DTMF signāls

kur ir amplitūdas attiecība K=A b /A a avota signāliem jāatbilst nosacījumam

Darbības princips

Turklāt Galvenā informācija Par impulsa platuma modulācijas izmantošanu tālāk tiks parādīts, kā impulsa platuma modulācija ļauj ģenerēt sinusoidālus signālus. Nākamajā rindkopā ir aprakstīts, kā izmantot bāzes pārslēgšanas frekvenci, lai iegūtu dažādas frekvences. Pēc izskatīšanas teorētiskie pamati Tiks sniegts paša DTMF signāla ģeneratora apraksts. Sinusoidālo viļņu ģenerēšana

Atkarībā no augsta VH un zema VL sprieguma līmeņu ilguma attiecības mainās vidējā vērtība pie PWM izejas. Ja attiecība starp abu līmeņu ilgumiem tiek uzturēta nemainīga, rezultātā tiks ģenerēts nemainīgs VAV sprieguma līmenis. 2. attēlā parādīts impulsa platuma modulēts signāls.


2. attēls – līdzstrāvas sprieguma līmeņa ģenerēšana

Sprieguma līmeni nosaka pēc izteiksmes:

(3)

Sinusoidālu signālu var ģenerēt, ja impulsa platuma modulācijas radītā sprieguma vidējā vērtība mainās katrā PWM ciklā. Attiecības starp augsto un zemo līmeni ir jāiestata atbilstoši sinusoidālā viļņa sprieguma līmenim attiecīgajā laikā. 3. attēls ilustrē šo procesu. PWM avota dati tiek aprēķināti katram tā periodam un ierakstīti konversijas tabulā (TC).

3. attēlā parādīta arī sakarība starp fundamentālā sinusoidālā viļņa frekvenci un paraugu skaitu. Jo lielāks paraugu skaits (Nc), jo augstāka ir iegūtā signāla modelēšanas precizitāte:

(4)

PWM frekvence ir atkarīga no PWM izšķirtspējas. 8 bitu izšķirtspējā taimera galīgā vērtība (skaita augšdaļa) ir 0xFF (255). Jo Pēc tam taimeris skaita uz priekšu un atpakaļ dotā vērtība vajadzētu dubultot. Tāpēc pārslēgšanas frekvenci var aprēķināt dalot pulksteņa frekvence taimeris f CK pie 510. Tādējādi ar taimera pulksteņa frekvenci 8 MHz iegūtā PWM frekvence būs 15,6 kHz.


3. attēls – sinusoidāla signāla ģenerēšana, izmantojot PWM

Sinusa viļņa frekvences maiņa

Pieņemsim, ka sinusoidālie paraugi tiek nolasīti no uzmeklēšanas tabulas nevis secīgi, bet pa vienam. Šajā gadījumā ar tādu pašu iztveršanas ātrumu tiks ģenerēts signāls ar dubultu frekvenci (sk. 4. attēlu).


4. attēls — iegūtās frekvences dubultošana (XSW = 2)

Pēc analoģijas, ja lasāt nevis katru otro vērtību, bet katru trešo, ceturto, piekto (attiecīgi soļa platums ir 3, 4, 5...) utt. diapazonā ir iespējams ģenerēt Nc frekvences. Ņemiet vērā, ka augstām frekvencēm iegūtā viļņu forma nebūs sinusoidāla. Mēs apzīmējam pakāpiena platumu saskaņā ar konversijas tabulu kā XSW, Kur

(5)

Pašreizējās pozīcijas aprēķins TP nākamajam PWM periodam (kad taimeris pārplūst) tiek veikts, izmantojot izteiksmi (6). Jauna vērtība pozīcijā X LUT ir atkarīgs no tā iepriekšējā stāvokļa pozīcijā X" LUT palielinot pakāpiena platumu XSW

(6)

Dažādu frekvenču pievienošana, lai iegūtu DTMF signālu

DTMF signālu var ģenerēt, izmantojot izteiksmes (1) un (2). Aritmētisko darbību vienkāršības labad koeficienta K vērtību ņem vienādu ar 0,75, lai aizstātu aritmētisko darbību ar loģiskām nobīdēm. Ņemot vērā izteiksmi (6), pašreizējo vērtību PWM kontrolei var aprēķināt ar izteiksmi:

un ņemot vērā to X LUTa=X" LUta + XSWa ,X LUTb=X" LUTb + XSWb, beidzot pierakstīsim

DTMF ģeneratora ieviešana

IN šo pieteikumu apspriež DTMF toņu ģeneratora uzbūvi, izmantojot 8 bitu PWM izvadi (OC1A) un tabulu ar 128 sinusa funkcijas (Nc) paraugiem, katrs norādīts ar 7 bitiem (n). Šīs izteiksmes parāda šo atkarību, kā arī parāda, kā aprēķināt uzmeklēšanas tabulas ierakstus:

(9)

7 bitu izmantošanas priekšrocība ir tāda, ka augstfrekvences un zemas frekvences signālu vērtību summa ir viena baita lielumā. Lai atbalstītu pilnu DTMF signālu komplektu, ir jāaprēķina 8 vērtības katrai DTMF frekvencei no 1. tabulas un jāievada uzmeklēšanas tabulā.

Lai panāktu lielāku precizitāti, tika ieviests šāds risinājums: vērtībām, kas aprēķinātas, izmantojot izteiksmi 5, ir nepieciešami tikai 5 baiti. Lai izmantotu visus 8 baitus, kas samazinās noapaļošanas kļūdas, šī vērtība tiek reizināta ar 8. Rādītājs uz uzmeklēšanas tabulu tiek rakstīts tādā pašā veidā. Bet šajā gadījumā ir nepieciešami divi baiti, lai saglabātu 8 reizes lielāku vērtību. Tas nozīmē, ka pirms šo baitu izmantošanas kā rādītāja uz sinusoidālā viļņa vērtībām ir jāveic 3 pa labi nobīdes un radiksa Nc moduļa darbība (loģiskā reizināšana ar Nc-1).


5. attēls – moduļa shēma savienojumam ar STK500

PWM signāls tiek ģenerēts pie tapas OC1A (PD5). Papildu izejas filtrs palīdzēs padarīt signālu saderīgāku ar sinusoidālo viļņu formu. Samazinot PWM frekvenci, var būt nepieciešams izmantot filtru ar stāvāku frekvences reakciju, lai iegūtu labu rezultātu.

Tastatūras savienojums parādīts 1. attēlā. Tastatūras darbība ir jāorganizē tā, lai būtu iespējams noteikt nospiesto taustiņu. To var izdarīt, izmantojot šādu algoritmu:

  1. Nospiestā taustiņa virknes noteikšana
    • konfigurējiet B porta zemās kārtas piezīmjdatoru kā izvadi un iestatiet žurnālu. "0"
    • konfigurējiet porta B augsto tetradu kā ieeju ar pievilkšanas rezistoru savienojumu
    • līnija ar nospiesto pogu tiek definēta kā augstākās tetradas cipars ar žurnālu. "0"
  2. Nospiestās taustiņu kolonnas definēšana
    • konfigurējiet porta B augsto piezīmjdatoru kā izvadi un iestatiet žurnālu. "0"
    • konfigurējiet porta B zemās kārtas tetradu kā ieeju, pievienojot uzvilkšanas rezistorus
    • kolonna ar nospiestu pogu ir definēta kā zemas kārtas tetrada cipars ar žurnālu. "0"

Piezīme: STK200 rezistori ir virknē savienoti starp PORTB savienotāja tapām un mikrokontrollera tapām BP5, PB6 un PB7 (skatiet STK200 diagrammu). Tas radīs problēmas, ja tastatūra ir pievienota PORTB savienotājam.

6. attēlā ir parādīta nospiestā taustiņa noteikšanas apakšprogrammas darbība. Atkarībā no nospiestā taustiņa tiek noteikts intervāla ilgums. Pārtraukšanas rutīna izmanto šo vērtību, lai aprēķinātu PWM iestatījumus diviem DTM toņa sinusoidāliem viļņiem. Pārtraukumu apstrādes procedūra ir parādīta 7. un 8. attēlā.

Šī rutīna aprēķina vērtību, ko salīdzināt ar taimera izvadi nākamajam PWM periodam. Pārtraukšanas rutīna vispirms aprēķina nākamās parauga vērtības pozīciju uzmeklēšanas tabulā un nolasa tur saglabāto vērtību.

Parauga atrašanās vietu uzmeklēšanas tabulā nosaka impulsa platums, un faktisko impulsa platumu nosaka ģenerētā frekvence.

Galīgo vērtību, kas tiek ierakstīta taimera salīdzināšanas reģistrā, nosaka, izmantojot formulu (7), kurā ņemtas vērā abu DTMF frekvenču izlases vērtības.


6. attēls – Galvenās programmas blokshēma

Ieviešot moderno digitālā pbx Krievijas Federācijas telefonu tīklos pakāpeniski izplatās daudzfrekvenču sastādīšanas signālu pārraidīšanas metode, ko apzīmē ar angļu valodas saīsinājumu DTMF (Dual-Tone Multiple-Frequency). Dažkārt šīs sastādīšanas signāla pārraides sistēmas nosaukšanai tiek lietots cits angļu valodas termins - Touch-None (tonālā numura sastādīšana). Šī metode tika izstrādāta 1960. gadā, bet tās īstā izplatība sākās 80. gados līdz ar digitālo (elektronisko) telefona centrāļu izplatību.

Izmantojot šo vadības signālu pārraidīšanas metodi, katrs daudzfrekvenču ciparu signāls sastāv no diviem signāliem saskaņā ar ITU-T ieteikumu Q.23 "Skārienzvana tālruņu tehniskās īpašības".

DTMF frekvences nav izvēlētas harmoniski. Tas nozīmē, ka frekvencēm nav cita vesela skaitļa dalītāja kā 1. Piemēram, frekvences 1200 un 1600 Hz ir 400 Hz frekvences harmonikas (3x400=1200 un 4x400=1600), un frekvences 697 un 770 Hz ir neharmoniskas.

Katrs signāls satur divas frekvences: vienu no apakšējās un otru no augšējās frekvenču grupas.

Atbilstība starp pārraidīto informāciju un frekvencēm ir norādīta tabulā laboratorijas iekārtas priekšējā panelī.

Raidīšanas līmenis divu frekvenču paketē, mērot pie 600 omu slodzes, ir: zemākajai frekvenču grupai - mīnus 6 dBmO ± 2 dB, augšējai frekvenču grupai - mīnus 3 dBmO ± 2 dB. Augšējās frekvenču grupas frekvences līmenis kopējā signālā ir par 2 ±1 dB augstāks nekā apakšējās grupas frekvences līmenis. Visu augstākas kārtas frekvenču komponentu kopējais līmenis ir vismaz par 20 dB zem zemākas kārtas frekvences līmeņa.

Nosacījumi, kādos jānotiek normālai signāla uztveršanai, ir šādi: signālā ir divas frekvences, no kurām viena ir izvēlēta no apakšējās grupas, bet otra no augšējās; frekvences neatšķiras no to nominālvērtībām vairāk kā par 1,8%; katras no divām frekvencēm līmenis ir robežās no mīnus 7 līdz mīnus 30 dBmO; atšķirība starp abu frekvenču līmeņiem nepārsniedz 3 dB; frekvences signāla ilgums ir vismaz 40 ms.

Pirms instalēšanas ieslēgšanas veiciet šādas darbības:

Iestatiet slēdzi S6 apakšējā pozīcijā;

Iestatiet slēdzi S13 augšējā pozīcijā;

Iestatiet augšējās un apakšējās frekvenču grupas ģeneratoru slēdžus pozīcijā “Izslēgts”;

Iestatiet analogo atslēgas slēdzi (AK) pozīcijā “Ieslēgts”;

Pagrieziet ģeneratoru un rezistora R3 izejas sprieguma regulēšanas pogas pretēji pulksteņrādītāja virzienam, līdz tās apstājas.

dtmf signāla kondicionēšana

1.1. Iespējot instalēšanu.

1.2 Savienojiet osciloskopu ar KT3 pārbaudes punktu.

1.3. Ieslēdziet augšējās frekvenču grupas ģeneratoru, nospiežot vienu no slēdža pogām, izvēlieties jebkuru no šīs grupas frekvencēm.

1.4. Pagrieziet ģeneratora izejas sprieguma regulēšanas pogu, lai iestatītu signāla amplitūdu CT3 uz 0,5 voltiem.

1.5. Pārslēdziet osciloskopa ieeju uz KT4 pārbaudes punktu. Atkārtojiet 1.3., 1.4. darbību zemākās frekvences grupas ģeneratoram, iestatot spriegumu KT4 uz 0,5 V.

PIEZĪME: Veikto darbību rezultātā summētāja ieejā tiek piegādāti vienādas amplitūdas signāli no augšējās un apakšējās frekvenču grupas. Pēc šo līmeņu iestatīšanas bloķējiet ģeneratora izejas sprieguma regulēšanas pogas.

1.6. Pārslēdziet osciloskopa ieeju uz KT7 pārbaudes punktu. Pagriežot rezistora pogu (R3), lai regulētu DTMF signāla kondicionētāja izejas spriegumu, iestatiet spriegumu CT7 uz 0,5 voltiem.

PIEZĪME: Veikto darbību rezultātā uz uztvērēja ieeju tiek piegādāts nepārtraukts divu toņu signāls, un uz saņemtā simbola indikatora jāparāda simbols, kas atbilst augšējās un apakšējās frekvenču grupas ģeneratoru frekvenču kombinācijai. , saskaņā ar tabulu. Saņemtā un identificētā signāla norāde ir signāla klātbūtne STD uztvērēja izejā (LED mirdzums).

      Pārslēdzot augšējās un apakšējās frekvenču grupas frekvences, pārliecinieties, ka šo frekvenču kombinācijas atbilst saņemtajiem simboliem.