Proučavanje prijamnika i odašiljača dtmf signala. Dvotonski višefrekvencijski (DTMF) generator na AVR-u Sada da vidimo što imamo

Prvi dio ove aplikacije opisuje kako generirati DTMF signale pomoću mikrokontrolera MSP430. Dano je objašnjenje najvažnijih specifikacija korištenih u ovom slučaju, te dano teorijsko i matematičko opravdanje za generiranje sinusnih valova pomoću kvadratnih valova uz korištenje odgovarajućih analognih filtara. Primjer također uključuje testirane demo programe za generiranje pravokutnih signala na temelju različitih konfiguracija mjerača vremena mikrokontrolera MSP430. Završni dio daje dijagram strujnog kruga za generiranje DTMF signala iz pravokutnih signala.

2 Specifikacija DTMF signala

Kratica DTMF označava "Dual Tone Multi Frequency" i predstavlja metodu predstavljanja znamenki na različitim frekvencijama u svrhu njihovog prijenosa preko analognih komunikacijskih linija, npr. telefonska linija. Pri razvoju standarda uzet je u obzir uvjet - sve frekvencije moraju biti u "glasovnom" rasponu, što je omogućilo smanjenje zahtjeva za prijenosni kanal. Telefonske mreže koriste DTMF signale za biranje i druge informacije. Unatoč činjenici da se još uvijek široko koristi metoda pulsnog biranja, što je standard, na primjer, u Njemačkoj, vrijeme biranja se značajno povećava, što dovodi do neproduktivnog opterećenja komunikacijskih linija. Osim toga, mnogi Dodatne usluge Komunikacija je moguća samo tonskim biranjem. Kod kodiranja pomoću DTMF metode, brojevi 0-9 i slova A-D, */E i #/F predstavljaju kombinacije dviju frekvencija:

Frekvencija 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

U ovom sustavu stupac predstavlja frekvenciju iz “gornje” frekvencijske skupine (Hi-Group: 1209-1633 Hz), a red predstavlja frekvenciju iz “niže” frekvencijske skupine (Lo-Group: 697-941 Hz) . Tonske frekvencije su odabrane kako bi se eliminirao utjecaj harmonika. Frekvencije nisu višekratnici jedna druge i nijedna se DTMF frekvencija ne može dobiti dodavanjem ili oduzimanjem drugih frekvencija. Za generiranje brojača na mreži Deutsche Telekoma potrebne su sljedeće specifikacije (preuzete iz Zulassungsvorschrift des Bundesamtes fur Post und Telekommunikation, BAPT 223 ZV 5 (Službena specifikacija Saveznog ministarstva pošte i telekomunikacija):

3 Generirajte DTMF signale

Kao što je gore opisano, DTMF signali su analogni i sastoje se od dva neovisna sinusna vala. Stoga nije moguće generirati samo takve signale digitalno. Digitalni signali moraju se pretvoriti pomoću ADC-a i/ili analognih filtara u potreban oblik sinusnog vala.

3.1 Generiranje pomoću kvadratnih valova

Ako se pravokutni signali koriste za generiranje DTMF signala, softver i hardver minimalan. Svaki kontinuirani signal s periodom T može se predstaviti Fourierovim nizom koji se sastoji od beskonačnog zbroja sinusnih i kosinusnih valova kako slijedi:

Gdje je a0/2 konstantna komponenta signala. Element zbroja s najnižom kutnom frekvencijom (w0) naziva se glavni (temeljni) harmonik, ostali su prizvuci ili viši harmonici.

Najjednostavniji kontinuirani signal implementiran pomoću mikrokontrolera je kvadratni val, Fourierov niz za koji ima oblik:

Doprinos svake frekvencijske komponente ukupnom signalu najbolje je prikazan amplitudnim spektrom (vidi sliku 2):


Riža. 2: Spektar amplitude kvadratnog valnog signala

Pri korištenju analognog filtra učinkovito se potiskuju istosmjerna komponenta i viši harmonici, dok na izlazu imamo sinusoidni signal s frekvencijom jednakom frekvenciji izvornog kvadratnog vala.

3.2 Softver za generiranje meandra

Program generiranja meandra mora zadovoljiti sljedeće zahtjeve:

  • Biti u stanju sintetizirati dva neovisna pravokutna signala.
  • Kako bi se razdvojili signali, potrebna su dva izlazna pina za generiranje signala iz "gornjeg" (Hi-Group) i "donjeg" (Lo-Group) frekvencijski rasponi odnosno.
  • Softver bi trebao moći postaviti potrebno trajanje signala u rasponu od približno 65 ms - 100 ms.

Mikrokontroleri serije MSP430 imaju različite ugrađene mjerače vremena koji mogu generirati pravokutne signale. Obitelj '31x/'32x koristi 8-bitni mjerač vremena i priključak za mjerenje vremena za generiranje pravokutnih signala. Ovaj program ispitan na MCLK frekvenciji jednakoj 1,048 MHz. Timer_A u obitelji '33x može neovisno generirati oba potrebna signala. Drugi program koristi taj mjerač vremena za generiranje kvadratnih valova i radi s bilo kojom MCLK frekvencijom. Oba programa će biti detaljno razmotrena u nastavku.

3.2.1 Generiranje pravokutnih valova pomoću 8-bitnog mjerača vremena i priključka za mjerač vremena

Na sl. Slika 3 je dijagram toka postupka inicijalizacije za generiranje DTMF signala. Za sintetiziranje dviju frekvencija koriste se Timer Port i 8-bitni brojači timera. Svaki od njih je programabilni registar brojača neophodan za preciznu sintezu traženih frekvencija. Ako su brojači priključka tajmera kaskadno povezani u jedan 16-bitni mjerač vremena i taktirani na sistemskoj frekvenciji MCLK, tada se frekvencije visokog raspona mogu generirati s visokom točnošću. Kada se dogodi prekid, odgovarajući izlaz se prebacuje i oba 8-bitna registra brojača se resetiraju. Učitane vrijednosti pohranjuju se u dvije varijable u RAM-u kako bi se spremili interni registri za druge zadatke.

Frekvencije niskog raspona generira 8-bitni mjerač vremena. Budući da je registar brojača ovog mjerača vremena širok 8 bita, samo svaki treći prekid uzrokuje promjenu razine na potrebnom izlaznom pinu, dopuštajući generiranje istog brojača frekvencije.

Dva timerska izlaza - porta služe za formiranje dva meandra različitih frekvencija.

Riža. 3 Dijagram toka postupka inicijalizacije za generiranje DTMF signala

Postupak inicijalizacije izvodi se samo jednom. Nakon njegovog završetka, heksadecimalna vrijednost prenesenog znaka čita se iz globalne varijable u RAM-u. Nakon što se iz dvije tablice generiraju dvije frekvencije koje tvore visoke i niske DTMF tonove, sve što je potrebno je inicijalizirati i pokrenuti oba mjerača vremena. Trajanje slanja kontrolira se brojanjem poluciklusa “donje” frekvencije i očitava se iz dodatne tablice. Po završetku ovog postupka vraćate se na funkciju prozivanja. Odgovarajuće rutine za obradu prekida mijenjaju pinove porta. Ovaj proces je prikazan na Sl. 4 i 5.

Zadaci timer-porta uključuju samo snimanje dnevnika. razini na izlazu porta i ponovno učitavanje brojača iz RAM-a, dok rad 8-bitnog timera ima nešto složeniju strukturu: svaki ulaz u prekid broji registar brojača. Izlaz može promijeniti stanje samo nakon tri prekida. Osim toga, računa se i svaki poluciklus. Generacija se zaustavlja kada se postigne određeni broj poluciklusa.


Riža. 4 blok – krug prekida iz 8-bitnog mjerača vremena (Lo-Group)


Riža. 5 Blok – prekidni krug timera-port (Hi-Group)

; Prilagođene definicije FLLMPY equ 32 ; Frekvencijski množitelj FLL na 1,048 MHz TCLK equ FLLMPY*32768 ; TCLK: FLLMPY x f kvarcni DL ekvivalent 85 ; Trajanje DTMF signala (65..100 ms) LO_OUT equ 02h ; Izlaz “niže” frekvencije HI_OUT equ 04h ; Visokofrekventni izlaz RCOUNT equ r14 ; Brojač duljine DTMF RTEMP equ r15 ; servisni registar.globalni DTMF_NR ; globalna varijabla u RAM-u; za DTMF broj (0..F) ; Definicije RAM.even .bss DTMF_TL ; Parna adresa alignment.bss DTMF_TH .bss DTMF_NR ; globalna varijabla u RAM-u; za DTMF broj (0..F).parni ; Definicije za 8-bitni mjerač vremena TCCTL EQU 42H TCPLD EQU 43H TCDAT EQU 44H ; Definicije za priključak univerzalnog mjerača vremena TPCTL equ 04bh; Kontrola priključka timera TPCNT1 equ 04ch ; Brojač ulaza vremena 1 TPCNT2 equ 04dh ; Brojač ulaza vremena 2 TPD equ 04eh ; Timer-port podaci TPE equ 04fh ; Timer-port-resolution.text ; DTMF frekvencijske tablice: tablica sadrži; broj MCLK ciklusa za jedan poluciklus. ; Tablica za "gornju" frekvenciju; Dodan korektivni dodatak; uzeti u obzir vrijeme ulaska u prekid DTMF_HI .riječ 0ffffh-(TCLK/(1336*2))+25 ; Visoka frekvencija za 0 .riječ 0ffffh-(TCLK/(1207*2))+28 ; Visoka frekvencija za 1 .riječ 0ffffh-(TCLK/(1336*2))+25 ; Visoka frekvencija za 2 .riječ 0ffffh-(TCLK/(1477*2))+24 ; Visoka frekvencija za 3 riječi 0ffffh-(TCLK/(1207*2))+28 ; Visoka frekvencija za 4 .riječ 0ffffh-(TCLK/(1336*2))+25 ; Visoka frekvencija za 5 .riječ 0ffffh-(TCLK/(1477*2))+24 ; Visoka frekvencija za 6 .riječ 0ffffh-(TCLK/(1207*2))+28 ; Visoka frekvencija za 7 .riječ 0ffffh-(TCLK/(1336*2))+25 ; Visoka frekvencija za 8 .riječ 0ffffh-(TCLK/(1477*2))+24 ; Visoka frekvencija za 9 .riječ 0ffffh-(TCLK/(1633*2))+22 ; Visoka frekvencija za A .riječ 0ffffh-(TCLK/(1633*2))+22 ; Visoka frekvencija za B .riječ 0ffffh-(TCLK/(1633*2))+22 ; Visoka frekvencija za C .riječ 0ffffh-(TCLK/(1633*2))+22 ; Visoka frekvencija za D .word 0ffffh-(TCLK/(1207*2))+28 ; Visoka frekvencija za * .riječ 0ffffh-(TCLK/(1477*2))+24 ; Visoka frekvencija za #; Tablica za “donju” frekvenciju DTMF_LO .byte 0ffh-(TCLK/(941*2*3)) ; Niska frekvencija za 0 .byte 0ffh-(TCLK/(697*2*3)) ; Niska frekvencija za 1 .bajt 0ffh-(TCLK/(697*2*3)) ; Niska frekvencija za 2 .byte 0ffh-(TCLK/(697*2*3)) ; Niska frekvencija za 3 .byte 0ffh-(TCLK/(770*2*3)) ; Niska frekvencija za 4 .byte 0ffh-(TCLK/(770*2*3)) ; Niska frekvencija za 5 .byte 0ffh-(TCLK/(770*2*3)) ; Niska frekvencija za 6 .byte 0ffh-(TCLK/(853*2*3)) ; Niska frekvencija za 7 .byte 0ffh-(TCLK/(853*2*3)) ; Niska frekvencija za 8 .byte 0ffh-(TCLK/(853*2*3)) ; Niska frekvencija za 9 .byte 0ffh-(TCLK/(697*2*3)) ; Niska frekvencija za A .byte 0ffh-(TCLK/(770*2*3)) ; Niska frekvencija za B .byte 0ffh-(TCLK/(853*2*3)) ; Niska frekvencija za C .byte 0ffh-(TCLK/(941*2*3)) ; Niska frekvencija za D .byte 0ffh-(TCLK/(941*2*3)) ; Niska frekvencija za *.byte 0ffh-(TCLK/(941*2*3)) ; Niska frekvencija za #; Tablica trajanja signala DTMF_L .byte 2*941*DL/1000 ; Poluciklusi za 0 .byte 2*697*DL/1000 ; Poluciklusi za 1 .bajt 2*697*DL/1000 ; Poluciklusa za 2 .bajta 2*697*DL/1000 ; Poluciklusa za 3 .bajta 2*770*DL/1000 ; Poluciklusi za 4 .bajta 2*770*DL/1000 ; Poluciklusi za 5 .byte 2*770*DL/1000 ; Poluciklusi za 6 .byte 2*852*DL/1000 ; Poluciklusi za 7 .byte 2*852*DL/1000 ; Poluciklusi za 8 .byte 2*852*DL/1000 ; Poluciklusi za 9 .byte 2*697*DL/1000 ; Poluciklusi za A .byte 2*770*DL/1000 ; Poluciklusi za B .bajt 2*852*DL/1000 ; Poluciklusi za C .byte 2*941*DL/1000 ; Poluciklusi za D .byte 2*941*DL/1000 ; Poluciklusi za *.byte 2*941*DL/1000 ; Poluciklusa za # ;******************************************** ********** ******************************* ; DTMF-TX DTMF podrutina ;******************************************** ******************************* DTMF_TX mov.b DTMF_NR,RTEMP ; Pohrani broj u privremeni registar mov.b DTMF_L(RTEMP),RCOUNT ; Spremi brojač trajanja; pripremi 8-bitni mjerač vremena za DTMF-Lo frekvenciju mov.b #0a8h,&TCCTL ; Sat iz MCLK mov.b DTMF_LO(RTEMP),&TCPLD ; Priprema registra; predučitavanje mov.b #000,&TCDAT ; Učitavanje brojača iz registra; predopterećenje bis.b #008h,&IE1 ; Omogući prekide; iz 8-bitnog timera; priprema priključka timera za DTMF-Hi frekvenciju rla r15; * 2 za 16-bitnu tablicu mov DTMF_HI(RTEMP),&DTMF_TL ; spremite riječ za visokofrekventni mov #003,RTEMP ; brojač za 8-bitni timer bis.b #008h,IE2 ; Omogući prekide; iz timer-porta mov.b &DTMF_TH,&TPCNT2 ; Učitavanje visokog bajta u TC2 mov.b &DTMF_TL,&TPCNT1 ; Učitavanje niskog bajta u TC1 bis.b #080h,&TPD ; Omogući 16-bitni timer bis.b #HI_OUT+LO_OUT,&TPE ; Omogući DTMF-Hi/Lo izlaze mov.b #090h,&TPCTL ; Omogući timer ret ;************************************************ ******** ******************************* ; Prekid priključka timera;************************************************ *** ******************************* TP_INT xor.b #HI_OUT,&TPD ; Invertiraj DTMF-Hi izlaz mov.b &DTMF_TH,&TPCNT2 ; Učitavanje starije ba

3.2.2 1 Generiranje kvadratnih valova pomoću Timer_A

Ova rutina generiranja DTMF signala koristi samo Timer_A za pravougaono podešavanje obje željene frekvencije. Proces sklapanja izračunava odgovarajuće vrijednosti za mjerač vremena za korištenje programa bez obzira na vrijednost frekvencije MCLK. Trajanje izlaznog signala određeno je DL konstantom u milisekundama.

; Hardverske definicije; FLLMPY .equ 32; Frekvencijski množitelj FLL na 1,048 MHz TCLK .equ FLLMPY*32768 ; TCLK: FLLMPY x f kvarc DL .equ 82 ; Trajanje DTMF signala u ms; (65..100 ms) STAK .equ 600h ; Adresa inicijalizacije steka; RAM Definicije; STDTMF .equ 202h ; Status visoke i niske frekvencije TIM32B .equ 204 ; Proširenje registra mjerača vremena LENGTH .equ 206h ; DTMF brojač trajanja; .tekst 0F000h ; Početna adresa programa; ; Timer_A inicijalizacija: MCLK, kontinuirani način rada, prekidi omogućeni; Priprema izlaznih modula timera Timer_A MCLK = 1,048 MHz (automatski) ; INIT MOV #STACK,SP ;Inicijaliziranje pokazivača steka CALL #INITSR ;Inicijaliziranje množitelja; FLL frekvencije i RAM MOV #ISMCLK+TAIE+CLR,&TACTL ; Inicijalizacija mjerača vremena MOV.B #TA2+TA1,&P3SEL ; Izlazi TA2 i TA1 na portovima P3.5/4 CLR TIM32B; Brisanje proširenog registra mjerača vremena BIS #MCONT,&TACTL ; Pokretanje mjerača vremena Timer_A EINT ; Omogućavanje općeg prekida MAINLOOP ... ; Glavna petlja; ;Pritisak tipke: SDTMF sadrži pomak tablice; za 2 frekvencije (0..6,0..6) u visokom i niskom bajtu; MOV&TAR,R5 ; Za početak odmah: ADD FDTMFLO,R5 ; Pomak za kraće vrijeme MOV R5,&CCR1 ; Prva promjena stanja nakon 0,71 ms MOV R5,&CCR2 ; 1/(2x697) = 0,71 ms MOV #OMT+CCIE,&CCTL1 ; Inverzija izlaza, prekid bita. MOV #OMT+CCIE,&CCTL2 ; Invertni izlaz, bit prekida MOV.B STDTMF,R5 ; 82 ms brojač RRA R5 ; broj promjena stanja niže frekvencije MOV.B DTMFL(R5),LENGTH ; za trajanje signala... ; nastavak programa; ; Rukovatelj prekidom iz CCR0 (ovdje se ne koristi); TIMMOD0 ... RETI ; ; Rukovatelj prekidom iz registara hvatanja-usporedbe 1..4; TIM_HND ADD &TAIV,PC ; Obrada zahtjeva s najvišim; RETI prioritet; nema zahtjeva za prekid: RETI JMP HCCR1 ; zahtjev od CCR1 (DTMF niske frekvencije) JMP HCCR2 ; zahtjev od CCR2 (DTMF visoke frekvencije) JMP HCCR3 ; zahtjev od CCR3 JMP HCCR4 ; zahtjev od CCR4; TIMOVH INC TIM32B ; Proširenje Timer_A na 32 bita RETI ; ; DTMF niske frekvencije: TA1 invertira izlaz izlazne jedinice 1; Svaka promjena stanja se broji kako bi se kontroliralo trajanje signala; HCCR1 PUSH R5 ; Spremanje korištenih registara MOV.B STDTMF,R5 ; Status niske frekvencije DTMF ADD FDTMFLO(R5),&CCR1 ; Dodajte trajanje poluciklusa DEC.B LENGTH ; Je li trajanje DL signala završeno? JNZ TARET ; Ne; ; Da, zaustavi DTMF signal: onemogući prekide; BIC #OMRS+OUT+CCIE,&CCTL1 ; Resetiraj TA1 BIC #OMRS+OUT+CCIE,&CCTL2 ; Resetiraj TA2 TARET POP R5 ; Vrati R5 RETI; Povratak iz prekida; ; DTMF visoke frekvencije: TA2 invertira izlaz izlazne jedinice 2; HCCR2 PUSH R5 ; Spremanje korištenih MOV registara. B STDTMF+1,R5; Status visoke frekvencije DTMF ADD FDTMFHI(R5),&CCR2 ; Dodajte trajanje poluciklusa POP R5 ; Vrati R5 RETI; Povratak iz prekida; HCCR3 ... ;Zadatak kontroliran registrom CCR3 RETI HCCR4 ... ;Zadatak kontroliran registrom CCR4 RETI ; ; Tablica DTMF frekvencija: tablica sadrži; broj MCLK ciklusa po poluciklusu. Vrijednosti prilagođene za; efektivna frekvencija MCLK tijekom procesa montaže; i zaokruženo na minimum moguća greška frekvencije; FDTMFLO .riječ ((TCLK/697)+1)/2 ; Niska frekvencija DTMF 697Hz .word ((TCLK/770)+1)/2 ; 770Hz .riječ ((TCLK/852)+1)/2 ; 852Hz .riječ ((TCLK/941)+1)/2 ; 941Hz FDTMFHI .riječ ((TCLK/1209)+1)/2 ; Visoka frekvencija DTMF1209Hz .word ((TCLK/1336)+1)/2 ; 1336Hz .riječ ((TCLK/1477)+1)/2 ; 1477Hz .riječ ((TCLK/1633)+1)/2 ; 1633 Hz; ; Tablica sadrži broj poluciklusa za trajanje DL signala (ms). ; Niža DTMF frekvencija koristi se za brojanje; DTMFL .bajt 2*697*DL/1000 ; Broj poluciklusa.byte 2*770*DL/1000 ; za DL u ms.byte 2*852*DL/1000 ; .bajt 2*941*DL/1000 ; ; .sekta "TIMVEC",0FFF0h ; Vektori prekida vremena Timer_A .riječ TIM_HND ; Vektor modula 1..4 timers.word TIMMOD0 ; Tajmer modul 0 vector.sect "INITVEC",0FFFEh ; Vektor Resetiraj.riječ INIT

U nastavku je malo brže rješenje. Međutim, zahtijeva više RAM-a jer... Podaci dobiveni iz tablica se ne preračunavaju svaki put, već se ukratko pohranjuju u RAM DTMFLO i DTMFHI. Čitanje se vrši iz Timer_A prekidnih rutina tajmera. Korištene tablice su identične onima prikazanim u prethodnom primjeru.

FLLMPY .equ 32; Frekvencijski množitelj FLL na 1,048 MHz TCLK .equ FLLMPY*32768 ; TCLK: FLLMPY x f kvarc DL .equ 82 ; Trajanje DTMF signala; u ms (65..100 ms) STDTMF .equ 202h ; Status visoke i niske frekvencije TIM32B .equ 204 ; Proširenje registra mjerača vremena LENGTH .equ 206h ; Brojač trajanja DTMF DTMFLO .equ 208h ; Poluciklus niže frekvencije DTMFHI .equ 20Ah; Gornja frekvencija poluciklusa STACK .equ 600h ; Adresa inicijalizacije stoga.tekst 0F000h ; Početna adresa programa; Timer_A inicijalizacija: MCLK, kontinuirani način rada, prekidi omogućeni; Priprema izlaznih modula timera Timer_A MCLK = 1,048 MHz (automatski) ; INIT MOV #STACK,SP ; Inicijaliziranje pokazivača steka CALL #INITSR ; Inicijalizacija množitelja; FLL frekvencije i RAM MOV #ISMCLK+TAIE+CLR,&TACTL ; Pokreni tajmer MOV.B #TA2+TA1,&P3SEL ; Izlazi TA2 i TA1 na portovima P3.5/4 CLR TIM32B; Brisanje proširenog registra mjerača vremena BIS #MCONT,&TACTL ;Pokretanje mjerača vremena Timer_A EINT ; Omogućavanje općeg prekida MAINLOOP ... ; Glavna petlja; Pritisak tipke: SDTMF sadrži pomak tablice; za 2 frekvencije (0..6,0..6) u visokom i niskom bajtu; MOV&TAR,R5 ; Za početak odmah ADD FDTMFLO,R5 ; Pomak za kraće vrijeme MOV R5,&CCR1 ; Prva promjena stanja nakon 0,71 ms MOV R5,&CCR2 ; 1/(2x697) = 0,71 ms; ; Dohvatite dva broja ciklusa za DTMF frekvencije; MOV.B STDTMF+1,R5 ; DTMF MOV visoke frekvencije FDTMFHI(R5),DTMFHI ; Trajanje poluciklusa MOV.B STDTMF,R5 ; Niska frekvencija DTMF MOV DTMFLO(R5),DTMFLO ; Trajanje poluciklusa; ; Brojač trajanja RRA R5 ; Pripremite indeks bajta MOV.B DTMFL(R5),LENGTH ; broj promjena stanja niže frekvencije MOV #OMT+CCIE,&CCTL1 ; Inverzija izlaza, prekid bita. MOV #OMT+CCIE,&CCTL2 ; Inverzija izlaza, prekid bita. ... ; Povratak na glavnu petlju; ; Rukovatelj prekidom iz CCR0 (ovdje se ne koristi); TIMMOD0 ... RETI ; ; Rukovatelj prekidom iz registara hvatanja-usporedbe 1..4; TIM_HND ADD &TAIV,PC ; Obrada zahtjeva s najvišim; RETI prioritet; nema zahtjeva za prekid: RETI JMP HCCR1 ; zahtjev od CCR1 (DTMF niske frekvencije) JMP HCCR2 ; zahtjev od CCR2 (DTMF visoke frekvencije) JMP HCCR3 ; zahtjev od CCR3 JMP HCCR4 ; zahtjev od CCR4; TIMOVH INC TIM32B ; Proširenje Timer_A na 32 bita RETI ; ; DTMF niske frekvencije: TA1 invertira izlaz izlazne jedinice 1; HCCR1 DODAJ DTMFLO,&CCR1 ; Dodajte trajanje poluciklusa DEC.B LENGTH ; Je li trajanje DL signala završeno? JNZ TARET ; Ne; ; Da, zaustavi DTMF signal: onemogući prekide; BIC #OMRS+OUT+CCIE,&CCTL1 ; Resetiraj TA1 BIC #OMRS+OUT+CCIE,&CCTL2 ; Resetiraj TA2 TARET RETI ; Povratak iz prekida; DTMF visoke frekvencije: TA2 invertira izlaz izlazne jedinice 2; HCCR2 DODAJ DTMFHI,&CCR2 ; Dodajte trajanje poluciklusa RETI ; Povratak iz prekida; HCCR3. .. ;Zadatak kontroliran registrom CCR3 RETI HCCR4 ... ;Zadatak kontroliran registrom CCR4 RETI ; ; Tablice prekida i vektori identični su onima prikazanim u prethodnom primjeru.

3.3 Hardver za generiranje DTMF signala

Kao što je gore navedeno, u frekvencijskom području od 200 Hz do 4600 Hz, razina signala frekvencije prijenosa mora biti najmanje 20 dB iznad razine vanjskih signala (šuma). Osim toga, prema specifikaciji, signali iz “gornje” i “donje” skupine moraju imati različite razine, tako da svaki signal zahtijeva svoj filter. Amplitude sinusne frekvencije mogu se dobiti iz Fourierovog niza.

Za odabir graničnih frekvencija pri projektiranju analognog filtra morate se pridržavati sljedećih zahtjeva na temelju:

  • Jer potrebno je osigurati mogućnost bilo kakvih kombinacija frekvencija "donje" skupine s frekvencijama "gornje" skupine, pri čemu razlika u razinama između najniže i najviše frekvencije u skupini ne smije biti veća od 3 dB.
  • Za najnižu frekvenciju u skupini (f1), potiskivanje harmonika (3f1) ne smije biti gore od 20 dB. Ispunjenje ovog uvjeta najkritičnije je za nižu učestalost u skupini jer što je dalje moguće od granične frekvencije filtra.

Formula opisuje kvadrat apsolutne vrijednosti na izlazu visokopropusnog Butterworthovog filtra reda n:

Ova formula predstavlja ovisnost pojačanja Butterworthovog visokopropusnog filtra o frekvenciji. Parametri fg i n određuju graničnu frekvenciju i redoslijed filtra.

Prije svega, potrebno je izračunati potreban redoslijed filtera, uzimajući u obzir usklađenost s gore navedenim zahtjevima.

Da bi se zadovoljio prvi uvjet, omjer kvadrata apsolutnih vrijednosti najniže i najviše frekvencije u skupini ne smije biti veći od 3 dB ili:

Drugi uvjet bit će automatski zadovoljen ako je omjer kvadrata apsolutnih vrijednosti frekvencija f1 i 3f1 veći od 10/3, u ovom slučaju treći harmonik u pravokutnom signalu je 1/3 manji (vidi Fourier serije i sl. 2):

Kao rezultat izračuna za frekvencije obje skupine, imamo traženi redoslijed filtera n=1,15. Dakle, zahtjeve će zadovoljiti filtar 2. reda, koji se može graditi na operacijskom pojačalu. Ako koristite filtar 3. reda, potrebna su vam samo dva dodatna elementa. Međutim, to će smanjiti zahtjeve za disperziju parametara komponente. Oba gornja zahtjeva bit će ispunjena ako je granična frekvencija unutar sljedećih granica:

Donja grupa fg>880 Hz fg<1418 Гц
Gornja skupina fg>1527 Hz fg<2460 Гц

Ako je granična frekvencija na minimumu, doći će do maksimalnog smanjenja harmonika. Međutim, u ovom slučaju razlika između najniže i najviše frekvencije u skupini bit će 3 dB. Na najvišoj mogućoj graničnoj frekvenciji, razlika u razini je minimalna, ali su harmonijske komponente potisnute za samo 20 dB.

Pri proračunu filtra povećana je pažnja posvećena potiskivanju harmonika; razlika u razini unutar skupine bila je fiksirana na 2 dB. Kao rezultat toga, granične frekvencije su 977 Hz i 1695 Hz. Rezultirajuće potiskivanje harmonika značajno premašuje zahtjeve. Razlika u razinama frekvencije u skupini unutar je zahtjeva čak iu slučaju odstupanja granične frekvencije povezane s rasponom parametara korištenih komponenti. Prilikom izračunavanja vrijednosti filtarskih elemenata, otpornici su odabrani na temelju njihove maksimalne blizine standardnim vrijednostima serije E12.

Na izlazima filtera rezultat su dva sinusna signala sa značajno potisnutim harmonicima. Za kombiniranje ovih signala uvodi se dodatni zbrajač.

Dakle, korištenjem samo 3 op-pojačala i nekoliko pasivnih elemenata, u mogućnosti smo generirati DTMF signale pomoću mikrokontrolera bez korištenja značajnih računalnih resursa.

Pomoću programa simulatora provjerene su približne vrijednosti. Odziv filtara vrlo se podudara s izračunatim frekvencijskim odzivom.


Riža. 6: Spektar amplitude pravokutnog signala frekvencije 697 Hz na izlazu filtra 3. reda

Na sl. Slika 6 prikazuje amplitudni spektar pravokutnog signala frekvencije 697 Hz, propuštenog kroz filtar 3. reda. Kao što se može vidjeti sa slike, treći i peti harmonik (2091 Hz i 3485 Hz) značajno su prigušeni (-25,6 dB).


Riža. 7: Spektar amplitude pravokutnog signala frekvencije 941 Hz na izlazu filtra 3. reda

Na sl. Slika 7 prikazuje spektar pravokutnog signala frekvencije 941 Hz. U frekvencijskom području koje nas zanima, do 4600 Hz, postoji samo jedan harmonik. Nakon prolaska kroz filtar, ovaj harmonik od 2823 Hz značajno je prigušen (-27,9 dB). Razlika u razini između najniže i najviše frekvencije u skupini ne prelazi 1,9 dB.

Kako bi se koristile jeftine komponente s velikom varijacijom parametara, provedeno je dodatno modeliranje. Rezultati simulacije pokazali su da je dopušteni raspon u vrijednostima otpornika i kondenzatora 10%.


Slika 8: Histogram – distribucija razina signala u grupi


Slika 9: Histogram – potiskivanje harmonika

Na sl. Slike 8 i 9 prikazuju histograme dobivene Monte Carlo analizom. U ovom slučaju, vrijednosti komponenti varirale su nasumično unutar raspona od 10%. Nakon 100 ponavljanja, rezultati za sve simulirane filtre iscrtavaju se u histogramima. U histogramu na Sl. Slika 8 prikazuje razliku u razini između frekvencija unutar grupe. Najveća dopuštena razlika od 3 dB između minimalne i maksimalne frekvencije ni u jednom slučaju nije postignuta. Prosječna vrijednost je 1,6 dB, što je nešto bolje od izračunate vrijednosti od 2 dB.

Na sl. Slika 9 prikazuje prigušenje harmonika za "nižu" frekvencijsku skupinu. Tražena vrijednost od 20 dB postignuta je u svim slučajevima, prosječna vrijednost je približno 27 dB. U najgorem slučaju, harmonik je potisnut za 24,2 dB.

Vrijednosti izračunate za filtar "donje" frekvencijske skupine također se provode za filtar "gornje" frekvencijske skupine.

Oba filtera imaju identičan sklop. Jedina razlika je u graničnim frekvencijama filtara za gornju i donju frekvencijsku skupinu. R1 i C1 tvore visokopropusni filtar 1. reda. Jer ulazni otpor kruga također ovisi o R1, vrijednost ovog elementa ne smije biti premala; inače će izlazi mikrokontrolera biti preopterećeni i pravokutni valni oblik će biti iskrivljen. U tom će slučaju signalu biti dodane dodatne frekvencije nastale intermodulacijskim izobličenjem, što će negativno utjecati na omjer signala i šuma.

Prijenosna funkcija filtara višeg reda ne može se postići korištenjem samo pasivnih komponenti.

Stoga filtar 2. reda mora sadržavati op-amp. Pojačanje aktivnog filtra postavljeno je na 0,2 pomoću otpornika R1-1 i R1-2. Kao što vidite, signal je donekle oslabljen. Ovo je neophodno kako bi se izbjeglo preopterećenje op-amp, jer vršna amplituda osnovnog sinusoidnog harmonika pravokutnog signala premašuje amplitudu samog pravokutnog signala (vidi Fourierove redove i sliku 2). Dodatno zbrajalo podešava potrebnu izlaznu razinu. Zbog konstantne komponente pravokutnog signala, radna točka op-amp postavljena je na razinu Vcc/2 (vidi također Fourierove redove i sliku 2). U ovom slučaju, konstantna komponenta se ne može eliminirati pomoću ulaznog razdjelnika R1-1/R1-2. Za odvajanje kruga OS pomoću istosmjernog napona koristi se kondenzator C3.

Na svakom od izlaza analognog filtra generira se signal gornje odnosno donje frekvencijske skupine. U dodatnom zbrajaču ovi se signali dodaju. U ovom elementu kruga možete postaviti odnos između "donje" i "gornje" frekvencije u ukupnom signalu i razini izlaznog signala pomoću otpornika R4 i R5. Stoga se izlazna amplituda može lako prilagoditi različitim zahtjevima u različitim zemljama.

Prilikom izračunavanja vrijednosti komponenti, vrijednosti kondenzatora bile su, kao i obično, fiksne, a vrijednosti otpornika izračunate su u skladu s njima. U ovom krugu korišteni su kondenzatori i otpornici standardne serije E12 s rasponom od 10%.

Na sl. Slika 10 prikazuje shematski dijagram analognih filtara i zbrajača:


Riža. 10: Shematski dijagram analogni filtri s dodatnim zbrajačem

Kondenzatori C1-1 i C1-2 kombiniraju dva signala zajedno u Vcc/2 radnoj točki. Ne biste trebali odabrati prevelike vrijednosti za ove elemente, jer oni su niskopropusni filterski elementi za uklanjanje niskofrekventnih subharmonika. Kondenzator filtera C5 eliminira šum referentnog napona. Dodatni kondenzator C6 spojen paralelno s povratnim otpornikom R6 tvori visokopropusni filtar prvog reda. Ako je odabrana najniža granična frekvencija filtra, dodatno filtriranje visokofrekventnih intermodulacijskih smetnji poboljšava kvalitetu izlaznog signala, ali će doći do određenog prigušenja najviših frekvencija "gornje" skupine. U nekim slučajevima generiranje najveće DTMF frekvencije od 1633 Hz nije potrebno jer koristi se samo za formiranje servisnih simbola A-D, a omjer signala i šuma može se poboljšati snižavanjem granične frekvencije filtra. Dakle, povećanje granične frekvencije dovodi do povećanja razine visokofrekventnih smetnji, ali se istovremeno smanjuje negativan utjecaj na komponente najviše frekvencije DTMF signala.

4 Rezultati istraživanja signala DTMF odašiljača

Spektrogrami ispod (sl. 11 i 12) prikazuju izlazne signale DTMF odašiljača na različitim frekvencijama. Na sl. Slika 11 prikazuje amplitudni spektar simbola “1”. Frekvencije potrebne za njegov prijenos - 697 i 1207 Hz - su na razini -10,5 dB, odnosno -8,5 dB. Harmonici na 2091 i 3621 Hz su potisnuti za gotovo 30 dB. Za prijenos simbola "D" generiraju se dvije najviše frekvencije - 941 i 1633 Hz. Kao što se može vidjeti sa Sl. 12, razina niske frekvencije je -12 dB, razina visoke frekvencije je -11 dB. Odgovarajući harmonici prigušeni su za više od 30 dB. Dakle, izmjerene vrijednosti odgovaraju rezultatima simulacije i zahtjevima specifikacije.


Riža. 11: Amplitudni spektar simbola “1”: 697 i 1207 Hz


Riža. 12: Amplitudni spektar simbola “D”: 941 i 1633 Hz

Apsolutna točnost frekvencije generiranih pravokutnih signala ne može se postići korištenjem dva različita mjerača vremena; rezultat će ovisiti o kombinaciji dviju frekvencija i vrsti korištenih mjerača vremena. Razlog za to je sukob prekida timera. Međutim, zahtijevana točnost od ±1,8% je zadovoljena s velikom marginom.

Ako se 8-bitni mjerač vremena i mjerač vremena na priključku mjerača vremena koriste na frekvenciji sustava od MCLK 1,048 MHz, tada se frekvencije "niže" skupine generiraju s točnošću koja nije gora od 0,3%. Za frekvencije "gornje" skupine u praksi je dobiveno odstupanje od najviše 0,5%.

Jedina iznimka je DTMF znak "D", za koji se generiraju najviše frekvencije. Kao rezultat, u ovoj kombinaciji frekvencija "gornje" skupine 1633 Hz ima odstupanje od -0,97%.

Bez ove iznimke, čak i najveća frekvencija od 1633 Hz generirana je s točnošću boljom od 0,5%. Maksimalna odstupanja za različite frekvencije navedena su u tablici:

Ako se Timer_A koristi za generiranje frekvencija, pogreška će ovisiti o korištenoj MCLK frekvenciji:

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čak

Softver za ovaj primjer je vrlo jednostavan i, zauzimajući otprilike 300 bajtova, zahtijeva malu količinu RAM-a i ROM-a. Zahvaljujući ugrađenom modulu mjerača vremena, potrebne frekvencije generiraju se s visokom točnošću bez gubitka CPU opterećenja. U konfiguraciji u kojoj se za generiranje koriste 8-bitni mjerač vremena i mjerač vremena/priključak, prekidne rutine zauzimaju približno 12% CPU resursa. U slučaju kada frekvencije generira timer Timer_A, CPU opterećenje za obradu prekidnih rutina smanjuje se na 6%. Kao rezultat toga, drugi zadaci mogu biti pokrenuti dok se DTMF signali prenose ili CPU može biti stavljen u način rada niske potrošnje kako bi se smanjila trenutna potrošnja.

Dobra funkcionalnost opisanog modula za generiranje DTMF signala pomoću pravokutnih signala prikazana je dizajnom hardverskog sklopa. Jer U krugu je moguće koristiti komponente sa širokim rasponom parametara, a cijena takvog rješenja je vrlo niska. Svi zahtjevi specifikacije su u velikoj mjeri ispunjeni, tako da poseban modul generatora DTMF signala nije potreban u instrumentima koji koriste MSP430 kao upravljački kontroler.

Ako je u određenom slučaju potrebno povećati omjer signal/šum, korištenjem dodatnog op-ampa, može se konstruirati filtar za dodatno suzbijanje intermodulacijskog izobličenja. Takvo dodatno operacijsko pojačalo već je prisutno u četverostrukom op-ampu u paketu DIL14.

6 Veze

Bundesamt Fur Post und Telekomunikacija (savezna Ured za post i telekomunikacije): krsti 223 ZV 5, Zulassungsvorschrift krzna Endeinrichtungen Zur Anschaltung Analogna Wahlanschlusse (AusgenOmmen nerufsse) descufshlesschshlessssse) zahtjevi za sigurnost i poziv) / ISDN Deutschen Bundespost Telekoma; Bundesministerium fur Post und Telekommunikation, Nacrt, Bonn, travanj 1994. Papula: Mathematik fur Ingenieure 2 (Matematika za inženjere); Vieweg Verlag, Braunschweig 1990 Tietze / Schenk: Halbleiterschaltungstechnik; (Titze/Schenk, Semiconductor Circuit Engineering), 10. izdanje; Springer Verlag, Berlin 1993. Lutz Bierl / Texas Instruments: Obitelj MSP430, Izvješće o primjeni mjerenja, Texas Instruments, izdanje 2.1, siječanj 1997., SLAAE10B Texas Instruments: Obitelj MSP430, Arhitektonski korisnički vodič i biblioteka modula, 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 sustav za prijem i prijenos digitalnih signala baziran na mikrokontroleru MSP430); Diplomarbeit, Fachhochschule Landshut, svibanj 1997

Na temu jednostavnih uređaja, odlučio sam sastaviti generator DTMF signala koristeći isti ATtiny2313. Za one koji ne znaju, DTMF (Dual-Tone Multi-Frequency) je dvotonski višefrekventni analogni signal koji se koristi za biranje telefonskog broja. Čitaj Wikipediju.

Odluka o sastavljanju takvog uređaja bila je diktirana željom da se pokuša implementirati složene analogne signale pomoću mikrokontrolera. Za ovaj uređaj nije planirana nikakva praktična primjena, ali bi možda nekome takav uređaj bio od koristi? Iskoristi!

Izvor DTMF generatora


Sada da vidimo što imamo.

Signal se generira korištenjem PWM-a, a RC krug se koristi da mu se da željeni oblik. Kao rezultat toga, nakon RC lanca, dobivamo sljedeći signal (gumb 6 je pritisnut):

Duž cijele krivulje korisnog signala promatramo visokofrekventni češalj (frekvencija je viša od zvučne, pa neće stvarati šum) - to je rad RC kruga. Možete učiniti liniju glatkijom povećanjem kapaciteta kondenzatora ili otpora otpornika, ali u tom će se slučaju raspon korisnog signala značajno smanjiti.

Gledamo spektar signala i uvjeravamo se da postoje dvije odvojene frekvencije (frekvencija PWM je izašla izvan područja prikaza), što znači da je sve u redu - uređaj radi kako treba.

Gotova rješenja

Postoje gotova rješenja za zadatke generiranja i dekodiranja DTMF signala. Evo nekoliko tablica s podacima za ove mikrosklopove.

DTMF generator
- DTMF dekoder


p.s.Šteta što ATtiny2313 nema ADC - možete koristiti i DTMF dekoder! Ali u redu je, ponovit ću to na megi, svakako ću priložiti.

(Posjećeno 6,868 puta, 1 posjeta danas)

Tonsko biranje (Dual-tone multi-frequency signaling, DTMF) razvilo je Bell Labs 50-ih godina prošlog stoljeća za tada revolucionarni telefon s tipkama. Za prikaz i prijenos digitalnih podataka u tonskom načinu rada koristi se par frekvencija (tonova) govornog frekvencijskog područja. Sustav definira dvije grupe od četiri frekvencije, a informacije se kodiraju odašiljanjem dvije frekvencije istovremeno, po jedna iz svake grupe. To daje ukupno šesnaest kombinacija za predstavljanje šesnaest različitih brojeva, simbola i slova. DTMF kodiranje se sada koristi u širokom rasponu komunikacijskih i kontrolnih aplikacija, kao što dokazuje, na primjer, preporuka Međunarodne telekomunikacijske unije (ITU) Q.23.

Ovaj članak opisuje krug generatora DTMF tonova koji reproducira svih osam frekvencija i generira rezultirajući dvotonski izlazni signal. Sustav o kojem je riječ izgrađen je na Silego GreenPAK™ SLG46620V čipu i operacijska pojačala Silego SLG88104V. Rezultirajući proizvedeni signal zbroj je dviju frekvencija određenih redom i stupcem tipkovnice telefona.

Predloženi sklop koristi četiri ulaza za odabir kombinacije frekvencija koje treba generirati. Krug također ima ulaz za omogućavanje, koji pokreće generiranje i određuje duljinu vremena prijenosa signala. Izlazna frekvencija generatora u skladu je s ITU standardom za DTMF.

DTMF tonovi

DTMF standard definira kodiranje brojeva 0-9, slova A, B, C i D te znakova * i # kao kombinaciju dviju frekvencija. Te su frekvencije podijeljene u dvije skupine: skupinu visokih frekvencija i skupinu niskih frekvencija. Tablica 1 prikazuje frekvencije, skupine i odgovarajuće prikaze simbola.

Stol 1. DTMF tonsko kodiranje

Grupa visokih tonova

Niskopropusna grupa

Frekvencije su odabrane kako bi se izbjeglo više harmonika. Nadalje, njihov zbroj ili razlika ne rezultira različitom DTMF frekvencijom. Na taj način se izbjegavaju harmonici ili modulacijsko izobličenje.

Standard Q.23 specificira da pogreška svake emitirane frekvencije mora biti unutar ±1,8% nominalne vrijednosti, a ukupna distorzija (zbog harmonika ili modulacije) mora biti 20 dB ispod osnovnih frekvencija.

Gore opisani rezultirajući signal može se opisati kao:

s(t) = Acos(2πfvisina)+ Acos(2πprotok),

gdje su fhigh i flow odgovarajuće frekvencije iz skupine visokih i niskih frekvencija.

Slika 1 prikazuje rezultirajući signal za znamenku "1". Slika 2 prikazuje frekvencijski spektar koji odgovara ovom signalu.

Riža. 1. DTMF ton

Riža. 2. DTMF tonski spektar

Trajanje DTMF tonova može varirati ovisno o specifičnoj aplikaciji koja koristi kodiranje tonova. Za najčešće primjene, vrijednosti trajanja obično se nalaze između ručnog i automatskog biranja. Tablica 2 prikazuje sažetak tipične duljine vremena za dvije vrste zapošljavanja.

Tablica 2. Trajanje signala tonskog biranja

Tip biranja

Grupa visokih tonova

Grupa visokih tonova

Ručno biranje

Automatsko biranje

Kako bi se osigurala veća fleksibilnost, DTMF generator ponuđen u ovom priručniku opremljen je ulazom za uključivanje, koji se koristi za pokretanje generiranja signala i određivanje njegovog trajanja. U ovom slučaju, trajanje signala je jednako trajanju impulsa na ulazu za uključivanje.

Analogni dio sklopa DTMF generatora

ITU Preporuka Q.23 definira DTMF signale kao analogne signale koje stvaraju dva sinusna vala. U predloženom krugu DTMF generatora, Silego GreenPAK SLG46620V IC generira pravokutne signale sa željenim DTMF frekvencijama. Za dobivanje sinusoidnih signala tražene frekvencije i formiranje rezultirajućeg signala (zbroj dva sinusoidalna vala) potrebni su analogni filtri i zbrajalo. Zbog toga je u ovom projektu odlučeno koristiti filtre i kombinator baziran na operacijskim pojačalima SLG88104V.

Slika 3 prikazuje strukturu predloženog analognog dijela uređaja.

Riža. 3. Analogni procesni sklop za primanje DTMF signala

Analogni filtri koriste se za dobivanje sinusoidnih signala iz pravokutnih impulsa. Nakon što se izvrši filtriranje, dva se signala zbrajaju i generira se željeni izlazni dvotonski DTMF signal.

Slika 4 prikazuje rezultat Fourierove transformacije korištene za dobivanje spektra pravokutnog signala.

Riža. 4. Spektar pravokutnog signala

Kao što vidite, kvadratni val sadrži samo neparne harmonike. Ako takav signal amplitude A predstavimo u obliku Fourierovog niza, tada će on imati sljedeći oblik:

Analiza ovog izraza omogućuje nam da zaključimo da ako analogni filtri imaju dovoljno prigušenja za harmonike, tada je sasvim moguće dobiti sinusne signale s frekvencijom jednakom frekvenciji izvornog pravokutnog signala.

Uzimajući u obzir toleranciju razine smetnji definiranu u standardu Q.23, potrebno je osigurati da svi harmonici budu prigušeni za 20 dB ili više. Nadalje, svaka frekvencija iz skupine niskih prolaza mora se kombinirati s bilo kojom frekvencijom iz skupine visokopropusnih. Uzimajući u obzir te zahtjeve, razvijena su dva filtra, po jedan za svaku skupinu.

Oba filtra su bili niskopropusni Butterworth filtri. Prigušenje Butterworthovog filtra reda n može se izračunati kao:

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

gdje je fc granična frekvencija filtra, n redoslijed filtra.

Razlika u prigušenju između najniže frekvencije i najviše frekvencije svake skupine ne smije biti veća od 3 dB, dakle:

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

Zadane apsolutne vrijednosti:

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

Također, kao što smo ranije rekli, slabljenje harmonika mora biti 20 dB ili više. U ovom slučaju, najgori će slučaj biti najniža frekvencija u skupini, jer je njen 3. harmonik najniža frekvencija i najbliži je graničnoj frekvenciji filtra. S obzirom da je 3. harmonik 3 puta manji od osnovnog, filtar mora zadovoljiti uvjet (apsolutne vrijednosti):

A(3fNIŽE) 2 / A(fNIŽE) 2 > 10/3.

Ako se ove jednadžbe primijene na obje skupine, tada korišteni filtri moraju biti filtri drugog reda. To znači da će imati po dva otpornika i dva kondenzatora ako se implementiraju pomoću op-pojačala. Kad bi se koristili filtri trećeg reda, osjetljivost na tolerancije komponenti bila bi manja. Odabrane granične frekvencije filtra su 977 Hz za niskopropusnu skupinu i 1695 Hz za visokopropusnu skupinu. Na ovim vrijednostima, razlike u razinama signala u frekvencijskim skupinama su u skladu s gornjim zahtjevima, a osjetljivost na promjene u graničnoj frekvenciji zbog tolerancija komponenti je minimalna.

Shematski dijagrami filtara implementiranih pomoću SLG88104V prikazani su na slici 5. Ocjene prvog R-C parovi odabran na takav način da ograniči izlaznu struju SLG46620V čipa. Druga veza filtera određuje dobitak, koji iznosi 0,2. Amplituda pravokutnih signala postavlja radnu točku operacijskog pojačala na 2,5 V. Neželjeni naponi blokiraju se kondenzatorima izlaznog filtera.

Riža. 5. Shematski prikazi izlaznih filtara

Na izlazu se signali filtera zbrajaju, a rezultirajući signal je zbroj harmonika odabranih iz skupine niskih i visokih frekvencija. Kako bi se kompenziralo slabljenje filtra, amplituda izlaznog signala može se podesiti pomoću dva otpornika R9 i R10. Slika 6 prikazuje krug zbrajala. Slika 7 prikazuje cijeli analogni dio sklopa.

Riža. 6. Shematski prikaz zbrajala

Riža. 7. Analogni dio sklopa

Digitalni dio sklopa generatora DTMF tonova

Digitalni dio kruga generatora DTMF tonova uključuje čitav niz generatora pravokutnih valova - po jedan za svaku DTMF frekvenciju. Budući da je za izradu ovih generatora potrebno osam brojača, za njihovu implementaciju odabran je GreenPAK SLG46620V čip. Na izlazima digitalnog sklopa generiraju se dva pravokutna signala, po jedan za svaku frekvencijsku skupinu.

Pravougaoni signali generiraju se pomoću brojača i D-flip-flopova i imaju radni ciklus od 50%. Iz tog razloga, frekvencija preklapanja brojača je dvostruko veća od potrebne DTMF frekvencije, a DFF flip-flop dijeli izlazni signal na dva.

Izvor takta za brojače je ugrađeni RC oscilator od 2 MHz, čija se frekvencija dalje dijeli s 4 ili 12. Razdjelnik se odabire uzimajući u obzir bitni kapacitet i maksimalnu vrijednost svakog brojača potrebnu za dobivanje određenog frekvencija.

Za generiranje visokih frekvencija potrebno je manje uzoraka, pa se za njihovo generiranje koriste 8-bitni brojači, taktirani iz internog RC oscilatora čiji je signal podijeljen s 4. Iz istog razloga, niže frekvencije se implementiraju korištenjem 14-bitnih brojača.

SLG46620V ima samo tri standardna 14-bitna brojača, tako da je jedna od nižih frekvencija implementirana korištenjem 8-bitnog CNT8 brojača. Kako bi broj uzoraka bio unutar raspona od 0...255, za taktiranje ovog CNT8 bilo je potrebno koristiti signal RC oscilatora podijeljen s 12. Za ovaj krug, frekvencija s najvećim brojem uzoraka, koja odabrana je najniža frekvencija. To nam je omogućilo da minimiziramo pogrešku.

Tablica 3 prikazuje parametre svakog kvadratnog vala.

Tablica 3. Parametri generatora kvadratnog impulsa

Taktiranje

Greška frekvencije [%]

Niskopropusna grupa

Grupa visokih tonova

Kao što je vidljivo iz tablice, sve frekvencije imaju pogrešku manju od 1,8%, te su u skladu s DTMF standardom. Ove izračunate karakteristike, temeljene na idealnoj frekvenciji RC oscilatora, mogu se prilagoditi mjerenjem izlazne frekvencije RC oscilatora.

Iako u predloženom krugu svi generatori rade paralelno, signal samo jednog generatora iz svake skupine bit će poslan na izlaz mikrosklopa. Izbor određenih signala određuje korisnik. To se radi pomoću četiri GPIO ulaza (dva bita za svaku grupu) s tablicom istinitosti prikazanom u tablici 4.

Tablica 4. Tablica za odabir frekvencija iz skupine niskih frekvencija

Niskopropusna grupa

Tablica 5. Tablica odabira frekvencija iz skupine visokih frekvencija

Grupa visokih tonova

Slika 8 prikazuje logički sklop pravokutnog generatora 852 Hz. Ovaj se uzorak ponavlja za svaku frekvenciju s odgovarajućim postavkama brojača i LUT konfiguracijom.

Riža. 8. Pravokutni generator impulsa

Brojač generira izlaznu frekvenciju određenu njegovim postavkama. Ova frekvencija jednaka je dvostrukoj frekvenciji odgovarajućeg DTMF tona. Parametri konfiguracije mjerača prikazani su na slici 9.

Riža. 9. Primjer postavljanja pravokutnog brojača generatora impulsa

Izlazni signal brojača spojen je na ulaz sata D-Flip Flop okidač. Budući da je DFF izlaz konfiguriran kao invertiran, ako spojite DFF izlaz na njegov ulaz, D flip-flop se pretvara u T flip-flop. Konfiguracijski parametri DFF-a mogu se vidjeti na slici 10.

Riža. 10. Primjer postavljanja okidača pravokutnog generatora impulsa

Signal s DFF izlaza vodi se na ulaz LUT tablice istinitosti. LUT-ovi se koriste za odabir jednog signala za svaku specifičnu kombinaciju R1-R0. Primjer LUT konfiguracije prikazan je na slici 11. B u ovom primjeru, ako R1 primi "1", a R0 primi "0", ulazni signal se prenosi na izlaz. U drugim slučajevima, izlaz sadrži "0".

Riža. 11. Primjer postavljanja tablice istinitosti pravokutnog generatora impulsa

Kao što je gore spomenuto, predloženi sklop ima ulaz za omogućavanje Omogući. Ako postoji logička jedinica "1" na ulazu dozvole za uključivanje, tada se generirani pravokutni signali isporučuju na par izlaza mikro kruga. Trajanje prijenosa jednako je trajanju impulsa na ulazu za aktiviranje. Za implementaciju ove značajke bilo je potrebno još nekoliko LUT-ova.

Visokopropusna grupa koristi jedan 4-bitni LUT i jedan 2-bitni LUT, kao što je prikazano na slici 12.

Riža. 12. Izlazni krug grupe visokih tonova

4-bitni LUT1 konfiguriran kao logički element ILI, tako da daje logičku jedinicu "1" ako je "1" prisutna na bilo kojem od njegovih ulaza. Tablice istine C1/C0 dopuštaju odabir samo jednog od oscilatora, tako da 4-bitni LUT1 određuje koji će signal biti na izlazu. Izlaz ovog LUT-a povezan je s 2-bitnim LUT4, koji odašilje signal samo ako je ulaz za omogućavanje logički "1". Slike 13 i 14 prikazuju konfiguracije 4-bitnog LUT1 i 2-bitnog LUT4.

Riža. 13. 4-bitna LUT1 konfiguracija

Riža. 14. 2-bitna LUT4 konfiguracija

Budući da više nije bilo 4-bitnih LUT-ova tablica istine, dva 3-bitna LUT-a korištena su za niskopropusnu grupu.

Riža. 15. Niskopropusni grupni izlazni krug

Kompletan unutarnji sklop GreenPAK SLG46620V prikazan je na slici 16. Slika 17 prikazuje konačni dijagram strujnog kruga DTMF generatora.

Riža. 16. Blok dijagram generatora DTMF tona

Riža. 17. Shema generatora DTMF tona

Ispitivanje kruga DTMF generatora

U prvoj fazi testiranja predloženog DTMF generatora odlučeno je provjeriti frekvencije svih generiranih pravokutnih signala pomoću osciloskopa. Kao primjer, slike 18 i 19 prikazuju kvadratne izlaze valova za 852 Hz i 1477 Hz.

Riža. 18. Pravokutni val 852 Hz

Riža. 19. Pravokutni val 1477 Hz

Nakon što su provjerene frekvencije svih pravokutnih signala, započelo je testiranje analognog dijela sklopa. Ispitani su izlazni signali za sve kombinacije niskih i visokih frekvencija. Kao primjer, slika 20 prikazuje zbroj signala od 770 Hz i 1209 Hz, a slika 21 prikazuje zbroj signala od 941 Hz i 1633 Hz.

Riža. 20. DTMF ton 770 Hz i 1209 Hz

Riža. 21. DTMF ton 941 Hz i 1633 Hz

Zaključak

U ovom je članku predložen sklop za DTMF tonski generator temeljen na Silego GreenPAK SLG46620V čipu i Silego SLG88104V operacijskim pojačalima. Generator omogućuje korisniku odabir kombinacije željenih frekvencija pomoću četiri ulaza i kontrolu ulaza za uključivanje, koji određuje trajanje izlaznih signala.

Karakteristike SLG46620V čipa:

  • Vrsta: Programabilni IC miješanog signala;
  • Analogni blokovi: 8-bitni ADC, dva DAC-a, šest komparatora, dva filtera, ION, četiri integrirana oscilatora;
  • Digitalni blokovi: Do 18 ulazno-izlaznih priključaka, matrica međusobnog povezivanja i kombinatorna logika, programabilni krugovi odgode, programabilni generator funkcija, šest 8-bitnih brojača, tri 14-bitna brojača, tri PWM oscilatora/komparatora;
  • Komunikacijsko sučelje: SPI;
  • Raspon napona napajanja: 1,8…5 V;
  • Raspon radne temperature: -40…85 °C;
  • Verzija paketa: 2 x 3 x 0,55 mm 20-pin STQFN.

Izrazite značajke:

  • Generiranje sinusnih valova pomoću modulacije širine impulsa (PWM)
  • Kombiniranje različitih sinusnih signala u jedan DTMF signal
  • Izvorni kodovi u asemblerskim i C jezicima
  • Dizajniran za rad sa STK500
  • Veličina programskog koda 260 bajtova / konstantna veličina tablice 128 bajtova
  • Korištenje metode pretvorbe tablice

Uvod

Ovaj dokument opisuje tehniku ​​za generiranje DTMF signala (dvotonski višefrekventni signali) pomoću bilo kojeg AVR mikrokontrolera koji sadrži jedinicu modulacije širine pulsa (PWM) i statički RAM. Ovi se signali široko koriste u telefoniji, gdje se reproduciraju kada pritisnete tipke za biranje na telefonskom aparatu. Da biste ispravno generirali DTMF signal, morate spojiti dvije frekvencije zajedno: niska frekvencija(fb) i visoke frekvencije (fa). Tablica 1 pokazuje kako se miješaju različite frekvencije da bi se proizveli DTMF tonovi kada se pritisnu različite tipke.

Slika 1 – Krug generatora DTMF signala

Tablica 1 – Matrica generiranja tonskog 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

Redovi tablice 1 prikazuju niske frekvencije, a stupci visoke frekvencije. Na primjer, matrica pokazuje da kada pritisnete gumb "5", frekvencije fb = 770 Hz i fa = 1336 Hz trebaju biti pomiješane. Kao rezultat zbrajanja dvaju sinusoidnih signala različitih frekvencija nastaje DTMF signal

gdje je omjer amplitude K=A b /A a signali izvora moraju ispunjavati uvjet

Princip rada

osim opće informacije O korištenju modulacije širine pulsa, u nastavku će biti prikazano kako vam modulacija širine pulsa omogućuje generiranje sinusoidnih signala. Sljedeći odlomak opisuje kako koristiti osnovnu frekvenciju prebacivanja za dobivanje različitih frekvencija. Nakon razmatranja teorijske osnove Bit će dan opis samog generatora DTMF signala. Generiranje sinusnih valova

Ovisno o omjeru trajanja visoke VH i niske VL razine napona, mijenja se prosječna vrijednost na PWM izlazu. Ako se omjer između trajanja obiju razina održava konstantnim, kao rezultat će se generirati konstantna razina VAV napona. Slika 2 prikazuje signal moduliran širinom pulsa.


Slika 2 – Generiranje razine istosmjernog napona

Razina napona određena je izrazom:

(3)

Sinusoidni signal može se generirati pod uvjetom da se prosječna vrijednost napona generiranog modulacijom širine impulsa mijenja svakim PWM ciklusom. Odnos između visokih i niskih razina mora biti postavljen u skladu s naponskom razinom sinusnog vala u odgovarajuće vrijeme. Slika 3 ilustrira ovaj proces. Izvorni podaci za PWM izračunavaju se za svako njegovo razdoblje i bilježe u tablici pretvorbe (TC).

Slika 3 također ilustrira odnos između frekvencije osnovnog sinusnog vala i broja uzoraka. Što je veći broj uzoraka (Nc), veća je točnost modeliranja rezultirajućeg signala:

(4)

Frekvencija PWM ovisi o rezoluciji PWM. Pri 8-bitnoj rezoluciji, konačna vrijednost (gornji dio brojača) mjerača vremena je 0xFF (255). Jer Tada mjerač vremena broji unaprijed i unatrag dana vrijednost treba udvostručiti. Stoga se frekvencija preklapanja može izračunati dijeljenjem taktna frekvencija mjerač vremena f CK na 510. Dakle, s frekvencijom takta mjerača vremena od 8 MHz, rezultirajuća frekvencija PWM bit će 15,6 kHz.


Slika 3 – Generiranje sinusoidnog signala pomoću PWM-a

Promjena frekvencije sinusnog vala

Pretpostavimo da se sinusoidalni uzorci čitaju iz tablice pretraživanja ne uzastopno, već jedan po jedan. U tom slučaju, pri istoj brzini uzorkovanja, generirat će se signal dvostruko veće frekvencije (vidi sliku 4).


Slika 4 – Udvostručenje rezultirajuće frekvencije (XSW = 2)

Analogno tome, ako ne čitate svaku drugu vrijednost, već svaku treću, četvrtu, petu (odnosno, širina koraka je 3, 4, 5...), itd. moguće je generirati Nc frekvencije u rasponu . Imajte na umu da za visoke frekvencije rezultirajući valni oblik neće biti sinusoidan. Širinu koraka prema tablici pretvorbe označavamo kao XSW, Gdje

(5)

Izračun trenutne pozicije u TP-u za sljedeću PWM periodu (kada se timer prelijeva) izvodi se pomoću izraza (6). Nova vrijednost na poziciji X LUT ovisi o njegovom prethodnom stanju u položaju X" LUT s povećanjem širine koraka XSW

(6)

Dodavanje različitih frekvencija za dobivanje DTMF signala

DTMF signal se može generirati pomoću izraza (1) i (2). Radi jednostavnosti aritmetičkih operacija, vrijednost koeficijenta K uzima se jednakom 0,75 kako bi se aritmetička operacija zamijenila logičkim pomacima. Uzimajući u obzir izraz (6), trenutna vrijednost za PWM kontrolu može se izračunati izrazom:

a uzimajući u obzir da X LUTa=X" LUta + XSWa ,X LUTb=X" LUTb + XSWb, napišimo konačno

Implementacija DTMF generatora

U ovu aplikaciju raspravlja o konstrukciji generatora DTMF tonova koji koristi 8-bitni PWM izlaz (OC1A) i tablicu sa 128 uzoraka sinusne funkcije (Nc), od kojih je svaki specificiran sa 7 bitova (n). Sljedeći izrazi pokazuju ovu ovisnost i također pokazuju kako izračunati unose tablice pretraživanja:

(9)

Prednost korištenja 7 bita je u tome što je zbroj vrijednosti signala visoke i niske frekvencije veličine jedan bajt. Za podršku punog skupa DTMF tonova, 8 vrijednosti za svaku DTMF frekvenciju iz tablice 1 mora se izračunati i unijeti u tablicu pretraživanja.

Kako bi se postigla veća točnost, implementirano je sljedeće rješenje: vrijednosti izračunate pomoću izraza 5 zahtijevaju samo 5 bajtova. Za korištenje svih 8 bajtova, što će smanjiti pogreške zaokruživanja, ova vrijednost se množi s 8. Pokazivač na tablicu pretraživanja piše se na isti način. Ali u ovom slučaju potrebna su dva bajta za pohranjivanje 8 puta veće vrijednosti. To znači da se moraju izvršiti 3 desna pomaka i operacija radix Nc modula (logičko množenje s Nc-1) prije korištenja ovih bajtova kao pokazivača na vrijednosti sinusnog vala u


Slika 5 – Dijagram modula za spajanje na STK500

PWM signal se generira na pinu OC1A (PD5). Dodatni izlazni filtar pomoći će da signal bude kompatibilniji sa sinusoidnim valom. Kada se smanjuje frekvencija PWM-a, možda će biti potrebno koristiti filtar sa strmijim frekvencijskim odzivom kako bi se dobio dobar rezultat.

Spajanje tipkovnice prikazano je na slici 1. Rad tipkovnice mora biti organiziran na način da je moguće odrediti pritisnutu tipku. To se može učiniti pomoću sljedećeg algoritma:

  1. Određivanje niza pritisnute tipke
    • konfigurirajte prijenosno računalo nižeg reda priključka B kao izlaz i postavite dnevnik. "0"
    • konfigurirajte visoku tetradu priključka B kao ulaz s priključkom pull-up otpornika
    • linija s pritisnutom tipkom definirana je kao znamenka najviše tetrade s logom. "0"
  2. Definiranje stupca pritisnute tipke
    • konfigurirajte visoko prijenosno računalo priključka B kao izlaz i postavite dnevnik. "0"
    • konfigurirajte tetrad nižeg reda priključka B kao ulaz spajanjem pull-up otpornika
    • stupac s pritisnutom tipkom definiran je kao znamenka tetrade nižeg reda s logom. "0"

Napomena: U STK200, otpornici su spojeni u seriju između pinova PORTB konektora i pinova mikrokontrolera BP5, PB6 i PB7 (pogledajte dijagram STK200). To će uzrokovati probleme ako je tipkovnica spojena na PORTB priključak.

Slika 6 ilustrira rad potprograma za određivanje pritisnute tipke. Ovisno o pritisnutoj tipki određuje se trajanje intervala. Rutina prekida koristi ovu vrijednost za izračunavanje PWM postavki za dva DTM sinusna vala. Postupak obrade prekida prikazan je na slikama 7 i 8.

Ova rutina izračunava vrijednost za usporedbu s izlazom timera za sljedeće PWM razdoblje. Prekidna rutina prvo izračunava položaj sljedeće vrijednosti uzorka u tablici pretraživanja i čita tamo pohranjenu vrijednost.

Položaj uzorka u tablici pretraživanja određen je širinom impulsa, a stvarna širina impulsa određena je generiranom frekvencijom.

Konačna vrijednost koja se upisuje u registar usporedbe tajmera određuje se pomoću formule (7), koja uzima u obzir vrijednosti uzorka obje DTMF frekvencije.


Slika 6 – Blok dijagram glavnog programa

Uvođenjem moderne digitalna PBX U telefonskim mrežama Ruske Federacije postupno se širi višefrekventni način prijenosa signala biranja, označen engleskim kraticom DTMF (Dual-Tone Multiple-Frequency). Ponekad se za naziv ovog sustava prijenosa signala biranja koristi još jedan engleski izraz - Touch-None (tonsko biranje). Ova metoda je razvijena 1960. godine, ali pravo širenje počinje 80-ih godina prošlog stoljeća širenjem digitalnih (elektroničkih) telefonskih centrala.

Kod ove metode odašiljanja kontrolnih signala, svaki višefrekventni znamenkasti signal sastoji se od dva tona u skladu s ITU-T preporukom Q.23 "Tehničke značajke telefona s biranjem na dodir".

DTMF frekvencije nisu odabrane harmonijski. To znači da frekvencije nemaju cjelobrojni djelitelj osim 1. Na primjer, frekvencije 1200 i 1600 Hz su harmonici frekvencije 400 Hz (3x400=1200 i 4x400=1600), a frekvencije 697 i 770 Hz su neharmonici.

Svaki signal sadrži dvije frekvencije: jednu odabranu iz donje, a drugu iz gornje skupine frekvencija.

Podudarnost između emitiranih informacija i frekvencija prikazana je u tablici na prednjoj ploči laboratorijske instalacije.

Razina prijenosa u dvofrekventnom paketu, mjerena pri opterećenju od 600 Ohma, iznosi: za nižu frekvencijsku skupinu - minus 6 dBmO ± 2 dB, za gornju frekvencijsku skupinu - minus 3 dBmO ± 2 dB. Frekvencijska razina gornje skupine frekvencija u ukupnom signalu je za 2 ±1 dB viša od frekvencijske razine donje skupine. Ukupna razina svih komponenti frekvencije višeg reda je najmanje 20 dB ispod razine frekvencije nižeg reda.

Uvjeti pod kojima treba doći do normalnog prijema signala su sljedeći: prisutnost dvije frekvencije u signalu, od kojih je jedna odabrana iz donje skupine, a druga iz gornje; frekvencije se ne razlikuju od nominalnih vrijednosti za više od 1,8%; razina svake od dviju frekvencija kreće se od minus 7 do minus 30 dBmO; razlika između razina dviju frekvencija ne prelazi 3 dB; trajanje frekvencijskog signala je najmanje 40 ms.

Prije nego što uključite instalaciju, izvršite sljedeće radnje:

Postavite prekidač S6 u donji položaj;

Postavite prekidač S13 u gornji položaj;

Postavite prekidače generatora gornje i donje frekvencijske skupine u položaj "Isključeno";

Postavite analogni prekidač s ključem (AK) u položaj "Uključeno";

Okrenite gumbe za podešavanje izlaznog napona generatora i otpornik R3 u smjeru suprotnom od kazaljke na satu dok se ne zaustave.

kondicioniranje dtmf signala

1.1 Omogućite instalaciju.

1.2 Spojite osciloskop na ispitnu točku KT3.

1.3 Uključite generator gornje frekvencijske skupine, pritiskom na jednu od tipki prekidača odaberite bilo koju od frekvencija ove skupine.

1.4 Okrenite gumb za podešavanje izlaznog napona generatora kako biste postavili amplitudu signala u CT3 na 0,5 volta.

1.5 Prebacite ulaz osciloskopa na ispitnu točku KT4. Ponovite korake 1.3, 1.4 za generator niže frekvencijske skupine, postavljajući napon u KT4 na 0,5 V.

BILJEŠKA: Kao rezultat izvedenih operacija, signali jednake amplitude iz gornje i donje frekvencijske skupine dovode se na ulaz zbrajala. Nakon postavljanja ovih razina, zaključajte gumbe za podešavanje izlaznog napona generatora.

1.6 Prebacite ulaz osciloskopa na ispitnu točku KT7. Okretanjem gumba otpornika (R3) za podešavanje izlaznog napona uređaja za podešavanje DTMF signala, postavite napon u CT7 na 0,5 volta.

BILJEŠKA: Kao rezultat izvedenih operacija, kontinuirani dvotonski signal dovodi se na ulaz prijemnika, a simbol koji odgovara kombinaciji frekvencija generatora gornje i donje frekvencijske skupine trebao bi se prikazati na indikatoru primljenog simbola , u skladu s tablicom. Indikacija primljenog i identificiranog signala je prisutnost signala na izlazu STD prijemnika (sjaj LED diode).

      Zamjenom frekvencija gornje i donje skupine frekvencija provjerite odgovaraju li kombinacije tih frekvencija primljenim simbolima.