Studium přijímače a vysílače dtmf signálů. Dual-tone multi-frequency (DTMF) generátor na AVR Nyní se podívejme, co máme

První část této aplikace popisuje, jak generovat DTMF signály pomocí mikrokontroléru MSP430. Jsou zde vysvětleny nejdůležitější specifikace použité v tomto případě a je uvedeno teoretické a matematické zdůvodnění pro generování sinusových vln pomocí obdélníkových vln pomocí vhodných analogových filtrů. Příklad také obsahuje testované demo programy pro generování obdélníkových signálů na základě různých konfigurací časovače mikrokontrolérů MSP430. Poslední část poskytuje schéma zapojení pro generování DTMF signálů z obdélníkových signálů.

2 Specifikace signálu DTMF

Zkratka DTMF znamená „Dual Tone Multi Frequency“ a je to metoda reprezentace číslic na různých frekvencích za účelem jejich přenosu přes analogové komunikační linky, např. telefonní linka. Při vývoji standardu byla vzata v úvahu podmínka - všechny frekvence musí být v „hlasovém“ rozsahu, což umožnilo snížit požadavky na přenosový kanál. Telefonní sítě používají signály DTMF pro vytáčení a další informace. Navzdory tomu, že je stále hojně využívána metoda pulzní volby, která je standardem např. v Německu, výrazně se prodlužuje doba vytáčení, což vede k neproduktivnímu zatížení komunikačních linek. Navíc mnoho Doplňkové služby Komunikace je možná pouze pomocí tónové volby. Při kódování metodou DTMF čísla 0-9 a písmena A-D, */E a #/F představují kombinace dvou frekvencí:

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

V tomto systému sloupec představuje frekvenci z „horní“ frekvenční skupiny (Hi-Group: 1209-1633 Hz) a řádek představuje frekvenci z „nižší“ frekvenční skupiny (Lo-Group: 697-941 Hz) . Tónové frekvence jsou zvoleny tak, aby se eliminoval vliv harmonických. Frekvence nejsou navzájem násobky a žádnou frekvenci DTMF nelze získat přičtením nebo odečtením jiných frekvencí. Pro vygenerování dialeru v síti Deutsche Telekom jsou vyžadovány následující specifikace (převzaté z Zulassungsvorschrift des Bundesamtes für Post und Telekommunikation, BAPT 223 ZV 5 (oficiální specifikace Spolkového ministerstva pošt a telekomunikací):

3 Generujte signály DTMF

Jak je popsáno výše, signály DTMF jsou analogové a sestávají ze dvou nezávislých sinusových vln. Není tedy možné generovat pouze takové signály digitálně. Digitální signály musí být převedeny pomocí ADC a/nebo analogových filtrů do požadovaného sinusového tvaru.

3.1 Generování pomocí obdélníkových vln

Pokud se pro generování signálů DTMF používají obdélníkové signály, software a Hardware minimální. Jakýkoli spojitý signál s periodou T může být reprezentován Fourierovou řadou skládající se z nekonečného součtu sinusových a kosinových vln následovně:

Kde a0/2 je konstantní složka signálu. Součtový prvek s nejnižší úhlovou frekvencí (w0) se nazývá hlavní (základní) harmonická, zbytek jsou podtóny nebo vyšší harmonické.

Nejjednodušší spojitý signál realizovaný pomocí mikrokontroléru je obdélníková vlna, pro kterou má Fourierova řada tvar:

Podíl každé frekvenční složky na celkovém signálu nejlépe demonstruje amplitudové spektrum (viz obr. 2):


Rýže. 2: Amplitudové spektrum obdélníkového signálu

Při použití analogového filtru je efektivně potlačena stejnosměrná složka a vyšší harmonické, zatímco na výstupu máme sinusový signál s frekvencí rovnou frekvenci původní obdélníkové vlny.

3.2 Software pro generování meandru

Program generování meandrů musí splňovat následující požadavky:

  • Umět syntetizovat dva nezávislé obdélníkové signály.
  • Aby bylo možné oddělit signály, jsou zapotřebí dva výstupní kolíky pro generování signálů z „horní“ (Hi-Group) a „dolní“ (Lo-Group) frekvenční rozsahy respektive.
  • Software by měl umět nastavit požadovanou délku signálu v rozsahu cca 65 ms - 100 ms.

Mikrokontroléry řady MSP430 mají různé vestavěné časovače schopné generovat obdélníkové signály. Řada '31x/'32x používá 8bitový časovač a port časovače pro generování obou obdélníkových signálů. Tento program testováno na frekvenci MCLK rovné 1,048 MHz. Timer_A v rodině ‘33x může nezávisle generovat oba požadované signály. Druhý program používá tento časovač ke generování obdélníkových vln a pracuje s libovolnými frekvencemi MCLK. Oba programy budou podrobně popsány níže.

3.2.1 Generování čtvercových vln pomocí 8bitového časovače a portu časovače

Na Obr. 3 je vývojový diagram inicializační procedury pro generování DTMF signálů. K syntéze těchto dvou frekvencí se používá port časovače a 8bitové čítače časovače. Každý z nich je programovatelný čítačový registr nezbytný pro přesnou syntézu požadovaných frekvencí. Pokud jsou čítače portů časovače kaskádovány do jednoho 16bitového časovače a taktovány na systémovou frekvenci MCLK, pak lze frekvence vysokého rozsahu generovat s vysokou přesností. Když dojde k přerušení, přepne se příslušný výstup a oba 8bitové registry čítačů se vynulují. Načtené hodnoty jsou uloženy ve dvou proměnných v paměti RAM pro uložení interních registrů pro další úlohy.

Nízké frekvence jsou generovány 8bitovým časovačem. Protože registr čítače tohoto časovače je široký 8 bitů, pouze každé třetí přerušení způsobí změnu úrovně na požadovaném výstupním pinu, což umožňuje generování stejného frekvenčního čítače.

Dva výstupy časovače - porty slouží k vytvoření dvou meandrů různých frekvencí.

Rýže. 3 Vývojový diagram inicializační procedury pro generování DTMF signálů

Postup inicializace se provádí pouze jednou. Po jejím dokončení se z globální proměnné v RAM načte hexadecimální hodnota přenášeného znaku. Jakmile jsou ze dvou tabulek vygenerovány dvě frekvence, které tvoří vysoké a nízké tóny DTMF, stačí pouze inicializovat a spustit oba časovače. Délka odesílání je řízena počítáním půlcyklů „nižší“ frekvence a je čtena z dodatkové tabulky. Po dokončení tohoto postupu se vrátíte k funkci dotazování. Odpovídající rutiny zpracování přerušení přepínají piny portu. Tento proces je znázorněn na Obr. 4 a 5.

Úkoly timer-portu zahrnují pouze záznam logu. úroveň na výstupu portu a opětovné načtení čítače z RAM, zatímco činnost 8bitového časovače má o něco složitější strukturu: každý vstup do přerušení je počítán registrem čítače. Výstup může změnit stav pouze po třech přerušeních. Kromě toho se také počítá každý půlcyklus. Generování se zastaví po dosažení určitého počtu půlcyklů.


Rýže. 4 blok – přerušení obvodu z 8bitového časovače (Lo-Group)


Rýže. 5 bloků – obvod přerušení portu časovače (Hi-Group)

; Vlastní definice FLLMPY equ 32 ; Frekvenční násobič FLL na 1,048 MHz TCLK equ FLLMPY*32768 ; TCLK: FLLMPY x f quartz DL equ 85 ; délka signálu DTMF (65..100 ms) LO_OUT equ 02h ; Výstup „nižší“ frekvence HI_OUT equ 04h ; Vysokofrekvenční výstup RCOUNT equ r14 ; Čítač délky DTMF RTEMP equ r15 ; registr služeb.globální DTMF_NR ; globální proměnná v RAM; pro číslo DTMF (0..F) ; Definice RAM.even .bss DTMF_TL ; Sudá adresa alignment.bss DTMF_TH .bss DTMF_NR ; globální proměnná v RAM; pro DTMF číslo (0..F).sudé ; Definice pro 8bitový časovač TCCTL EQU 42H TCPLD EQU 43H TCDAT EQU 44H ; Definice pro univerzální port časovače TPCTL equ 04bh ; Timer-port control TPCNT1 equ 04ch ; Čítač portu časovače 1 TPCNT2 equ 04dh ; Čítač portu časovače 2 TPD equ 04eh ; Data na časovém portu TPE equ 04fh ; Timer-port-resolution.text ; Frekvenční tabulky DTMF: tabulka obsahuje; počet cyklů MCLK pro jeden půlcyklus. ; Tabulka pro „horní“ frekvenci; Doplněna opravná změna; zohlednit čas vstupu do přerušení DTMF_HI .word 0ffffh-(TCLK/(1336*2))+25 ; Vysoká frekvence pro 0 .slovo 0ffffh-(TCLK/(1207*2))+28 ; Vysoká frekvence pro 1 .slovo 0ffffh-(TCLK/(1336*2))+25 ; Vysoká frekvence pro 2 .slovo 0ffffh-(TCLK/(1477*2))+24 ; Vysoká frekvence pro 3 slova 0ffffh-(TCLK/(1207*2))+28 ; Vysoká frekvence pro 4 .slovo 0ffffh-(TCLK/(1336*2))+25 ; Vysoká frekvence pro 5 .slovo 0ffffh-(TCLK/(1477*2))+24 ; Vysoká frekvence pro 6 .slovo 0ffffh-(TCLK/(1207*2))+28 ; Vysoká frekvence pro 7 .slovo 0ffffh-(TCLK/(1336*2))+25 ; Vysoká frekvence pro 8 .slovo 0ffffh-(TCLK/(1477*2))+24 ; Vysoká frekvence pro 9 .slovo 0ffffh-(TCLK/(1633*2))+22 ; Vysoká frekvence pro A .slovo 0ffffh-(TCLK/(1633*2))+22 ; Vysoká frekvence pro B .slovo 0ffffh-(TCLK/(1633*2))+22 ; Vysoká frekvence pro C .slovo 0ffffh-(TCLK/(1633*2))+22 ; Vysoká frekvence pro D .slovo 0ffffh-(TCLK/(1207*2))+28 ; Vysoká frekvence pro * .slovo 0ffffh-(TCLK/(1477*2))+24 ; Vysoká frekvence pro # ; Tabulka pro „nižší“ frekvenci DTMF_LO .byte 0ffh-(TCLK/(941*2*3)) ; Nízká frekvence pro 0 .byte 0ffh-(TCLK/(697*2*3)) ; Nízká frekvence pro 1 .byte 0ffh-(TCLK/(697*2*3)) ; Nízká frekvence pro 2 .byte 0ffh-(TCLK/(697*2*3)) ; Nízká frekvence pro 3 .byte 0ffh-(TCLK/(770*2*3)) ; Nízká frekvence pro 4 .byte 0ffh-(TCLK/(770*2*3)) ; Nízká frekvence pro 5 .byte 0ffh-(TCLK/(770*2*3)) ; Nízká frekvence pro 6 .byte 0ffh-(TCLK/(853*2*3)) ; Nízká frekvence pro 7 .byte 0ffh-(TCLK/(853*2*3)) ; Nízká frekvence pro 8 .byte 0ffh-(TCLK/(853*2*3)) ; Nízká frekvence pro 9 .byte 0ffh-(TCLK/(697*2*3)) ; Nízká frekvence pro A .byte 0ffh-(TCLK/(770*2*3)) ; Nízká frekvence pro B .byte 0ffh-(TCLK/(853*2*3)) ; Nízká frekvence pro C .byte 0ffh-(TCLK/(941*2*3)) ; Nízká frekvence pro D .byte 0ffh-(TCLK/(941*2*3)) ; Nízká frekvence pro *.byte 0ffh-(TCLK/(941*2*3)) ; Nízká frekvence pro # ; Tabulka trvání signálu DTMF_L .byte 2*941*DL/1000 ; Poloviční cykly pro 0 .byte 2*697*DL/1000 ; Poloviční cykly pro 1 .byte 2*697*DL/1000 ; Poloviční cykly pro 2 .byte 2*697*DL/1000 ; Poloviční cykly pro 3 .byte 2*770*DL/1000 ; Poloviční cykly pro 4 .byte 2*770*DL/1000 ; Poloviční cykly pro 5 .byte 2*770*DL/1000 ; Poloviční cykly pro 6 .byte 2*852*DL/1000 ; Poloviční cykly pro 7 .byte 2*852*DL/1000 ; Poloviční cykly pro 8 .byte 2*852*DL/1000 ; Poloviční cykly pro 9 .byte 2*697*DL/1000 ; Poloviční cykly pro A .byte 2*770*DL/1000 ; Poloviční cykly pro B .byte 2*852*DL/1000 ; Poloviční cykly pro C .byte 2*941*DL/1000 ; Poloviční cykly pro D .byte 2*941*DL/1000 ; Půlcykly pro *.byte 2*941*DL/1000 ; Půlcykly pro # ;************************************************** ********** **************************************** ; DTMF-TX Podprogram DTMF ;****************************************************** ********************************* DTMF_TX mov.b DTMF_NR,RTEMP ; Uložte číslo do dočasného registru mov.b DTMF_L(RTEMP),RCOUNT ; Uložte čítač trvání, připravte 8bitový časovač pro frekvenci DTMF-Lo mov.b #0a8h,&TCCTL ; Hodiny z MCLK mov.b DTMF_LO(RTEMP),&TCPLD ; Příprava registru; preload mov.b #000,&TCDAT ; Načítání počítadla z registru; preload bis.b #008h,&IE1 ; Povolit přerušení; z 8bitového časovače; příprava portu časovače pro DTMF-Hi frekvenci rla r15; * 2 pro 16bitovou tabulku mov DTMF_HI(RTEMP),&DTMF_TL ; uložit slovo pro vysokofrekvenční mov #003,RTEMP ; čítač pro 8bitový časovač bis.b #008h,IE2 ; Povolit přerušení; z portu časovače mov.b &DTMF_TH,&TPCNT2 ; Načtení vysokého bajtu do TC2 mov.b &DTMF_TL,&TPCNT1 ; Načítání nízkého bajtu do TC1 bis.b #080h,&TPD ; Povolit 16bitový časovač bis.b #HI_OUT+LO_OUT,&TPE ; Povolit DTMF-Hi/Lo výstupy mov.b #090h,&TPCTL ; Povolit časovač ret ;**************************************************** ******** **************************************** ; Přerušení portu časovače;************************************************** *** *********************************** TP_INT xor.b #HI_OUT,&TPD ; Invertovat DTMF-Hi výstup mov.b &DTMF_TH,&TPCNT2 ; Načítání senior ba

3.2.2 1 Generování obdélníkových vln pomocí Timer_A

Tato rutina pro generování signálu DTMF používá pouze Timer_A pro obdélníkovou vlnu obou požadovaných frekvencí. Proces sestavení vypočítá vhodné hodnoty pro časovač, aby mohl program používat bez ohledu na hodnotu frekvence MCLK. Doba trvání výstupního signálu je určena konstantou DL v milisekundách.

; Hardwarové definice; FLLMPY .equ 32 ; Frekvenční násobič FLL na 1,048 MHz TCLK .equ FLLMPY*32768 ; TCLK: FLLMPY x f křemen DL .equ 82 ; délka signálu DTMF v ms; (65..100 ms) STACK .equ 600h ; Inicializační adresa zásobníku; Definice RAM; STDTMF = 202 h; Hi a Lo stav frekvence TIM32B .equ 204 ; Rozšíření registru časovače LENGTH .equ 206h ; Čítač doby trvání DTMF; .text 0F000h ; Počáteční adresa programu; ; Inicializace časovače_A: MCLK, nepřetržitý režim, povolená přerušení; Příprava výstupních modulů časovače Timer_A MCLK = 1,048 MHz (automaticky) ; INIT MOV #STACK,SP ;Inicializace ukazatele zásobníku CALL #INITSR ;Inicializace násobiče; FLL frekvence a RAM MOV #ISMCLK+TAIE+CLR,&TACTL ; Inicializace časovače MOV.B #TA2+TA1,&P3SEL ; Výstupy TA2 a TA1 na portech P3.5/4 CLR TIM32B; Vymazat registr rozšířeného časovače BIS #MCONT,&TACTL ; Start timer Timer_A EINT ; Obecné povolení přerušení MAINLOOP ... ; Hlavní smyčka; ;Keypress: SDTMF obsahuje offset tabulky; pro 2 frekvence (0..6,0..6) ve vysokém a nízkém bajtu; MOV&TAR,R5 ; Pro okamžité spuštění: ADD FDTMFLO,R5 ; Offset pro kratší čas MOV R5,&CCR1 ; První změna stavu po 0,71 ms MOV R5,&CCR2 ; 1/(2x697) = 0,71 ms MOV #OMT+CCIE,&CCTL1 ; Inverze výstupu, bitové přerušení. MOV #OMT+CCIE,&CCTL2 ; Invertovat výstup, bit přerušení MOV.B STDTMF,R5 ; 82 ms čítač RRA R5 ; počet změn stavu nižší frekvence MOV.B DTMFL(R5),LENGTH ; pro trvání signálu... ; pokračování programu; ; Obsluha přerušení z CCR0 (zde se nepoužívá); TIMMOD0 ... RETI ; ; Obslužná rutina přerušení z registrů porovnávání zachycení 1..4; TIM_HND PŘIDAT &TAIV,PC ; Zpracování požadavku s nejvyšší; priorita RETI; žádný požadavek na přerušení: RETI JMP HCCR1 ; požadavek z CCR1 (DTMF nízkofrekvenční) JMP HCCR2 ; požadavek od CCR2 (DTMF vysokofrekvenční) JMP HCCR3 ; požadavek od CCR3 JMP HCCR4 ; požadavek od CCR4; TIMOVH INC TIM32B ; Rozšíření Timer_A na 32 bitů RETI ; ; Nízká frekvence DTMF: TA1 invertuje výstup výstupní jednotky 1; Každá změna stavu se počítá, aby se řídila doba trvání signálu; HCCR1 PUSH R5; Uložení použitých registrů MOV.B STDTMF,R5 ; Nízkofrekvenční stav DTMF ADD FDTMFLO(R5),&CCR1 ; Přidejte trvání poloviny cyklu DEC.B LENGTH ; Je doba trvání signálu DL dokončena? JNZ TARET ; Ne; ; Ano, zastavit signál DTMF: zakázat přerušení; BIC #OMRS+OUT+CCIE,&CCTL1 ; Resetovat TA1 BIC #OMRS+OUT+CCIE,&CCTL2 ; Reset TA2 TARET POP R5 ; Obnovit R5 RETI; Návrat z přerušení; ; Vysokofrekvenční DTMF: TA2 invertuje výstup výstupní jednotky 2; HCCR2 PUSH R5; Ukládání použitých MOV registrů. B STDTMF+1,R5; Stav vysoké frekvence DTMF ADD FDTMFHI(R5),&CCR2 ; Přidejte dobu trvání poloviny cyklu POP R5 ; Obnovit R5 RETI; Návrat z přerušení; HCCR3 ... ;Úloha řízená registrem CCR3 RETI HCCR4 ... ;Úloha řízená registrem CCR4 RETI ; ; Tabulka frekvencí DTMF: Tabulka obsahuje; počet cyklů MCLK za půl cyklu. Hodnoty upravené pro; efektivní frekvence MCLK během procesu montáže; a zaokrouhleno na minimum možná chyba frekvence; FDTMFLO .slovo ((TCLK/697)+1)/2 ; Nízkofrekvenční DTMF 697Hz .slovo ((TCLK/770)+1)/2 ; 770Hz .slovo ((TCLK/852)+1)/2 ; 852Hz .slovo ((TCLK/941)+1)/2 ; 941Hz FDTMFHI .slovo ((TCLK/1209)+1)/2 ; Vysokofrekvenční DTMF1209Hz .slovo ((TCLK/1336)+1)/2 ; 1336Hz .slovo ((TCLK/1477)+1)/2 ; 1477Hz .slovo ((TCLK/1633)+1)/2 ; 1633 Hz; ; Tabulka obsahuje počet půlcyklů po dobu trvání signálu DL (ms). ; Pro počítání se používá nižší frekvence DTMF; DTMFL .byte 2*697*DL/1000 ; Počet půlcyklů.byte 2*770*DL/1000 ; pro DL ​​v ms.byte 2*852*DL/1000; .byte 2*941*DL/1000 ; ; .sekce "TIMVEC",0FFF0h ; vektory přerušení časovače Timer_A .word TIM_HND ; Vektor modulů 1..4 časovače.slovo TIMMOD0 ; Modul časovače 0 vector.sect "INITVEC",0FFFEh ; Vektor Resetovat.slovo INIT

Níže je o něco rychlejší řešení. Vyžaduje však více paměti RAM, protože... Data získaná z tabulek nejsou pokaždé přepočítávána, ale jsou ve zkratce uložena v RAM DTMFLO a DTMFHI. Čtení se provádí z rutiny přerušení časovače Timer_A. Použité tabulky jsou totožné s tabulkami v předchozím příkladu.

FLLMPY .equ 32 ; Frekvenční násobič FLL na 1,048 MHz TCLK .equ FLLMPY*32768 ; TCLK: FLLMPY x f křemen DL .equ 82 ; trvání signálu DTMF; v ms (65..100 ms) STDTMF = 202 h; Hi a Lo stav frekvence TIM32B .equ 204 ; Rozšíření registru časovače LENGTH .equ 206h ; Čítač doby trvání DTMF DTMFLO .equ 208h ; Půlcyklus nižší frekvence DTMFHI .equ 20Ah; Horní frekvence půlcyklu STACK .equ 600h ; Adresa inicializace zásobníku.text 0F000h ; Počáteční adresa programu; Inicializace časovače_A: MCLK, nepřetržitý režim, povolená přerušení; Příprava výstupních modulů časovače Timer_A MCLK = 1,048 MHz (automaticky) ; INIT MOV #STACK,SP ; Inicializace ukazatele zásobníku CALL #INITSR ; Inicializace násobiče; FLL frekvence a RAM MOV #ISMCLK+TAIE+CLR,&TACTL ; Spustit časovač MOV.B #TA2+TA1,&P3SEL ; Výstupy TA2 a TA1 na portech P3.5/4 CLR TIM32B; Vymazání registru rozšířeného časovače BIS #MCONT,&TACTL ;Spuštění časovače Timer_A EINT ; Obecné povolení přerušení MAINLOOP ... ; Hlavní smyčka;Stisknutí klávesy: SDTMF obsahuje offset tabulky; pro 2 frekvence (0..6,0..6) ve vysokém a nízkém bajtu; MOV&TAR,R5 ; Chcete-li začít okamžitě ADD FDTMFLO,R5 ; Offset pro kratší čas MOV R5,&CCR1 ; První změna stavu po 0,71 ms MOV R5,&CCR2 ; 1/(2x697) = 0,71 ms; ; Načtěte dva počty cyklů pro frekvence DTMF; MOV.B STDTMF+1,R5 ; Vysokofrekvenční DTMF MOV FDTMFHI(R5),DTMFHI ; Trvání půlcyklu MOV.B STDTMF,R5 ; Nízkofrekvenční DTMF MOV DTMFLO(R5),DTMFLO ; Trvání půlcyklu; ; Čítač doby trvání RRA R5 ; Připravit bajtový index MOV.B DTMFL(R5),DÉLKA ; počet změn stavu nižší frekvence MOV #OMT+CCIE,&CCTL1 ; Inverze výstupu, bitové přerušení. MOV #OMT+CCIE,&CCTL2 ; Inverze výstupu, bitové přerušení. ... ; Návrat do hlavní smyčky; ; Obsluha přerušení z CCR0 (zde se nepoužívá); TIMMOD0 ... RETI ; ; Obslužná rutina přerušení z registrů porovnávání zachycení 1..4; TIM_HND PŘIDAT &TAIV,PC ; Zpracování požadavku s nejvyšší; priorita RETI; žádný požadavek na přerušení: RETI JMP HCCR1 ; požadavek z CCR1 (DTMF nízkofrekvenční) JMP HCCR2 ; požadavek od CCR2 (DTMF vysokofrekvenční) JMP HCCR3 ; požadavek od CCR3 JMP HCCR4 ; požadavek od CCR4; TIMOVH INC TIM32B ; Rozšíření Timer_A na 32 bitů RETI ; ; Nízká frekvence DTMF: TA1 invertuje výstup výstupní jednotky 1; HCCR1 ADD DTMFLO,&CCR1; Přidejte trvání poloviny cyklu DEC.B LENGTH ; Je doba trvání signálu DL dokončena? JNZ TARET ; Ne; ; Ano, zastavit signál DTMF: zakázat přerušení; BIC #OMRS+OUT+CCIE,&CCTL1 ; Resetovat TA1 BIC #OMRS+OUT+CCIE,&CCTL2 ; Reset TA2 TARET RETI ; Návrat z přerušení; Vysokofrekvenční DTMF: TA2 invertuje výstup výstupní jednotky 2; HCCR2 ADD DTMFHI,&CCR2; Přidejte trvání poloviny cyklu RETI ; Návrat z přerušení; HCCR3. .. ;Úloha řízená registrem CCR3 RETI HCCR4 ... ;Úloha řízená registrem CCR4 RETI ; ; Tabulky a vektory přerušení jsou stejné jako v předchozím příkladu.

3.3 Hardware pro generování DTMF signálů

Jak je uvedeno výše, v kmitočtovém rozsahu 200 Hz.. 4600 Hz musí být úroveň signálu vysílacího kmitočtu minimálně 20 dB nad úrovní vnějších signálů (šumů). Navíc na základě specifikace musí mít signály z „horní“ a „dolní“ skupiny různé úrovně, takže každý signál vyžaduje svůj vlastní filtr. Amplitudy sinusového kmitočtu lze získat z Fourierovy řady.

Chcete-li vybrat mezní frekvence při navrhování analogového filtru, musíte dodržet následující požadavky na základě:

  • Protože je nutné zajistit možnost libovolných kombinací frekvencí „dolní“ skupiny s frekvencemi „horní“ skupiny, rozdíl úrovní mezi nejnižšími a nejvyššími frekvencemi ve skupině by neměl přesáhnout 3 dB.
  • Pro nejnižší frekvenci ve skupině (f1) by harmonické potlačení (3f1) nemělo být horší než 20 dB. Splnění této podmínky je nejkritičtější pro nižší frekvenci ve skupině, protože je co nejdále od mezní frekvence filtru.

Vzorec popisuje druhou mocninu absolutní hodnoty na výstupu z horní propusti Butterworthova filtru řádu n:

Tento vzorec představuje závislost zesílení Butterworthovy horní propusti na frekvenci. Parametry fg a n určují mezní frekvenci a pořadí filtru.

Nejprve je nutné vypočítat požadované pořadí filtrů s ohledem na splnění výše uvedených požadavků.

Aby byla splněna první podmínka, poměr druhých mocnin absolutních hodnot nejnižších a nejvyšších frekvencí ve skupině nesmí být větší než 3 dB nebo:

Druhá podmínka bude splněna automaticky, pokud je poměr druhých mocnin absolutních hodnot frekvencí f1 a 3f1 větší než 10/3, v tomto případě je třetí harmonická v obdélníkovém signálu o 1/3 menší (viz Fourier série a obr. 2):

Výsledkem výpočtů pro frekvence obou skupin máme požadovaný řád filtru n=1,15. Požadavky tedy uspokojí filtr 2. řádu, který lze postavit na operačním zesilovači. Pokud používáte filtr 3. řádu, potřebujete pouze dva další prvky. Tím se však sníží požadavky na rozptyl parametrů komponent. Oba výše uvedené požadavky budou splněny, pokud je mezní frekvence v následujících mezích:

Spodní skupina fg>880 Hz fg<1418 Гц
Horní skupina fg>1527 Hz fg<2460 Гц

Pokud je mezní frekvence na minimu, dojde k maximální redukci harmonických. V tomto případě však bude rozdíl mezi nejnižší a nejvyšší frekvencí ve skupině 3 dB. Při nejvyšší možné mezní frekvenci je rozdíl úrovní minimální, ale harmonické složky jsou potlačeny pouze o 20 dB.

Při výpočtu filtru byla věnována zvýšená pozornost harmonickému potlačení, rozdíl úrovní v rámci skupiny byl zafixován na 2 dB. V důsledku toho jsou mezní frekvence 977 Hz a 1695 Hz. Výsledné harmonické potlačení výrazně převyšuje požadavky. Rozdíl frekvenčních úrovní ve skupině je v rámci požadavků i v případě odchylky mezní frekvence spojené s rozptylem v parametrech použitých komponent. Při výpočtu hodnot filtračních prvků byly rezistory vybrány na základě jejich maximální blízkosti ke standardním hodnotám řady E12.

Na výstupech filtru jsou výsledkem dva sinusové signály s výrazně potlačenými harmonickými. Pro spojení těchto signálů je zavedena další sčítačka.

S použitím pouze 3 operačních zesilovačů a několika pasivních prvků jsme tedy schopni generovat signály DTMF pomocí mikrokontroléru bez použití významných výpočetních zdrojů.

Pomocí simulátorových programů byly zkontrolovány přibližné hodnoty. Odezva filtrů se velmi těsně shoduje s vypočítanou frekvenční odezvou.


Rýže. 6: Amplitudové spektrum obdélníkového signálu o frekvenci 697 Hz na výstupu filtru 3. řádu

Na Obr. Obrázek 6 ukazuje amplitudové spektrum obdélníkového signálu s frekvencí 697 Hz, procházejícího filtrem 3. řádu. Jak je vidět z obrázku, třetí a pátá harmonická (2091 Hz a 3485 Hz) jsou výrazně utlumeny (-25,6 dB).


Rýže. 7: Amplitudové spektrum obdélníkového signálu o frekvenci 941 Hz na výstupu filtru 3. řádu

Na Obr. Obrázek 7 ukazuje spektrum obdélníkového signálu s frekvencí 941 Hz. Ve frekvenční oblasti, která nás zajímá, do 4600 Hz, je pouze jedna harmonická. Po průchodu filtrem je tato harmonická 2823 Hz výrazně utlumena (-27,9 dB). Rozdíl úrovní mezi nejnižší a nejvyšší frekvencí ve skupině nepřesahuje 1,9 dB.

Aby bylo možné použít levné komponenty s velkou variabilitou parametrů, bylo provedeno dodatečné modelování. Výsledky simulace ukázaly, že přípustný rozptyl v hodnotách rezistorů a kondenzátorů je 10 %.


Obrázek 8: Histogram – rozložení úrovní signálu ve skupině


Obrázek 9: Histogram – harmonická suprese

Na Obr. 8 a 9 ukazují histogramy získané pomocí analýzy Monte Carlo. V tomto případě se hodnoty složek náhodně měnily v rozmezí 10 %. Po 100 iteracích jsou výsledky pro všechny simulované filtry vyneseny do histogramů. Na histogramu na Obr. Obrázek 8 ukazuje rozdíl úrovní mezi frekvencemi v rámci skupiny. V žádném případě nebylo dosaženo maximálního přípustného rozdílu 3 dB mezi minimální a maximální frekvencí. Průměrná hodnota je 1,6 dB, což je o něco lepší než vypočtená hodnota 2 dB.

Na Obr. Obrázek 9 ukazuje útlum harmonických pro „nižší“ frekvenční skupinu. Požadované hodnoty 20 dB je dosaženo ve všech případech, průměrná hodnota je přibližně 27 dB. V nejhorším případě je harmonická potlačena o 24,2 dB.

Hodnoty vypočtené pro filtr „dolní“ frekvenční skupiny jsou také provedeny pro filtr „horní“ frekvenční skupiny.

Oba filtry mají shodný obvod. Jediný rozdíl je v mezních frekvencích filtrů pro horní a dolní frekvenční skupiny. R1 a C1 tvoří horní propust 1. řádu. Protože vstupní odpor obvodu závisí také na R1, hodnota tohoto prvku by neměla být příliš malá; jinak budou výstupy mikrokontroléru přetíženy a obdélníkový průběh bude zkreslený. V tomto případě se k signálu přidají další frekvence vyplývající z intermodulačního zkreslení, což negativně ovlivní odstup signálu od šumu.

Přenosovou funkci filtrů vyššího řádu nelze získat pouze pomocí pasivních součástek.

Filtr 2. řádu tedy musí obsahovat operační zesilovač. Aktivní zisk filtru je nastaven na 0,2 pomocí rezistorů R1-1 a R1-2. Jak vidíte, signál je poněkud oslabený. To je nezbytné, aby nedošlo k přetížení operačního zesilovače, protože špičková amplituda základní sinusové harmonické signálu obdélníkové vlny přesahuje amplitudu samotného signálu obdélníkové vlny (viz Fourierova řada a obr. 2). Další sčítačka upravuje požadovanou výstupní úroveň. Vzhledem ke konstantní složce obdélníkového signálu je pracovní bod operačního zesilovače nastaven na úroveň Vcc/2 (viz také Fourierova řada a obr. 2). V tomto případě nelze konstantní složku eliminovat vstupním děličem R1-1/R1-2. Pro oddělení obvodu OS stejnosměrným napětím se používá kondenzátor C3.

Na každém z výstupů analogového filtru je generován signál horní a dolní frekvenční skupiny. V další sčítačce jsou tyto signály přidány. V tomto prvku obvodu můžete pomocí rezistorů R4 a R5 nastavit vztah mezi „dolní“ a „horní“ frekvencí v celkovém signálu a úrovní výstupního signálu. Výstupní amplitudu lze tedy snadno upravit tak, aby vyhovovala různým požadavkům v různých zemích.

Při výpočtu hodnot součástek byly hodnoty kondenzátorů jako obvykle pevné a podle nich byly vypočteny hodnoty rezistorů. V tomto zapojení byly použity kondenzátory a odpory standardní řady E12 s rozptylem 10 %.

Na Obr. Obrázek 10 ukazuje schematický diagram analogových filtrů a sčítačky:


Rýže. 10: Schematický diagram analogové filtry s přídavnou sčítačkou

Kondenzátory C1-1 a C1-2 kombinují dva signály dohromady v pracovním bodě Vcc/2. Pro tyto prvky byste neměli vybírat příliš velké hodnoty, protože jsou to nízkofrekvenční filtrační prvky pro eliminaci nízkofrekvenčních subharmonik. Filtrační kondenzátor C5 eliminuje šum referenčního napětí. Přídavný kondenzátor C6 zapojený paralelně se zpětnovazebním rezistorem R6 tvoří horní propust prvního řádu. Pokud je zvolena nejnižší mezní frekvence filtru, dodatečné filtrování vysokofrekvenčního intermodulačního rušení zlepšuje kvalitu výstupního signálu, ale dojde k určitému útlumu nejvyšších frekvencí „horní“ skupiny. V některých případech není generování nejvyšší frekvence DTMF 1633 Hz nutné, protože používá se pouze k vytvoření servisních symbolů A-D a poměr signálu k šumu lze zlepšit snížením mezní frekvence filtru. Zvýšení mezní frekvence tedy vede ke zvýšení úrovně vysokofrekvenčního rušení, ale zároveň se sníží negativní dopad na nejvyšší frekvenční složky signálu DTMF.

4 Výsledky studií signálů vysílačů DTMF

Níže uvedené spektrogramy (obr. 11 a 12) ukazují výstupní signály vysílače DTMF na různých frekvencích. Na Obr. Obrázek 11 ukazuje amplitudové spektrum symbolu „1“. Kmitočty potřebné pro jeho vysílání - 697 a 1207 Hz - jsou na úrovni -10,5 dB, respektive -8,5 dB. Harmonické na 2091 a 3621 Hz jsou potlačeny o téměř 30 dB. Pro vysílání symbolu „D“ jsou generovány dvě nejvyšší frekvence - 941 a 1633 Hz. Jak je vidět z Obr. 12, úroveň nízké frekvence je -12 dB, úroveň vysoké frekvence je -11 dB. Odpovídající harmonické jsou utlumeny o více než 30 dB. Naměřené hodnoty tedy odpovídají výsledkům simulace a požadavkům specifikace.


Rýže. 11: Amplitudové spektrum symbolu „1“: 697 a 1207 Hz


Rýže. 12: Amplitudové spektrum symbolu „D“: 941 a 1633 Hz

Při použití dvou různých časovačů nelze dosáhnout absolutní frekvenční přesnosti generovaných obdélníkových signálů, výsledek bude záviset na kombinaci dvou frekvencí a typu použitých časovačů. Důvodem je konflikt přerušení časovače. Požadovaná přesnost ±1,8 % je však splněna s velkou rezervou.

Pokud se použije 8bitový časovač a časovač portu Timer na systémové frekvenci MCLK 1,048 MHz, pak jsou frekvence „nižší“ skupiny generovány s přesností ne horší než 0,3 %. Pro frekvence „horní“ skupiny byla v praxi získána odchylka ne větší než 0,5 %.

Jedinou výjimkou je DTMF znak „D“, pro který jsou generovány nejvyšší frekvence. Výsledkem je, že v této kombinaci má frekvence „horní“ skupiny 1633 Hz odchylku -0,97 %.

Bez této výjimky je i nejvyšší frekvence 1633 Hz generována s přesností lepší než 0,5 %. Maximální odchylky pro různé frekvence jsou uvedeny v tabulce:

Pokud se pro generování frekvencí použije Timer_A, bude chyba záviset na použité frekvenci MCLK:

MCLK, MHz 1,048 2,096 3,144 3,800
Multiplikátor 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 Závěr

Software pro tento příklad je velmi jednoduchý a zabírá přibližně 300 bajtů a vyžaduje malé množství paměti RAM a ROM. Díky vestavěnému modulu časovače jsou požadované frekvence generovány s vysokou přesností bez plýtvání zátěží CPU. V konfiguraci, kde se pro generování používá 8bitový časovač a časovač/port, zabírají rutiny přerušení přibližně 12 % prostředků CPU. V případě, že jsou frekvence generovány časovačem Timer_A, je zatížení CPU pro zpracování rutin přerušení sníženo na 6 %. V důsledku toho mohou během přenosu signálů DTMF běžet jiné úlohy nebo může být CPU uvedeno do režimu nízké spotřeby, aby se snížila spotřeba proudu.

Dobrá funkčnost popsaného modulu pro generování DTMF signálů pomocí obdélníkových signálů je demonstrována na hardwarovém návrhu obvodu. Protože V obvodu je možné použít součástky s širokým rozsahem parametrů, cena takového řešení je velmi nízká. Všechny požadavky specifikace jsou do značné míry splněny, takže u přístrojů využívajících MSP430 jako řídicího regulátoru není vyžadován samostatný modul generátoru signálu DTMF.

Pokud je v konkrétním případě nutné zvýšit odstup signálu od šumu, pomocí dalšího operačního zesilovače lze zkonstruovat filtr pro další potlačení intermodulačního zkreslení. Takový přídavný operační zesilovač je již přítomen ve čtyřnásobném operačním zesilovači v pouzdře DIL14.

6 Odkazy

Bundesamt fur Post und Telekommunikation (Federální úřad pro poštu a telekomunikace): BAPT 223 ZV 5, Zulassungsvorschrift fur Endeinrichtungen zur Anschaltung an analoge Wahlanschlusse (ausgenommen Notruf- und Durchwahlanschlusse exlusse) des telefonní linky připojené k telefonní síti pro koncová zařízení požadavky na zabezpečení a volání) / ISDN Deutschen Bundespost Telekom; Bundesministerium fur Post und Telekommunikation, Draft, Bonn, duben 1994 Papula: Mathematik fur Ingenieure 2 (Matematika pro inženýry); Vieweg Verlag, Braunschweig 1990 Tietze / Schenk: Halbleiterschaltungstechnik; (Titze/Schenk, Semiconductor Circuit Engineering), 10. vydání; Springer Verlag, Berlín 1993 Lutz Bierl / Texas Instruments: rodina MSP430, zpráva o aplikaci měření, Texas Instruments, vydání 2.1, leden 1997, SLAAE10B Texas Instruments: rodina MSP430, uživatelská příručka architektury a knihovna modulů, Texas Instruments, 1996, SLAUE Instruments:10B 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 and Empfangen von DTMF-Signalen with dem Microcontroller MSP4 telekomunikační systém pro příjem a přenos digitálních signálů založený na mikrokontroléru MSP430); Diplomarbeit, Fachhochschule Landshut, květen 1997

Na téma jednoduchých zařízení jsem se rozhodl sestavit generátor signálu DTMF pomocí stejného ATtiny2313. Pro ty, kteří nevědí, DTMF (Dual-Tone Multi-Frequency) je dvoutónový vícefrekvenční analogový signál používaný k vytáčení telefonního čísla. Přečtěte si Wikipedii.

Rozhodnutí sestavit takové zařízení bylo diktováno přáním pokusit se implementovat složité analogové signály pomocí mikrokontroléru. Praktické využití pro toto zařízení nebylo plánováno, ale třeba by se někomu takové zařízení hodilo? Použij to!

Zdroj DTMF generátoru


Nyní se podívejme, co máme.

Signál je generován pomocí PWM a pomocí RC obvodu má požadovaný tvar. Výsledkem je, že po RC řetězci dostaneme následující signál (stisknuto tlačítko 6):

Po celé křivce užitečného signálu pozorujeme vysokofrekvenční hřeben (frekvence je vyšší než slyšitelná, takže nebude vytvářet šum) - to je práce RC obvodu. Linku můžete vyhladit zvýšením kapacity kondenzátoru nebo odporu rezistoru, ale v tomto případě se rozsah užitečného signálu výrazně sníží.

Podíváme se na spektrum signálu a ujistíme se, že existují dvě samostatné frekvence (frekvence PWM odešla mimo oblast displeje), což znamená, že je vše v pořádku - zařízení funguje, jak má.

Připravená řešení

Pro úlohy generování a dekódování DTMF signálu existují hotová řešení. Zde je několik technických listů pro tyto mikroobvody.

DTMF generátor
- DTMF dekodér


P.S. Je škoda, že ATtiny2313 nemá ADC - můžete také použít dekodér DTMF! Ale nevadí, zopakuji to na mega, určitě přiložím.

(Navštíveno 6 868 krát, z toho 1 návštěv dnes)

Tónová volba (Dual-tone multi-frequency signaling, DTMF) byla vyvinuta Bell Labs v 50. letech minulého století pro tehdy revoluční tlačítkový telefon. Pro reprezentaci a přenos digitálních dat v tónovém režimu se používá dvojice frekvencí (tónů) frekvenčního rozsahu řeči. Systém definuje dvě skupiny po čtyřech frekvencích a informace jsou kódovány vysíláním dvou frekvencí současně, jedna z každé skupiny. To dává celkem šestnáct kombinací reprezentujících šestnáct různých čísel, symbolů a písmen. Kódování DTMF se nyní používá v celé řadě komunikačních a řídicích aplikací, jak dokazuje například doporučení Mezinárodní telekomunikační unie (ITU) Q.23.

Tento článek popisuje obvod generátoru tónů DTMF, který reprodukuje všech osm frekvencí a generuje výsledný dvoutónový výstupní signál. Dotyčný systém byl postaven na čipu Silego GreenPAK™ SLG46620V a operační zesilovače Silego SLG88104V. Výsledný signál je součtem dvou frekvencí určených řádkem a sloupcem telefonní klávesnice.

Navrhovaný obvod používá čtyři vstupy pro výběr kombinace frekvencí, která má být generována. Obvod má také povolovací vstup, který spouští generování a určuje dobu přenosu signálu. Výstupní frekvence generátoru odpovídá standardu ITU pro DTMF.

DTMF tóny

Standard DTMF definuje kódování čísel 0-9, písmen A, B, C a D a znaků * a # jako kombinaci dvou frekvencí. Tyto frekvence jsou rozděleny do dvou skupin: vysokofrekvenční skupina a nízkofrekvenční skupina. Tabulka 1 ukazuje frekvence, skupiny a odpovídající reprezentace symbolů.

Stůl 1. DTMF tónové kódování

Skupina výšek

Nízkoprůchodová skupina

Frekvence byly zvoleny tak, aby se zabránilo více harmonickým. Navíc jejich součet nebo rozdíl nevede k jiné frekvenci DTMF. Tímto způsobem se zabrání harmonickým nebo modulačním zkreslením.

Norma Q.23 specifikuje, že chyba každé přenášené frekvence musí být v rozmezí ±1,8 % jmenovité hodnoty a celkové zkreslení (v důsledku harmonických nebo modulace) musí být 20 dB pod základními frekvencemi.

Výsledný signál popsaný výše lze popsat jako:

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

kde fhigh a flow jsou odpovídající frekvence z vysokofrekvenčních a nízkofrekvenčních skupin.

Obrázek 1 ukazuje výsledný signál pro číslici "1". Obrázek 2 ukazuje frekvenční spektrum odpovídající tomuto signálu.

Rýže. 1. DTMF tón

Rýže. 2. Tónové spektrum DTMF

Délka tónů DTMF se může lišit v závislosti na konkrétní aplikaci, která používá kódování tónů. U nejběžnějších aplikací se hodnoty trvání obvykle pohybují mezi manuálním a automatickým vytáčením. Tabulka 2 ukazuje souhrn typické délky doby pro dva typy náboru.

Tabulka 2 Doba trvání signálů tónové volby

Typ číselníku

Skupina výšek

Skupina výšek

Manuální vytáčení

Automatické vytáčení

Pro větší flexibilitu je generátor DTMF nabízený v tomto návodu vybaven povolovacím vstupem, který se používá ke spuštění generování signálu a určení jeho trvání. V tomto případě je doba trvání signálu rovna trvání impulsu na vstupu povolení.

Analogová část obvodu generátoru DTMF

Doporučení ITU Q.23 definuje signály DTMF jako analogové signály vytvořené dvěma sinusovými vlnami. V navrženém obvodu generátoru DTMF generuje IC Silego GreenPAK SLG46620V obdélníkové signály s požadovanými frekvencemi DTMF. Pro získání sinusových signálů požadované frekvence a vytvoření výsledného signálu (součet dvou sinusových vln) jsou zapotřebí analogové filtry a sčítačka. Z tohoto důvodu bylo v tomto projektu rozhodnuto o použití filtrů a slučovače na bázi operačních zesilovačů SLG88104V.

Obrázek 3 ukazuje strukturu navrhované analogové části zařízení.

Rýže. 3. Analogový procesní obvod pro příjem DTMF signálu

Analogové filtry se používají k získání sinusových signálů z pravoúhlých pulzů. Po provedení filtrace se oba signály sečtou a vygeneruje se požadovaný výstupní dvoutónový DTMF signál.

Obrázek 4 ukazuje výsledek Fourierovy transformace použité k získání spektra obdélníkového signálu.

Rýže. 4. Spektrum obdélníkového signálu

Jak vidíte, čtvercová vlna obsahuje pouze liché harmonické. Pokud takový signál znázorníme s amplitudou A ve formě Fourierovy řady, bude mít následující tvar:

Analýza tohoto výrazu nám umožňuje dojít k závěru, že pokud mají analogové filtry dostatečný útlum pro harmonické, pak je docela možné získat sinusové signály s frekvencí rovnou frekvenci původního obdélníkového signálu.

Vezmeme-li v úvahu toleranci úrovně rušení definovanou v normě Q.23, je nutné zajistit, aby všechny harmonické byly utlumeny o 20 dB nebo více. Kromě toho musí být jakákoli frekvence ze skupiny dolní propusti kombinována s jakoukoli frekvencí ze skupiny horní propusti. S ohledem na tyto požadavky byly vyvinuty dva filtry, jeden pro každou skupinu.

Oba filtry byly dolnopropustné Butterworthovy filtry. Útlum Butterworthova filtru řádu n lze vypočítat jako:

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

kde fc je mezní frekvence filtru, n je řád filtru.

Rozdíl v útlumu mezi nejnižší frekvencí a nejvyšší frekvencí každé skupiny nemůže být větší než 3 dB, takže:

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

Dané absolutní hodnoty:

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

Také, jak jsme řekli dříve, harmonický útlum by měl být 20 dB nebo více. V tomto případě bude nejhorším případem nejnižší frekvence ve skupině, protože její 3. harmonická je nejnižší frekvence a je nejblíže mezní frekvenci filtru. Vzhledem k tomu, že 3. harmonická je 3x menší než základní, musí filtr splňovat podmínku (absolutní hodnoty):

A(3květ) 2 / A(květ) 2 > 10/3.

Pokud jsou tyto rovnice aplikovány na obě skupiny, pak použité filtry musí být filtry druhého řádu. To znamená, že budou mít dva odpory a dva kondenzátory, pokud budou implementovány pomocí operačních zesilovačů. Pokud by byly použity filtry třetího řádu, byla by citlivost na tolerance součástí nižší. Zvolené mezní frekvence filtru jsou 977 Hz pro skupinu dolních propustí a 1695 Hz pro skupinu horních propustí. Při těchto hodnotách jsou rozdíly v úrovních signálu ve frekvenčních skupinách v souladu s výše uvedenými požadavky a citlivost na změny mezní frekvence v důsledku tolerancí komponent je minimální.

Schematické diagramy filtrů implementovaných pomocí SLG88104V jsou uvedeny na obrázku 5. Hodnocení prvního R-C páry vybrány tak, aby omezovaly výstupní proud čipu SLG46620V. Druhý článek filtru určuje zisk, který je 0,2. Amplituda obdélníkových signálů nastavuje pracovní bod operačního zesilovače na 2,5 V. Nežádoucí napětí jsou blokována výstupními filtračními kondenzátory.

Rýže. 5. Schémata výstupních filtrů

Na výstupu jsou signály filtru sečteny a výsledný signál je součtem harmonických vybraných ze skupiny nízkých a vysokých frekvencí. Pro kompenzaci útlumu filtru lze nastavit amplitudu výstupního signálu pomocí dvou rezistorů R9 a R10. Obrázek 6 ukazuje obvod sčítačky. Obrázek 7 ukazuje celou analogovou část obvodu.

Rýže. 6. Schematické schéma sčítačky

Rýže. 7. Analogová část obvodu

Digitální část obvodu DTMF tónového generátoru

Digitální část obvodu generátoru tónů DTMF obsahuje celou sadu generátorů obdélníkových vln - jeden pro každou frekvenci DTMF. Protože k vytvoření těchto generátorů je potřeba osm čítačů, byl pro jejich implementaci zvolen čip GreenPAK SLG46620V. Na výstupech digitálního obvodu jsou generovány dva obdélníkové signály, jeden pro každou frekvenční skupinu.

Obdélníkové signály jsou generovány pomocí čítačů a D klopných obvodů a mají pracovní cyklus 50 %. Z tohoto důvodu je frekvence spínání čítače dvojnásobkem požadované frekvence DTMF a klopný obvod DFF rozděluje výstupní signál na dva.

Zdrojem hodin pro čítače je vestavěný 2 MHz RC oscilátor, jehož frekvence je dále dělena 4 nebo 12. Dělič se volí s ohledem na bitovou kapacitu a maximální hodnotu každého čítače potřebnou pro získání konkrétního frekvence.

Pro generování vysokých frekvencí je potřeba méně vzorků, proto se k jejich generování používají 8bitové čítače, taktované z interního RC oscilátoru, jehož signál je dělený 4. Ze stejného důvodu jsou nižší frekvence implementovány pomocí 14bitových čítačů.

SLG46620V má pouze tři standardní 14bitové čítače, takže jedna z nižších frekvencí byla implementována pomocí 8bitového čítače CNT8. Aby se počet vzorků dostal do rozsahu 0...255, k taktování tohoto CNT8 bylo nutné použít signál RC oscilátoru dělený 12. Pro tento obvod platí kmitočet s největším počtem vzorků, který je, byla vybrána nejnižší frekvence. To nám umožnilo minimalizovat chyby.

Tabulka 3 ukazuje parametry každé čtvercové vlny.

Tabulka 3. Parametry generátorů čtvercových impulsů

Hodiny

Chyba frekvence [%]

Nízkoprůchodová skupina

Skupina výšek

Jak je z tabulky patrné, všechny frekvence mají chybu menší než 1,8 %, vyhovují tedy standardu DTMF. Tyto vypočtené charakteristiky, založené na ideální frekvenci RC oscilátoru, lze upravit měřením výstupní frekvence RC oscilátoru.

Přestože v navrženém obvodu pracují všechny generátory paralelně, na výstup mikroobvodu bude poslán signál pouze jednoho generátoru z každé skupiny. Volbu konkrétních signálů určuje uživatel. To se provádí pomocí čtyř vstupů GPIO (dva bity pro každou skupinu) s pravdivostní tabulkou uvedenou v tabulce 4.

Tabulka 4. Tabulka pro výběr frekvencí z nízkofrekvenční skupiny

Nízkoprůchodová skupina

Tabulka 5. Tabulka výběru frekvence z vysokofrekvenční skupiny

Skupina výšek

Obrázek 8 ukazuje logický obvod generátoru obdélníkových vln o frekvenci 852 Hz. Tento vzor se opakuje pro každou frekvenci s příslušným nastavením čítače a konfigurací LUT.

Rýže. 8. Generátor obdélníkových impulsů

Čítač generuje výstupní frekvenci určenou jeho nastavením. Tato frekvence je rovna dvojnásobku frekvence odpovídajícího tónu DTMF. Konfigurační parametry měřiče jsou zobrazeny na obrázku 9.

Rýže. 9. Příklad nastavení čítače obdélníkového generátoru impulsů

Výstupní signál čítače je připojen k hodinový vstup D-Flip Flop spoušť. Protože je výstup DFF nakonfigurován jako invertovaný, připojíte-li výstup DFF k jeho vstupu, klopný obvod D se převede na klopný obvod T. Konfigurační parametry DFF jsou vidět na obrázku 10.

Rýže. 10. Příklad nastavení spouště obdélníkového generátoru pulsů

Signál z výstupu DFF je přiváděn na vstup pravdivostní tabulky LUT. LUT se používají k výběru jednoho signálu pro každou specifickou kombinaci R1-R0. Příklad konfigurace LUT je znázorněn na obrázku 11. B v tomto příkladu, pokud R1 přijme „1“ a R0 přijme „0“, je vstupní signál přenesen na výstup. V ostatních případech výstup obsahuje „0“.

Rýže. 11. Příklad nastavení pravdivostní tabulky generátoru čtvercových impulsů

Jak bylo uvedeno výše, navrhovaný obvod má vstup Enable enable. Pokud je na vstupu povolení povolení logická jednotka „1“, pak jsou generované obdélníkové signály přiváděny do dvojice výstupů mikroobvodu. Doba přenosu se rovná trvání impulsu na vstupu povolení. K implementaci této funkce bylo zapotřebí několik dalších LUT.

Skupina horní propusti používá jednu 4bitovou LUT a jednu 2bitovou LUT, jak je znázorněno na obrázku 12.

Rýže. 12. Výstupní obvod skupiny výšek

4bitový LUT1 nakonfigurovaný jako logický prvek NEBO, takže na výstupu je logická jednička „1“, pokud je na některém z jejích vstupů přítomna „1“. Pravdivostní tabulky C1/C0 umožňují vybrat pouze jeden z oscilátorů, takže 4bitový LUT1 určuje, který signál bude na výstupu. Výstup tohoto LUT je připojen k 2bitovému LUT4, který vysílá signál pouze v případě, že vstup povolení je logická "1". Obrázky 13 a 14 ukazují konfigurace 4bitové LUT1 a 2bitové LUT4.

Rýže. 13. Konfigurace 4bitové LUT1

Rýže. 14. 2bitová konfigurace LUT4

Protože již neexistovaly 4bitové pravdivostní tabulky LUT, byly pro skupinu dolní propusti použity dvě 3bitové LUT.

Rýže. 15. Skupinový výstupní obvod dolní propusti

Kompletní vnitřní obvody GreenPAK SLG46620V jsou zobrazeny na obrázku 16. Obrázek 17 ukazuje konečné schéma zapojení generátoru DTMF.

Rýže. 16. Blokové schéma generátoru tónů DTMF

Rýže. 17. Schéma generátoru tónů DTMF

Testování obvodu generátoru DTMF

V první fázi testování navrženého DTMF generátoru bylo rozhodnuto zkontrolovat frekvence všech generovaných obdélníkových signálů pomocí osciloskopu. Jako příklad jsou na obrázcích 18 a 19 znázorněny výstupy obdélníkových vln pro 852 Hz a 1477 Hz.

Rýže. 18. Obdélníková vlna 852 Hz

Rýže. 19. Obdélníková vlna 1477 Hz

Jakmile byly zkontrolovány frekvence všech obdélníkových signálů, začalo testování analogové části obvodu. Byly zkoumány výstupní signály pro všechny kombinace nízkých a vysokých frekvencí. Jako příklad obrázek 20 ukazuje součet signálů 770 Hz a 1209 Hz a obrázek 21 ukazuje součet signálů 941 Hz a 1633 Hz.

Rýže. 20. DTMF tón 770 Hz a 1209 Hz

Rýže. 21. DTMF tón 941 Hz a 1633 Hz

Závěr

V tomto článku byl navržen obvod pro DTMF tónový generátor založený na čipu Silego GreenPAK SLG46620V a operačních zesilovačích Silego SLG88104V. Generátor umožňuje uživateli vybrat kombinace požadovaných frekvencí pomocí čtyř vstupů a ovládat vstup povolení, který určuje dobu trvání výstupních signálů.

Vlastnosti čipu SLG46620V:

  • Typ: Programovatelný integrovaný obvod se smíšeným signálem;
  • Analogové bloky: 8bitový ADC, dva DAC, šest komparátorů, dva filtry, ION, čtyři integrované oscilátory;
  • Digitální bloky: Až 18 I/O portů, propojovací matice a kombinatorická logika, programovatelné zpožďovací obvody, programovatelný generátor funkcí, šest 8bitových čítačů, tři 14bitové čítače, tři PWM oscilátory/komparátory;
  • Komunikační rozhraní: SPI;
  • Rozsah napájecího napětí: 1,8…5 V;
  • Rozsah provozních teplot: -40…85 °C;
  • Verze balení: 2 x 3 x 0,55 mm 20-pin STQFN.

Charakteristické rysy:

  • Generování sinusových vln pomocí modulace šířky pulzu (PWM)
  • Kombinace různých sinusových signálů do jednoho DTMF signálu
  • Zdrojové kódy v jazycích assembleru a C
  • Navrženo pro práci s STK500
  • Velikost kódu programu 260 bajtů / konstantní velikost tabulky 128 bajtů
  • Použití metody konverze tabulky

Úvod

Tento dokument popisuje techniku ​​generování signálů DTMF (dvoutónové vícefrekvenční signály) pomocí libovolného mikrokontroléru AVR obsahujícího jednotku pulsně šířkové modulace (PWM) a statickou RAM. Tyto signály jsou široce používány v telefonii, kde jsou reprodukovány při stisknutí tlačítek vytáčení telefonního přístroje. Chcete-li správně generovat signál DTMF, musíte překrývat dvě frekvence: nízká frekvence(fb) a vysokofrekvenční (fa). Tabulka 1 ukazuje, jak jsou různé frekvence smíchány, aby se vytvořily tóny DTMF, když jsou stisknuty různé klávesy.

Obrázek 1 – Obvod generátoru signálu DTMF

Tabulka 1 – Matice generování tónového signálu

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

Řádky tabulky 1 ukazují hodnoty nízké frekvence a sloupce hodnoty vysoké frekvence. Například matice ukazuje, že když stisknete tlačítko „5“, frekvence fb = 770 Hz a fa = 1336 Hz by měly být smíchány. V důsledku sčítání dvou sinusových signálů různých frekvencí se vytvoří signál DTMF

kde je poměr amplitud K=Ab/Aa zdrojové signály musí splňovat podmínku

Princip fungování

kromě obecná informace O použití pulsně šířkové modulace bude níže ukázáno, jak pulsně šířková modulace umožňuje generovat sinusové signály. Následující odstavec popisuje, jak použít základní spínací frekvenci k získání různých frekvencí. Po zvážení teoretické základy Bude uveden popis samotného generátoru signálu DTMF. Generování sinusových vln

V závislosti na poměru trvání vysokých napěťových úrovní VH a nízkých VL se mění průměrná hodnota na výstupu PWM. Pokud je poměr mezi trváními obou úrovní udržován konstantní, bude jako výsledek generována konstantní úroveň napětí VAV. Obrázek 2 ukazuje signál modulovaný šířkou pulzu.


Obrázek 2 – Generování úrovně stejnosměrného napětí

Úroveň napětí je určena výrazem:

(3)

Sinusový signál může být generován za předpokladu, že se průměrná hodnota napětí generovaného pulzní šířkovou modulací mění v každém cyklu PWM. Vztah mezi vysokou a nízkou úrovní musí být nastaven v souladu s napěťovou úrovní sinusové vlny v odpovídajícím čase. Obrázek 3 ilustruje tento proces. Zdrojová data pro PWM se vypočítají pro každé jeho období a zaznamenají se do převodní tabulky (TC).

Obrázek 3 také ukazuje vztah mezi frekvencí základní sinusovky a počtem vzorků. Čím vyšší je počet vzorků (Nc), tím vyšší je přesnost modelování výsledného signálu:

(4)

Frekvence PWM závisí na rozlišení PWM. Při 8bitovém rozlišení je konečná hodnota (horní část počtu) časovače 0xFF (255). Protože Časovač pak počítá dopředu a dozadu daná hodnota by měla být zdvojnásobena. Proto lze spínací frekvenci vypočítat dělením hodinová frekvencečasovač f CK na 510. Při taktovací frekvenci časovače 8 MHz bude tedy výsledná frekvence PWM 15,6 kHz.


Obrázek 3 – Generování sinusového signálu pomocí PWM

Změna frekvence sinusovky

Předpokládejme, že sinusové vzorky nejsou čteny z vyhledávací tabulky postupně, ale jeden po druhém. V tomto případě bude při stejné vzorkovací frekvenci generován signál s dvojnásobnou frekvencí (viz obrázek 4).


Obrázek 4 – Zdvojnásobení výsledné frekvence (XSW = 2)

Analogicky, pokud nečtete každou druhou hodnotu, ale každou třetí, čtvrtou, pátou (respektive šířka kroku je 3, 4, 5...) atd. je možné generovat Nc frekvence v rozsahu . Všimněte si, že pro vysoké frekvence nebude výsledný tvar vlny sinusový. Šířku kroku označíme podle převodní tabulky jako XSW, Kde

(5)

Výpočet aktuální polohy v TP pro další periodu PWM (při přetečení časovače) se provádí pomocí výrazu (6). Nová hodnota v pozici X LUT závisí na jeho předchozím stavu v poloze X" LUT s rostoucí šířkou kroku XSW

(6)

Přidání různých frekvencí pro získání signálu DTMF

DTMF signál lze generovat pomocí výrazů (1) a (2). Pro zjednodušení aritmetických operací se bere hodnota koeficientu K rovna 0,75, aby se aritmetická operace nahradila logickými posuny. S přihlédnutím k výrazu (6) lze aktuální hodnotu pro řízení PWM vypočítat pomocí výrazu:

a s přihlédnutím k tomu X LUTa=X" LUta + XSWa ,X LUTb=X" LUTb + XSWb, pojďme to konečně napsat

Implementace DTMF generátoru

V tato aplikace pojednává o konstrukci tónového generátoru DTMF využívajícího 8bitový PWM výstup (OC1A) a tabulku se 128 vzorky funkce sinus (Nc), každý specifikovaný 7 bity (n). Následující výrazy ukazují tuto závislost a také ukazují, jak vypočítat položky vyhledávací tabulky:

(9)

Výhodou použití 7 bitů je, že součet hodnot vysokofrekvenčního a nízkofrekvenčního signálu má velikost jednoho bajtu. Pro podporu celé sady tónů DTMF je třeba vypočítat 8 hodnot pro každou frekvenci DTMF z tabulky 1 a zadat je do vyhledávací tabulky.

Pro dosažení vyšší přesnosti bylo implementováno následující řešení: hodnoty vypočítané pomocí výrazu 5 vyžadují pouze 5 bajtů. Chcete-li použít všech 8 bajtů, což sníží chyby zaokrouhlování, tato hodnota se vynásobí 8. Ukazatel na vyhledávací tabulku se zapíše stejným způsobem. Ale v tomto případě trvá uložení 8násobku hodnoty dva bajty. To znamená, že před použitím těchto bajtů jako ukazatele na hodnoty sinusové vlny v


Obrázek 5 – Schéma modulu pro připojení k STK500

PWM signál je generován na pinu OC1A (PD5). Dodatečný výstupní filtr pomůže zajistit větší kompatibilitu signálu se sinusovým průběhem. Při snižování frekvence PWM může být pro dosažení dobrého výsledku nutné použít filtr se strmější frekvenční odezvou.

Zapojení klávesnice je znázorněno na obrázku 1. Obsluha klávesnice musí být organizována tak, aby bylo možné určit stisknutou klávesu. To lze provést pomocí následujícího algoritmu:

  1. Určení řetězce stisknuté klávesy
    • nakonfigurujte notebook nízkého řádu portu B jako výstup a nastavte protokol. "0"
    • nakonfigurujte vysokou tetradu portu B jako vstup s připojením pull-up rezistorů
    • řádek se stisknutým tlačítkem je definován jako číslice nejvyšší tetrády s log. "0"
  2. Definování sloupce stisknuté klávesy
    • nakonfigurujte vysoký notebook portu B jako výstup a nastavte log. "0"
    • nakonfigurujte tetrádu nízkého řádu portu B jako vstup připojením pull-up rezistorů
    • sloupec se stisknutým tlačítkem je definován jako číslice tetrády nízkého řádu s log. "0"

Poznámka: U STK200 jsou rezistory zapojeny do série mezi kolíky konektoru PORTB a kolíky mikrokontroléru BP5, PB6 a PB7 (viz schéma STK200). To způsobí problémy, pokud je klávesnice připojena ke konektoru PORTB.

Obrázek 6 znázorňuje činnost podprogramu pro určení stisknuté klávesy. V závislosti na stisknutém tlačítku se určí délka intervalu. Rutina přerušení používá tuto hodnotu k výpočtu nastavení PWM pro dvě sinusové vlny tónu DTM. Postup zpracování přerušení je znázorněn na obrázcích 7 a 8.

Tato rutina vypočítá hodnotu pro porovnání s výstupem časovače pro další periodu PWM. Rutina přerušení nejprve vypočítá pozici další hodnoty vzorku ve vyhledávací tabulce a přečte hodnotu tam uloženou.

Poloha vzorku ve vyhledávací tabulce je určena šířkou pulzu a skutečná šířka pulzu je určena generovanou frekvencí.

Konečná hodnota, která je zapsána do porovnávacího registru časovače, je určena pomocí vzorce (7), který bere v úvahu vzorové hodnoty obou DTMF frekvencí.


Obrázek 6 – Blokové schéma hlavního programu

Se zavedením modern digitální PBX V telefonních sítích Ruské federace se postupně rozšiřuje vícefrekvenční způsob přenosu signálů volby, označovaný anglickou zkratkou DTMF (Dual-Tone Multiple-Frequency). Někdy se pro pojmenování tohoto systému přenosu signálu vytáčení používá jiný anglický výraz – Touch-None (tónová volba). Tato metoda byla vyvinuta v roce 1960, ale její skutečné rozšíření začalo až v 80. letech s rozšířením digitálních (elektronických) telefonních ústředen.

Při tomto způsobu přenosu řídicích signálů se každý vícefrekvenční číslicový signál skládá ze dvou tónů v souladu s doporučením ITU-T Q.23 "Technické vlastnosti telefonů s dotykovou volbou".

Frekvence DTMF nejsou voleny harmonicky. To znamená, že frekvence nemají jiného celočíselného dělitele než 1. Například frekvence 1200 a 1600 Hz jsou harmonické frekvence 400 Hz (3x400=1200 a 4x400=1600) a frekvence 697 a 770 Hz jsou neharmonické.

Každý signál obsahuje dvě frekvence: jednu z nižší a druhou z horní skupiny frekvencí.

Souvislost mezi přenášenými informacemi a frekvencemi je uvedena v tabulce na předním panelu laboratorní instalace.

Přenosová úroveň ve dvoufrekvenčním balíčku, měřená při zatížení 600 Ohmů, je: pro spodní frekvenční skupinu - minus 6 dBmO ± 2 dB, pro horní frekvenční skupinu - minus 3 dBmO ± 2 dB. Frekvenční úroveň horní skupiny frekvencí v celkovém signálu je o 2 ±1 dB vyšší než frekvenční úroveň spodní skupiny. Celková úroveň všech frekvenčních složek vyššího řádu je minimálně 20 dB pod frekvenční úrovní nižšího řádu.

Podmínky, za kterých by měl nastat normální příjem signálu, jsou následující: přítomnost dvou frekvencí v signálu, z nichž jedna je vybrána ze spodní skupiny a druhá z horní; frekvence se neliší od svých nominálních hodnot o více než 1,8 %; úroveň každé ze dvou frekvencí se pohybuje od minus 7 do minus 30 dBmO; rozdíl mezi úrovněmi obou frekvencí nepřesahuje 3 dB; doba trvání frekvenčního signálu je minimálně 40 ms.

Před zapnutím instalace proveďte následující operace:

Nastavte spínač S6 do spodní polohy;

Nastavte spínač S13 do horní polohy;

Nastavte přepínače generátorů skupiny horní a dolní frekvence do polohy „Off“;

Nastavte analogový klíčový spínač (AK) do polohy „Zapnuto“;

Otáčejte knoflíky pro nastavení výstupního napětí generátorů a rezistoru R3 proti směru hodinových ručiček, dokud se nezastaví.

úprava signálu dtmf

1.1 Povolit instalaci.

1.2 Připojte osciloskop k testovacímu bodu KT3.

1.3 Zapněte generátor horní frekvenční skupiny, stisknutím jednoho z přepínacích tlačítek vyberte kteroukoli z frekvencí této skupiny.

1.4 Otáčením knoflíku pro nastavení výstupního napětí generátoru nastavte amplitudu signálu v CT3 na 0,5 V.

1.5 Přepněte vstup osciloskopu na testovací bod KT4. Opakujte kroky 1.3, 1.4 pro generátor nižší frekvenční skupiny a nastavte napětí v KT4 na 0,5 V.

POZNÁMKA: V důsledku provedených operací jsou na vstup sčítačky přiváděny signály stejné amplitudy z horní a dolní frekvenční skupiny. Po nastavení těchto úrovní zablokujte knoflíky pro nastavení výstupního napětí generátorů.

1.6 Přepněte vstup osciloskopu na testovací bod KT7. Otáčením knoflíku odporu (R3) pro úpravu výstupního napětí kondicionéru signálu DTMF nastavte napětí v CT7 na 0,5 V.

POZNÁMKA: V důsledku provedených operací je na vstup přijímače přiváděn nepřetržitý dvoutónový signál a na indikátoru přijímaného symbolu by měl být zobrazen symbol odpovídající kombinaci frekvencí generátorů horní a dolní frekvenční skupiny. , v souladu s tabulkou. Indikace přijatého a identifikovaného signálu je přítomnost signálu na výstupu STD přijímače (LED záře).

      Přepínáním frekvencí horní a dolní frekvenční skupiny se ujistěte, že kombinace těchto frekvencí odpovídají přijímaným symbolům.