Studija prijemnika i predajnika dtmf signala. Dvotonski multi-frekventni (DTMF) generator na AVR-u Sada da vidimo šta imamo

Prvi dio ove aplikacije opisuje kako se generiraju DTMF signali pomoću MSP430 mikrokontrolera. Dato je objašnjenje najvažnijih specifikacija korištenih u ovom slučaju, te teorijsko i matematičko opravdanje za generiranje sinusnih valova korištenjem pravokutnih valova korištenjem odgovarajućih analognih filtara. Primer takođe uključuje testirane demo programe za generisanje signala pravougaonog talasa na osnovu različitih konfiguracija tajmera mikrokontrolera MSP430. Završni dio daje dijagram strujnog kola za generiranje DTMF signala iz pravokutnih signala.

2 Specifikacija DTMF signala

Skraćenica DTMF je skraćenica za “Dual Tone Multi Frequency” i predstavlja metodu predstavljanja cifara na različitim frekvencijama u svrhu njihovog prenošenja preko analognih komunikacionih linija, npr. telefonska linija. Prilikom razvoja standarda uzet je u obzir uvjet - sve frekvencije moraju biti u "glasovnom" opsegu, što je omogućilo smanjenje zahtjeva za kanal za prijenos. Telefonske mreže koriste DTMF signale za biranje i druge informacije. Unatoč činjenici da se metoda pulsnog biranja još uvijek široko koristi, što je standard, na primjer, u Njemačkoj, vrijeme biranja se značajno povećava, što dovodi do neproduktivnog opterećenja na komunikacijskim linijama. Osim toga, mnogi Dodatne usluge Komunikacija je moguća samo pomoću tonskog biranja. Prilikom kodiranja DTMF metodom, brojevi 0-9 i slova A-D, */E i #/F predstavljaju kombinacije dviju frekvencija:

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

U ovom sistemu kolona predstavlja frekvenciju iz „gornje“ frekvencijske grupe (Hi-Grupa: 1209-1633 Hz), a red predstavlja frekvenciju iz „niže“ frekvencijske grupe (Lo-Grupa: 697-941 Hz) . Tonske frekvencije su odabrane da eliminišu uticaj harmonika. Frekvencije nisu višestruke jedna drugoj i nijedna DTMF frekvencija se ne može dobiti dodavanjem ili oduzimanjem drugih frekvencija. Za generiranje birač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 Federalnog ministarstva pošte i telekomunikacija):

3 Generirajte DTMF signale

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

3.1 Generacija pomoću kvadratnih valova

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

Gdje je a0/2 konstantna komponenta signala. Element zbrajanja sa najnižom ugaonom frekvencijom (w0) naziva se glavni (fundamentalni) harmonik, ostalo su prizvuci ili viši harmonici.

Najjednostavniji kontinuirani signal implementiran pomoću mikrokontrolera je kvadratni val, čiji Fourierov red ima oblik:

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


Rice. 2: Amplitudni spektar signala pravokutnog talasa

Kada se koristi analogni filter, DC komponenta i viši harmonici se efikasno potiskuju, dok na izlazu imamo sinusoidni signal frekvencije jednake frekvenciji originalnog pravokutnog talasa.

3.2 Softver za generiranje meandra

Program proizvodnje meandra mora zadovoljiti sljedeće zahtjeve:

  • Biti u stanju sintetizirati dva nezavisna pravokutna signala.
  • Da bi se razdvojili signali, potrebna su dva izlazna pina za generiranje signala iz "gornje" (Hi-Group) i "niže" (Lo-Group) frekventni opsezi respektivno.
  • Softver bi trebao moći podesiti potrebno trajanje signala u rasponu od približno 65 ms - 100 ms.

Mikrokontroleri serije MSP430 imaju različite ugrađene tajmere koji mogu generirati signale pravokutnog talasa. Porodica '31x/'32x koristi 8-bitni tajmer i tajmer port za generiranje oba signala pravokutnog talasa. Ovaj program testirano na MCLK frekvenciji jednakoj 1,048 MHz. Timer_A u porodici '33x može nezavisno generisati oba potrebna signala. Drugi program koristi ovaj tajmer za generiranje kvadratnih valova i radi sa bilo kojom MCLK frekvencijom. Oba programa će biti detaljno razmotrena u nastavku.

3.2.1 Generiranje kvadratnih valova korištenjem 8-bitnog tajmera i porta za tajmer

Na sl. 3 je dijagram toka postupka inicijalizacije za generiranje DTMF signala. Za sintetizaciju dvije frekvencije koriste se tajmer port i 8-bitni brojači tajmera. Svaki od njih je programabilni registar brojača neophodan za preciznu sintezu potrebnih frekvencija. Ako su brojači portova tajmera kaskadno spojeni u jedan 16-bitni tajmer i taktirani na sistemskoj frekvenciji MCLK, tada se frekvencije visokog opsega mogu generirati sa velikom preciznošću. Kada dođe do prekida, odgovarajući izlaz se prebacuje i oba 8-bitna registra brojača se resetuju. Učitane vrijednosti se pohranjuju u dvije varijable u RAM-u radi spremanja internih registara za druge zadatke.

Frekvencije niskog opsega se generišu pomoću 8-bitnog tajmera. Pošto je registar brojača ovog tajmera širok 8 bita, samo svaki treći prekid izaziva promenu nivoa na potrebnom izlaznom pinu, omogućavajući generisanje istog brojača frekvencije.

Dva izlaza tajmera - porta se koriste za formiranje dva meandra različitih frekvencija.

Rice. 3 Dijagram toka postupka inicijalizacije za generiranje DTMF signala

Procedura inicijalizacije se izvodi samo jednom. Nakon njegovog završetka, heksadecimalna vrijednost prenesenog znaka se čita iz globalne varijable u RAM-u. Jednom kada se dvije frekvencije koje formiraju visoke i niske DTMF tonove generišu iz dvije tabele, sve što je potrebno je inicijalizirati i pokrenuti oba tajmera. Trajanje slanja se kontroliše brojanjem poluperioda „niže“ frekvencije i čita se iz dodatne tabele. Po završetku ove procedure, vraćate se na funkciju prozivanja. Odgovarajuće rutine za rukovanje prekidima prebacuju pinove porta. Ovaj proces je prikazan na sl. 4 i 5.

Zadaci tajmer-porta uključuju samo snimanje dnevnika. nivo na izlazu porta i ponovno učitavanje brojača iz RAM-a, dok rad 8-bitnog tajmera ima malo složeniju strukturu: svaki ulaz u prekid broji se pomoću registra brojača. Izlaz može promijeniti stanje tek nakon tri prekida. Pored toga, svaki poluperiod se takođe računa. Generacija se zaustavlja kada se dostigne određeni broj poluperioda.


Rice. 4 Block – prekidni krug od 8-bitnog tajmera (Lo-Group)


Rice. 5 Blok – krug prekida za tajmer-port (Hi-Group)

; Prilagođene definicije FLLMPY equ 32 ; Množač frekvencije FLL na 1,048 MHz TCLK equ FLLMPY*32768 ; TCLK: FLLMPY x f kvarc DL equ 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č dužine DTMF RTEMP equ r15 ; service register.global DTMF_NR ; globalna varijabla u RAM-u; za DTMF broj (0..F) ; Definicije RAM.even .bss DTMF_TL ; Čak i poravnanje adrese.bss DTMF_TH .bss DTMF_NR ; globalna varijabla u RAM-u; za DTMF broj (0..F).paran ; Definicije za 8-bitni tajmer TCCTL EQU 42H TCPLD EQU 43H TCDAT EQU 44H ; Definicije za univerzalni tajmer port TPCTL equ 04bh ; Tajmer-port kontrola TPCNT1 equ 04ch ; Brojač tajmer-porta 1 TPCNT2 equ 04dh ; Brojač tajmer-porta 2 TPD equ 04eh ; Podaci o tajmer-portu TPE equ 04fh ; Timer-port-resolution.text ; DTMF tablice frekvencija: tablica sadrži; broj MCLK ciklusa za jedan poluperiod. ; Tabela za “gornju” frekvenciju; Dodan korektivni amandman; uzeti u obzir vrijeme ulaska u prekid DTMF_HI .word 0ffffh-(TCLK/(1336*2))+25 ; Visoka frekvencija za 0 .word 0ffffh-(TCLK/(1207*2))+28 ; Visoka frekvencija za 1 .word 0ffffh-(TCLK/(1336*2))+25 ; Visoka frekvencija za 2 .word 0ffffh-(TCLK/(1477*2))+24 ; Visoka frekvencija za 3 riječi 0ffffh-(TCLK/(1207*2))+28 ; Visoka frekvencija za 4 .word 0ffffh-(TCLK/(1336*2))+25 ; Visoka frekvencija za 5 .word 0ffffh-(TCLK/(1477*2))+24 ; Visoka frekvencija za 6 .word 0ffffh-(TCLK/(1207*2))+28 ; Visoka frekvencija za 7 .word 0ffffh-(TCLK/(1336*2))+25 ; Visoka frekvencija za 8 .word 0ffffh-(TCLK/(1477*2))+24 ; Visoka frekvencija za 9 .word 0ffffh-(TCLK/(1633*2))+22 ; Visoka frekvencija za A .word 0ffffh-(TCLK/(1633*2))+22 ; Visoka frekvencija za B .word 0ffffh-(TCLK/(1633*2))+22 ; Visoka frekvencija za C .word 0ffffh-(TCLK/(1633*2))+22 ; Visoka frekvencija za D .word 0ffffh-(TCLK/(1207*2))+28 ; Visoka frekvencija za * .word 0ffffh-(TCLK/(1477*2))+24 ; Visoka frekvencija za # ; Tabela za “nižu” 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 .bajta 0ffh-(TCLK/(697*2*3)) ; Niska frekvencija za 3 .bajta 0ffh-(TCLK/(770*2*3)) ; Niska frekvencija za 4 .bajta 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 # ; Tabela trajanja signala DTMF_L .byte 2*941*DL/1000 ; Poluciklusi za 0 .byte 2*697*DL/1000 ; Polucikli za 1.bajt 2*697*DL/1000 ; Polucikli za 2 .bajta 2*697*DL/1000 ; Poluciklusi za 3.bajta 2*770*DL/1000 ; Poluciklusi za 4 .bajta 2*770*DL/1000 ; Polucikli za 5 .byte 2*770*DL/1000 ; Polucikli za 6 .byte 2*852*DL/1000 ; Poluciklusi za 7 .byte 2*852*DL/1000 ; Poluciklusi za 8 .byte 2*852*DL/1000 ; Polucikli za 9 .byte 2*697*DL/1000 ; Poluciklusi za A .byte 2*770*DL/1000 ; Polucikli za B .bajt 2*852*DL/1000 ; Polucikli za C .bajt 2*941*DL/1000 ; Polucikli za D .bajt 2*941*DL/1000 ; Polucikli za *.bajt 2*941*DL/1000 ; Poluciklusi za # ;********************************************* ********** ************************************ ; DTMF-TX DTMF potprogram ;************************************************** ******************************** DTMF_TX mov.b DTMF_NR,RTEMP ; Spremite broj u privremeni registar mov.b DTMF_L(RTEMP),RCOUNT ; Sačuvajte brojač trajanja; pripremite 8-bitni tajmer za DTMF-Lo frekvenciju mov.b #0a8h,&TCCTL ; Sat iz MCLK mov.b DTMF_LO(RTEMP),&TCPLD ; Priprema registra; preload mov.b #000,&TCDAT ; Učitavanje brojača iz registra; preload bis.b #008h,&IE1 ; Omogući prekide; od 8-bitnog tajmera; priprema porta tajmera za DTMF-Hi frekvenciju rla r15 ; * 2 za 16-bitnu tablicu mov DTMF_HI(RTEMP),&DTMF_TL ; sačuvaj riječ za visokofrekventni mov #003, RTEMP ; brojač za 8-bitni tajmer bis.b #008h,IE2 ; Omogući prekide; iz tajmer-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 tajmer bis.b #HI_OUT+LO_OUT,&TPE ; Omogući DTMF-Hi/Lo izlaze mov.b #090h,&TPCTL ; Omogući tajmer ret ;********************************************** ******** ******************************* ; Tajmer-port prekid;************************************************** *** ******************************* TP_INT xor.b #HI_OUT,&TPD ; Invert DTMF-Hi izlaz mov.b &DTMF_TH,&TPCNT2 ; Loading senior ba

3.2.2 1 Generiranje kvadratnih valova korištenjem Timer_A

Ova rutina za generiranje DTMF signala koristi samo Timer_A za kvadratni talas obje željene frekvencije. Proces sastavljanja izračunava odgovarajuće vrijednosti za tajmer da koristi program bez obzira na vrijednost MCLK frekvencije. Trajanje izlaznog signala određeno je DL konstantom u milisekundama.

; Hardware Definitions; FLLMPY .equ 32 ; Množač frekvencije 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) STACK .equ 600h ; Adresa inicijalizacije steka; RAM definicije; STDTMF .equ 202h ; Status visoke i niske frekvencije TIM32B .equ 204 ; Ekstenzija registra tajmera LENGTH .equ 206h ; DTMF brojač trajanja; .text 0F000h ; Početna adresa programa; ; Inicijalizacija Timer_A: MCLK, kontinuirani način rada, prekidi omogućeni; Priprema izlaznih modula tajmera Timer_A MCLK = 1.048 MHz (automatski) ; INIT MOV #STACK,SP ;Inicijalizacija pokazivača steka CALL #INITSR ;Inicijalizacija množitelja; FLL frekvencije i RAM MOV #ISMCLK+TAIE+CLR,&TACTL ; Inicijalizacija tajmera MOV.B #TA2+TA1,&P3SEL ; Izlazi TA2 i TA1 na portovima P3.5/4 CLR TIM32B; Obriši prošireni registar tajmera BIS #MCONT,&TACTL ; Start timer Timer_A EINT ; Omogućavanje općeg prekida MAINLOOP ... ; Glavna petlja; ;Pritisak na taster: SDTMF sadrži pomak tabele; za 2 frekvencije (0..6,0..6) u visokom i donjem bajtu; MOV&TAR,R5 ; Za početak odmah: DODAJTE FDTMFLO,R5 ; Pomak za kraće vrijeme MOV R5,&CCR1 ; Prva promjena stanja nakon 0.71ms 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; ; Obrađivač prekida iz CCR0 (ovdje se ne koristi); TIMMOD0 ... RETI ; ; Rukovalac prekida iz registara za poređenje hvatanja 1..4; TIM_HND DODAJ &TAIV,PC ; Obrada zahtjeva sa najvišim; RETI prioritet; bez 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širivanje Timer_A na 32 bita RETI ; ; DTMF niska frekvencija: TA1 invertuje izlaz izlazne jedinice 1; Svaka promjena stanja se broji za kontrolu trajanja signala; HCCR1 PUSH R5 ; Čuvanje korištenih registara MOV.B STDTMF,R5 ; Status niske frekvencije DTMF ADD FDTMFLO(R5),&CCR1 ; Dodajte trajanje poluciklusa DEC.B LENGTH ; Da li je trajanje DL signala završeno? JNZ TARET ; No; ; Da, zaustavi DTMF signal: onemogući prekide; BIC #OMRS+OUT+CCIE,&CCTL1 ; Poništi TA1 BIC #OMRS+OUT+CCIE,&CCTL2 ; Resetuj TA2 TARET POP R5 ; Restore R5 RETI; Povratak iz prekida; ; Visokofrekventni DTMF: TA2 invertuje izlaz izlazne jedinice 2; HCCR2 PUSH R5 ; Čuvanje korištenih MOV registara. B STDTMF+1,R5 ; Status visoke frekvencije DTMF ADD FDTMFHI(R5),&CCR2 ; Dodajte trajanje poluciklusa POP R5 ; Restore R5 RETI; Povratak iz prekida; HCCR3 ... ;Zadatak kontrolira registar CCR3 RETI HCCR4 ... ;Zadatak kontrolira registar CCR4 RETI ; ; Tabela DTMF frekvencija: Tabela sadrži; broj MCLK ciklusa po poluciklusu. Prilagođene vrijednosti za; efektivna frekvencija MCLK tokom 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 .word ((TCLK/852)+1)/2 ; 852Hz .word ((TCLK/941)+1)/2 ; 941Hz FDTMFHI .word ((TCLK/1209)+1)/2 ; Visoka frekvencija DTMF1209Hz .word ((TCLK/1336)+1)/2 ; 1336Hz .word ((TCLK/1477)+1)/2 ; 1477Hz .word ((TCLK/1633)+1)/2 ; 1633Hz; ; Tabela sadrži broj poluperioda za vrijeme trajanja DL signala (ms). ; Niža DTMF frekvencija se koristi za brojanje; DTMFL .bajt 2*697*DL/1000 ; Broj poluciklusa.bajt 2*770*DL/1000 ; za DL u ms.byte 2*852*DL/1000 ; .byte 2*941*DL/1000 ; ; .sect "TIMVEC",0FFF0h ; Vektori prekida tajmera Timer_A .word TIM_HND ; Vektor modula 1..4 tajmeri.riječ TIMMOD0 ; Modul tajmera 0 vector.sect "INITVEC",0FFFEh ; Vector Resetovati.riječ INIT

Ispod je malo brže rješenje. Međutim, za to je potrebno više RAM-a jer... Podaci dobijeni iz tabela se ne preračunavaju svaki put, već se pohranjuju ukratko u RAM DTMFLO i DTMFHI. Čitanje se vrši iz rutina prekida tajmera Timer_A. Korištene tablice su identične onima prikazanim u prethodnom primjeru.

FLLMPY .equ 32 ; Množač frekvencije 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 ; Ekstenzija registra tajmera LENGTH .equ 206h ; DTMF brojač trajanja DTMFLO .equ 208h ; Poluciklus niže frekvencije DTMFHI .equ 20Ah; Poluciklus gornje frekvencije STACK .equ 600h ; Adresa inicijalizacije steka.text 0F000h ; Početna adresa programa; Inicijalizacija Timer_A: MCLK, kontinuirani način rada, prekidi omogućeni; Priprema izlaznih modula tajmera Timer_A MCLK = 1.048 MHz (automatski) ; INIT MOV #STACK,SP ; Inicijalizacija pokazivača steka CALL #INITSR ; Inicijalizacija množitelja; FLL frekvencije i RAM MOV #ISMCLK+TAIE+CLR,&TACTL ; Tajmer pokretanja MOV.B #TA2+TA1,&P3SEL ; Izlazi TA2 i TA1 na portovima P3.5/4 CLR TIM32B; Brisanje proširenog registra tajmera BIS #MCONT,&TACTL ;Pokretanje tajmera Timer_A EINT ; Omogućavanje općeg prekida MAINLOOP ... ; Glavna petlja;Pritisak na taster: SDTMF sadrži pomak tabele; za 2 frekvencije (0..6,0..6) u visokom i donjem bajtu; MOV&TAR,R5 ; Za početak odmah ADD FDTMFLO,R5 ; Pomak za kraće vrijeme MOV R5,&CCR1 ; Prva promjena stanja nakon 0.71ms MOV R5,&CCR2 ; 1/(2x697) = 0,71 ms; ; Dohvatiti dva brojača ciklusa za DTMF frekvencije; MOV.B STDTMF+1,R5 ; Visoka frekvencija DTMF MOV FDTMFHI(R5),DTMFHI ; Trajanje poluciklusa MOV.B STDTMF,R5 ; Niska frekvencija DTMF MOV DTMFLO(R5),DTMFLO ; Trajanje poluciklusa; ; Brojač trajanja RRA R5 ; Pripremite bajt indeks 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; ; Obrađivač prekida iz CCR0 (ovdje se ne koristi); TIMMOD0 ... RETI ; ; Rukovalac prekida iz registara za poređenje hvatanja 1..4; TIM_HND DODAJ &TAIV,PC ; Obrada zahtjeva sa najvišim; RETI prioritet; bez 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širivanje Timer_A na 32 bita RETI ; ; DTMF niska frekvencija: TA1 invertuje izlaz izlazne jedinice 1; HCCR1 DODAJ DTMFLO,&CCR1 ; Dodajte trajanje poluciklusa DEC.B LENGTH ; Da li je trajanje DL signala završeno? JNZ TARET ; No; ; Da, zaustavi DTMF signal: onemogući prekide; BIC #OMRS+OUT+CCIE,&CCTL1 ; Poništi TA1 BIC #OMRS+OUT+CCIE,&CCTL2 ; Poništi TA2 TARET RETI ; Povratak iz prekida; Visokofrekventni DTMF: TA2 invertuje izlaz izlazne jedinice 2; HCCR2 DODAJ DTMFHI,&CCR2 ; Dodajte trajanje poluciklusa RETI ; Povratak iz prekida; HCCR3. .. ;Zadatak kontrolira registar CCR3 RETI HCCR4 ... ;Zadatak kontrolira registar CCR4 RETI ; ; Tabele prekida i vektori su identični onima prikazanim u prethodnom primjeru.

3.3 Hardver za generisanje DTMF signala

Kao što je gore navedeno, u opsegu frekvencija 200 Hz.. 4600 Hz, nivo signala frekvencije prenosa mora biti najmanje 20 dB iznad nivoa stranih signala (šuma). Osim toga, na osnovu specifikacije, signali iz “gornje” i “niže” grupe moraju imati različite nivoe, tako da svaki signal zahtijeva svoj filter. Amplitude sinusoidne frekvencije mogu se dobiti iz Fourierovog reda.

Da biste odabrali granične frekvencije prilikom dizajniranja analognog filtera, morate se pridržavati sljedećih zahtjeva na osnovu:

  • Jer potrebno je obezbijediti mogućnost bilo kakve kombinacije frekvencija „niže“ grupe sa frekvencijama „gornje“ grupe, pri čemu razlika u nivoima između najniže i najviše frekvencije u grupi ne smije prelaziti 3 dB.
  • Za najnižu frekvenciju u grupi (f1), supresija harmonika (3f1) ne bi trebala biti gora od 20 dB. Ispunjenje ovog uslova je najkritičnije za nižu frekvenciju u grupi, jer što je dalje moguće od granične frekvencije filtera.

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

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

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

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

Drugi uslov će automatski biti 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-a serija i slika 2):

Kao rezultat proračuna za frekvencije obje grupe, imamo traženi red filtera n=1,15. Dakle, zahtjeve će zadovoljiti filter 2. reda, koji se može izgraditi na operacionom pojačalu. Ako koristite filter trećeg reda, potrebna su vam samo dva dodatna elementa. Međutim, to će smanjiti zahtjeve za disperziju parametara komponenti. Oba gornja zahtjeva bit će ispunjena ako je granična frekvencija unutar sljedećih granica:

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

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

Prilikom proračuna filtera povećana je pažnja posvećena supresiji harmonika, razlika u nivou unutar grupe je fiksirana na 2 dB. Kao rezultat toga, granične frekvencije su 977 Hz i 1695 Hz. Rezultirajuća supresija harmonika značajno premašuje zahtjeve. Razlika u nivoima frekvencije u grupi je u okviru zahteva čak iu slučaju odstupanja granične frekvencije povezanog sa širenjem parametara upotrebljenih komponenti. Prilikom izračunavanja vrijednosti filterskih elemenata, otpornici su odabrani na osnovu njihove maksimalne blizine standardnim vrijednostima serije E12.

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

Dakle, koristeći 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čunarskih resursa.

Koristeći programe simulatora, provjerene su približne vrijednosti. Odziv filtara vrlo se poklapa sa izračunatim frekvencijskim odzivom.


Rice. 6: Amplitudni spektar pravokutnog signala frekvencije 697 Hz na izlazu filtera 3. reda

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


Rice. 7: Amplitudni spektar pravokutnog signala frekvencije 941 Hz na izlazu filtera 3. reda

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

Kako bi se koristile jeftine komponente s velikim varijacijama u parametrima, provedeno je dodatno modeliranje. Rezultati simulacije su pokazali da je dozvoljeni razmak u vrijednostima otpornika i kondenzatora 10%.


Slika 8: Histogram – distribucija nivoa signala u grupi


Slika 9: Histogram – Harmonska supresija

Na sl. Na slikama 8 i 9 prikazani su histogrami dobijeni Monte Carlo analizom. U ovom slučaju, vrijednosti komponenti su nasumično varirale u rasponu od 10%. Nakon 100 iteracija, rezultati za sve simulirane filtere su iscrtani u histogramima. U histogramu na sl. Na slici 8 prikazana je razlika u nivou između frekvencija unutar grupe. Maksimalna dozvoljena 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 slabljenje harmonika za „nižu“ frekvencijsku grupu. Potrebna vrijednost od 20 dB se postiže 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 filter "niže" frekvencijske grupe također se provode za filter "gornje" frekvencijske grupe.

Oba filtera imaju identično kolo. Jedina razlika je u graničnim frekvencijama filtera za gornju i donju frekvencijsku grupu. R1 i C1 formiraju visokopropusni filter 1. reda. Jer ulazni otpor kruga također ovisi o R1, vrijednost ovog elementa ne bi trebala biti premala; u suprotnom, izlazi mikrokontrolera će biti preopterećeni i kvadratni valni oblik će biti izobličen. U ovom slučaju, signalu će se dodati dodatne frekvencije koje nastaju kao rezultat intermodulacionog izobličenja, što će negativno utjecati na omjer signal-šum.

Prijenosna funkcija filtera višeg reda ne može se dobiti korištenjem samo pasivnih komponenti.

Dakle, filter 2. reda mora sadržavati op-amp. Pojačanje aktivnog filtera je postavljeno 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 signala pravokutnog talasa (vidi Fourierov red i sliku 2). Dodatni sabirač prilagođava željeni izlazni nivo. Zbog konstantne komponente pravougaonog signala, radna tačka op-pojačala je postavljena na nivo Vcc/2 (vidi i Fourierov red i sl. 2). U ovom slučaju, konstantna komponenta ne može biti eliminirana ulaznim razdjelnikom R1-1/R1-2. Za razdvajanje OS kola jednosmjernim naponom koristi se kondenzator C3.

Na svakom od izlaza analognog filtera generira se signal gornje i donje frekvencijske grupe. U dodatnom sabiraču ovi signali se dodaju. U ovom elementu kola možete podesiti 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 podesiti kako bi odgovarala različitim zahtjevima u različitim zemljama.

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

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


Rice. 10: Shematski dijagram analogni filteri sa dodatnim sabiračem

Kondenzatori C1-1 i C1-2 kombinuju dva signala zajedno na Vcc/2 radnoj tački. Ne biste trebali odabrati prevelike vrijednosti za ove elemente, jer oni su niskopropusni filterski elementi za uklanjanje niskofrekventnih subharmonika. Filterski kondenzator C5 eliminiše šum referentnog napona. Dodatni kondenzator C6 povezan paralelno sa otpornikom povratne sprege R6 formira visokopropusni filter prvog reda. Ako je odabrana najniža granična frekvencija filtera, dodatno filtriranje visokofrekventnih intermodulacijskih smetnji poboljšava kvalitetu izlaznog signala, ali će doći do prigušenja najviših frekvencija „gornje“ grupe. U nekim slučajevima, generisanje najviše DTMF frekvencije od 1633 Hz nije potrebno jer koristi se samo za formiranje servisnih simbola A-D, a odnos signal-šum se može poboljšati snižavanjem granične frekvencije filtera. Dakle, povećanje granične frekvencije dovodi do povećanja nivoa visokofrekventnih smetnji, ali se istovremeno smanjuje negativan uticaj na najviše frekvencijske komponente DTMF signala.

4 Rezultati istraživanja signala DTMF predajnika

Spektrogrami ispod (sl. 11 i 12) prikazuju izlazne signale DTMF predajnika na različitim frekvencijama. Na sl. Slika 11 prikazuje amplitudski spektar simbola “1”. Frekvencije potrebne za njegov prenos - 697 i 1207 Hz - su na nivou od -10,5 dB i -8,5 dB, respektivno. Harmonici na 2091 i 3621 Hz su potisnuti za skoro 30 dB. Za prijenos simbola "D" generiraju se dvije najveće frekvencije - 941 i 1633 Hz. Kao što se može vidjeti sa sl. 12, nivo niske frekvencije je -12 dB, nivo visoke frekvencije je -11 dB. Odgovarajući harmonici su oslabljeni za više od 30 dB. Dakle, izmjerene vrijednosti odgovaraju rezultatima simulacije i zahtjevima specifikacije.


Rice. 11: Amplitudni spektar simbola “1”: 697 i 1207 Hz


Rice. 12: Amplitudni spektar simbola “D”: 941 i 1633 Hz

Apsolutna frekvencijska tačnost generiranih signala pravokutnog talasa ne može se postići kada se koriste dva različita tajmera; rezultat će ovisiti o kombinaciji dvije frekvencije i vrsti korištenih tajmera. Razlog za to je sukob prekida tajmera. Međutim, potrebna je tačnost od ±1,8% ispunjena sa velikom marginom.

Ako se 8-bitni tajmer i tajmer porta koriste na sistemskoj frekvenciji od MCLK 1,048 MHz, tada se frekvencije „niže“ grupe generiraju s preciznošću ne gorom od 0,3%. Za frekvencije „gornje“ grupe u praksi se dobija odstupanje od najviše 0,5%.

Jedini izuzetak je DTMF karakter “D”, za koji se generišu najviše frekvencije. Kao rezultat toga, u ovoj kombinaciji frekvencija „gornje“ grupe 1633 Hz ima odstupanje od -0,97%.

Bez ovog izuzetka, čak i najveća frekvencija od 1633 Hz se generiše sa tačnošću većom od 0,5%. Maksimalna odstupanja za različite frekvencije data su u tabeli:

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

MCLK, MHz 1,048 2,096 3,144 3,800
Multiplikator 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, zauzima otprilike 300 bajtova, zahtijeva malu količinu RAM-a i ROM-a. Zahvaljujući ugrađenom modulu tajmera, potrebne frekvencije se generišu sa velikom preciznošću bez trošenja CPU opterećenja. U konfiguraciji u kojoj se za generiranje koriste 8-bitni tajmer i tajmer/port, rutine prekida zauzimaju približno 12% CPU resursa. U slučaju kada frekvencije generiše tajmer Timer_A, opterećenje CPU-a za obradu rutina prekida se smanjuje na 6%. Kao rezultat toga, drugi zadaci mogu biti pokrenuti dok se DTMF signali prenose, ili se CPU može staviti u režim niske potrošnje kako bi se smanjila potrošnja struje.

Dobra funkcionalnost opisanog modula za generiranje DTMF signala korištenjem pravokutnih signala demonstrira se dizajnom hardverskog kola. Jer U krugu je moguće koristiti komponente sa širokim rasponom parametara, 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 kontrolni kontroler.

Ako je u određenom slučaju potrebno povećati omjer signal-šum, korištenjem dodatnog op-pojačala, može se konstruirati filter za dalje suzbijanje intermodulacionog izobličenja. Takvo dodatno operaciono pojačalo već je prisutno u četverostrukom op-pojačalu u DIL14 paketu.

6 Linkovi

Bundesamt Post und Telekommunikacija (Federalni ured za poštu i telekomunikacije): Zupka 223 ZV 5, Zulassungsvorgen Zur Anschaltung Analoge wahlanschlusse (Ausgenomen.lruf- und Durchwahlanschlusses (Službena specifikacija za terminalne uređaje povezane s analognim telefonskim linijama, za isključenje zahtjevi sigurnosti i poziva) / ISDN Deutschen Bundespost Telekoma; Bundesministerium fur Post und Telekommunikation, nacrt, Bonn, april 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: porodica MSP430, izvještaj o primjeni mjerenja, Texas Instruments, izdanje 2.1, januar 1997., SLAAE10B Texas Instruments: porodica MSP430, arhitektonski korisnički vodič i biblioteka modula, Texas Instruments, 1996., SLAUE, S. Porodica MSP430, Korisnički vodič za softver, Texas Instruments, 1996. Texas Instruments: porodica MSP430, Korisnički vodič za alate za asembler, Texas Instruments, 1996. Siwy, Robert: Systementwicklung einer Telekom-Applikation zum Senden und Empfangen von DTMF-Signalen Trollermit MSP3 (Mikrokontroler signala DTMF3) telekomunikacioni sistem za prijem i prenos digitalnih signala baziran na mikrokontroleru MSP430); Diplomarbeit, Fachhochschule Landshut, maj 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. Pročitajte Wikipediju.

Odluku o sklapanju takvog uređaja diktirala je želja da se pokušaju implementirati složeni analogni signali pomoću mikrokontrolera. Za ovaj uređaj nije planirana praktična upotreba, ali možda bi nekom takav uređaj bio koristan? Iskoristi ga!

Izvor DTMF generatora


Sada da vidimo šta imamo.

Signal se generira pomoću PWM-a i RC kolo se koristi da mu daju željeni oblik. Kao rezultat, nakon RC lanca, dobijamo sljedeći signal (pritisnuto je dugme 6):

Duž cijele krivulje korisnog signala promatramo visokofrekventni češalj (frekvencija je viša od čujne, tako da neće stvarati šum) - to je rad RC kruga. Liniju možete učiniti glatkijom povećanjem kapacitivnosti kondenzatora ili otpora otpornika, ali u ovom slučaju raspon korisnog signala će se značajno smanjiti.

Gledamo spektar signala i uvjeravamo se da postoje dvije odvojene frekvencije (PWM frekvencija je otiš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 podataka za ova mikro kola.

DTMF generator
- DTMF dekoder


P.S.Šteta što ATtiny2313 nema ADC - možete koristiti i DTMF dekoder! Ali u redu je, ponoviću na mega, svakako ću priložiti.

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

Tonsko biranje (Dual-tone multi-frequency signaling, DTMF) razvila je Bell Labs 50-ih godina prošlog vijeka za tada revolucionarni telefon sa dugmadima. Za predstavljanje i prijenos digitalnih podataka u tonskom modu, koristi se par frekvencija (tonova) opsega govornih frekvencija. Sistem definiše dve grupe po četiri frekvencije, a informacije se kodiraju prenosom dve frekvencije istovremeno, po jedna iz svake grupe. Ovo daje ukupno šesnaest kombinacija koje predstavljaju šesnaest različitih brojeva, simbola i slova. DTMF kodiranje se sada koristi u širokom spektru komunikacijskih i kontrolnih aplikacija, kao što je dokazano, na primjer, u Preporuci Međunarodne unije za telekomunikacije (ITU) Q.23.

Ovaj članak opisuje sklop DTMF tonskog generatora koji reproducira svih osam frekvencija i generira rezultirajući dvotonski izlazni signal. Predmetni sistem je izgrađen na Silego GreenPAK™ SLG46620V čipu i operacionih pojačivača Silego SLG88104V. Rezultirajući proizvedeni signal je zbir dvije frekvencije određene redom i stupcem telefonske tipkovnice.

Predloženo kolo koristi četiri ulaza za odabir kombinacije frekvencija koja će se generirati. Kolo također ima ulaz za omogućavanje, koji pokreće generiranje i određuje dužinu vremena u kojem se signal prenosi. Izlazna frekvencija generatora je u skladu sa ITU standardom za DTMF.

DTMF tonovi

DTMF standard definira kodiranje brojeva 0-9, slova A, B, C i D, te znakova * i # kao kombinaciju dvije frekvencije. Ove frekvencije su podijeljene u dvije grupe: grupu visokih frekvencija i grupu niske frekvencije. Tabela 1 pokazuje frekvencije, grupe i odgovarajuće prikaze simbola.

Tabela 1. DTMF tonsko kodiranje

Grupa visokih tonova

Niskopropusna grupa

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

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

Rezultirajući signal opisan gore može se opisati kao:

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

gdje su fhigh i flow odgovarajuće frekvencije iz grupa visoke i niske frekvencije.

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

Rice. 1. DTMF ton

Rice. 2. DTMF tonski spektar

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

Tabela 2. Trajanje signala tonskog biranja

Tip biranja

Grupa visokih tonova

Grupa visokih tonova

Ručno biranje

Automatsko biranje

Za veću fleksibilnost, DTMF generator ponuđen u ovom priručniku opremljen je ulazom za omogućavanje, 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 omogućavanje.

Analogni dio DTMF generatorskog kola

ITU Preporuka Q.23 definiše DTMF signale kao analogne signale stvorene sa dva sinusna talasa. U predloženom kolu DTMF generatora, Silego GreenPAK SLG46620V IC generira kvadratne signale sa željenim DTMF frekvencijama. Za dobijanje sinusoidnih signala tražene frekvencije i formiranje rezultujućeg signala (zbir dva sinusna talasa), potrebni su analogni filteri i sabirač. Iz tog razloga, u ovom projektu je odlučeno da se koriste filteri i kombinatori bazirani na SLG88104V operativnim pojačalima.

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

Rice. 3. Analogno kolo za obradu za prijem DTMF signala

Analogni filteri se koriste za dobijanje sinusoidnih signala iz pravougaonih impulsa. Nakon izvršenog filtriranja, dva signala se sumiraju i generira se željeni izlazni dvotonski DTMF signal.

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

Rice. 4. Spektar pravokutnog signala

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

Analiza ovog izraza nam omogućava da zaključimo da ako analogni filteri imaju dovoljno slabljenja za harmonike, onda je sasvim moguće dobiti sinusoidne signale s frekvencijom jednakom frekvenciji izvornog pravokutnog signala.

Uzimajući u obzir toleranciju nivoa smetnji definisanu u standardu Q.23, potrebno je osigurati da svi harmonici budu oslabljeni za 20 dB ili više. Osim toga, bilo koja frekvencija iz niskopropusne grupe mora biti kombinovana sa bilo kojom frekvencijom iz visokopropusne grupe. Uzimajući u obzir ove zahtjeve, razvijena su dva filtera, po jedan za svaku grupu.

Oba filtera su bili niskopropusni Butterworthovi filteri. Slabljenje Butterworthovog filtera reda n može se izračunati na sljedeći način:

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

gdje je fc granična frekvencija filtera, n red filtera.

Razlika u slabljenju između najniže frekvencije i najviše frekvencije svake grupe ne može biti veća od 3 dB, tako da:

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

Date apsolutne vrijednosti:

A(fVIŠE) 2 / A(CVIJET) 2 > 2.

Također, kao što smo ranije rekli, harmonijsko slabljenje bi trebalo biti 20 dB ili više. U ovom slučaju, najgori slučaj će biti najniža frekvencija u grupi, jer je njen 3. harmonik najniža frekvencija i najbliži je graničnoj frekvenciji filtera. S obzirom da je 3. harmonik 3 puta manji od osnovnog, filter mora ispunjavati uslov (apsolutne vrijednosti):

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

Ako se ove jednačine primjenjuju na obje grupe, tada korišteni filteri moraju biti filteri drugog reda. To znači da će imati dva otpornika i dva kondenzatora svaki ako se implementiraju pomoću op-pojačala. Kada bi se koristili filteri trećeg reda, osjetljivost na tolerancije komponenti bila bi niža. Odabrane granične frekvencije filtera su 977 Hz za niskopropusnu grupu i 1695 Hz za visokopropusnu grupu. Na ovim vrijednostima, razlike u nivoima signala u frekventnim grupama su u skladu s gore navedenim zahtjevima, a osjetljivost na promjene granične frekvencije zbog tolerancija komponenti je minimalna.

Šematski dijagrami filtera implementiranih pomoću SLG88104V prikazani su na slici 5. Ocjene prvog RC parovi odabran na takav način da ograniči izlaznu struju SLG46620V čipa. Druga veza filtera određuje pojačanje, koje je 0,2. Amplituda pravokutnih signala postavlja radnu tačku operativnog pojačala na 2,5 V. Neželjeni naponi su blokirani kondenzatorima izlaznog filtera.

Rice. 5. Šematski dijagrami izlaznih filtera

Na izlazu se zbrajaju signali filtera, a rezultirajući signal je zbir harmonika odabranih iz grupe niskih i visokih frekvencija. Da bi se kompenziralo slabljenje filtera, amplituda izlaznog signala može se podesiti pomoću dva otpornika R9 i R10. Slika 6 prikazuje kolo za sabiranje. Slika 7 prikazuje cijeli analogni dio kola.

Rice. 6. Šematski dijagram sabirača

Rice. 7. Analogni dio kola

Digitalni dio kola DTMF generatora tona

Digitalni dio kola DTMF tonskog generatora uključuje cijeli set generatora pravokutnih valova - po jedan za svaku DTMF frekvenciju. Kako je za kreiranje ovih generatora potrebno osam brojača, za njihovu implementaciju je odabran GreenPAK SLG46620V čip. Na izlazima digitalnog kola generiraju se dva pravokutna signala, po jedan za svaku frekvencijsku grupu.

Signali pravokutnog talasa se generišu pomoću brojača i D flip-flopova i imaju radni ciklus od 50%. Iz tog razloga, frekvencija prebacivanja 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 sa 4 ili 12. Razdjelnik se bira uzimajući u obzir kapacitet bita i maksimalnu vrijednost svakog brojača potrebnu za dobivanje određenog brojača. frekvencija.

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

SLG46620V ima samo tri standardna 14-bitna brojača, tako da je jedna od nižih frekvencija implementirana pomoću 8-bitnog CNT8 brojača. Da bi broj uzoraka pao u opseg od 0...255, za taktiranje ovog CNT8 bilo je potrebno koristiti signal RC oscilatora podijeljen sa 12. Za ovo kolo frekvencija sa najvećim brojem uzoraka, tj. je odabrana najniža frekvencija. To nam je omogućilo da minimiziramo grešku.

Tabela 3 prikazuje parametre svakog kvadratnog talasa.

Tabela 3. Parametri generatora kvadratnih impulsa

Sat

Greška frekvencije [%]

Niskopropusna grupa

Grupa visokih tonova

Kao što se vidi iz tabele, sve frekvencije imaju grešku manju od 1,8%, pa su u skladu sa DTMF standardom. Ove izračunate karakteristike, na osnovu idealne frekvencije RC oscilatora, mogu se podesiti mjerenjem izlazne frekvencije RC oscilatora.

Iako u predloženom kolu svi generatori rade paralelno, signal samo jednog generatora iz svake grupe bit će poslan na izlaz mikrokola. Izbor specifičnih signala određuje korisnik. Ovo se radi pomoću četiri GPIO ulaza (dva bita za svaku grupu) sa tabelom istinitosti prikazanom u tabeli 4.

Tabela 4. Tabela za odabir frekvencija iz grupe niske frekvencije

Niskopropusna grupa

Tabela 5. Tabela za odabir frekvencije iz grupe visokih frekvencija

Grupa visokih tonova

Slika 8 prikazuje logičko kolo generatora pravougaonog talasa od 852 Hz. Ovaj obrazac se ponavlja za svaku frekvenciju sa odgovarajućim postavkama brojača i LUT konfiguracijom.

Rice. 8. Pravougaoni generator impulsa

Brojač generiše izlaznu frekvenciju koja je određena njegovim postavkama. Ova frekvencija je jednaka dvostrukoj frekvenciji odgovarajućeg DTMF tona. Parametri konfiguracije brojila prikazani su na slici 9.

Rice. 9. Primjer postavljanja pravokutnog brojača generatora impulsa

Izlazni signal brojača je spojen 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.

Rice. 10. Primjer postavljanja okidača pravokutnog generatora impulsa

Signal sa DFF izlaza se dovodi na ulaz LUT tablice istine. 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”.

Rice. 11. Primjer postavljanja tablice istinitosti generatora kvadratnog impulsa

Kao što je gore spomenuto, predloženo kolo ima ulaz za omogućavanje. Ako postoji logička jedinica "1" na ulazu za omogućavanje dozvole, tada se generirani pravokutni signali dovode na par izlaza mikrokola. Trajanje prijenosa je jednako trajanju impulsa na ulazu za omogućavanje. Za implementaciju ove funkcije 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.

Rice. 12. Izlazni krug grupe visokih tonova

4-bitni LUT1 konfigurisan kao logički element ILI, tako da izlazi logička jedinica “1” ako je “1” prisutna na bilo kojem od njegovih ulaza. C1/C0 tablice istine dozvoljavaju da se izabere samo jedan od oscilatora, tako da 4-bitni LUT1 određuje koji signal se izlazi. Izlaz ovog LUT-a je povezan sa 2-bitnim LUT4, koji prenosi signal samo ako je ulaz za omogućavanje logički "1". Slike 13 i 14 prikazuju konfiguracije 4-bitnog LUT1 i 2-bitnog LUT4.

Rice. 13. 4-bitna LUT1 konfiguracija

Rice. 14. 2-bitna LUT4 konfiguracija

Pošto više nije bilo 4-bitnih LUT tablica istine, dva 3-bitna LUT-a su korištena za niskopropusnu grupu.

Rice. 15. Niskopropusni grupni izlazni krug

Kompletno interno kolo GreenPAK SLG46620V prikazano je na slici 16. Slika 17 prikazuje konačni dijagram DTMF generatora.

Rice. 16. Blok dijagram DTMF tonskog generatora

Rice. 17. Šematski dijagram DTMF tonskog generatora

Testiranje kola DTMF generatora

U prvoj fazi testiranja predloženog DTMF generatora odlučeno je da se osciloskopom provjere frekvencije svih generiranih pravokutnih signala. Kao primjer, slike 18 i 19 prikazuju izlazne kvadratne talase za 852 Hz i 1477 Hz.

Rice. 18. Kvadratni talas 852 Hz

Rice. 19. Kvadratni val 1477 Hz

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

Rice. 20. DTMF ton 770 Hz i 1209 Hz

Rice. 21. DTMF ton 941 Hz i 1633 Hz

Zaključak

U ovom članku je predloženo kolo za DTMF tonski generator baziran na Silego GreenPAK SLG46620V čipu i Silego SLG88104V operativnim pojačalima. Generator omogućava korisniku da odabere kombinacije željenih frekvencija koristeći četiri ulaza i kontroliše ulaz za omogućavanje, koji određuje trajanje izlaznih signala.

Karakteristike SLG46620V čipa:

  • Tip: Programabilni mješoviti signal IC;
  • Analogni blokovi: 8-bitni ADC, dva DAC-a, šest komparatora, dva filtera, ION, četiri integrisana oscilatora;
  • Digitalni blokovi: do 18 I/O portova, interkonektivna matrica i kombinatorna logika, programabilna kola kašnjenja, programabilni generator funkcija, šest 8-bitnih brojača, tri 14-bitna brojača, tri PWM oscilatora/komparatora;
  • Komunikacijski interfejs: SPI;
  • Opseg napona napajanja: 1,8…5 V;
  • Raspon radne temperature: -40…85 °C;
  • Verzija pakovanja: 2 x 3 x 0,55 mm 20-pin STQFN.

Prepoznatljive karakteristike:

  • Generiranje sinusnih valova korištenjem modulacije širine impulsa (PWM)
  • Kombinovanje različitih sinusnih signala u jedan DTMF signal
  • Izvorni kodovi na asembleru i C jezicima
  • Dizajniran za rad sa STK500
  • Veličina programskog koda 260 bajtova / veličina konstantne tabele 128 bajtova
  • Korištenje metode konverzije tablice

Uvod

Ovaj dokument opisuje tehniku ​​za generisanje DTMF signala (dvotonski multifrekventni signali) koristeći bilo koji AVR mikrokontroler koji sadrži jedinicu za modulaciju širine impulsa (PWM) i statički RAM. Ovi signali se široko koriste u telefoniji, gdje se reprodukuju kada pritisnete tipke za biranje telefonskog aparata. Da biste pravilno generirali DTMF signal, trebate superponirati dvije frekvencije zajedno: niske frekvencije(fb) i visoke frekvencije (fa). Tabela 1 pokazuje kako se različite frekvencije miješaju da bi se proizvele DTMF tonovi kada se pritisnu različiti tasteri.

Slika 1 – Krug generatora DTMF signala

Tabela 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 tabele 1 pokazuju vrednosti niske frekvencije, a kolone visoke frekvencije. Na primjer, matrica pokazuje da kada pritisnete dugme “5”, frekvencije fb = 770 Hz i fa = 1336 Hz treba da se pomiješaju. Kao rezultat sabiranja dva sinusoidna signala različitih frekvencija, formira se DTMF signal

gdje je odnos amplituda K=A b /A a izvorni signali moraju ispuniti uslov

Princip rada

Osim toga opće informacije O upotrebi modulacije širine impulsa, ispod će biti prikazano kako vam modulacija širine impulsa omogućava generiranje sinusoidnih signala. Sljedeći paragraf opisuje kako koristiti osnovnu frekvenciju prebacivanja da biste dobili različite frekvencije. Nakon razmatranja teorijske osnove Biće dat opis samog generatora DTMF signala. Generisanje sinusnih talasa

U zavisnosti od odnosa trajanja visokog VH i niskog VL naponskog nivoa, prosečna vrednost na PWM izlazu se menja. Ako se omjer između trajanja oba nivoa održava konstantnim, kao rezultat će se generirati konstantan nivo VAV napona. Slika 2 prikazuje modulirani signal širinom impulsa.


Slika 2 – Generisanje nivoa jednosmernog napona

Nivo napona je određen izrazom:

(3)

Sinusoidni signal se može generirati pod uvjetom da se prosječna vrijednost napona generiranog modulacijom širine impulsa mijenja svakim PWM ciklusom. Odnos između visokog i niskog nivoa mora se postaviti u skladu sa naponskim nivoom sinusnog talasa u odgovarajućem trenutku. Slika 3 ilustruje ovaj proces. Izvorni podaci za PWM se izračunavaju za svaki njegov period i bilježe u tablici konverzije (TC).

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

(4)

Frekvencija PWM ovisi o PWM rezoluciji. U 8-bitnoj rezoluciji, konačna vrijednost (vrh broja) tajmera je 0xFF (255). Jer Tajmer tada broji naprijed i nazad datu vrijednost treba udvostručiti. Stoga se frekvencija prebacivanja može izračunati dijeljenjem frekvencija sata tajmer f CK na 510. Dakle, sa frekvencijom takta tajmera od 8 MHz, rezultujuća PWM frekvencija će biti 15,6 kHz.


Slika 3 – Generisanje sinusoidnog signala koristeći PWM

Promjena frekvencije sinusnog vala

Pretpostavimo da se sinusoidni uzorci čitaju iz tabele za pretraživanje ne uzastopno, već jedan po jedan. U ovom slučaju, pri istoj brzini uzorkovanja, generiraće se signal dvostruke frekvencije (vidi sliku 4).


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

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

(5)

Izračunavanje trenutne pozicije u TP-u za naredni PWM period (kada se tajmer prekorači) vrši se pomoću izraza (6). Nova vrijednost na poziciji X LUT zavisi od njegovog prethodnog stanja na poziciji X" LUT sa povećanjem širine koraka XSW

(6)

Dodavanje različitih frekvencija za dobijanje DTMF signala

DTMF signal se može generirati korištenjem izraza (1) i (2). Radi jednostavnosti aritmetičkih operacija, vrijednost koeficijenta K se uzima 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:

i uzimajući to u obzir X LUTa=X" LUta + XSWa ,X LUTb=X" LUTb + XSWb, hajde da to konačno zapišemo

Implementacija DTMF generatora

IN ovu aplikaciju raspravlja o konstrukciji DTMF tonskog generatora koristeći 8-bitni PWM izlaz (OC1A) i tablicu sa 128 uzoraka sinusne funkcije (Nc), od kojih je svaki specificiran sa 7 bita (n). Sljedeći izrazi pokazuju ovu ovisnost i također pokazuju kako izračunati unose u tabeli za pretraživanje:

(9)

Prednost korištenja 7 bita je u tome što je zbir vrijednosti signala visoke i niske frekvencije jedan bajt. Da bi se podržao cijeli skup DTMF tonova, 8 vrijednosti za svaku DTMF frekvenciju iz Tabele 1 mora se izračunati i unijeti u tabelu za pretraživanje.

Da bi se postigla veća tačnost, implementirano je sledeće rešenje: vrednosti ​​računate korišćenjem izraza 5 zahtevaju samo 5 bajtova. Da bi se koristilo svih 8 bajtova, što će smanjiti greške zaokruživanja, ova vrijednost se množi sa 8. Pokazivač na tabelu pretraživanja je napisan 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 pomaka udesno i operacija modula radiksa Nc (logičko množenje sa Nc-1) prije upotrebe ovih bajtova kao pokazivača na vrijednosti sinusnog vala u


Slika 5 – Dijagram modula za povezivanje na STK500

PWM signal se generiše na pinu OC1A (PD5). Dodatni izlazni filter će pomoći da signal bude kompatibilniji sa sinusoidnim valnim oblikom. Prilikom smanjenja PWM frekvencije, možda će biti potrebno koristiti filter sa strmijom frekvencijom da bi se postigao dobar rezultat.

Povezivanje tastature je prikazano na slici 1. Rad tastature mora biti organizovan na način da je moguće odrediti pritisnut taster. Ovo se može uraditi korišćenjem sledećeg algoritma:

  1. Određivanje niza pritisnute tipke
    • konfigurirajte prijenosno računalo nižeg reda porta B kao izlaz i postavite dnevnik. "0"
    • konfigurišite visoku tetradu porta B kao ulaz sa priključkom pull-up otpornika
    • linija sa pritisnutim dugmetom je definisana kao cifra najveće tetrade sa log. "0"
  2. Definiranje kolone pritisnute tipke
    • konfigurirajte high notebook porta B kao izlaz i postavite dnevnik. "0"
    • konfigurišite tetradu nižeg reda porta B kao ulaz povezivanjem pull-up otpornika
    • kolona sa pritisnutim dugmetom je definisana kao cifra tetrade nižeg reda sa log. "0"

Napomena: U STK200, otpornici su povezani serijski između pinova konektora PORTB i pinova mikrokontrolera BP5, PB6 i PB7 (pogledajte dijagram STK200). Ovo će uzrokovati probleme ako je tastatura povezana na PORTB konektor.

Slika 6 ilustruje rad potprograma za određivanje pritisnute tipke. U zavisnosti od pritisnute tipke, određuje se trajanje intervala. Rutina prekida koristi ovu vrijednost za izračunavanje PWM postavki za dva DTM tonska sinusna vala. Postupak rukovanja prekidom prikazan je na slikama 7 i 8.

Ova rutina izračunava vrijednost za poređenje sa izlazom tajmera za sljedeći PWM period. Rutina prekida prvo izračunava poziciju sljedeće vrijednosti uzorka u tabeli za pretraživanje i čita vrijednost pohranjenu tamo.

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

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


Slika 6 – Blok dijagram glavnog programa

Sa uvođenjem modernog digitalna PBX U telefonskim mrežama Ruske Federacije postepeno se širi višefrekventna metoda prijenosa signala biranja, označena engleskom skraćenicom DTMF (Dual-Tone Multiple-Frequency). Ponekad se za naziv ovog sistema za prenos signala biranja koristi drugi engleski izraz - Touch-None (tonsko biranje). Ova metoda je razvijena 1960. godine, ali je njeno pravo širenje počelo 80-ih godina širenjem digitalnih (elektronskih) telefonskih centrala.

Sa ovom metodom prenosa kontrolnih signala, svaki signal sa više frekvencija se sastoji od dva tona u skladu sa ITU-T preporukom Q.23 "Tehničke karakteristike telefona sa dodirnim biranjem".

DTMF frekvencije se ne biraju harmonično. To znači da frekvencije nemaju djelitelj cijelog broja 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 neharmonične.

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

Korespondencija između prenesenih informacija i frekvencija data je u tabeli na prednjoj ploči laboratorijske instalacije.

Nivo prenosa u dvofrekventnom paketu, mjeren pri opterećenju od 600 Ohma, iznosi: za grupu donje frekvencije - minus 6 dBmO ± 2 dB, za gornju frekvencijsku grupu - minus 3 dBmO ± 2 dB. Nivo frekvencije gornje grupe frekvencija u ukupnom signalu je za 2 ±1 dB veći od nivoa frekvencije donje grupe. Ukupni nivo svih komponenti višeg reda frekvencije je najmanje 20 dB ispod nivoa frekvencije nižeg reda.

Uslovi pod kojima bi trebalo da dođe do normalnog prijema signala su sledeći: prisustvo dve frekvencije u signalu, od kojih se jedna bira iz donje grupe, a druga iz gornje; frekvencije se ne razlikuju od svojih nominalnih vrijednosti za više od 1,8%; nivo svake od dvije frekvencije se kreće od minus 7 do minus 30 dBmO; razlika između nivoa dve frekvencije 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 grupe u položaj "Isključeno";

Postavite analogni prekidač ključa (AK) u položaj “Uključeno”;

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

dtmf kondicioniranje signala

1.1 Omogućite instalaciju.

1.2 Spojite osciloskop na KT3 ispitnu tačku.

1.3 Uključite generator gornje frekvencijske grupe, pritiskom na jedan od prekidača odaberite bilo koju od frekvencija ove grupe.

1.4 Okrenite dugme za podešavanje izlaznog napona generatora da postavite amplitudu signala u CT3 na 0,5 volti.

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

BILJEŠKA: Kao rezultat izvršenih operacija, signali jednake amplitude iz gornje i donje frekvencijske grupe se dovode na ulaz sabirača. Nakon podešavanja ovih nivoa, zaključajte dugmad za podešavanje izlaznog napona generatora.

1.6 Prebacite ulaz osciloskopa na KT7 ispitnu tačku. Okretanjem dugmeta otpornika (R3) za podešavanje izlaznog napona DTMF kondicionera signala, podesite napon u CT7 na 0,5 volti.

BILJEŠKA: Kao rezultat izvršenih operacija, kontinuirani dvotonski signal se dovodi na ulaz prijemnika, a simbol koji odgovara kombinaciji frekvencija generatora gornje i donje frekvencijske grupe trebao bi biti prikazan na indikatoru primljenog simbola , u skladu sa tabelom. Indikacija primljenog i identifikovanog signala je prisustvo signala na izlazu STD prijemnika (LED sjaj).

      Promjenom frekvencija gornje i donje frekvencijske grupe provjerite da li kombinacije ovih frekvencija odgovaraju primljenim simbolima.