Študija sprejemnika in oddajnika dtmf signalov. Dvotonski večfrekvenčni (DTMF) generator na AVR Zdaj pa poglejmo, kaj imamo

Prvi del te aplikacije opisuje, kako ustvariti signale DTMF z uporabo mikrokrmilnika MSP430. Podana je razlaga najpomembnejših specifikacij, uporabljenih v tem primeru, ter podana teoretična in matematična utemeljitev generiranja sinusnih valov s kvadratnimi valovi z uporabo ustreznih analognih filtrov. Primer vključuje tudi preizkušene demo programe za generiranje pravokotnih signalov na podlagi različnih časovnih konfiguracij mikrokontrolerjev MSP430. Zadnji del podaja diagram vezja za generiranje signalov DTMF iz pravokotnih signalov.

2 Specifikacija signala DTMF

Okrajšava DTMF pomeni »Dual Tone Multi Frequency« in je metoda predstavitve števk na različnih frekvencah za namene njihovega prenosa po analognih komunikacijskih linijah, npr. telefonska linija. Pri razvoju standarda je bil upoštevan pogoj - vse frekvence morajo biti v "glasovnem" območju, kar je omogočilo zmanjšanje zahtev za prenosni kanal. Telefonska omrežja uporabljajo signale DTMF za klicanje in druge informacije. Kljub dejstvu, da se še vedno pogosto uporablja metoda pulznega izbiranja, ki je na primer standard v Nemčiji, se čas izbiranja znatno poveča, kar vodi do neproduktivne obremenitve komunikacijskih linij. Poleg tega mnogi Dodatne storitve Komunikacije so možne samo s tonskim izbiranjem. Pri kodiranju z uporabo metode DTMF številke 0-9 in črke A-D, */E in #/F predstavljajo kombinacije dveh frekvenc:

Pogostost 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

V tem sistemu stolpec predstavlja frekvenco iz "zgornje" frekvenčne skupine (Hi-Group: 1209-1633 Hz), vrstica pa predstavlja frekvenco iz "spodnje" frekvenčne skupine (Lo-Group: 697-941 Hz) . Tonske frekvence so izbrane tako, da odpravijo vpliv harmonikov. Frekvence niso večkratniki ena druge in frekvence DTMF ni mogoče dobiti z dodajanjem ali odštevanjem drugih frekvenc. Za ustvarjanje klicalnika v omrežju Deutsche Telekom so potrebne naslednje specifikacije (povzete po Zulassungsvorschrift des Bundesamtes fur Post und Telekommunikation, BAPT 223 ZV 5 (Uradna specifikacija zveznega ministrstva za pošto in telekomunikacije):

3 Ustvarite signale DTMF

Kot je opisano zgoraj, so signali DTMF analogni in sestavljeni iz dveh neodvisnih sinusnih valov. Tako ni mogoče ustvariti samo takih signalov digitalno. Digitalne signale je treba pretvoriti z ADC in/ali analognimi filtri v zahtevano sinusno obliko.

3.1 Generiranje s kvadratnimi valovi

Če se za ustvarjanje signalov DTMF uporabljajo pravokotni signali, programska oprema in strojna oprema minimalno. Vsak neprekinjen signal s periodo T je mogoče predstaviti s Fourierjevim nizom, ki je sestavljen iz neskončne vsote sinusnih in kosinusnih valov, kot sledi:

Kjer je a0/2 konstantna komponenta signala. Element vsote z najnižjo kotno frekvenco (w0) imenujemo glavni (temeljni) harmonik, ostalo so prizvoki ali višji harmoniki.

Najenostavnejši zvezni signal, ki se izvaja z uporabo mikrokrmilnika, je pravokotni val, Fourierjeva serija ima obliko:

Prispevek vsake frekvenčne komponente k celotnemu signalu je najbolje prikazan z amplitudnim spektrom (glej sliko 2):


riž. 2: Amplitudni spekter pravokotnega signala

Pri uporabi analognega filtra so enosmerna komponenta in višji harmoniki učinkovito zadušeni, na izhodu pa imamo sinusni signal s frekvenco, ki je enaka frekvenci originalnega kvadratnega vala.

3.2 Programska oprema za generiranje meandra

Program generiranja meandra mora izpolnjevati naslednje zahteve:

  • Sposoben sintetizirati dva neodvisna pravokotna signala.
  • Za ločevanje signalov sta potrebna dva izhodna zatiča za generiranje signalov iz "zgornjega" (Hi-Group) in "spodnjega" (Lo-Group) frekvenčna območja oz.
  • Programska oprema mora biti sposobna nastaviti zahtevano trajanje signala v območju približno 65 ms - 100 ms.

Mikrokontrolerji serije MSP430 imajo različne vgrajene časovnike, ki lahko generirajo pravokotne signale. Družina '31x/'32x uporablja 8-bitni časovnik in vrata za časovnik za generiranje obeh pravokotnih signalov. Ta program testiran pri frekvenci MCLK enaki 1,048 MHz. Timer_A v družini '33x lahko neodvisno ustvari oba zahtevana signala. Drugi program uporablja ta časovnik za generiranje kvadratnih valov in deluje s poljubnimi frekvencami MCLK. Oba programa bosta podrobneje obravnavana v nadaljevanju.

3.2.1 Ustvarjanje kvadratnih valov z uporabo 8-bitnega časovnika in vrat za časovnik

Na sl. 3 je diagram poteka postopka inicializacije za generiranje signalov DTMF. Za sintetiziranje obeh frekvenc se uporabljajo vrata Timer Port in 8-bitni števci časovnika. Vsak od njih je programabilni števec, potreben za natančno sintezo zahtevanih frekvenc. Če so števci vrat časovnika kaskadno povezani v en sam 16-bitni časovnik in taktni na sistemski frekvenci MCLK, se lahko frekvence visokega obsega ustvarijo z visoko natančnostjo. Ko pride do prekinitve, se ustrezen izhod preklopi in oba 8-bitna registra števca se ponastavita. Naložene vrednosti so shranjene v dveh spremenljivkah v RAM-u, da se shranijo notranji registri za druge naloge.

Nizke frekvence generira 8-bitni časovnik. Ker je register števca tega časovnika širok 8 bitov, samo vsaka tretja prekinitev povzroči spremembo nivoja na zahtevanem izhodnem pinu, kar omogoča generiranje istega frekvenčnega števca.

Dva časovna izhoda - vrata se uporabljajo za oblikovanje dveh meander različnih frekvenc.

riž. 3 Diagram poteka postopka inicializacije za generiranje signalov DTMF

Postopek inicializacije se izvede samo enkrat. Po njegovem zaključku se šestnajstiška vrednost prenesenega znaka prebere iz globalne spremenljivke v RAM-u. Ko sta dve frekvenci, ki tvorita visoke in nizke tone DTMF, ustvarjeni iz dveh tabel, je vse, kar je potrebno, inicializirati in zagnati oba časovnika. Trajanje pošiljanja se kontrolira s štetjem pol-ciklov "spodnje" frekvence in se odčita iz dodatne tabele. Po zaključku tega postopka se vrnete na funkcijo anketiranja. Ustrezne rutine za obdelavo prekinitev preklopijo zatiče vrat. Ta postopek je prikazan na sl. 4 in 5.

Naloge časovnika vključujejo le snemanje dnevnika. ravni na izhodu vrat in ponovno nalaganje števca iz RAM-a, medtem ko ima delovanje 8-bitnega časovnika nekoliko bolj zapleteno strukturo: vsak vhod v prekinitev šteje števec register. Izhod lahko spremeni stanje šele po treh prekinitvah. Poleg tega se šteje tudi vsak pol-cikel. Generacija se ustavi, ko je doseženo določeno število polciklov.


riž. 4 blok – prekinitveno vezje iz 8-bitnega časovnika (Lo-Group)


riž. 5 blok – prekinitveno vezje vrat časovnika (Hi-Group)

; Definicije po meri FLLMPY equ 32 ; Frekvenčni množitelj FLL pri 1,048 MHz TCLK equ FLLMPY*32768 ; TCLK: FLLMPY x f quartz DL equ 85 ; Trajanje signala DTMF (65..100 ms) LO_OUT equ 02h ; Izhod "nižje" frekvence HI_OUT equ 04h; Visokofrekvenčni izhod RCOUNT equ r14; Števec dolžine DTMF RTEMP equ r15 ; servisni register.globalni DTMF_NR; globalna spremenljivka v RAM-u; za številko DTMF (0..F) ; Definicije RAM.even .bss DTMF_TL ; Parni naslov alignment.bss DTMF_TH .bss DTMF_NR ; globalna spremenljivka v RAM-u; za številko DTMF (0..F).sodo; Definicije za 8-bitni časovnik TCCTL EQU 42H TCPLD EQU 43H TCDAT EQU 44H ; Definicije za vrata univerzalnega časovnika TPCTL equ 04bh; Nadzor vrat časovnika TPCNT1 equ 04ch ; Števec vrat časovnika 1 TPCNT2 equ 04dh ; Števec vrat časovnika 2 TPD equ 04eh ; Podatki vrat časovnika TPE equ 04fh ; Timer-port-resolution.text ; Frekvenčne tabele DTMF: tabela vsebuje; število ciklov MCLK za en pol-cikel. ; Tabela za "zgornjo" frekvenco; Dodan popravek; upoštevati čas vstopa v prekinitev DTMF_HI .word 0ffffh-(TCLK/(1336*2))+25 ; Visoka frekvenca za 0 .besedo 0ffffh-(TCLK/(1207*2))+28 ; Visoka frekvenca za 1 .besedo 0ffffh-(TCLK/(1336*2))+25 ; Visoka frekvenca za 2 .word 0ffffh-(TCLK/(1477*2))+24 ; Visoka frekvenca za 3 besede 0ffffh-(TCLK/(1207*2))+28 ; Visoka frekvenca za 4 .besedo 0ffffh-(TCLK/(1336*2))+25 ; Visoka frekvenca za 5 .besed 0ffffh-(TCLK/(1477*2))+24 ; Visoka frekvenca za 6 besed 0ffffh-(TCLK/(1207*2))+28 ; Visoka frekvenca za 7 .word 0ffffh-(TCLK/(1336*2))+25 ; Visoka frekvenca za 8 .word 0ffffh-(TCLK/(1477*2))+24 ; Visoka frekvenca za 9 .word 0ffffh-(TCLK/(1633*2))+22 ; Visoka frekvenca za besedo A 0ffffh-(TCLK/(1633*2))+22 ; Visoka frekvenca za B .word 0ffffh-(TCLK/(1633*2))+22 ; Visoka frekvenca za C .word 0ffffh-(TCLK/(1633*2))+22 ; Visoka frekvenca za D .word 0ffffh-(TCLK/(1207*2))+28 ; Visoka frekvenca za * .word 0ffffh-(TCLK/(1477*2))+24 ; Visoka frekvenca za #; Tabela za “nižjo” frekvenco DTMF_LO .byte 0ffh-(TCLK/(941*2*3)) ; Nizka frekvenca za 0 .byte 0ffh-(TCLK/(697*2*3)) ; Nizka frekvenca za 1 .bajt 0ffh-(TCLK/(697*2*3)); Nizka frekvenca za 2 .bajta 0ffh-(TCLK/(697*2*3)); Nizka frekvenca za 3 .byte 0ffh-(TCLK/(770*2*3)); Nizka frekvenca za 4 .byte 0ffh-(TCLK/(770*2*3)); Nizka frekvenca za 5 .bajtov 0ffh-(TCLK/(770*2*3)); Nizka frekvenca za 6 .byte 0ffh-(TCLK/(853*2*3)); Nizka frekvenca za 7 .byte 0ffh-(TCLK/(853*2*3)); Nizka frekvenca za 8 .byte 0ffh-(TCLK/(853*2*3)); Nizka frekvenca za 9 .byte 0ffh-(TCLK/(697*2*3)); Nizka frekvenca za A .byte 0ffh-(TCLK/(770*2*3)); Nizka frekvenca za B .byte 0ffh-(TCLK/(853*2*3)); Nizka frekvenca za C .byte 0ffh-(TCLK/(941*2*3)); Nizka frekvenca za D .byte 0ffh-(TCLK/(941*2*3)); Nizka frekvenca za *.byte 0ffh-(TCLK/(941*2*3)) ; Nizka frekvenca za #; Tabela trajanja signala DTMF_L .byte 2*941*DL/1000 ; Pol ciklov za 0 .byte 2*697*DL/1000 ; Pol ciklov za 1 .bajt 2*697*DL/1000 ; Polcikli za 2 .bajta 2*697*DL/1000 ; Polcikli za 3 .bajte 2*770*DL/1000 ; Polcikli za 4 .bajte 2*770*DL/1000 ; Pol ciklov za 5 .bajtov 2*770*DL/1000 ; Pol ciklov za 6 .bajtov 2*852*DL/1000 ; Pol ciklov za 7 .bajtov 2*852*DL/1000 ; Pol ciklov za 8 .bajtov 2*852*DL/1000 ; Pol ciklov za 9 .bajtov 2*697*DL/1000 ; Polcikli za A .byte 2*770*DL/1000 ; Polcikli za B .byte 2*852*DL/1000 ; Polcikli za C .byte 2*941*DL/1000 ; Polcikli za D .byte 2*941*DL/1000 ; Polcikli za *.byte 2*941*DL/1000 ; Polcikli za # ;******************************************** ********* ********************************* ; DTMF-TX DTMF podprogram ;******************************************** ******************************** DTMF_TX mov.b DTMF_NR,RTEMP ; Shrani številko v začasni register mov.b DTMF_L(RTEMP),RCOUNT ; Shranite števec trajanja; pripravite 8-bitni časovnik za frekvenco DTMF-Lo mov.b #0a8h,&TCCTL ; Ura iz MCLK mov.b DTMF_LO(RTEMP),&TCPLD ; Priprava registra; prednaloži mov.b #000,&TCDAT ; Nalaganje števca iz registra; prednapetost bis.b #008h,&IE1 ; Omogoči prekinitve; iz 8-bitnega časovnika; priprava časovnika za frekvenco DTMF-Hi rla r15; * 2 za 16-bitno tabelo mov DTMF_HI(RTEMP),&DTMF_TL ; shrani besedo za visokofrekvenčni mov #003,RTEMP; števec za 8-bitni časovnik bis.b #008h,IE2 ; Omogoči prekinitve; iz vrat časovnika mov.b &DTMF_TH,&TPCNT2 ; Nalaganje visokega bajta v TC2 mov.b &DTMF_TL,&TPCNT1 ; Nalaganje nizkega bajta v TC1 bis.b #080h,&TPD ; Omogoči 16-bitni časovnik bis.b #HI_OUT+LO_OUT,&TPE ; Omogoči izhode DTMF-Hi/Lo mov.b #090h,&TPCTL ; Omogoči časovnik ret ;************************************************ ******** ******************************** ; Prekinitev časovnika;********************************************* *** ******************************* TP_INT xor.b #HI_OUT,&TPD ; Obrni izhod DTMF-Hi mov.b &DTMF_TH,&TPCNT2 ; Nalaganje starejših ba

3.2.2 1 Generiranje kvadratnih valov z uporabo Timer_A

Ta rutina za generiranje signala DTMF uporablja samo Timer_A za kvadratno valovanje obeh želenih frekvenc. Postopek sestavljanja izračuna ustrezne vrednosti za časovnik za uporabo programa ne glede na vrednost frekvence MCLK. Trajanje izhodnega signala je določeno s konstanto DL v milisekundah.

; Definicije strojne opreme; FLLMPY .equ 32; Frekvenčni množitelj FLL pri 1,048 MHz TCLK .equ FLLMPY*32768 ; TCLK: FLLMPY x f kvarčni DL .equ 82; trajanje signala DTMF v ms; (65..100 ms) STACK .equ 600h ; Naslov inicializacije sklada; Definicije RAM-a; STDTMF .equ 202h ; Stanje visoke in nizke frekvence TIM32B .equ 204; Razširitev registra časovnika LENGTH .equ 206h ; števec trajanja DTMF; .text 0F000h ; Začetni naslov programa; ; Inicializacija Timer_A: MCLK, neprekinjen način, omogočene prekinitve; Priprava izhodnih modulov časovnika Timer_A MCLK = 1,048 MHz (samodejno) ; INIT MOV #STACK,SP ;Inicializacija kazalca sklada CALL #INITSR ;Inicializacija množitelja; FLL frekvence in RAM MOV #ISMCLK+TAIE+CLR,&TACTL ; Inicializacija časovnika MOV.B #TA2+TA1,&P3SEL ; Izhoda TA2 in TA1 na vratih P3.5/4 CLR TIM32B; Počisti razširjeni register časovnika BIS #MCONT,&TACTL ; Zagon časovnika Timer_A EINT ; Omogočanje splošne prekinitve MAINLOOP ... ; Glavna zanka; ;Pritisnite tipko: SDTMF vsebuje odmik tabele; za 2 frekvenci (0..6,0..6) v visokem in nizkem bajtu; MOV&TAR,R5 ; Za takojšnji začetek: ADD FDTMFLO,R5 ; Odmik za krajši čas MOV R5,&CCR1 ; Prva sprememba stanja po 0,71 ms MOV R5,&CCR2 ; 1/(2x697) = 0,71 ms MOV #OMT+CCIE,&CCTL1; Izhodna inverzija, bitna prekinitev. MOV #OMT+CCIE,&CCTL2 ; Invertni izhod, prekinitveni bit MOV.B STDTMF,R5 ; 82 ms števec RRA R5 ; število sprememb stanja nižje frekvence MOV.B DTMFL(R5),LENGTH ; za trajanje signala... ; nadaljevanje programa; ; Upravljalnik prekinitev iz CCR0 (tu ni uporabljen); TIMMOD0 ... RETI ; ; Upravljalnik prekinitev iz registrov zajem-primerjava 1..4; TIM_HND ADD &TAIV,PC ; Obdelava zahteve z najvišjo; prioriteta RETI; brez zahteve za prekinitev: RETI JMP HCCR1 ; zahteva od CCR1 (nizka frekvenca DTMF) JMP HCCR2 ; zahteva od CCR2 (visoka frekvenca DTMF) JMP HCCR3 ; zahteva od CCR3 JMP HCCR4 ; zahteva od CCR4; TIMOVH INC TIM32B ; Razširitev Timer_A na 32 bitov RETI ; ; Nizka frekvenca DTMF: TA1 obrne izhod izhodne enote 1; Vsaka sprememba stanja se šteje za nadzor trajanja signala; HCCR1 POTISNI R5 ; Shranjevanje uporabljenih registrov MOV.B STDTMF,R5 ; Status nizke frekvence DTMF ADD FDTMFLO(R5),&CCR1 ; Dodajte trajanje polcikla DEC.B LENGTH ; Ali je trajanje signala DL končano? JNZ TARET ; ne; ; Da, zaustavi signal DTMF: onemogoči prekinitve; BIC #OMRS+OUT+CCIE,&CCTL1 ; Ponastavi TA1 BIC #OMRS+OUT+CCIE,&CCTL2 ; Ponastavi TA2 TARET POP R5 ; Obnovi R5 RETI; Vrnitev iz prekinitve; ; Visokofrekvenčni DTMF: TA2 obrne izhod izhodne enote 2; HCCR2 POTISNI R5 ; Shranjevanje uporabljenih registrov MOV. B STDTMF+1,R5; Visokofrekvenčni status DTMF ADD FDTMFHI(R5),&CCR2 ; Dodajte trajanje polcikla POP R5 ; Obnovi R5 RETI; Vrnitev iz prekinitve; HCCR3 ... ;Naloga, ki jo krmili register CCR3 RETI HCCR4 ... ;Naloga, ki jo krmili register CCR4 RETI ; ; Tabela frekvenc DTMF: tabela vsebuje; število ciklov MCLK na pol cikla. Vrednosti, prilagojene za; efektivna frekvenca MCLK med postopkom montaže; in zaokroženo na minimum možna napaka frekvence; FDTMFLO .word ((TCLK/697)+1)/2 ; Nizka frekvenca DTMF 697Hz .word ((TCLK/770)+1)/2 ; 770Hz .word ((TCLK/852)+1)/2 ; 852Hz .word ((TCLK/941)+1)/2 ; 941Hz FDTMFHI .word ((TCLK/1209)+1)/2 ; Visokofrekvenčni DTMF1209Hz .word ((TCLK/1336)+1)/2 ; 1336Hz .word ((TCLK/1477)+1)/2 ; 1477Hz .word ((TCLK/1633)+1)/2 ; 1633Hz; ; Tabela vsebuje število pol-ciklov za trajanje signala DL (ms). ; Za štetje se uporablja nižja frekvenca DTMF; DTMFL .byte 2*697*DL/1000 ; Število pol-ciklov.byte 2*770*DL/1000 ; za DL v ms.byte 2*852*DL/1000 ; .byte 2*941*DL/1000 ; ; .sect "TIMVEC",0FFF0h ; Vektorji prekinitve časovnika Timer_A .beseda TIM_HND ; Vektor modulov 1..4 timers.word TIMMOD0 ; Modul časovnika 0 vector.sect "INITVEC",0FFFEh ; Vektor Ponastaviti.beseda INIT

Spodaj je nekoliko hitrejša rešitev. Vendar zahteva več RAM-a, ker ... Podatki, pridobljeni iz tabel, se ne preračunajo vsakič znova, ampak se na kratko shranijo v RAM DTMFLO in DTMFHI. Branje poteka iz prekinitvenih rutin časovnika Timer_A. Uporabljene tabele so enake kot v prejšnjem primeru.

FLLMPY .equ 32; Frekvenčni množitelj FLL pri 1,048 MHz TCLK .equ FLLMPY*32768 ; TCLK: FLLMPY x f kvarčni DL .equ 82; trajanje signala DTMF; v ms (65..100 ms) STDTMF .equ 202h ; Stanje visoke in nizke frekvence TIM32B .equ 204; Razširitev registra časovnika LENGTH .equ 206h ; Števec trajanja DTMF DTMFLO .equ 208h ; Pol cikla nižje frekvence DTMFHI .equ 20Ah; Zgornja frekvenca pol cikla STACK .equ 600h ; Naslov inicializacije sklada.besedilo 0F000h; Začetni naslov programa; Inicializacija Timer_A: MCLK, neprekinjen način, omogočene prekinitve; Priprava izhodnih modulov časovnika Timer_A MCLK = 1,048 MHz (samodejno) ; INIT MOV #STACK,SP ; Inicializacija kazalca sklada CALL #INITSR ; Inicializacija množitelja; FLL frekvence in RAM MOV #ISMCLK+TAIE+CLR,&TACTL ; Zagon časovnika MOV.B #TA2+TA1,&P3SEL ; Izhoda TA2 in TA1 na vratih P3.5/4 CLR TIM32B; Brisanje razširjenega registra časovnika BIS #MCONT,&TACTL ;Zagon časovnika Timer_A EINT ; Omogočanje splošne prekinitve MAINLOOP ... ; Glavna zanka; Pritisnite tipko: SDTMF vsebuje odmik tabele; za 2 frekvenci (0..6,0..6) v visokem in nizkem bajtu; MOV&TAR,R5 ; Za takojšnji začetek ADD FDTMFLO,R5 ; Odmik za krajši čas MOV R5,&CCR1 ; Prva sprememba stanja po 0,71 ms MOV R5,&CCR2 ; 1/(2x697) = 0,71 ms; ; Pridobite štetje dveh ciklov za frekvence DTMF; MOV.B STDTMF+1,R5 ; Visokofrekvenčni DTMF MOV FDTMFHI(R5),DTMFHI ; Trajanje polcikla MOV.B STDTMF,R5 ; Nizka frekvenca DTMF MOV DTMFLO(R5),DTMFLO ; Trajanje polcikla; ; Števec trajanja RRA R5 ; Pripravi bajtni indeks MOV.B DTMFL(R5),LENGTH ; število sprememb stanja nižje frekvence MOV #OMT+CCIE,&CCTL1 ; Izhodna inverzija, bitna prekinitev. MOV #OMT+CCIE,&CCTL2 ; Izhodna inverzija, bitna prekinitev. ... ; Vrnitev v glavno zanko; ; Upravljalnik prekinitev iz CCR0 (tu ni uporabljen); TIMMOD0 ... RETI ; ; Upravljalnik prekinitev iz registrov zajem-primerjava 1..4; TIM_HND ADD &TAIV,PC ; Obdelava zahteve z najvišjo; prioriteta RETI; brez zahteve za prekinitev: RETI JMP HCCR1 ; zahteva od CCR1 (nizka frekvenca DTMF) JMP HCCR2 ; zahteva od CCR2 (visoka frekvenca DTMF) JMP HCCR3 ; zahteva od CCR3 JMP HCCR4 ; zahteva od CCR4; TIMOVH INC TIM32B ; Razširitev Timer_A na 32 bitov RETI ; ; Nizka frekvenca DTMF: TA1 obrne izhod izhodne enote 1; HCCR1 DODAJ DTMFLO,&CCR1 ; Dodajte trajanje polcikla DEC.B LENGTH ; Ali je trajanje signala DL končano? JNZ TARET ; ne; ; Da, zaustavi signal DTMF: onemogoči prekinitve; BIC #OMRS+OUT+CCIE,&CCTL1 ; Ponastavi TA1 BIC #OMRS+OUT+CCIE,&CCTL2 ; Ponastavi TA2 TARET RETI ; Vrnitev iz prekinitve; Visokofrekvenčni DTMF: TA2 obrne izhod izhodne enote 2; HCCR2 DODAJ DTMFHI,&CCR2 ; Dodajte trajanje polcikla RETI ; Vrnitev iz prekinitve; HCCR3. .. ;Naloga, ki jo krmili register CCR3 RETI HCCR4 ... ;Naloga, ki jo krmili register CCR4 RETI ; ; Tabele prekinitev in vektorji so enaki tistim, prikazanim v prejšnjem primeru.

3.3 Strojna oprema za generiranje signalov DTMF

Kot je navedeno zgoraj, mora biti v frekvenčnem območju 200 Hz do 4600 Hz nivo signala frekvence prenosa vsaj 20 dB nad nivojem tujih signalov (šuma). Poleg tega morajo imeti signali iz “zgornje” in “spodnje” skupine na podlagi specifikacije različne ravni, zato vsak signal zahteva svoj filter. Amplitude sinusne frekvence lahko dobimo iz Fourierjevega niza.

Za izbiro mejnih frekvenc pri načrtovanju analognega filtra morate upoštevati naslednje zahteve, ki temeljijo na:

  • Ker zagotoviti je treba možnost kakršnih koli kombinacij frekvenc "spodnje" skupine s frekvencami "zgornje" skupine; razlika v nivojih med najnižjo in najvišjo frekvenco v skupini ne sme presegati 3 dB.
  • Za najnižjo frekvenco v skupini (f1) dušenje harmonikov (3f1) ne sme biti slabše od 20 dB. Izpolnjevanje tega pogoja je najbolj kritično za nižjo frekvenco v skupini, saj je čim dlje od mejne frekvence filtra.

Formula opisuje kvadrat absolutne vrednosti na izhodu visokofrekvenčnega Butterworthovega filtra reda n:

Ta formula predstavlja odvisnost ojačenja Butterworthovega visokoprepustnega filtra od frekvence. Parametra fg in n določata mejno frekvenco oziroma vrstni red filtra.

Najprej je treba izračunati zahtevani vrstni red filtrov ob upoštevanju skladnosti z zgornjimi zahtevami.

Za izpolnitev prvega pogoja ne sme biti razmerje kvadratov absolutnih vrednosti najnižje in najvišje frekvence v skupini največ 3 dB ali:

Drugi pogoj bo samodejno izpolnjen, če je razmerje kvadratov absolutnih vrednosti frekvenc f1 in 3f1 večje od 10/3, v tem primeru je tretji harmonik v pravokotnem signalu 1/3 manjši (glej Fourier serija in slika 2):

Kot rezultat izračunov za frekvence obeh skupin imamo zahtevani vrstni red filtrov n=1,15. Tako bo zahtevam zadostil filter 2. reda, ki ga lahko zgradimo na operacijskem ojačevalniku. Če uporabljate filter 3. reda, potrebujete samo dva dodatna elementa. Vendar bo to zmanjšalo zahteve za razpršitev parametrov komponent. Obe zgornji zahtevi bosta izpolnjeni, če je mejna frekvenca v naslednjih mejah:

Spodnja skupina fg>880 Hz fg<1418 Гц
Zgornja skupina fg>1527 Hz fg<2460 Гц

Če je mejna frekvenca na minimumu, bo prišlo do največjega harmonskega zmanjšanja. Vendar bo v tem primeru razlika med najnižjo in najvišjo frekvenco v skupini 3 dB. Pri najvišji možni mejni frekvenci je razlika v nivojih minimalna, vendar so harmonične komponente potlačene le za 20 dB.

Pri izračunu filtra je bila večja pozornost namenjena dušenju harmonikov, razlika v nivojih znotraj skupine je bila fiksirana na 2 dB. Posledično sta mejni frekvenci 977 Hz in 1695 Hz. Posledično dušenje harmonikov bistveno presega zahteve. Razlika v frekvenčnih nivojih v skupini je v okviru zahtev tudi v primeru odstopanja mejne frekvence, ki je povezana z razmikom parametrov uporabljenih komponent. Pri izračunu vrednosti filtrskih elementov so bili upori izbrani glede na njihovo največjo bližino standardnim vrednostim serije E12.

Na izhodih filtrov sta rezultat dva sinusna signala z bistveno potlačenimi harmoniki. Za združevanje teh signalov je uveden dodaten seštevalnik.

Tako lahko z uporabo samo 3 operacijskih ojačevalnikov in nekaj pasivnih elementov ustvarimo signale DTMF z uporabo mikrokrmilnika brez uporabe večjih računalniških virov.

Z uporabo simulatorskih programov so bile preverjene približne vrednosti. Odziv filtrov se zelo natančno ujema z izračunanim frekvenčnim odzivom.


riž. 6: Amplitudni spekter pravokotnega signala s frekvenco 697 Hz na izhodu filtra 3. reda

Na sl. Slika 6 prikazuje amplitudni spekter pravokotnega signala s frekvenco 697 Hz, prepuščenega skozi filter 3. reda. Kot je razvidno iz slike, sta tretji in peti harmonik (2091 Hz in 3485 Hz) močno oslabljena (-25,6 dB).


riž. 7: Amplitudni spekter pravokotnega signala s frekvenco 941 Hz na izhodu filtra 3. reda

Na sl. Slika 7 prikazuje spekter pravokotnega signala s frekvenco 941 Hz. V frekvenčnem območju, ki nas zanima, do 4600 Hz, je samo en harmonik. Po prehodu skozi filter je ta harmonik 2823 Hz znatno oslabljen (-27,9 dB). Nivojska razlika med najnižjo in najvišjo frekvenco v skupini ne presega 1,9 dB.

Za uporabo nizkocenovnih komponent z velikimi variacijami parametrov je bilo izvedeno dodatno modeliranje. Rezultati simulacije so pokazali, da je dovoljena razlika v vrednostih uporov in kondenzatorjev 10%.


Slika 8: Histogram – porazdelitev ravni signalov v skupini


Slika 9: Histogram – zatiranje harmonikov

Na sl. 8 in 9 prikazujeta histograme, dobljene z analizo Monte Carlo. V tem primeru so se vrednosti komponent naključno spreminjale v 10-odstotnem razmiku. Po 100 ponovitvah se rezultati za vse simulirane filtre narišejo v histogramih. V histogramu na sl. Slika 8 prikazuje razliko v nivojih med frekvencami znotraj skupine. Najvišja dovoljena razlika 3 dB med najnižjo in najvišjo frekvenco ni bila dosežena v nobenem primeru. Povprečna vrednost je 1,6 dB, kar je nekoliko bolje od izračunane vrednosti 2 dB.

Na sl. Slika 9 prikazuje slabljenje harmonikov za "nižjo" frekvenčno skupino. Zahtevana vrednost 20 dB je dosežena v vseh primerih, povprečna vrednost je približno 27 dB. V najslabšem primeru je harmonik zadušen za 24,2 dB.

Vrednosti, izračunane za filter "spodnje" frekvenčne skupine, se izvedejo tudi za filter "zgornje" frekvenčne skupine.

Oba filtra imata enako vezje. Edina razlika je v mejnih frekvencah filtrov za zgornjo in spodnjo frekvenčno skupino. R1 in C1 tvorita visokofrekvenčni filter 1. reda. Ker vhodni upor vezja je odvisen tudi od R1, vrednost tega elementa ne sme biti premajhna; sicer bodo izhodi mikrokrmilnika preobremenjeni in pravokotna valovna oblika bo popačena. V tem primeru bodo signalu dodane dodatne frekvence, ki so posledica intermodulacijskega popačenja, kar bo negativno vplivalo na razmerje signal/šum.

Prenosne funkcije filtrov višjega reda ni mogoče doseči samo z uporabo pasivnih komponent.

Tako mora filter 2. reda vsebovati operacijski ojačevalnik. Ojačanje aktivnega filtra je nastavljeno na 0,2 z uporabo uporov R1-1 in R1-2. Kot lahko vidite, je signal nekoliko oslabljen. To je potrebno, da se izognete preobremenitvi op-amp, ker največja amplituda osnovnega sinusnega harmonika pravokotnega signala presega amplitudo samega pravokotnega signala (glejte Fourierjevo vrsto in sliko 2). Dodatni seštevalnik prilagodi zahtevano izhodno raven. Zaradi konstantne komponente pravokotnega signala je delovna točka operacijskega ojačevalnika nastavljena na raven Vcc/2 (glejte tudi Fourierjev niz in sliko 2). V tem primeru konstantne komponente ni mogoče odpraviti z vhodnim delilnikom R1-1/R1-2. Za ločitev vezja OS z enosmerno napetostjo se uporablja kondenzator C3.

Na vsakem od izhodov analognega filtra se ustvari signal zgornje oziroma spodnje frekvenčne skupine. V dodatnem seštevalniku se ti signali dodajo. V tem elementu vezja lahko nastavite razmerje med "spodnjo" in "zgornjo" frekvenco v skupnem signalu in nivojem izhodnega signala z uporabo uporov R4 in R5. Tako je mogoče izhodno amplitudo enostavno prilagoditi različnim zahtevam v različnih državah.

Pri izračunu vrednosti komponent so bile vrednosti kondenzatorja, kot običajno, fiksne in vrednosti uporov so bile izračunane v skladu z njimi. V tem vezju so bili uporabljeni kondenzatorji in upori standardne serije E12 z razmikom 10%.

Na sl. Slika 10 prikazuje shematski diagram analognih filtrov in seštevalnika:


riž. 10: Shematski diagram analogni filtri z dodatnim seštevalnikom

Kondenzatorja C1-1 in C1-2 združita oba signala skupaj na delovni točki Vcc/2. Za te elemente ne smete izbrati prevelikih vrednosti, ker so nizkopasovni filtrirni elementi za odpravo nizkofrekvenčnih subharmonikov. Filtrirni kondenzator C5 odpravlja šum referenčne napetosti. Dodatni kondenzator C6, priključen vzporedno na povratni upor R6, tvori visokoprepustni filter prvega reda. Če je izbrana najnižja mejna frekvenca filtra, dodatno filtriranje visokofrekvenčnih intermodulacijskih motenj izboljša kakovost izhodnega signala, vendar bo prišlo do določenega slabljenja najvišjih frekvenc "zgornje" skupine. V nekaterih primerih generiranje najvišje frekvence DTMF 1633 Hz ni potrebno, ker uporablja se samo za oblikovanje servisnih simbolov A-D, razmerje med signalom in šumom pa je mogoče izboljšati z znižanjem mejne frekvence filtra. Tako povečanje mejne frekvence vodi do povečanja stopnje visokofrekvenčnih motenj, hkrati pa se zmanjša negativni vpliv na najfrekvenčne komponente signala DTMF.

4 Rezultati študij signalov oddajnikov DTMF

Spodnja spektrograma (sl. 11 in 12) prikazujeta izhodne signale oddajnika DTMF pri različnih frekvencah. Na sl. Slika 11 prikazuje amplitudni spekter simbola "1". Frekvence, potrebne za njegov prenos - 697 in 1207 Hz - so na ravni -10,5 dB oziroma -8,5 dB. Harmoniki pri 2091 in 3621 Hz so zadušeni za skoraj 30 dB. Za prenos simbola "D" se ustvarita dve najvišji frekvenci - 941 in 1633 Hz. Kot je razvidno iz sl. 12, je nizkofrekvenčna raven -12 dB, visokofrekvenčna raven je -11 dB. Ustrezni harmoniki so oslabljeni za več kot 30 dB. Tako izmerjene vrednosti ustrezajo rezultatom simulacije in specifikacijskim zahtevam.


riž. 11: Amplitudni spekter simbola "1": 697 in 1207 Hz


riž. 12: Amplitudni spekter simbola "D": 941 in 1633 Hz

Absolutne frekvenčne natančnosti generiranih pravokotnih signalov ni mogoče doseči z uporabo dveh različnih časovnikov; rezultat bo odvisen od kombinacije obeh frekvenc in vrste uporabljenih časovnikov. Razlog za to je konflikt prekinitve časovnika. Vendar je zahtevana natančnost ±1,8 % izpolnjena z veliko rezervo.

Če se uporabljata 8-bitni časovnik in časovnik Timer Port pri sistemski frekvenci MCLK 1,048 MHz, se frekvence "spodnje" skupine generirajo z natančnostjo, ki ni slabša od 0,3 %. Za frekvence "zgornje" skupine je bilo v praksi doseženo odstopanje največ 0,5%.

Edina izjema je znak DTMF "D", za katerega se ustvarijo najvišje frekvence. Posledično ima v tej kombinaciji frekvenca "zgornje" skupine 1633 Hz odstopanje -0,97%.

Brez te izjeme je tudi najvišja frekvenca 1633 Hz generirana z natančnostjo, boljšo od 0,5 %. Največja odstopanja za različne frekvence so navedena v tabeli:

Če se za ustvarjanje frekvenc uporablja Timer_A, bo napaka odvisna od uporabljene frekvence MCLK:

MCLK, MHz 1,048 2,096 3,144 3,800
Množitelj 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 Zaključek

Programska oprema za ta primer je zelo preprosta in zavzema približno 300 bajtov ter zahteva majhno količino RAM-a in ROM-a. Zahvaljujoč vgrajenemu modulu časovnika se zahtevane frekvence generirajo z visoko natančnostjo brez zapravljanja obremenitve procesorja. V konfiguraciji, kjer se za generiranje uporabljata 8-bitni časovnik in časovnik/vrata, prekinitvene rutine zasedejo približno 12 % vira CPE. V primeru, ko frekvence generira časovnik Timer_A, se obremenitev procesorja za obdelavo prekinitvenih rutin zmanjša na 6 %. Posledično se lahko med prenosom signalov DTMF izvajajo druge naloge ali pa je CPE prestavljen v način nizke porabe, da se zmanjša trenutna poraba.

Dobro funkcionalnost opisanega modula za generiranje DTMF signalov s pravokotnimi signali dokazuje strojna zasnova vezja. Ker V vezju je mogoče uporabiti komponente s širokim razponom parametrov, cena takšne rešitve je zelo nizka. Vse specifikacijske zahteve so v veliki meri izpolnjene, zato v instrumentih, ki uporabljajo MSP430 kot kontrolni krmilnik, ni potreben ločen modul generatorja signala DTMF.

Če je v določenem primeru potrebno povečati razmerje med signalom in šumom, lahko z uporabo dodatnega operacijskega ojačevalnika izdelamo filter za dodatno zatiranje intermodulacijskega popačenja. Takšen dodatni operacijski ojačevalnik je že prisoten v quad operacijskem ojačevalniku v paketu DIL14.

6 Povezave

Bundesamt fur Post und Telekommunikation (Federal Office for Post and Telecommunications): BAPT 223 ZV 5, Zulassungsvorschrift fur Endeinrichtungen zur Anschaltung an analoge Wahlanschlusse (ausgenommen Notruf- und Durchwahlanschlusse) des Telefonnetzes (official specification for terminal devices connected to analogue telephone lines, for excluding varnostne in klicne zahteve) / ISDN Deutschen Bundespost Telekom; Bundesministerium fur Post und Telekommunikation, Osnutek, Bonn, april 1994 Papula: Mathematik fur Ingenieure 2 (Matematika za inženirje); Vieweg Verlag, Braunschweig 1990 Tietze / Schenk: Halbleiterschaltungstechnik; (Titze/Schenk, Semiconductor Circuit Engineering), 10. izdaja; Springer Verlag, Berlin 1993 Lutz Bierl / Texas Instruments: družina MSP430, poročilo o uporabi merjenja, Texas Instruments, številka 2.1, januar 1997, SLAAE10B Texas Instruments: družina MSP430, uporabniški priročnik za arhitekturo in knjižnica modulov, Texas Instruments, 1996, SLAUE10B Texas Instruments: 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 von DTMF-Signalen mit dem Microcontroller MSP430 (Razvoj telekomunikacijski sistem za sprejem in prenos digitalnih signalov na osnovi mikrokrmilnika MSP430); Diplomarbeit, Fachhochschule Landshut, maj 1997

Na temo preprostih naprav sem se odločil sestaviti generator signala DTMF z uporabo istega ATtiny2313. Za tiste, ki ne vedo, DTMF (Dual-Tone Multi-Frequency) je dvotonski večfrekvenčni analogni signal, ki se uporablja za klicanje telefonske številke. Preberite Wikipedijo.

Odločitev za sestavo takšne naprave je narekovala želja po poskusu implementacije kompleksnih analognih signalov z uporabo mikrokontrolerja. Za to napravo ni bila predvidena nobena praktična uporaba, a morda bi komu taka naprava koristila? Uporabi!

Vir generatorja DTMF


Zdaj pa poglejmo, kaj imamo.

Signal se generira s pomočjo PWM in RC vezje se uporablja za dajanje želene oblike. Kot rezultat, po verigi RC dobimo naslednji signal (pritisnjen je gumb 6):

Po celotni krivulji uporabnega signala opazimo visokofrekvenčni glavnik (frekvenca je višja od slišne, zato ne bo ustvarjala šuma) - to je delo RC vezja. Linijo lahko naredite bolj gladko s povečanjem kapacitivnosti kondenzatorja ali upornosti upora, vendar se bo v tem primeru obseg uporabnega signala znatno zmanjšal.

Pogledamo spekter signala in se prepričamo, da obstajata dve ločeni frekvenci (frekvenca PWM je šla izven območja prikaza), kar pomeni, da je vse v redu - naprava deluje kot mora.

Pripravljene rešitve

Obstajajo že pripravljene rešitve za naloge generiranja in dekodiranja signala DTMF. Tukaj je nekaj podatkovnih listov za ta mikrovezja.

DTMF generator
- DTMF dekoder


P.S.Škoda, da ATtiny2313 nima ADC - lahko bi uporabil tudi dekoder DTMF! Ampak nič hudega, bom ponovil na megi, zagotovo priložim.

(Obiskano 6.868 krat, 1 obisk danes)

Tonsko izbiranje (Dual-tone multi-frequency signaling, DTMF) so razvili v Bell Labs v 50. letih prejšnjega stoletja za takrat revolucionarni telefon na tipko. Za predstavitev in prenos digitalnih podatkov v tonskem načinu se uporablja par frekvenc (tonov) frekvenčnega območja govora. Sistem definira dve skupini štirih frekvenc, informacije pa se kodirajo s sočasnim oddajanjem dveh frekvenc, po eno iz vsake skupine. To daje skupno šestnajst kombinacij, ki predstavljajo šestnajst različnih številk, simbolov in črk. Kodiranje DTMF se zdaj uporablja v številnih komunikacijskih in nadzornih aplikacijah, kot na primer dokazuje priporočilo Mednarodne zveze za telekomunikacije (ITU) Q.23.

Ta članek opisuje vezje generatorja tonov DTMF, ki reproducira vseh osem frekvenc in ustvari nastali dvotonski izhodni signal. Zadevni sistem je bil zgrajen na čipu Silego GreenPAK™ SLG46620V in operacijski ojačevalniki Silego SLG88104V. Nastali proizvedeni signal je vsota dveh frekvenc, določenih z vrstico in stolpcem telefonske tipkovnice.

Predlagano vezje uporablja štiri vhode za izbiro kombinacije frekvenc, ki naj se ustvari. Vezje ima tudi vhod za omogočanje, ki sproži generiranje in določi dolžino časa prenosa signala. Izhodna frekvenca generatorja je v skladu s standardom ITU za DTMF.

toni DTMF

Standard DTMF določa kodiranje številk 0-9, črk A, B, C in D ter znakov * in # kot kombinacijo dveh frekvenc. Te frekvence so razdeljene v dve skupini: visokofrekvenčno skupino in nizkofrekvenčno skupino. Tabela 1 prikazuje frekvence, skupine in ustrezne predstavitve simbolov.

Tabela 1. DTMF tonsko kodiranje

Skupina visokih tonov

Nizka skupina

Frekvence so bile izbrane, da bi se izognili več harmonikom. Poleg tega njihova vsota ali razlika ne povzroči različne frekvence DTMF. Na ta način se izognemo harmoničnemu ali modulacijskemu popačenju.

Standard Q.23 določa, da mora biti napaka vsake oddane frekvence znotraj ±1,8 % nazivne vrednosti, skupno popačenje (zaradi harmonikov ali modulacije) pa mora biti 20 dB pod osnovnimi frekvencami.

Nastali signal, opisan zgoraj, je mogoče opisati kot:

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

kjer sta fhigh in flow ustrezni frekvenci iz skupin visokih in nizkih frekvenc.

Slika 1 prikazuje nastali signal za števko "1". Slika 2 prikazuje frekvenčni spekter, ki ustreza temu signalu.

riž. 1. DTMF ton

riž. 2. Tonski spekter DTMF

Trajanje tonov DTMF se lahko razlikuje glede na določeno aplikacijo, ki uporablja kodiranje tonov. Za najpogostejše aplikacije so vrednosti trajanja običajno med ročnim in samodejnim izbiranjem. Tabela 2 prikazuje povzetek tipičnega časa za obe vrsti zaposlovanja.

Tabela 2. Trajanje signalov tonskega izbiranja

Vrsta številčnice

Skupina visokih tonov

Skupina visokih tonov

Ročno izbiranje

Samodejno klicanje

Za večjo prilagodljivost je generator DTMF, ki je na voljo v tem priročniku, opremljen z vhodom za omogočanje, ki se uporablja za začetek generiranja signala in določanje njegovega trajanja. V tem primeru je trajanje signala enako trajanju impulza na omogočitvenem vhodu.

Analogni del vezja generatorja DTMF

Priporočilo ITU Q.23 opredeljuje signale DTMF kot analogne signale, ki jih ustvarjata dva sinusna vala. V predlaganem generatorskem vezju DTMF IC Silego GreenPAK SLG46620V generira pravokotne signale z želenimi frekvencami DTMF. Za pridobitev sinusnih signalov zahtevane frekvence in oblikovanje nastalega signala (vsota dveh sinusnih valov) so potrebni analogni filtri in seštevalnik. Zato smo se v tem projektu odločili za uporabo filtrov in kombinatorja na osnovi operacijskih ojačevalnikov SLG88104V.

Slika 3 prikazuje strukturo predlaganega analognega dela naprave.

riž. 3. Analogno procesno vezje za sprejem signala DTMF

Analogni filtri se uporabljajo za pridobivanje sinusnih signalov iz pravokotnih impulzov. Po opravljenem filtriranju se oba signala seštejeta in generira se želeni izhodni dvotonski signal DTMF.

Slika 4 prikazuje rezultat Fourierove transformacije, uporabljene za pridobitev spektra pravokotnega signala.

riž. 4. Spekter pravokotnega signala

Kot lahko vidite, kvadratni val vsebuje samo lihe harmonike. Če takšen signal z amplitudo A predstavimo v obliki Fourierove vrste, bo imel naslednjo obliko:

Analiza tega izraza nam omogoča, da sklepamo, da če imajo analogni filtri zadostno dušenje za harmonike, potem je povsem mogoče pridobiti sinusne signale s frekvenco, ki je enaka frekvenci prvotnega pravokotnega signala.

Ob upoštevanju tolerance ravni motenj, opredeljene v standardu Q.23, je treba zagotoviti, da so vsi harmoniki oslabljeni za 20 dB ali več. Poleg tega je treba katero koli frekvenco iz nizkoprepustne skupine kombinirati s katero koli frekvenco iz visokoprepustne skupine. Ob upoštevanju teh zahtev sta bila razvita dva filtra, po en za vsako skupino.

Oba filtra sta bila nizkopasovna Butterworthova filtra. Slabljenje Butterworthovega filtra reda n se lahko izračuna kot:

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

kjer je fc mejna frekvenca filtra, n je vrstni red filtra.

Razlika v dušenju med najnižjo in najvišjo frekvenco vsake skupine ne sme biti večja od 3 dB, torej:

A(fVIŠJE)[dB] - A(fNIŽJE)[dB] > 3 dB.

Podane absolutne vrednosti:

A(fVIŠJE) 2 / A(fNIŽJE) 2 > 2.

Poleg tega, kot smo že povedali, mora biti harmonično dušenje 20 dB ali več. V tem primeru bo najslabši primer najnižja frekvenca v skupini, ker je njen 3. harmonik najnižja frekvenca in je najbližje mejni frekvenci filtra. Glede na to, da je 3. harmonik 3-krat manjši od osnovnega, mora filter izpolnjevati pogoj (absolutne vrednosti):

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

Če se te enačbe uporabijo za obe skupini, morajo biti uporabljeni filtri drugega reda. To pomeni, da bodo imeli vsak po dva upora in dva kondenzatorja, če bodo izvedeni z operacijskimi ojačevalci. Če bi uporabili filtre tretjega reda, bi bila občutljivost na tolerance komponent manjša. Izbrane mejne frekvence filtra so 977 Hz za nizkoprepustno skupino in 1695 Hz za visokoprepustno skupino. Pri teh vrednostih so razlike v nivojih signala v frekvenčnih skupinah skladne z zgornjimi zahtevami, občutljivost na spremembe mejne frekvence zaradi toleranc komponent pa je minimalna.

Shematski diagrami filtrov, izvedenih z uporabo SLG88104V, so predstavljeni na sliki 5. Ocene prvega R-C pari izbran tako, da omeji izhodni tok čipa SLG46620V. Druga povezava filtra določa dobiček, ki je 0,2. Amplituda pravokotnih signalov nastavi delovno točko operacijskega ojačevalnika na 2,5 V. Neželene napetosti blokirajo kondenzatorji izhodnega filtra.

riž. 5. Shematski diagrami izhodnih filtrov

Na izhodu se signali filtra seštejejo, nastali signal pa je vsota harmonikov, izbranih iz skupine nizkih in visokih frekvenc. Za kompenzacijo slabljenja filtra je mogoče amplitudo izhodnega signala prilagoditi z uporabo dveh uporov R9 in R10. Slika 6 prikazuje vezje seštevalnika. Slika 7 prikazuje celoten analogni del vezja.

riž. 6. Shematski diagram seštevalnika

riž. 7. Analogni del vezja

Digitalni del vezja generatorja tonov DTMF

Digitalni del vezja generatorja tonov DTMF vključuje cel niz generatorjev kvadratnih valov - enega za vsako frekvenco DTMF. Ker je za izdelavo teh generatorjev potrebnih osem števcev, je bil za njihovo izvedbo izbran čip GreenPAK SLG46620V. Na izhodih digitalnega vezja se generirata dva pravokotna signala, po en za vsako frekvenčno skupino.

Signali kvadratnega valovanja se generirajo z uporabo števcev in D flip-flopov in imajo delovni cikel 50 %. Zaradi tega je preklopna frekvenca števca dvakrat večja od zahtevane frekvence DTMF, flip-flop DFF pa razdeli izhodni signal na dva dela.

Vir takta za števce je vgrajen 2 MHz RC oscilator, katerega frekvenca je nadalje deljena s 4 ali 12. Delilnik je izbran ob upoštevanju bitne zmogljivosti in največje vrednosti posameznega števca, potrebne za pridobitev specifičnega pogostost.

Za generiranje visokih frekvenc je potrebnih manj vzorcev, zato se za njihovo generiranje uporabljajo 8-bitni števci, ki jih meri notranji oscilator RC, katerega signal je deljen s 4. Iz istega razloga se nižje frekvence izvajajo s 14-bitnimi števci.

SLG46620V ima samo tri standardne 14-bitne števce, zato je bila ena od nižjih frekvenc implementirana z 8-bitnim števcem CNT8. Da bi bilo število vzorcev v območju od 0 do 255, je bilo za taktiranje tega CNT8 potrebno uporabiti signal RC oscilatorja, deljen z 12. Za to vezje je frekvenca z največjim številom vzorcev, ki je izbrana najnižja frekvenca. To nam je omogočilo zmanjšanje napake.

Tabela 3 prikazuje parametre vsakega kvadratnega vala.

Tabela 3. Parametri generatorjev kvadratnih impulzov

Ura

Frekvenčna napaka [%]

Nizka skupina

Skupina visokih tonov

Kot je razvidno iz tabele, imajo vse frekvence napako manjšo od 1,8 %, torej ustrezajo standardu DTMF. Te izračunane karakteristike, ki temeljijo na idealni frekvenci RC oscilatorja, je mogoče prilagoditi z merjenjem izhodne frekvence RC oscilatorja.

Čeprav v predlaganem vezju vsi generatorji delujejo vzporedno, bo signal samo enega generatorja iz vsake skupine poslan na izhod mikrovezja. Izbiro določenih signalov določi uporabnik. To se izvede z uporabo štirih vhodov GPIO (dva bita za vsako skupino) s tabelo resnic, prikazano v tabeli 4.

Tabela 4. Tabela za izbiro frekvenc iz skupine nizkih frekvenc

Nizka skupina

Tabela 5. Tabela za izbiro frekvence iz visokofrekvenčne skupine

Skupina visokih tonov

Slika 8 prikazuje logično vezje generatorja pravokotnih valov 852 Hz. Ta vzorec se ponovi za vsako frekvenco z ustreznimi nastavitvami števca in konfiguracijo LUT.

riž. 8. Generator pravokotnih impulzov

Števec ustvari izhodno frekvenco, določeno z njegovimi nastavitvami. Ta frekvenca je enaka dvakratni frekvenci ustreznega tona DTMF. Konfiguracijski parametri merilnika so prikazani na sliki 9.

riž. 9. Primer nastavitve pravokotnega števca generatorja impulzov

Izhodni signal števca je priključen na vnos ure D-Flip Flop sprožilec. Ker je izhod DFF konfiguriran kot invertiran, se D-flip-flop pretvori v T-flip-flop, če povežete DFF-izhod z njegovim vhodom. Konfiguracijske parametre DFF lahko vidite na sliki 10.

riž. 10. Primer nastavitve sprožilca generatorja pravokotnih impulzov

Signal iz izhoda DFF se napaja na vhod tabele resnic LUT. LUT se uporabljajo za izbiro enega signala za vsako specifično kombinacijo R1-R0. Primer konfiguracije LUT je prikazan na sliki 11. B v tem primeru, če R1 prejme "1" in R0 prejme "0," se vhodni signal prenese na izhod. V drugih primerih izhod vsebuje "0".

riž. 11. Primer postavitve resničnostne tabele generatorja kvadratnih impulzov

Kot je omenjeno zgoraj, ima predlagano vezje vhod za omogočanje Omogoči. Če je na vhodu dovoljenja za omogočanje logična enota "1", se generirani pravokotni signali dovajajo na par izhodov mikrovezja. Trajanje prenosa je enako trajanju impulza na omogočitvenem vhodu. Za izvedbo te funkcije je bilo potrebnih več LUT.

Visokopasovna skupina uporablja en 4-bitni LUT in en 2-bitni LUT, kot je prikazano na sliki 12.

riž. 12. Izhodno vezje skupine visokih tonov

4-bitni LUT1 konfiguriran kot logični element ALI, tako da odda logično ena "1", če je "1" prisoten na katerem koli od njegovih vhodov. Resnične tabele C1/C0 omogočajo izbiro samo enega od oscilatorjev, tako da 4-bitni LUT1 določa, kateri signal je izhod. Izhod tega LUT je povezan z 2-bitnim LUT4, ki oddaja signal le, če je vhod za omogočanje logična "1". Sliki 13 in 14 prikazujeta konfiguraciji 4-bitnega LUT1 in 2-bitnega LUT4.

riž. 13. 4-bitna konfiguracija LUT1

riž. 14. 2-bitna konfiguracija LUT4

Ker ni bilo več LUT 4-bitnih tabel resnic, sta bila za nizkoprepustno skupino uporabljena dva 3-bitna LUT.

riž. 15. Nizkoprepustno skupinsko izhodno vezje

Celotno notranje vezje GreenPAK SLG46620V je prikazano na sliki 16. Slika 17 prikazuje končni diagram vezja generatorja DTMF.

riž. 16. Blokovna shema generatorja tonov DTMF

riž. 17. Shematski diagram generatorja tonov DTMF

Testiranje vezja generatorja DTMF

Na prvi stopnji testiranja predlaganega generatorja DTMF je bilo odločeno, da se frekvence vseh generiranih pravokotnih signalov preverijo z osciloskopom. Sliki 18 in 19 kot primer prikazujeta izhodne kvadratne valove za 852 Hz in 1477 Hz.

riž. 18. Kvadratni val 852 Hz

riž. 19. Kvadratni val 1477 Hz

Ko so bile preverjene frekvence vseh pravokotnih signalov, se je začelo testiranje analognega dela vezja. Pregledani so bili izhodni signali za vse kombinacije nizkih in visokih frekvenc. Kot primer slika 20 prikazuje vsoto signalov 770 Hz in 1209 Hz, slika 21 pa vsoto signalov 941 Hz in 1633 Hz.

riž. 20. DTMF ton 770 Hz in 1209 Hz

riž. 21. DTMF ton 941 Hz in 1633 Hz

Zaključek

V tem članku je bilo predlagano vezje za generator tonov DTMF, ki temelji na čipu Silego GreenPAK SLG46620V in operacijskih ojačevalnikih Silego SLG88104V. Generator omogoča uporabniku, da prek štirih vhodov izbere kombinacije želenih frekvenc in krmili vhod za omogočanje, ki določa trajanje izhodnih signalov.

Značilnosti čipa SLG46620V:

  • Vrsta: programabilni mešani signal IC;
  • Analogni bloki: 8-bitni ADC, dva DAC, šest primerjalnikov, dva filtra, ION, štirje integrirani oscilatorji;
  • Digitalni bloki: do 18 V/I vrat, povezovalna matrika in kombinatorična logika, programabilna zakasnitvena vezja, programabilni funkcijski generator, šest 8-bitnih števcev, trije 14-bitni števci, trije PWM oscilatorji/komparatorji;
  • Komunikacijski vmesnik: SPI;
  • Območje napajalne napetosti: 1,8…5 V;
  • Območje delovne temperature: -40…85 °C;
  • Različica paketa: 2 x 3 x 0,55 mm 20-polni STQFN.

Značilne lastnosti:

  • Ustvarjanje sinusnih valov z modulacijo širine impulza (PWM)
  • Združevanje različnih sinusnih signalov v en DTMF signal
  • Izvorne kode v jezikih asembler in C
  • Zasnovan za delo s STK500
  • Velikost programske kode 260 bajtov / konstantna velikost tabele 128 bajtov
  • Uporaba metode pretvorbe tabele

Uvod

Ta dokument opisuje tehniko za ustvarjanje signalov DTMF (dvotonski večfrekvenčni signali) z uporabo katerega koli mikrokrmilnika AVR, ki vsebuje enoto za modulacijo širine impulza (PWM) in statični RAM. Ti signali se pogosto uporabljajo v telefoniji, kjer se reproducirajo, ko pritisnete klicne tipke na telefonskem aparatu. Če želite pravilno ustvariti signal DTMF, morate prekrivati ​​dve frekvenci skupaj: nizka frekvenca(fb) in visoke frekvence (fa). Tabela 1 prikazuje, kako se različne frekvence mešajo za ustvarjanje tonov DTMF, ko pritisnete različne tipke.

Slika 1 – Vezje generatorja signala DTMF

Tabela 1 – Matrika generiranja tonskega signala

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

Vrstice tabele 1 prikazujejo vrednosti nizke frekvence, stolpci pa vrednosti visoke frekvence. Na primer, matrika kaže, da ko pritisnete gumb "5", se frekvenci fb = 770 Hz in fa = 1336 Hz mešata. Kot rezultat seštevanja dveh sinusnih signalov različnih frekvenc nastane signal DTMF

kjer je razmerje amplitud K=A b /A a izvorni signali morajo izpolnjevati pogoj

Princip delovanja

Poleg tega splošne informacije Glede uporabe modulacije širine impulza bo spodaj prikazano, kako modulacija širine impulza omogoča ustvarjanje sinusnih signalov. Naslednji odstavek opisuje, kako uporabiti osnovno preklopno frekvenco za pridobitev različnih frekvenc. Po premisleku teoretične osnove Podan bo opis samega generatorja signala DTMF. Generiranje sinusnih valov

Odvisno od razmerja trajanja visokih napetostnih nivojev VH in nizkih VL se spreminja povprečna vrednost na izhodu PWM. Če je razmerje med trajanjem obeh nivojev konstantno, bo posledično ustvarjen konstanten nivo napetosti VAV. Slika 2 prikazuje impulzno širinsko moduliran signal.


Slika 2 – Generiranje ravni enosmerne napetosti

Raven napetosti je določena z izrazom:

(3)

Sinusoidni signal je mogoče ustvariti pod pogojem, da se povprečna vrednost napetosti, ki jo ustvari modulacija širine impulza, spremeni vsak cikel PWM. Razmerje med visokimi in nizkimi nivoji mora biti nastavljeno v skladu z nivojem napetosti sinusnega vala v ustreznem času. Slika 3 prikazuje ta proces. Izvorni podatki za PWM se izračunajo za vsako od njegovih obdobij in zabeležijo v pretvorbeni tabeli (TC).

Slika 3 ponazarja tudi razmerje med frekvenco osnovnega sinusnega vala in številom vzorcev. Večje kot je število vzorcev (Nc), večja je natančnost modeliranja dobljenega signala:

(4)

Frekvenca PWM je odvisna od ločljivosti PWM. Pri 8-bitni ločljivosti je končna vrednost (zgornji del števila) časovnika 0xFF (255). Ker Časovnik nato šteje naprej in nazaj dano vrednost je treba podvojiti. Zato lahko preklopno frekvenco izračunamo z deljenjem urna frekvenca timer f CK pri 510. Tako bo pri taktni frekvenci časovnika 8 MHz končna frekvenca PWM 15,6 kHz.


Slika 3 – Ustvarjanje sinusnega signala z uporabo PWM

Spreminjanje frekvence sinusnega vala

Predpostavimo, da se sinusni vzorci berejo iz iskalne tabele ne zaporedno, ampak enega za drugim. V tem primeru bo pri enaki frekvenci vzorčenja ustvarjen signal z dvojno frekvenco (glej sliko 4).


Slika 4 – Podvojitev nastale frekvence (XSW = 2)

Po analogiji, če ne berete vsake druge vrednosti, ampak vsako tretjo, četrto, peto (oziroma širina koraka je 3, 4, 5 ...) itd. mogoče je ustvariti Nc frekvence v območju . Upoštevajte, da pri visokih frekvencah nastala valovna oblika ne bo sinusna. Širino koraka po pretvorbeni tabeli označimo kot XSW, Kje

(5)

Izračun trenutnega položaja v TP za naslednjo periodo PWM (ko se časovnik prekorači) izvedemo z izrazom (6). Nova vrednost na položaju X LUT odvisno od njegovega prejšnjega stanja v položaju X" LUT z naraščajočo širino koraka XSW

(6)

Dodajanje različnih frekvenc za pridobitev signala DTMF

Signal DTMF lahko ustvarite z uporabo izrazov (1) in (2). Zaradi enostavnosti aritmetičnih operacij je vrednost koeficienta K enaka 0,75, da se aritmetična operacija nadomesti z logičnimi premiki. Ob upoštevanju izraza (6) lahko trenutno vrednost za krmiljenje PWM izračunamo z izrazom:

in ob upoštevanju tega X LUTa=X" LUta + XSWa ,X LUTb=X" LUTb + XSWb, končno zapišimo

Izvedba generatorja DTMF

IN to aplikacijo razpravlja o konstrukciji generatorja tonov DTMF z uporabo 8-bitnega izhoda PWM (OC1A) in tabele s 128 vzorci sinusne funkcije (Nc), od katerih je vsak določen s 7 biti (n). Naslednji izrazi prikazujejo to odvisnost in prikazujejo tudi, kako izračunati vnose v iskalni tabeli:

(9)

Prednost uporabe 7 bitov je, da je vsota vrednosti signala visoke in nizke frekvence velika en bajt. Za podporo celotnega niza tonov DTMF je treba izračunati 8 vrednosti za vsako frekvenco DTMF iz tabele 1 in jih vnesti v iskalno tabelo.

Za večjo natančnost je bila implementirana naslednja rešitev: vrednosti, izračunane z izrazom 5, zahtevajo samo 5 bajtov. Za uporabo vseh 8 bajtov, kar bo zmanjšalo napake pri zaokroževanju, se ta vrednost pomnoži z 8. Kazalec na iskalno tabelo je zapisan na enak način. Toda v tem primeru sta potrebna dva bajta za shranjevanje 8-kratne vrednosti. To pomeni, da je treba izvesti 3 desne premike in operacijo radiksa Nc modula (logično množenje z Nc-1), preden te bajte uporabimo kot kazalec na vrednosti sinusnega vala v


Slika 5 – Diagram modula za povezavo s STK500

Signal PWM se ustvari na nožici OC1A (PD5). Dodaten izhodni filter bo pomagal narediti signal bolj združljiv s sinusno valovno obliko. Pri zniževanju frekvence PWM bo morda treba uporabiti filter s strmejšim frekvenčnim odzivom, da dobite dober rezultat.

Povezava tipkovnice je prikazana na sliki 1. Delovanje tipkovnice mora biti organizirano tako, da je možno določiti pritisnjeno tipko. To je mogoče storiti z naslednjim algoritmom:

  1. Določanje niza pritisnjene tipke
    • konfigurirajte prenosni računalnik nižjega reda vrat B kot izhod in nastavite dnevnik. "0"
    • konfigurirajte visoko tetrado vrat B kot vhod s povezavo vlečnih uporov
    • vrstica s pritisnjenim gumbom je definirana kot cifra najvišje tetrade z logom. "0"
  2. Definiranje stolpca pritisnjene tipke
    • konfigurirajte visoki prenosni računalnik vrat B kot izhod in nastavite dnevnik. "0"
    • konfigurirajte tetrad nizkega reda vrat B kot vhod s povezovanjem povlečnih uporov
    • stolpec s pritisnjenim gumbom je definiran kot števka nizke tetrade z logom. "0"

Opomba: V STK200 so upori zaporedno povezani med zatiči konektorja PORTB in zatiči mikrokrmilnika BP5, PB6 in PB7 (glejte diagram STK200). To bo povzročilo težave, če je tipkovnica priključena na priključek PORTB.

Slika 6 prikazuje delovanje podprograma za ugotavljanje pritisnjene tipke. Odvisno od pritisnjene tipke se določi trajanje intervala. Prekinitvena rutina uporablja to vrednost za izračun nastavitev PWM za dva tonska sinusna vala DTM. Postopek obravnavanja prekinitve je prikazan na slikah 7 in 8.

Ta rutina izračuna vrednost za primerjavo z izhodom časovnika za naslednje obdobje PWM. Prekinitvena rutina najprej izračuna položaj naslednje vzorčne vrednosti v iskalni tabeli in prebere tam shranjeno vrednost.

Položaj vzorca v iskalni tabeli je določen s širino impulza, dejansko širino impulza pa generirana frekvenca.

Končna vrednost, ki se zapiše v primerjalni register časovnika, se določi s formulo (7), ki upošteva vzorčne vrednosti obeh frekvenc DTMF.


Slika 6 – Blok diagram glavnega programa

Z uvedbo modern digitalna PBX V telefonskih omrežjih Ruske federacije se postopoma širi večfrekvenčni način prenosa klicnih signalov, označen z angleško kratico DTMF (Dual-Tone Multiple-Frequency). Včasih se za poimenovanje tega sistema prenosa klicnega signala uporablja drug angleški izraz - Touch-None (tonsko izbiranje). Ta način je bil razvit leta 1960, pravi razmah pa se je začel v 80. letih prejšnjega stoletja s širjenjem digitalnih (elektronskih) telefonskih central.

Pri tej metodi oddajanja kontrolnih signalov je vsak večfrekvenčni cifrovni signal sestavljen iz dveh tonov v skladu s priporočilom ITU-T Q.23 "Tehnične značilnosti telefonov z klicnim gumbom na dotik".

DTMF frekvence niso izbrane harmonično. To pomeni, da frekvence nimajo drugega celega delitelja kot 1. Na primer, frekvenci 1200 in 1600 Hz sta harmonika frekvence 400 Hz (3x400=1200 in 4x400=1600), frekvenci 697 in 770 Hz pa sta neharmonični.

Vsak signal vsebuje dve frekvenci: eno izbrano iz spodnje in drugo iz zgornje skupine frekvenc.

Ujemanje med oddanimi informacijami in frekvencami je podano v tabeli na sprednji plošči laboratorijske instalacije.

Raven prenosa v dvofrekvenčnem paketu, merjena pri obremenitvi 600 Ohmov, je: za nižjo frekvenčno skupino - minus 6 dBmO ± 2 dB, za zgornjo frekvenčno skupino - minus 3 dBmO ± 2 dB. Frekvenčni nivo zgornje skupine frekvenc v skupnem signalu je za 2 ±1 dB višji od frekvenčnega nivoja spodnje skupine. Skupna raven vseh frekvenčnih komponent višjega reda je vsaj 20 dB pod frekvenčno ravnjo nižjega reda.

Pogoji, pod katerimi naj bi prišlo do normalnega sprejema signala, so naslednji: prisotnost dveh frekvenc v signalu, od katerih je ena izbrana iz spodnje skupine, druga pa iz zgornje; frekvence se ne razlikujejo od nominalnih vrednosti za več kot 1,8%; raven vsake od obeh frekvenc se giblje od minus 7 do minus 30 dBmO; razlika med nivojema obeh frekvenc ne presega 3 dB; trajanje frekvenčnega signala je najmanj 40 ms.

Pred vklopom namestitve izvedite naslednje operacije:

Postavite stikalo S6 v spodnji položaj;

Postavite stikalo S13 v zgornji položaj;

Nastavite stikala generatorjev zgornje in spodnje frekvenčne skupine v položaj "Izklopljeno";

Nastavite analogno stikalo na ključ (AK) v položaj "Vklop";

Obrnite gumbe za nastavitev izhodne napetosti generatorjev in upor R3 v nasprotni smeri urnega kazalca, dokler se ne ustavijo.

kondicioniranje signala dtmf

1.1 Omogoči namestitev.

1.2 Priključite osciloskop na merilno točko KT3.

1.3 Vklopite generator zgornje frekvenčne skupine, s pritiskom na eno od stikalnih tipk izberite katero koli od frekvenc te skupine.

1.4 Zavrtite gumb za nastavitev izhodne napetosti generatorja, da nastavite amplitudo signala v CT3 na 0,5 volta.

1.5 Preklopite vhod osciloskopa na testno točko KT4. Ponovite korake 1.3, 1.4 za generator nižje frekvenčne skupine in nastavite napetost v KT4 na 0,5 V.

OPOMBA: Kot rezultat izvedenih operacij se na vhod seštevalnika dovajajo signali enake amplitude iz zgornje in spodnje frekvenčne skupine. Po nastavitvi teh ravni zaklenite gumbe za nastavitev izhodne napetosti generatorjev.

1.6 Preklopite vhod osciloskopa na testno točko KT7. Z vrtenjem gumba upora (R3) za prilagajanje izhodne napetosti kondicionerja signala DTMF nastavite napetost v CT7 na 0,5 volta.

OPOMBA: Kot rezultat izvedenih operacij se na vhod sprejemnika dovaja neprekinjen dvotonski signal, na indikatorju prejetega simbola pa mora biti prikazan simbol, ki ustreza kombinaciji frekvenc generatorjev zgornje in spodnje frekvenčne skupine. , v skladu s tabelo. Indikacija prejetega in identificiranega signala je prisotnost signala na izhodu STD sprejemnika (sveti LED).

      S preklopom frekvenc zgornje in spodnje frekvenčne skupine se prepričajte, da kombinacije teh frekvenc ustrezajo prejetim simbolom.