مطالعه گیرنده و فرستنده سیگنال های dtmf. ژنراتور چند فرکانس دوگانه (DTMF) در AVR حالا بیایید ببینیم چه چیزی به دست آوردیم

قسمت اول این نرم افزار نحوه تولید سیگنال های DTMF با استفاده از میکروکنترلر MSP430 را شرح می دهد. در مورد مهمترین مشخصات مورد استفاده در این مورد توضیح داده شده و توجیه نظری و ریاضی برای تولید امواج سینوسی با استفاده از امواج مربعی با استفاده از فیلترهای آنالوگ مناسب ارائه شده است. این مثال همچنین شامل برنامه های آزمایشی آزمایش شده برای تولید سیگنال های موج مربعی بر اساس پیکربندی های مختلف تایمر میکروکنترلرهای MSP430 است. بخش نهایی یک نمودار مدار برای تولید سیگنال های DTMF از سیگنال های موج مربعی ارائه می دهد.

2 مشخصات سیگنال DTMF

مخفف DTMF مخفف "Dual Tone Multi Frequency" است و روشی برای نمایش ارقام در فرکانس های مختلف به منظور انتقال آنها از طریق خطوط ارتباطی آنالوگ است، به عنوان مثال. خط تلفن. هنگام توسعه استاندارد، این شرایط در نظر گرفته شد - همه فرکانس ها باید در محدوده "صدا" باشند، که باعث کاهش الزامات کانال انتقال می شود. شبکه های تلفن از سیگنال های DTMF برای شماره گیری و سایر اطلاعات استفاده می کنند. با وجود این واقعیت که روش شماره گیری پالس هنوز به طور گسترده استفاده می شود، که استاندارد است، به عنوان مثال، در آلمان، زمان شماره گیری به طور قابل توجهی افزایش می یابد و منجر به بار غیرمولد در خطوط ارتباطی می شود. علاوه بر این، بسیاری از خدمات اضافیارتباطات فقط با استفاده از شماره گیری صوتی امکان پذیر است. هنگام رمزگذاری با استفاده از روش DTMF، اعداد 0-9 و حروف A-D، */E و #/F ترکیبی از دو فرکانس را نشان می دهند:

فرکانس 1209 هرتز 1336 هرتز 1477 هرتز 1633 هرتز
697 هرتز 1 2 3 آ
770 هرتز 4 5 6 ب
852 هرتز 7 8 9 سی
941 هرتز */E 0 #/F D

در این سیستم، ستون نشان دهنده فرکانس از گروه فرکانس "بالا" (Hi-Group: 1209-1633 هرتز) و ردیف نشان دهنده فرکانس از گروه فرکانس "پایین" (Lo-Group: 697-941 Hz) است. . فرکانس های تونال برای از بین بردن تأثیر هارمونیک ها انتخاب می شوند. فرکانس ها مضرب یکدیگر نیستند و هیچ فرکانس DTMF را نمی توان با جمع یا تفریق فرکانس های دیگر به دست آورد. برای تولید شماره‌گیر در شبکه Deutsche Telekom، مشخصات زیر مورد نیاز است (برگرفته از Zulassungsvorschrift des Bundesamtes fur Post und Telekommunikation، BAPT 223 ZV 5 (مشخصات رسمی وزارت پست و مخابرات فدرال):

3 سیگنال های DTMF را تولید کنید

همانطور که در بالا توضیح داده شد، سیگنال های DTMF آنالوگ هستند و از دو موج سینوسی مستقل تشکیل شده اند. بنابراین، تنها امکان تولید چنین سیگنال هایی وجود ندارد به صورت دیجیتالی. سیگنال های دیجیتال باید با استفاده از ADC و/یا فیلترهای آنالوگ به شکل موج سینوسی مورد نیاز تبدیل شوند.

3.1 تولید با استفاده از امواج مربعی

اگر از سیگنال های موج مربعی برای تولید سیگنال های DTMF استفاده شود، نرم افزار و سخت افزارحداقل هر سیگنال پیوسته ای که دارای دوره T باشد را می توان با یک سری فوریه متشکل از مجموع بی نهایت امواج سینوسی و کسینوس به صورت زیر نشان داد:

جایی که a0/2 جزء ثابت سیگنال است. عنصر مجموع با کمترین فرکانس زاویه ای (w0) هارمونیک اصلی (بنیادی) نامیده می شود، بقیه هارتون ها یا هارمونیک های بالاتر هستند.

ساده ترین سیگنال پیوسته ای که با استفاده از یک میکروکنترلر اجرا می شود، یک موج مربعی است که سری فوریه به شکل زیر است:

سهم هر جزء فرکانس در سیگنال کل به بهترین وجه توسط طیف دامنه نشان داده می شود (شکل 2 را ببینید):


برنج. 2: طیف دامنه سیگنال موج مربعی

هنگام استفاده از یک فیلتر آنالوگ، مولفه DC و هارمونیک های بالاتر به طور موثر سرکوب می شوند، در حالی که در خروجی یک سیگنال سینوسی با فرکانس برابر با فرکانس موج مربع اصلی داریم.

3.2 نرم افزار برای تولید پیچ ​​و خم

برنامه تولید پرپیچ و خم باید شرایط زیر را برآورده کند:

  • قادر به سنتز دو سیگنال مستطیلی مستقل باشد.
  • برای جداسازی سیگنال‌ها، دو پین خروجی برای تولید سیگنال از "گروه بالا" (Hi-Group) و "Lower" (Lo-Group) مورد نیاز است. محدوده فرکانسبه ترتیب.
  • نرم افزار باید بتواند مدت زمان سیگنال مورد نیاز را در محدوده تقریباً 65 تا 100 میلی ثانیه تنظیم کند.

میکروکنترلرهای سری MSP430 دارای تایمرهای داخلی مختلفی هستند که قادر به تولید سیگنال های موج مربعی هستند. خانواده '31x/'32x از یک تایمر 8 بیتی و یک پورت تایمر برای تولید هر دو سیگنال موج مربعی استفاده می کند. این برنامهدر فرکانس MCLK برابر با 1.048 مگاهرتز تست شده است. Timer_A در خانواده '33x می تواند به طور مستقل هر دو سیگنال مورد نیاز را تولید کند. برنامه دوم از این تایمر برای تولید امواج مربعی استفاده می کند و با هر فرکانس MCLK کار می کند. در ادامه هر دو برنامه به تفصیل مورد بحث قرار خواهند گرفت.

3.2.1 تولید امواج مربعی با استفاده از تایمر 8 بیتی و پورت تایمر

در شکل شکل 3 فلوچارتی از روش اولیه سازی برای تولید سیگنال های DTMF است. برای سنتز این دو فرکانس، از پورت تایمر و شمارنده های تایمر 8 بیتی استفاده می شود. هر یک از آنها یک رجیستر شمارنده قابل برنامه ریزی است که برای سنتز دقیق فرکانس های مورد نیاز ضروری است. اگر شمارنده‌های پورت تایمر به یک تایمر 16 بیتی تبدیل شوند و در فرکانس سیستم MCLK کلاک شوند، فرکانس‌های برد بالا را می‌توان با دقت بالا تولید کرد. هنگامی که یک وقفه رخ می دهد، خروجی مربوطه سوئیچ می شود و هر دو رجیستر شمارنده 8 بیتی تنظیم مجدد می شوند. مقادیر بارگذاری شده در دو متغیر در RAM ذخیره می شوند تا رجیسترهای داخلی برای کارهای دیگر ذخیره شوند.

فرکانس های محدوده پایین توسط یک تایمر 8 بیتی تولید می شوند. از آنجایی که رجیستر شمارنده این تایمر 8 بیت عرض دارد، تنها هر سومین وقفه باعث تغییر سطح در پین خروجی مورد نیاز می شود و امکان تولید همان فرکانس شمار را فراهم می کند.

دو خروجی تایمر - پورت ها برای تشکیل دو پیچ و خم با فرکانس های مختلف استفاده می شوند.

برنج. 3 فلوچارت روش اولیه سازی برای تولید سیگنال های DTMF

مراحل اولیه فقط یک بار انجام می شود. پس از اتمام آن، مقدار هگزادسیمال کاراکتر ارسال شده از متغیر سراسری در RAM خوانده می شود. هنگامی که دو فرکانس که تون های DTMF بالا و پایین را تشکیل می دهند از دو جدول تولید می شوند، تنها چیزی که لازم است مقداردهی اولیه و شروع هر دو تایمر است. مدت زمان ارسال با شمارش نیم چرخه فرکانس "پایین" کنترل می شود و از یک جدول اضافی خوانده می شود. پس از تکمیل این رویه، به تابع نظرسنجی باز می گردید. روال های مدیریت وقفه مربوطه، پین های پورت را تغییر می دهند. این فرآیند در شکل نشان داده شده است. 4 و 5.

وظایف تایمر-پورت فقط شامل ضبط گزارش است. سطح در خروجی پورت و بارگذاری مجدد شمارنده از RAM، در حالی که عملکرد یک تایمر 8 بیتی ساختار کمی پیچیده تری دارد: هر ورودی به وقفه توسط یک ثبت شمارنده شمارش می شود. خروجی تنها پس از سه وقفه می تواند تغییر حالت دهد. علاوه بر این، هر نیم چرخه نیز محاسبه می شود. با رسیدن به تعداد مشخصی از نیم چرخه، تولید متوقف می شود.


برنج. 4 بلوک - مدار قطع از یک تایمر 8 بیتی (Lo-Group)


برنج. 5 بلوک - مدار قطع تایمر-پورت (Hi-Group)

; تعاریف سفارشی معادله FLLMPY 32 ; ضریب فرکانس FLL در 1.048 مگاهرتز TCLK معادل FLLMPY*32768؛ TCLK: FLLMPY x f کوارتز DL equ 85 ; مدت زمان سیگنال DTMF (65..100 میلی ثانیه) LO_OUT معادل 02h ; خروجی فرکانس پایین HI_OUT معادل 04h ; خروجی فرکانس بالا RCOUNT معادله r14 ; طول شمارنده DTMF RTEMP equ r15 ; ثبت خدمات.جهانی DTMF_NR ; متغیر جهانی در RAM؛ برای عدد DTMF (0..F) ; تعاریف RAM.even .bss DTMF_TL ; حتی آدرس alignment.bss DTMF_TH .bss DTMF_NR ; متغیر جهانی در RAM؛ برای عدد DTMF (0..F). even ; تعاریف تایمر 8 بیتی TCCTL EQU 42H TCPLD EQU 43H TCDAT EQU 44H ; تعاریف پورت تایمر جهانی TPCTL equ 04bh ; کنترل پورت تایمر TPCNT1 equ 04ch ; شمارنده پورت تایمر 1 TPCNT2 equ 04dh ; شمارنده پورت تایمر 2 TPD equ 04eh ; داده تایمر پورت TPE معادل 04fh ; Timer-port-resolution.text ; جداول فرکانس DTMF: جدول شامل; تعداد چرخه های MCLK برای یک نیم چرخه. ; جدول برای فرکانس "بالا"؛ اصلاحیه اصلاحی اضافه شد. برای در نظر گرفتن زمان ورود به وقفه DTMF_HI .word 0ffffh-(TCLK/(1336*2))+25 ; فرکانس بالا برای 0 .word 0ffffh-(TCLK/(1207*2))+28 ; فرکانس بالا برای 1 .word 0ffffh-(TCLK/(1336*2))+25 ; فرکانس بالا برای 2 .word 0ffffh-(TCLK/(1477*2))+24 ; فرکانس بالا برای 3 کلمه 0ffffh-(TCLK/(1207*2))+28 ; فرکانس بالا برای 4 .word 0ffffh-(TCLK/(1336*2))+25 ; فرکانس بالا برای 5 .word 0ffffh-(TCLK/(1477*2))+24 ; فرکانس بالا برای 6 .word 0ffffh-(TCLK/(1207*2))+28 ; فرکانس بالا برای 7 .word 0ffffh-(TCLK/(1336*2))+25 ; فرکانس بالا برای 8 .word 0ffffh-(TCLK/(1477*2))+24 ; فرکانس بالا برای 9 .word 0ffffh-(TCLK/(1633*2))+22 ; فرکانس بالا برای A .word 0ffffh-(TCLK/(1633*2))+22 ; فرکانس بالا برای B .word 0ffffh-(TCLK/(1633*2))+22 ; فرکانس بالا برای C .word 0ffffh-(TCLK/(1633*2))+22 ; فرکانس بالا برای D .word 0ffffh-(TCLK/(1207*2))+28 ; فرکانس بالا برای * .word 0ffffh-(TCLK/(1477*2))+24 ; فرکانس بالا برای # ; جدول برای فرکانس "پایین" DTMF_LO .byte 0ffh-(TCLK/(941*2*3)) ; فرکانس پایین برای 0.byte 0ffh-(TCLK/(697*2*3)) ; فرکانس پایین برای 1. بایت 0ffh-(TCLK/(697*2*3)) ; فرکانس پایین برای 2. بایت 0ffh-(TCLK/(697*2*3)) ; فرکانس پایین برای 3. بایت 0ffh-(TCLK/(770*2*3)) ; فرکانس پایین برای 4.byte 0ffh-(TCLK/(770*2*3)) ; فرکانس پایین برای 5.byte 0ffh-(TCLK/(770*2*3)) ; فرکانس پایین برای 6.byte 0ffh-(TCLK/(853*2*3)) ; فرکانس پایین برای 7.byte 0ffh-(TCLK/(853*2*3)) ; فرکانس پایین برای 8. بایت 0ffh-(TCLK/(853*2*3)) ; فرکانس پایین برای 9. بایت 0ffh-(TCLK/(697*2*3)) ; فرکانس پایین برای A .byte 0ffh-(TCLK/(770*2*3)) ; فرکانس پایین برای B .byte 0ffh-(TCLK/(853*2*3)) ; فرکانس پایین برای C .byte 0ffh-(TCLK/(941*2*3)) ; فرکانس پایین برای D.byte 0ffh-(TCLK/(941*2*3)) ; فرکانس پایین برای *.byte 0ffh-(TCLK/(941*2*3)) ; فرکانس پایین برای # ; جدول مدت زمان سیگنال DTMF_L .byte 2*941*DL/1000 ; نیم چرخه برای 0. بایت 2*697*DL/1000; نیم چرخه برای 1. بایت 2*697*DL/1000; نیم چرخه برای 2. بایت 2*697*DL/1000; نیم چرخه برای 3. بایت 2*770*DL/1000; نیم چرخه برای 4. بایت 2*770*DL/1000; نیم چرخه برای 5. بایت 2*770*DL/1000 ; نیم چرخه برای 6. بایت 2*852*DL/1000 ; نیم چرخه برای 7. بایت 2*852*DL/1000; نیم چرخه برای 8. بایت 2*852*DL/1000; نیم چرخه برای 9. بایت 2*697*DL/1000; نیم چرخه برای A. بایت 2*770*DL/1000; نیم چرخه برای B.byte 2*852*DL/1000 ; نیم چرخه برای C.byte 2*941*DL/1000; نیم چرخه برای D.byte 2*941*DL/1000; نیم چرخه برای *.بایت 2*941*DL/1000 ; نیم چرخه برای # ;************************************************ ****************************************** ; زیربرنامه DTMF-TX DTMF ;******************************************** ******************************** DTMF_TX mov.b DTMF_NR,RTEMP ; ذخیره شماره در یک ثبت موقت mov.b DTMF_L(RTEMP),RCOUNT ; شمارشگر مدت ذخیره؛ تایمر 8 بیتی را برای فرکانس DTMF-Lo mov.b #0a8h،&TCCTL آماده کنید. ساعت از MCLK mov.b DTMF_LO(RTEMP),&TCPLD ; آماده سازی ثبت نام؛ پیش بارگذاری mov.b #000,&TCDAT ; بارگیری شمارنده از یک رجیستر؛ پیش بارگذاری bis.b #008h,&IE1 ; فعال کردن وقفه ها؛ از یک تایمر 8 بیتی؛ آماده کردن یک پورت تایمر برای فرکانس DTMF-Hi rla r15. * 2 برای mov جدول 16 بیتی DTMF_HI(RTEMP),&DTMF_TL ; ذخیره کلمه برای فرکانس بالا mov #003, RTEMP ; شمارنده برای تایمر 8 بیتی bis.b #008h,IE2 ; فعال کردن وقفه ها؛ از timer-port mov.b &DTMF_TH,&TPCNT2 ; بارگیری بایت بالا در TC2 mov.b &DTMF_TL,&TPCNT1 ; بارگیری بایت کم در TC1 bis.b #080h،&TPD ; فعال کردن تایمر 16 بیتی bis.b #HI_OUT+LO_OUT,&TPE ; فعال کردن خروجی های DTMF-Hi/Lo mov.b #090h,&TPCTL ; فعال کردن تایمر ret ;************************************************ **************************************** ; وقفه درگاه تایمر؛******************************************** *********************************** TP_INT xor.b #HI_OUT,&TPD ; معکوس کردن خروجی DTMF-Hi mov.b &DTMF_TH,&TPCNT2 ; در حال بارگیری کارشناسی ارشد

3.2.2 1 تولید امواج مربعی با استفاده از Timer_A

این روال تولید سیگنال DTMF فقط از Timer_A برای مربع موج هر دو فرکانس مورد نظر استفاده می کند. فرآیند مونتاژ مقادیر مناسب را برای تایمر برای استفاده از برنامه بدون توجه به مقدار فرکانس MCLK محاسبه می کند. مدت زمان سیگنال خروجی با ثابت DL بر حسب میلی ثانیه مشخص می شود.

; تعاریف سخت افزار؛ FLLMPY .equ 32 ; ضرب کننده فرکانس FLL در 1.048 مگاهرتز TCLK .equ FLLMPY*32768 ; TCLK: FLLMPY x f کوارتز DL .equ 82 ; مدت زمان سیگنال DTMF بر حسب میلی ثانیه. (65..100 ms) STACK .equ 600h ; آدرس اولیه پشته. تعاریف RAM؛ STDTMF .equ 202h ; وضعیت فرکانس سلام و لو TIM32B .equ 204 ; پسوند ثبت تایمر LENGTH .equ 206h ; شمارنده مدت زمان DTMF; .text 0F000h ; آدرس شروع برنامه؛ ; Timer_A مقداردهی اولیه: MCLK، حالت پیوسته، وقفه ها فعال است. آماده سازی ماژول های خروجی تایمر Timer_A MCLK = 1.048 مگاهرتز (اتوماتیک) ; INIT MOV #STACK,SP ;آغاز کردن اشاره گر پشته CALL #INITSR ;آغاز کردن ضریب. فرکانس های FLL و RAM MOV #ISMCLK+TAIE+CLR،&TACTL ; راه اندازی تایمر MOV.B #TA2+TA1,&P3SEL ; خروجی های TA2 و TA1 در پورت های P3.5/4 CLR TIM32B. پاک کردن ثبت تایمر تمدید شده BIS #MCONT,&TACTL ; شروع تایمر Timer_A EINT ; وقفه عمومی فعال کردن MAINLOOP ... ; حلقه اصلی؛ ;Keypress: SDTMF شامل جدول افست است. برای 2 فرکانس (0..6،0..6) در بایت بالا و پایین. MOV&TAR,R5 ; برای شروع فوری: ADD FDTMFLO,R5. آفست برای زمان کوتاهتر MOV R5,&CCR1. اولین تغییر حالت بعد از 0.71 میلی‌ثانیه MOV R5 و CCR2. 1/(2x697) = 0.71 میلی‌ثانیه MOV #OMT+CCIE،&CCTL1 ; وارونگی خروجی، وقفه بیت. MOV #OMT+CCIE,&CCTL2; خروجی معکوس، بیت وقفه MOV.B STDTMF,R5 ; شمارنده 82 میلی ثانیه RRA R5 ; تعداد تغییرات فرکانس پایین تر MOV.B DTMFL(R5),LENGTH ; برای مدت زمان سیگنال... ; ادامه برنامه؛ ; کنترل کننده وقفه از CCR0 (در اینجا استفاده نمی شود). TIMMOD0 ... RETI ; ; کنترل کننده وقفه از ثبات های ضبط-مقایسه 1..4; TIM_HND ADD &TAIV,PC ; پردازش درخواست با بالاترین؛ اولویت RETI؛ بدون درخواست وقفه: RETI JMP HCCR1 ; درخواست از CCR1 (فرکانس پایین DTMF) JMP HCCR2 ; درخواست از CCR2 (فرکانس بالا DTMF) JMP HCCR3 ; درخواست از CCR3 JMP HCCR4 ; درخواست از CCR4؛ TIMOVH INC TIM32B ; گسترش Timer_A به 32 بیت RETI. ; فرکانس پایین DTMF: TA1 خروجی واحد خروجی 1 را معکوس می کند. هر تغییر حالت برای کنترل مدت زمان سیگنال شمارش می شود. HCCR1 PUSH R5 ; ذخیره رجیسترهای استفاده شده MOV.B STDTMF,R5 ; وضعیت فرکانس پایین DTMF ADD FDTMFLO(R5),&CCR1 ; اضافه کردن نیم چرخه مدت زمان DEC.B LENGTH ; آیا مدت زمان سیگنال DL کامل شده است؟ JNZ TARET ; خیر؛ ; بله، سیگنال DTMF را متوقف کنید: وقفه ها را غیرفعال کنید. BIC #OMRS+OUT+CCIE،&CCTL1; بازنشانی TA1 BIC #OMRS+OUT+CCIE،&CCTL2 ; تنظیم مجدد TA2 TARET POP R5 ; بازیابی R5 RETI؛ بازگشت از وقفه؛ ; DTMF فرکانس بالا: TA2 خروجی واحد خروجی 2 را معکوس می کند. HCCR2 PUSH R5 ; ذخیره رجیسترهای MOV استفاده شده B STDTMF+1,R5 ; وضعیت فرکانس بالا DTMF ADD FDTMFHI(R5),&CCR2 ; اضافه کردن نیم چرخه مدت POP R5 . بازیابی R5 RETI؛ بازگشت از وقفه؛ HCCR3 ... ;کنترل وظیفه توسط رجیستر CCR3 RETI HCCR4 ... ;کنترل وظیفه توسط رجیستر CCR4 RETI ; ; جدول فرکانس DTMF: جدول شامل؛ تعداد چرخه های MCLK در نیم سیکل مقادیر تنظیم شده برای؛ فرکانس موثر MCLK در طول فرآیند مونتاژ. و به حداقل گرد می شود اشتباه احتمالیفرکانس ها؛ FDTMFLO .word ((TCLK/697)+1)/2 ; فرکانس پایین 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 ; فرکانس بالا DTMF1209Hz .word ((TCLK/1336)+1)/2 ; 1336Hz .word ((TCLK/1477)+1)/2 ; 1477Hz .word ((TCLK/1633)+1)/2 ; 1633 هرتز؛ ; جدول شامل تعداد نیم چرخه برای مدت زمان سیگنال DL (ms) است. ; فرکانس پایین تر DTMF برای شمارش استفاده می شود. DTMFL .byte 2*697*DL/1000 ; تعداد نیم چرخه.بایت 2*770*DL/1000 ; برای DL در ms.byte 2*852*DL/1000؛ .بایت 2*941*DL/1000 ; ; بخش "TIMVEC",0FFF0h ; بردارهای وقفه تایمر Timer_A .word TIM_HND ; وکتور ماژول ها 1..4 timers.word TIMMOD0 ; ماژول تایمر 0 vector.sect "INITVEC",0FFFEh ; بردار بازنشانی کنیدکلمه INIT

در زیر یک راه حل کمی سریعتر آورده شده است. با این حال، به رم بیشتری نیاز دارد زیرا ... داده های به دست آمده از جداول هر بار مجدداً محاسبه نمی شود، بلکه به طور خلاصه در RAM DTMFLO و DTMFHI ذخیره می شود. خواندن از روال های وقفه تایمر Timer_A انجام می شود. جداول استفاده شده مشابه جدول های نشان داده شده در مثال قبلی است.

FLLMPY .equ 32 ; ضرب کننده فرکانس FLL در 1.048 مگاهرتز TCLK .equ FLLMPY*32768 ; TCLK: FLLMPY x f کوارتز DL .equ 82 ; مدت زمان سیگنال DTMF. در میلی ثانیه (65..100 میلی ثانیه) STDTMF .equ 202h ; وضعیت فرکانس سلام و لو TIM32B .equ 204 ; پسوند ثبت تایمر LENGTH .equ 206h ; شمارنده مدت زمان DTMF DTMFLO .equ 208h ; نیم چرخه فرکانس پایین DTMFHI .equ 20Ah; فرکانس بالا نیم سیکل STACK .equ 600h ; پشته مقداردهی اولیه address.text 0F000h ; آدرس شروع برنامه؛ Timer_A مقداردهی اولیه: MCLK، حالت پیوسته، وقفه ها فعال است. آماده سازی ماژول های خروجی تایمر Timer_A MCLK = 1.048 مگاهرتز (اتوماتیک) ; INIT MOV #STACK,SP ; راه اندازی نشانگر پشته CALL #INITSR ; مقداردهی اولیه ضریب. فرکانس های FLL و RAM MOV #ISMCLK+TAIE+CLR،&TACTL ; شروع تایمر MOV.B #TA2+TA1,&P3SEL ; خروجی های TA2 و TA1 در پورت های P3.5/4 CLR TIM32B. پاک کردن ثبت تایمر توسعه یافته BIS #MCONT,&TACTL ;راه اندازی تایمر Timer_A EINT ; وقفه عمومی فعال کردن MAINLOOP ... ; حلقه اصلی؛ فشار کلید: SDTMF شامل افست جدول است. برای 2 فرکانس (0..6،0..6) در بایت بالا و پایین. MOV&TAR,R5 ; برای شروع فوری، FDTMFLO،R5 را اضافه کنید. آفست برای زمان کوتاهتر MOV R5,&CCR1. اولین تغییر حالت بعد از 0.71 میلی‌ثانیه MOV R5 و CCR2. 1/(2x697) = 0.71 میلی‌ثانیه؛ ; دو شمارش چرخه را برای فرکانس های DTMF واکشی کنید. MOV.B STDTMF+1,R5 ; فرکانس بالا DTMF MOV FDTMFHI(R5),DTMFHI; مدت زمان نیم چرخه MOV.B STDTMF,R5 ; فرکانس پایین DTMF MOV DTMFLO(R5),DTMFLO ; مدت نیم چرخه؛ ; شمارنده مدت RRA R5 ; تهیه فهرست بایت MOV.B DTMFL(R5),LENGTH ; تعداد تغییرات حالت فرکانس پایین MOV #OMT+CCIE،&CCTL1 ; وارونگی خروجی، وقفه بیت. MOV #OMT+CCIE,&CCTL2; وارونگی خروجی، وقفه بیت. ... بازگشت به حلقه اصلی؛ ; کنترل کننده وقفه از CCR0 (در اینجا استفاده نمی شود). TIMMOD0 ... RETI ; ; کنترل کننده وقفه از ثبات های ضبط-مقایسه 1..4; TIM_HND ADD &TAIV,PC ; پردازش درخواست با بالاترین؛ اولویت RETI؛ بدون درخواست وقفه: RETI JMP HCCR1 ; درخواست از CCR1 (فرکانس پایین DTMF) JMP HCCR2 ; درخواست از CCR2 (فرکانس بالا DTMF) JMP HCCR3 ; درخواست از CCR3 JMP HCCR4 ; درخواست از CCR4؛ TIMOVH INC TIM32B ; گسترش Timer_A به 32 بیت RETI. ; فرکانس پایین DTMF: TA1 خروجی واحد خروجی 1 را معکوس می کند. HCCR1 ADD DTMFLO,&CCR1 ; اضافه کردن نیم چرخه مدت زمان DEC.B LENGTH ; آیا مدت زمان سیگنال DL کامل شده است؟ JNZ TARET ; خیر؛ ; بله، سیگنال DTMF را متوقف کنید: وقفه ها را غیرفعال کنید. BIC #OMRS+OUT+CCIE،&CCTL1; بازنشانی TA1 BIC #OMRS+OUT+CCIE،&CCTL2 ; تنظیم مجدد TA2 TARET RETI ; بازگشت از وقفه؛ DTMF فرکانس بالا: TA2 خروجی واحد خروجی 2 را معکوس می کند. HCCR2 ADD DTMFHI,&CCR2 ; اضافه کردن نیم چرخه مدت زمان RETI ; بازگشت از وقفه؛ HCCR3. .. ;کنترل وظیفه توسط رجیستر CCR3 RETI HCCR4 ... ;کنترل وظیفه توسط رجیستر CCR4 RETI ; ; جداول و بردارهای وقفه با موارد نشان داده شده در مثال قبلی یکسان هستند.

3.3 سخت افزار برای تولید سیگنال های DTMF

همانطور که در بالا گفته شد، در محدوده فرکانس 200 هرتز.. 4600 هرتز، سطح سیگنال فرکانس ارسال باید حداقل 20 دسی بل بالاتر از سطح سیگنال های خارجی (نویز) باشد. علاوه بر این، بر اساس مشخصات، سیگنال‌های گروه‌های "بالا" و "پایین" باید سطوح مختلفی داشته باشند، بنابراین هر سیگنال به فیلتر خاص خود نیاز دارد. دامنه های فرکانس سینوسی را می توان از سری فوریه بدست آورد.

برای انتخاب فرکانس‌های قطع در هنگام طراحی فیلتر آنالوگ، باید بر اساس الزامات زیر رعایت کنید:

  • زیرا لازم است از امکان هر گونه ترکیب فرکانس های گروه "پایین" با فرکانس های گروه "بالا" اطمینان حاصل شود؛ تفاوت سطوح بین پایین ترین و بالاترین فرکانس در گروه نباید از 3 دسی بل تجاوز کند.
  • برای کمترین فرکانس در گروه (f1)، سرکوب هارمونیک (3f1) نباید بدتر از 20 دسی بل باشد. تحقق این شرط برای فرکانس پایین در گروه بسیار حیاتی است، زیرا تا حد امکان از فرکانس قطع فیلتر فاصله دارد.

این فرمول مربع قدر مطلق را در خروجی یک فیلتر باترورث بالا گذر از مرتبه n توصیف می کند:

این فرمول نشان دهنده وابستگی بهره فیلتر بالاگذر Butterworth به فرکانس است. پارامترهای fg و n به ترتیب فرکانس قطع و ترتیب فیلتر را تعیین می کنند.

قبل از هر چیز، لازم است با در نظر گرفتن رعایت الزامات فوق، ترتیب فیلتر مورد نیاز را محاسبه کنید.

برای ارضای شرط اول، نسبت مربعات مقادیر مطلق پایین ترین و بالاترین فرکانس در گروه نباید بیش از 3 دسی بل یا:

شرط دوم به طور خودکار برآورده می شود اگر نسبت مربع های مقادیر مطلق فرکانس های f1 و 3f1 بیشتر از 10/3 باشد، در این حالت هارمونیک سوم در سیگنال مستطیلی 1/3 کمتر است (فوریه را ببینید. سری و شکل 2):

در نتیجه محاسبات برای فرکانس های هر دو گروه، ترتیب فیلتر مورد نیاز n=1.15 را داریم. بنابراین، الزامات توسط یک فیلتر مرتبه دوم، که می تواند بر روی یک تقویت کننده عملیاتی ساخته شود، برآورده می شود. اگر از فیلتر مرتبه سوم استفاده می کنید، فقط به دو عنصر اضافی نیاز دارید. با این حال، این الزامات برای پراکندگی پارامترهای مؤلفه را کاهش می دهد. در صورتی که فرکانس قطع در محدوده های زیر باشد، هر دو الزام فوق برآورده می شوند:

گروه پایین fg> 880 هرتز fg<1418 Гц
گروه بالا fg> 1527 هرتز fg<2460 Гц

اگر فرکانس قطع در حداقل خود باشد، حداکثر کاهش هارمونیک رخ خواهد داد. اما در این حالت اختلاف بین کمترین و بالاترین فرکانس در گروه 3 دسی بل خواهد بود. در بالاترین فرکانس قطع ممکن، اختلاف سطح حداقل است، اما اجزای هارمونیک تنها با 20 دسی بل سرکوب می شوند.

هنگام محاسبه فیلتر، توجه بیشتری به سرکوب هارمونیک معطوف شد؛ اختلاف سطح در گروه در 2 دسی بل ثابت شد. در نتیجه، فرکانس های قطع 977 هرتز و 1695 هرتز هستند. سرکوب هارمونیک حاصل به طور قابل توجهی فراتر از الزامات است. تفاوت در سطوح فرکانس در گروه حتی در مورد انحراف فرکانس قطع مرتبط با گسترش در پارامترهای اجزای مورد استفاده در حد نیاز است. هنگام محاسبه مقادیر عناصر فیلتر، مقاومت ها بر اساس حداکثر نزدیکی آنها به مقادیر استاندارد سری E12 انتخاب شدند.

در خروجی های فیلتر، نتیجه دو سیگنال سینوسی با هارمونیک های به طور قابل توجهی سرکوب شده است. برای ترکیب این سیگنال ها، یک جمع کننده اضافی معرفی شده است.

بنابراین، تنها با استفاده از 3 آپمپ و چند عنصر غیرفعال، می‌توانیم سیگنال‌های DTMF را با استفاده از یک میکروکنترلر بدون استفاده از منابع محاسباتی قابل توجه تولید کنیم.

با استفاده از برنامه های شبیه ساز، مقادیر تقریبی بررسی شد. پاسخ فیلترها به شدت با پاسخ فرکانس محاسبه شده مطابقت دارد.


برنج. 6: طیف دامنه یک سیگنال مستطیلی با فرکانس 697 هرتز در خروجی یک فیلتر مرتبه 3

در شکل شکل 6 طیف دامنه یک سیگنال مستطیلی با فرکانس 697 هرتز را نشان می دهد که از یک فیلتر مرتبه 3 عبور می کند. همانطور که از شکل مشخص است، هارمونیک سوم و پنجم (2091 هرتز و 3485 هرتز) به طور قابل توجهی ضعیف شده است (-25.6 دسی بل).


برنج. 7: طیف دامنه یک سیگنال مستطیلی با فرکانس 941 هرتز در خروجی یک فیلتر مرتبه 3

در شکل شکل 7 طیف سیگنال موج مربعی با فرکانس 941 هرتز را نشان می دهد. در منطقه فرکانس مورد علاقه ما، تا 4600 هرتز، تنها یک هارمونیک وجود دارد. پس از عبور از فیلتر، این هارمونیک 2823 هرتز به طور قابل توجهی ضعیف می شود (-27.9 دسی بل). اختلاف سطح بین پایین ترین و بالاترین فرکانس در گروه از 1.9 دسی بل تجاوز نمی کند.

به منظور استفاده از اجزای کم هزینه با تنوع زیاد در پارامترها، مدل سازی اضافی انجام شد. نتایج شبیه سازی نشان داد که میزان پخش مجاز در مقادیر مقاومت ها و خازن ها 10 درصد است.


شکل 8: هیستوگرام – توزیع سطوح سیگنال در یک گروه


شکل 9: هیستوگرام – سرکوب هارمونیک

در شکل 8 و 9 هیستوگرام های به دست آمده با استفاده از تجزیه و تحلیل مونت کارلو را نشان می دهد. در این مورد، مقادیر مؤلفه به طور تصادفی در یک گسترش 10٪ تغییر می کند. پس از 100 تکرار، نتایج برای تمام فیلترهای شبیه سازی شده در هیستوگرام رسم می شود. در هیستوگرام در شکل. شکل 8 تفاوت سطح بین فرکانس های درون گروه را نشان می دهد. حداکثر اختلاف مجاز 3 دسی بل بین حداقل و حداکثر فرکانس در هیچ موردی به دست نیامد. مقدار متوسط ​​1.6 دسی بل است که کمی بهتر از مقدار محاسبه شده 2 دسی بل است.

در شکل شکل 9 تضعیف هارمونیک ها را برای گروه فرکانس پایین نشان می دهد. مقدار لازم 20 دسی بل در همه موارد به دست می آید، مقدار متوسط ​​تقریباً 27 دسی بل است. در بدترین حالت، هارمونیک با 24.2 دسی بل سرکوب می شود.

مقادیر محاسبه شده برای فیلتر گروه فرکانس "پایین" نیز برای فیلتر گروه فرکانس "بالا" انجام می شود.

هر دو فیلتر مدار یکسانی دارند. تنها تفاوت در فرکانس های قطع فیلترها برای گروه های فرکانس بالا و پایین است. R1 و C1 یک فیلتر بالا گذر مرتبه اول را تشکیل می دهند. زیرا مقاومت ورودی مدار نیز به R1 بستگی دارد، مقدار این عنصر نباید خیلی کوچک باشد. در غیر این صورت، خروجی های میکروکنترلر بیش از حد بارگذاری می شوند و شکل موج مربعی مخدوش می شود. در این حالت فرکانس های اضافی ناشی از اعوجاج درون مدولاسیونی به سیگنال اضافه می شود که بر نسبت سیگنال به نویز تاثیر منفی می گذارد.

عملکرد انتقال فیلترهای مرتبه بالاتر را نمی توان تنها با استفاده از اجزای غیرفعال به دست آورد.

بنابراین، فیلتر مرتبه دوم باید دارای یک آپمپ باشد. بهره فیلتر فعال با استفاده از مقاومت های R1-1 و R1-2 روی 0.2 تنظیم می شود. همانطور که می بینید، سیگنال تا حدودی ضعیف شده است. این برای جلوگیری از بارگذاری بیش از حد op-amp ضروری است، زیرا دامنه پیک هارمونیک سینوسی بنیادی سیگنال موج مربعی از دامنه خود سیگنال موج مربعی فراتر می رود (به سری فوریه و شکل 2 مراجعه کنید). یک جمع کننده اضافی سطح خروجی مورد نیاز را تنظیم می کند. با توجه به مولفه ثابت سیگنال مستطیلی، نقطه عملیاتی op-amp در سطح Vcc/2 تنظیم می شود (همچنین سری فوریه و شکل 2 را ببینید). در این حالت، مولفه ثابت نمی تواند توسط تقسیم کننده ورودی R1-1/R1-2 حذف شود. برای جدا کردن مدار سیستم عامل توسط ولتاژ DC، از خازن C3 استفاده می شود.

در هر یک از خروجی های فیلتر آنالوگ، سیگنالی از گروه های فرکانس بالا و پایین به ترتیب تولید می شود. در یک جمع کننده اضافی، این سیگنال ها اضافه می شوند. در این عنصر مدار، می توانید رابطه بین فرکانس های "پایین" و "بالا" در سیگنال کل و سطح سیگنال خروجی را با استفاده از مقاومت های R4 و R5 تنظیم کنید. بنابراین، دامنه خروجی را می توان به راحتی برای مطابقت با نیازهای مختلف در کشورهای مختلف تنظیم کرد.

هنگام محاسبه مقادیر اجزاء، مقادیر خازن طبق معمول ثابت بود و مقادیر مقاومت مطابق با آنها محاسبه شد. در این مدار از خازن ها و مقاومت های سری E12 استاندارد با اسپرد 10 درصد استفاده شد.

در شکل شکل 10 یک نمودار شماتیک از فیلترهای آنالوگ و یک جمع کننده را نشان می دهد:


برنج. 10: نمودار شماتیکفیلترهای آنالوگ با جمع کننده اضافی

خازن های C1-1 و C1-2 دو سیگنال را با هم در نقطه عملیاتی Vcc/2 ترکیب می کنند. شما نباید مقادیر خیلی بزرگ را برای این عناصر انتخاب کنید، زیرا آنها عناصر فیلتر پایین گذر برای حذف ساب هارمونیک های فرکانس پایین هستند. خازن فیلتر C5 نویز ولتاژ مرجع را حذف می کند. یک خازن اضافی C6 که به موازات مقاومت فیدبک R6 متصل شده است، یک فیلتر درجه یک بالا گذر را تشکیل می دهد. اگر کمترین فرکانس قطع فیلتر انتخاب شود، فیلتر اضافی تداخل مدولاسیون فرکانس بالا کیفیت سیگنال خروجی را بهبود می بخشد، اما در بالاترین فرکانس های گروه "بالا" مقداری کاهش می یابد. در برخی موارد، تولید بالاترین فرکانس DTMF 1633 هرتز ضروری نیست زیرا فقط برای تشکیل نمادهای سرویس A-D استفاده می شود و نسبت سیگنال به نویز را می توان با کاهش فرکانس قطع فیلتر بهبود بخشید. بنابراین، افزایش فرکانس قطع منجر به افزایش سطح تداخل فرکانس بالا می شود، اما در عین حال تأثیر منفی بر اجزای بالاترین فرکانس سیگنال DTMF کاهش می یابد.

4 نتایج مطالعات سیگنال های فرستنده DTMF

طیف نگارهای زیر (شکل 11 و 12) سیگنال های خروجی فرستنده DTMF را در فرکانس های مختلف نشان می دهد. در شکل شکل 11 طیف دامنه نماد "1" را نشان می دهد. فرکانس های مورد نیاز برای انتقال آن - 697 و 1207 هرتز - به ترتیب در سطح -10.5 دسی بل و -8.5 دسی بل هستند. هارمونیک ها در 2091 و 3621 هرتز تقریباً 30 دسی بل سرکوب می شوند. برای انتقال نماد "D"، دو فرکانس بالاتر تولید می شود - 941 و 1633 هرتز. همانطور که در شکل دیده میشود. 12، سطح فرکانس پایین -12 دسی بل، سطح فرکانس بالا -11 دسی بل است. هارمونیک های مربوطه بیش از 30 دسی بل تضعیف می شوند. بنابراین، مقادیر اندازه گیری شده با نتایج شبیه سازی و الزامات مشخصات مطابقت دارد.


برنج. 11: طیف دامنه نماد "1": 697 و 1207 هرتز


برنج. 12: طیف دامنه نماد "D": 941 و 1633 هرتز

دقت فرکانس مطلق سیگنال های موج مربعی تولید شده با استفاده از دو تایمر مختلف قابل دستیابی نیست؛ نتیجه به ترکیب دو فرکانس و نوع تایمرهای مورد استفاده بستگی دارد. دلیل این امر تداخل وقفه تایمر است. با این حال، دقت مورد نیاز ± 1.8٪ با حاشیه زیادی مواجه می شود.

اگر یک تایمر 8 بیتی و یک تایمر پورت تایمر در فرکانس سیستم MCLK 1.048 مگاهرتز استفاده شود، فرکانس های گروه "پایین" با دقت کمتر از 0.3٪ تولید می شوند. برای فرکانس های گروه "بالا"، در عمل، انحراف بیش از 0.5٪ به دست آمد.

تنها استثنا کاراکتر DTMF "D" است که بالاترین فرکانس ها برای آن تولید می شود. در نتیجه، در این ترکیب فرکانس گروه "بالا" 1633 هرتز دارای انحراف -0.97٪ است.

بدون این استثنا، حتی بالاترین فرکانس 1633 هرتز با دقتی بهتر از 0.5 درصد تولید می شود. حداکثر انحرافات برای فرکانس های مختلف در جدول آورده شده است:

اگر از Timer_A برای تولید فرکانس ها استفاده شود، خطا به فرکانس MCLK استفاده شده بستگی دارد:

MCLK، مگاهرتز 1,048 2,096 3,144 3,800
ضریب FLL 32 64 96 116
697 هرتز +0,027% +0,027% +0,027% +0,027%
770 هرتز -0,015% -0,016% +0,033% -0,016%
852 هرتز +0,059% -0,023% +0,005% +0,031%
941 هرتز +0,029% +0,029% +0,029% +0,035%
1209 هرتز -0,079% +0,036% +0,036% -0,003%
1336 هرتز +0,109% -0,018% +0,025% +0,025%
1447 هرتز -0,009% -0,009% -0,009% -0,009%
1633 هرتز +0,018% +0,018% +0,018% +0,018%

5 نتیجه گیری

نرم افزار این مثال بسیار ساده است و با اشغال حدود 300 بایت، به مقدار کمی RAM و ROM نیاز دارد. به لطف ماژول تایمر داخلی، فرکانس های مورد نیاز با دقت بالا بدون اتلاف بار CPU تولید می شوند. در پیکربندی که از یک تایمر 8 بیتی و یک تایمر/پورت برای تولید استفاده می‌شود، روال‌های وقفه تقریباً 12 درصد از منبع CPU را اشغال می‌کنند. در مواردی که فرکانس ها توسط تایمر Timer_A تولید می شوند، بار CPU برای پردازش روال های وقفه به 6٪ کاهش می یابد. در نتیجه، ممکن است در حین ارسال سیگنال های DTMF، سایر وظایف در حال اجرا باشند، یا ممکن است CPU برای کاهش مصرف جریان در حالت کم مصرف قرار گیرد.

عملکرد خوب ماژول توصیف شده برای تولید سیگنال های DTMF با استفاده از سیگنال های موج مربعی با طراحی مدار سخت افزاری نشان داده شده است. زیرا امکان استفاده از قطعات با طیف وسیعی از پارامترها در مدار وجود دارد؛ قیمت چنین راه حلی بسیار پایین است. تمام الزامات مشخصات تا حد زیادی برآورده می شود، بنابراین یک ماژول ژنراتور سیگنال DTMF جداگانه در ابزارهایی که از MSP430 به عنوان کنترل کننده استفاده می کنند مورد نیاز نیست.

اگر در یک مورد خاص نیاز به افزایش نسبت سیگنال به نویز باشد، با استفاده از یک آپمپ اضافی، می توان فیلتری برای سرکوب بیشتر اعوجاج میان مدولاسیون ساخت. چنین تقویت کننده عملیاتی اضافی در حال حاضر در چهار op-amp در بسته DIL14 وجود دارد.

6 پیوند

Bundesamt fur Post und Telekommunikation (دفتر فدرال پست و مخابرات): BAPT 223 ZV 5, Zulassungsvorschrift fur Endeinrichtungen zur Anschaltung an analoge Wahlanschlusse (ausgenommen Notruf- und Durchwahlangue telephone off- und Durchwahlanstel) برای دستگاه های تلفنی متصل به آنالوگ های خاص مستثنی کردن الزامات امنیتی و تماس) / ISDN Deutschen Bundespost Telekom. Bundesministerium fur Post und Telekommunikation، پیش نویس، بن آوریل 1994 پاپولا: Mathematik fur Ingenieure 2 (ریاضیات برای مهندسان). Vieweg Verlag, Braunschweig 1990 Tietze / Schenk: Halbleiterschaltungstechnik; (Titze/Schenk, Semiconductor Circuit Engineering), 10th.edition; Springer Verlag, Berlin 1993 Lutz Bierl / Texas Instruments: MSP430 Family, Metering Application Report, Texas Instruments, Issue 2.1, Jan 1997, SLAAE10B Texas Instruments: MSP430 Family, Architecture User's Guide and Module Library, Texas190B Texas Instruments MSP430 Family, Software User's Guide, Texas Instruments, 1996 Texas Instruments: MSP430 Family, Assembly Language Tools Guide User's Tools, Texas Instruments, 1996 Siwy, Robert: Systementwicklung einer Telekom-Aplikation zum Senden und Empfangen vonn DTMmit-Signeve DTMF-Signeve سیستم مخابراتی برای دریافت و ارسال سیگنال های دیجیتال بر اساس میکروکنترلر MSP430). Diplomarbeit, Fachhochschule Landshut, Mai 1997

در مورد دستگاه های ساده، تصمیم گرفتم با استفاده از همان ATtiny2313 یک ژنراتور سیگنال DTMF را جمع آوری کنم. برای کسانی که نمی‌دانند، DTMF (چند فرکانس دوگانه) یک سیگنال آنالوگ چند فرکانس دو رنگ است که برای شماره‌گیری یک شماره تلفن استفاده می‌شود. ویکی پدیا را بخوانید.

تصمیم برای مونتاژ چنین دستگاهی با تمایل به تلاش برای پیاده سازی سیگنال های آنالوگ پیچیده با استفاده از یک میکروکنترلر دیکته شد. هیچ کاربرد عملی برای این دستگاه در نظر گرفته نشده بود، اما شاید برای کسی چنین دستگاهی مفید باشد؟ استفاده کن!

منبع ژنراتور DTMF


حالا ببینیم چی بدست آوردیم

سیگنال با استفاده از PWM تولید می شود و یک مدار RC برای دادن شکل دلخواه به آن استفاده می شود. در نتیجه، پس از زنجیره RC، سیگنال زیر را دریافت می کنیم (دکمه 6 فشرده می شود):

در امتداد تمام منحنی سیگنال مفید، ما یک شانه با فرکانس بالا را مشاهده می کنیم (فرکانس بالاتر از قابل شنیدن است، بنابراین نویز ایجاد نمی کند) - این کار مدار RC است. می توانید با افزایش ظرفیت خازن یا مقاومت مقاومت، خط را صاف تر کنید، اما در این صورت دامنه سیگنال مفید به طور قابل توجهی کاهش می یابد.

ما به طیف سیگنال نگاه می کنیم و مطمئن می شویم که دو فرکانس جداگانه وجود دارد (فرکانس PWM به خارج از ناحیه نمایش رفته است)، به این معنی که همه چیز خوب است - دستگاه همانطور که باید کار می کند.

راه حل های آماده

راه حل های آماده ای برای وظایف تولید و رمزگشایی سیگنال DTMF وجود دارد. در اینجا چند برگه داده برای این ریز مدارها وجود دارد.

ژنراتور DTMF
- رمزگشای DTMF


P.S.حیف که ATtiny2313 ADC ندارد - می توانید از رمزگشای DTMF نیز استفاده کنید! اما اشکالی ندارد، آن را در مگا تکرار می کنم، حتماً آن را پیوست خواهم کرد.

(بازدید شده 6,868 بار، 1 بازدید امروز)

شماره گیری زنگی (سیگنال دهی چند فرکانس دوگانه، DTMF) توسط آزمایشگاه بل در دهه 50 قرن گذشته برای تلفن دکمه ای انقلابی آن زمان توسعه یافت. برای نمایش و انتقال داده های دیجیتال در حالت تن، از یک جفت فرکانس (تن) از محدوده فرکانس گفتار استفاده می شود. این سیستم دو گروه از چهار فرکانس را تعریف می کند و اطلاعات با ارسال دو فرکانس به طور همزمان، یکی از هر گروه، کدگذاری می شود. در مجموع شانزده ترکیب برای نمایش شانزده عدد، نماد و حروف مختلف به دست می آید. رمزگذاری DTMF اکنون در طیف گسترده ای از برنامه های ارتباطی و کنترل استفاده می شود، به عنوان مثال، توصیه اتحادیه بین المللی مخابرات (ITU) Q.23 نشان می دهد.

این مقاله مدار یک مولد تن DTMF را توصیف می کند که هر هشت فرکانس را بازتولید می کند و سیگنال خروجی دو رنگ حاصل را تولید می کند. سیستم مورد بحث بر روی تراشه Silego GreenPAK™ SLG46620V ساخته شده است تقویت کننده های عملیاتی Silego SLG88104V. سیگنال حاصل از مجموع دو فرکانس تعیین شده توسط سطر و ستون صفحه کلید تلفن است.

مدار پیشنهادی از چهار ورودی برای انتخاب ترکیب فرکانس برای تولید استفاده می کند. مدار همچنین دارای یک ورودی فعال است که تولید را آغاز می کند و مدت زمان ارسال سیگنال را تعیین می کند. فرکانس خروجی ژنراتور با استاندارد ITU برای DTMF مطابقت دارد.

زنگ های DTMF

استاندارد DTMF کدگذاری اعداد 0-9، حروف A، B، C و D و کاراکترهای * و # را به عنوان ترکیبی از دو فرکانس تعریف می کند. این فرکانس ها به دو گروه تقسیم می شوند: گروه فرکانس بالا و گروه فرکانس پایین. جدول 1 فرکانس ها، گروه ها و نمادهای مربوطه را نشان می دهد.

میز 1. کدگذاری تن DTMF

گروه سه گانه

گروه کم پاس

فرکانس ها برای جلوگیری از هارمونیک های متعدد انتخاب شدند. علاوه بر این، مجموع یا تفاوت آنها منجر به فرکانس متفاوت DTMF نمی شود. به این ترتیب از هارمونیک ها یا اعوجاج مدولاسیون جلوگیری می شود.

استاندارد Q.23 مشخص می کند که خطای هر فرکانس ارسالی باید در ± 1.8٪ از مقدار اسمی باشد و اعوجاج کل (به دلیل هارمونیک ها یا مدولاسیون) باید 20 دسی بل کمتر از فرکانس های اساسی باشد.

سیگنال حاصل که در بالا توضیح داده شد را می توان به صورت زیر توصیف کرد:

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

که در آن fhigh و flow فرکانس های متناظر از گروه های فرکانس بالا و پایین هستند.

شکل 1 سیگنال حاصل را برای رقم "1" نشان می دهد. شکل 2 طیف فرکانس مربوط به این سیگنال را نشان می دهد.

برنج. 1. تن DTMF

برنج. 2. طیف تن DTMF

مدت زمان صداهای DTMF بسته به برنامه خاصی که از کدگذاری آهنگ استفاده می کند می تواند متفاوت باشد. برای رایج ترین برنامه ها، مقادیر مدت زمان معمولاً بین شماره گیری دستی و خودکار قرار می گیرند. جدول 2 خلاصه ای از مدت زمان معمول برای دو نوع استخدام را نشان می دهد.

جدول 2. مدت زمان سیگنال های شماره گیری آهنگ

نوع شماره گیری

گروه سه گانه

گروه سه گانه

شماره گیری دستی

شماره گیری خودکار

برای ارائه انعطاف پذیری بیشتر، ژنراتور DTMF ارائه شده در این راهنما مجهز به ورودی فعال است که برای شروع تولید سیگنال و تعیین مدت آن استفاده می شود. در این حالت، مدت زمان سیگنال برابر با مدت زمان پالس در ورودی فعال است.

قسمت آنالوگ مدار ژنراتور DTMF

توصیه ITU Q.23 سیگنال های DTMF را به عنوان سیگنال های آنالوگ ایجاد شده توسط دو موج سینوسی تعریف می کند. در مدار مولد DTMF پیشنهادی، آی سی Silego GreenPAK SLG46620V سیگنال های موج مربعی را با فرکانس های DTMF مورد نظر تولید می کند. برای به دست آوردن سیگنال های سینوسی با فرکانس مورد نیاز و تشکیل سیگنال حاصل (مجموع دو موج سینوسی)، فیلترهای آنالوگ و جمع کننده مورد نیاز است. به همین دلیل در این پروژه تصمیم گرفته شد که از فیلترها و ترکیبی بر پایه تقویت کننده های عملیاتی SLG88104V استفاده شود.

شکل 3 ساختار قسمت آنالوگ پیشنهادی دستگاه را نشان می دهد.

برنج. 3. مدار پردازش آنالوگ برای دریافت سیگنال DTMF

از فیلترهای آنالوگ برای به دست آوردن سیگنال های سینوسی از پالس های مستطیلی استفاده می شود. پس از انجام فیلترینگ، دو سیگنال جمع شده و سیگنال DTMF دو رنگ خروجی مورد نظر تولید می شود.

شکل 4 نتیجه تبدیل فوریه را نشان می دهد که برای بدست آوردن طیف سیگنال موج مربع استفاده می شود.

برنج. 4. طیف سیگنال موج مربعی

همانطور که می بینید، موج مربع فقط شامل هارمونیک های فرد است. اگر چنین سیگنالی را با دامنه A به صورت سری فوریه نمایش دهیم، شکل زیر را خواهد داشت:

تجزیه و تحلیل این عبارت به ما امکان می دهد نتیجه بگیریم که اگر فیلترهای آنالوگ تضعیف کافی برای هارمونیک ها داشته باشند، می توان سیگنال های سینوسی با فرکانس برابر با فرکانس سیگنال موج مربعی اصلی را به دست آورد.

با در نظر گرفتن تلرانس سطح تداخل تعریف شده در استاندارد Q.23، لازم است اطمینان حاصل شود که همه هارمونیک ها 20 دسی بل یا بیشتر ضعیف می شوند. علاوه بر این، هر فرکانس از گروه پایین گذر باید با هر فرکانس از گروه بالا گذر ترکیب شود. با در نظر گرفتن این الزامات، دو فیلتر، یکی برای هر گروه ایجاد شد.

هر دو فیلتر فیلترهای باترورث پایین گذر بودند. تضعیف یک فیلتر مرتبه n Butterworth را می توان به صورت زیر محاسبه کرد:

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

جایی که fc فرکانس قطع فیلتر است، n ترتیب فیلتر است.

تفاوت میرایی بین کمترین فرکانس و بالاترین فرکانس هر گروه نمی تواند بیش از 3 دسی بل باشد، بنابراین:

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

با توجه به مقادیر مطلق:

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

همچنین همانطور که قبلاً گفتیم تضعیف هارمونیک باید 20 دسی بل یا بیشتر باشد. در این حالت، بدترین حالت، کمترین فرکانس در گروه خواهد بود، زیرا هارمونیک 3 آن کمترین فرکانس است و نزدیکترین فرکانس به فرکانس قطع فیلتر است. با توجه به اینکه هارمونیک سوم 3 برابر کمتر از هارمونیک اصلی است، فیلتر باید شرایط (مقادیر مطلق) را داشته باشد:

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

اگر این معادلات برای هر دو گروه اعمال شود، فیلترهای مورد استفاده باید فیلترهای درجه دوم باشند. این بدان معنی است که اگر با استفاده از آپ امپ اجرا شوند، هر کدام دو مقاومت و دو خازن خواهند داشت. اگر از فیلترهای مرتبه سوم استفاده می شد، حساسیت به تحمل اجزا کمتر می شد. فرکانس های قطع فیلتر انتخاب شده برای گروه پایین گذر 977 هرتز و برای گروه بالا گذر 1695 هرتز است. در این مقادیر، تفاوت در سطوح سیگنال در گروه های فرکانس با الزامات فوق مطابقت دارد و حساسیت به تغییرات فرکانس قطع به دلیل تحمل اجزا حداقل است.

نمودارهای شماتیک فیلترهای پیاده سازی شده با استفاده از SLG88104V در شکل 5 ارائه شده است. رتبه بندی اولین جفت R-Cبه گونه ای انتخاب شده است که جریان خروجی تراشه SLG46620V را محدود کند. لینک فیلتر دوم بهره را تعیین می کند که 0.2 است. دامنه سیگنال های موج مربعی نقطه کار تقویت کننده عملیاتی را روی 2.5 ولت تنظیم می کند. ولتاژهای ناخواسته توسط خازن های فیلتر خروجی مسدود می شوند.

برنج. 5. نمودارهای شماتیک فیلترهای خروجی

در خروجی، سیگنال های فیلتر جمع می شوند و سیگنال حاصل، مجموع هارمونیک های انتخاب شده از گروه فرکانس های پایین و بالا است. برای جبران تضعیف فیلتر، دامنه سیگنال خروجی را می توان با استفاده از دو مقاومت R9 و R10 تنظیم کرد. شکل 6 مدار جمع کننده را نشان می دهد. شکل 7 کل قسمت آنالوگ مدار را نشان می دهد.

برنج. 6. نمودار شماتیک جمع کننده

برنج. 7. قسمت آنالوگ مدار

بخش دیجیتال مدار مولد تن DTMF

بخش دیجیتال مدار مولد تن DTMF شامل مجموعه کاملی از مولدهای موج مربعی است - یکی برای هر فرکانس DTMF. از آنجایی که برای ایجاد این ژنراتورها به هشت شمارنده نیاز است، تراشه GreenPAK SLG46620V برای اجرای آنها انتخاب شد. در خروجی های مدار دیجیتال، دو سیگنال مستطیلی، یکی برای هر گروه فرکانس تولید می شود.

سیگنال‌های موج مربعی با استفاده از شمارنده‌ها و فلیپ فلاپ‌های D تولید می‌شوند و دارای چرخه کاری 50 درصدی هستند. به همین دلیل فرکانس سوئیچینگ شمارنده دو برابر فرکانس DTMF مورد نیاز است و فلیپ فلاپ DFF سیگنال خروجی را به دو قسمت تقسیم می کند.

منبع ساعت برای شمارنده ها یک نوسان ساز داخلی 2 مگاهرتز است که فرکانس آن بر 4 یا 12 تقسیم می شود. تقسیم کننده با در نظر گرفتن ظرفیت بیت و حداکثر مقدار هر شمارنده مورد نیاز برای به دست آوردن یک مقدار خاص انتخاب می شود. فرکانس.

برای تولید فرکانس‌های بالا، نمونه‌های کمتری مورد نیاز است، بنابراین از شمارنده‌های 8 بیتی برای تولید آن‌ها استفاده می‌شود که از یک نوسان‌گر داخلی RC کلاک شده است که سیگنال آن بر 4 تقسیم می‌شود. به همین دلیل، فرکانس‌های پایین‌تر با استفاده از شمارنده‌های 14 بیتی پیاده‌سازی می‌شوند.

SLG46620V تنها دارای سه شمارنده استاندارد 14 بیتی است، بنابراین یکی از فرکانس های پایین تر با استفاده از شمارنده 8 بیتی CNT8 پیاده سازی شده است. برای اینکه تعداد نمونه ها در محدوده 0...255 قرار گیرد، برای کلاک این CNT8 لازم بود از یک سیگنال نوسان ساز RC تقسیم بر 12 استفاده شود. برای این مدار، فرکانس با بیشترین تعداد نمونه، که است، کمترین فرکانس، انتخاب شد. این به ما اجازه داد تا خطا را به حداقل برسانیم.

جدول 3 پارامترهای هر موج مربعی را نشان می دهد.

جدول 3. پارامترهای ژنراتورهای پالس مربعی

ساعت

خطای فرکانس [%]

گروه کم پاس

گروه سه گانه

همانطور که از جدول مشخص است، تمام فرکانس ها دارای خطای کمتر از 1.8٪ هستند، بنابراین با استاندارد DTMF مطابقت دارند. این ویژگی های محاسبه شده، بر اساس فرکانس ایده آل نوسان ساز RC، می توانند با اندازه گیری فرکانس خروجی نوسانگر RC تنظیم شوند.

اگرچه در مدار پیشنهادی همه ژنراتورها به صورت موازی کار می کنند، سیگنال تنها یک ژنراتور از هر گروه به خروجی ریزمدار ارسال می شود. انتخاب سیگنال های خاص توسط کاربر تعیین می شود. این کار با استفاده از چهار ورودی GPIO (دو بیت برای هر گروه) با جدول صدق نشان داده شده در جدول 4 انجام می شود.

جدول 4. جدول انتخاب فرکانس از گروه فرکانس پایین

گروه کم پاس

جدول 5. جدول انتخاب فرکانس از گروه فرکانس بالا

گروه سه گانه

شکل 8 مدار منطقی یک مولد موج مربعی 852 هرتز را نشان می دهد. این الگو برای هر فرکانس با تنظیمات شمارنده مناسب و پیکربندی LUT تکرار می شود.

برنج. 8. مولد پالس مستطیلی

شمارنده فرکانس خروجی را تولید می کند که با تنظیمات آن تعیین می شود. این فرکانس برابر با دو برابر فرکانس تن DTMF مربوطه است. پارامترهای پیکربندی کنتور در شکل 9 نشان داده شده است.

برنج. 9. نمونه ای از راه اندازی یک شمارنده مولد پالس مستطیلی

سیگنال خروجی شمارنده به آن متصل است ورودی ساعتماشه D-Flip Flop. از آنجایی که خروجی DFF به صورت معکوس پیکربندی شده است، اگر خروجی DFF را به ورودی آن وصل کنید، فلیپ فلاپ D به فلیپ فلاپ T تبدیل می شود. پارامترهای پیکربندی DFF را می توان در شکل 10 مشاهده کرد.

برنج. 10. نمونه ای از راه اندازی یک ماشه مولد پالس مستطیلی

سیگنال خروجی DFF به ورودی جدول حقیقت LUT داده می شود. LUT ها برای انتخاب یک سیگنال برای هر ترکیب خاص R1-R0 استفاده می شوند. نمونه ای از پیکربندی LUT در شکل 11 نشان داده شده است در این مثال، اگر R1 یک "1" و R0 "0" دریافت کند، سیگنال ورودی به خروجی منتقل می شود. در موارد دیگر، خروجی حاوی "0" است.

برنج. 11. مثالی از تنظیم جدول صدق یک مولد پالس مربعی

همانطور که در بالا ذکر شد، مدار پیشنهادی دارای ورودی Enable Enable است. اگر یک واحد منطقی "1" در ورودی مجوز Enable وجود داشته باشد، سیگنال های مستطیلی تولید شده به یک جفت خروجی ریزمدار عرضه می شود. مدت زمان انتقال برابر است با مدت زمان پالس در ورودی فعال. برای پیاده سازی این ویژگی، چندین LUT دیگر مورد نیاز بود.

همانطور که در شکل 12 نشان داده شده است، گروه high-pass از یک LUT 4 بیتی و یک LUT 2 بیتی استفاده می کند.

برنج. 12. مدار خروجی گروه سه گانه

LUT1 4 بیتی به صورت پیکربندی شده است عنصر منطق OR، بنابراین اگر یک "1" در هر یک از ورودی های آن وجود داشته باشد، یک منطق یک "1" را خروجی می دهد. جداول صدق C1/C0 اجازه می دهد که تنها یکی از نوسانگرها انتخاب شود، بنابراین LUT1 4 بیتی تعیین می کند که کدام سیگنال خروجی است. خروجی این LUT به LUT4 2 بیتی متصل است که تنها در صورتی سیگنال را ارسال می کند که ورودی فعال یک منطق "1" باشد. شکل 13 و 14 تنظیمات LUT1 4 بیتی و LUT4 2 بیتی را نشان می دهد.

برنج. 13. پیکربندی LUT1 4 بیتی

برنج. 14. پیکربندی LUT4 2 بیتی

از آنجایی که دیگر LUTهای جداول حقیقت 4 بیتی وجود نداشت، از دو LUT 3 بیتی برای گروه کم گذر استفاده شد.

برنج. 15. مدار خروجی گروه پایین گذر

مدار داخلی کامل GreenPAK SLG46620V در شکل 16 نشان داده شده است. شکل 17 نمودار مدار نهایی ژنراتور DTMF را نشان می دهد.

برنج. 16. بلوک دیاگرام تون ژنراتور DTMF

برنج. 17. نمودار شماتیک یک مولد تن DTMF

تست مدار ژنراتور DTMF

در مرحله اول آزمایش ژنراتور DTMF پیشنهادی، تصمیم گرفته شد که فرکانس تمام سیگنال های مستطیلی تولید شده با استفاده از یک اسیلوسکوپ بررسی شود. به عنوان مثال، شکل 18 و 19 خروجی موج مربعی را برای 852 هرتز و 1477 هرتز نشان می دهد.

برنج. 18. موج مربع 852 هرتز

برنج. 19. موج مربعی 1477 هرتز

هنگامی که فرکانس تمام سیگنال های موج مربعی بررسی شد، آزمایش قسمت آنالوگ مدار آغاز شد. سیگنال های خروجی برای تمام ترکیبات فرکانس های پایین و بالا مورد بررسی قرار گرفت. به عنوان مثال، شکل 20 مجموع سیگنال های 770 هرتز و 1209 هرتز را نشان می دهد و شکل 21 مجموع سیگنال های 941 هرتز و 1633 هرتز را نشان می دهد.

برنج. 20. صدای DTMF 770 هرتز و 1209 هرتز

برنج. 21. صدای DTMF 941 هرتز و 1633 هرتز

نتیجه

در این مقاله، مداری برای یک تون ژنراتور DTMF بر اساس تراشه Silego GreenPAK SLG46620V و تقویت‌کننده‌های عملیاتی Silego SLG88104V پیشنهاد شد. ژنراتور به کاربر اجازه می دهد تا ترکیبی از فرکانس های مورد نظر را با استفاده از چهار ورودی انتخاب کند و ورودی فعال را کنترل کند، که مدت زمان سیگنال های خروجی را تعیین می کند.

ویژگی های تراشه SLG46620V:

  • نوع: آی سی سیگنال مختلط قابل برنامه ریزی.
  • بلوک های آنالوگ: ADC 8 بیتی، دو DAC، شش مقایسه کننده، دو فیلتر، ION، چهار نوسانگر یکپارچه.
  • بلوک های دیجیتال: تا 18 پورت ورودی/خروجی، ماتریس اتصال و منطق ترکیبی، مدارهای تاخیر قابل برنامه ریزی، مولد تابع قابل برنامه ریزی، شش شمارنده 8 بیتی، سه شمارنده 14 بیتی، سه نوسانگر/مقایسه کننده PWM.
  • رابط ارتباطی: SPI;
  • محدوده ولتاژ تغذیه: 1.8…5 ولت؛
  • محدوده دمای عملیاتی: -40…85 درجه سانتیگراد.
  • نسخه بسته: 2 x 3 x 0.55 میلی متر STQFN 20 پین.

ویژگی های متمایز کننده:

  • تولید امواج سینوسی با استفاده از مدولاسیون عرض پالس (PWM)
  • ترکیب سیگنال های موج سینوسی مختلف در یک سیگنال DTMF
  • کدهای منبعدر زبان های اسمبلی و سی
  • طراحی شده برای کار با STK500
  • اندازه کد برنامه 260 بایت / اندازه جدول ثابت 128 بایت
  • با استفاده از روش تبدیل جدول

معرفی

این سند تکنیکی را برای تولید سیگنال‌های DTMF (سیگنال‌های چند فرکانس دوگانه) با استفاده از هر میکروکنترلر AVR حاوی واحد مدولاسیون عرض پالس (PWM) و رم استاتیک توصیف می‌کند. این سیگنال‌ها به طور گسترده در تلفن استفاده می‌شوند، جایی که با فشار دادن دکمه‌های شماره‌گیری یک دستگاه تلفن بازتولید می‌شوند. برای تولید صحیح سیگنال DTMF، باید دو فرکانس را روی هم قرار دهید: فرکانس پایین(fb) و فرکانس بالا (fa). جدول 1 نشان می دهد که چگونه فرکانس های مختلف برای تولید زنگ های DTMF هنگام فشار دادن کلیدهای مختلف مخلوط می شوند.

شکل 1 - مدار مولد سیگنال DTMF

جدول 1 - ماتریس تولید سیگنال تن

fb/fa 1209 هرتز 1336 هرتز 1477 هرتز 1633 هرتز
697 هرتز 1 2 3 آ
770 هرتز 4 5 6 ب
852 هرتز 7 8 9 سی
941 هرتز * 0 # D

ردیف‌های جدول 1 مقادیر فرکانس پایین و ستون‌ها مقادیر فرکانس بالا را نشان می‌دهند. به عنوان مثال، ماتریس نشان می دهد که وقتی دکمه "5" را فشار می دهید، فرکانس های fb = 770 هرتز و fa = 1336 هرتز باید مخلوط شوند. در نتیجه افزودن دو سیگنال سینوسی با فرکانس های مختلف، یک سیگنال DTMF تشکیل می شود.

نسبت دامنه کجاست K=A b /A aسیگنال های منبع باید شرایط را برآورده کنند

اصول کارکرد، اصول جراحی، اصول عملکرد

بعلاوه اطلاعات کلیدر مورد استفاده از مدولاسیون عرض پالس، در زیر نشان داده خواهد شد که چگونه مدولاسیون عرض پالس به شما امکان تولید سیگنال های سینوسی را می دهد. پاراگراف بعدی نحوه استفاده از فرکانس سوئیچینگ پایه برای به دست آوردن فرکانس های مختلف را شرح می دهد. پس از بررسی مبانی نظریشرحی از خود مولد سیگنال DTMF داده خواهد شد. تولید سیگنال های سینوسی

بسته به نسبت طول مدت سطوح ولتاژ VH بالا و VL پایین، مقدار متوسط ​​در خروجی PWM تغییر می کند. اگر نسبت بین مدت زمان هر دو سطح ثابت نگه داشته شود، یک سطح ولتاژ VAV ثابت در نتیجه تولید می شود. شکل 2 سیگنال مدوله شده با عرض پالس را نشان می دهد.


شکل 2 - تولید سطح ولتاژ DC

سطح ولتاژ با عبارت زیر تعیین می شود:

(3)

یک سیگنال سینوسی می تواند تولید شود به شرطی که مقدار متوسط ​​ولتاژ تولید شده توسط مدولاسیون عرض پالس در هر سیکل PWM تغییر کند. رابطه بین سطوح بالا و پایین باید مطابق با سطح ولتاژ موج سینوسی در زمان مربوطه تنظیم شود. شکل 3 این فرآیند را نشان می دهد. داده های منبع برای PWM برای هر یک از دوره های آن محاسبه شده و در جدول تبدیل (TC) ثبت می شود.

شکل 3 همچنین رابطه بین فرکانس موج اصلی سینوسی و تعداد نمونه ها را نشان می دهد. هر چه تعداد نمونه ها (Nc) بیشتر باشد، دقت مدل سازی سیگنال حاصل بیشتر می شود:

(4)

فرکانس PWM به وضوح PWM بستگی دارد. در وضوح 8 بیت، مقدار نهایی (بالای تعداد) تایمر 0xFF (255) است. زیرا سپس تایمر به جلو و عقب شمارش می کند ارزش داده شدهباید دو برابر شود بنابراین، فرکانس سوئیچینگ را می توان با تقسیم محاسبه کرد فرکانس ساعتتایمر f CK در 510. بنابراین، با فرکانس ساعت تایمر 8 مگاهرتز، فرکانس PWM حاصل 15.6 کیلوهرتز خواهد بود.


شکل 3 - تولید یک سیگنال سینوسی با استفاده از PWM

تغییر فرکانس موج سینوسی

بیایید فرض کنیم که نمونه های سینوسی از جدول جستجو نه به صورت متوالی، بلکه یک به یک خوانده می شوند. در این حالت، با همان نرخ نمونه برداری، سیگنالی با فرکانس دو برابر تولید خواهد شد (شکل 4 را ببینید).


شکل 4 - دو برابر کردن فرکانس حاصل (XSW = 2)

به قیاس، اگر نه هر مقدار دوم، بلکه هر سوم، چهارم، پنجم را بخوانید (به ترتیب عرض گام 3، 4، 5...) و غیره است. امکان تولید فرکانس های Nc در محدوده وجود دارد. توجه داشته باشید که برای فرکانس های بالا شکل موج حاصل سینوسی نخواهد بود. عرض گام را مطابق جدول تبدیل به صورت مشخص می کنیم XSW، جایی که

(5)

محاسبه موقعیت فعلی در TP برای دوره PWM بعدی (زمانی که تایمر سرریز می شود) با استفاده از عبارت (6) انجام می شود. ارزش جدید در موقعیت X LUTبه وضعیت قبلی آن در موقعیت بستگی دارد X" LUTبا افزایش عرض پله XSW

(6)

افزودن فرکانس های مختلف برای به دست آوردن سیگنال DTMF

سیگنال DTMF را می توان با استفاده از عبارات (1) و (2) تولید کرد. برای سادگی عملیات حسابی، مقدار ضریب K برابر با 0.75 در نظر گرفته می شود تا عملیات حسابی با شیفت های منطقی جایگزین شود. با در نظر گرفتن عبارت (6)، مقدار فعلی برای کنترل PWM را می توان با عبارت زیر محاسبه کرد:

و با در نظر گرفتن آن X LUTa=X" لوتا + XSWa ,X LUTb=X" LUTb + XSWb، در نهایت آن را بنویسیم

پیاده سازی ژنراتور DTMF

که در این نرم افزاردر مورد ساخت یک مولد تن DTMF با استفاده از خروجی PWM 8 بیتی (OC1A) و جدولی با 128 نمونه تابع سینوسی (Nc) که هر کدام با 7 بیت (n) مشخص شده است، بحث می کند. عبارات زیر این وابستگی را نشان می دهد و همچنین نحوه محاسبه ورودی های جدول جستجو را نشان می دهد:

(9)

مزیت استفاده از 7 بیت این است که مجموع مقادیر سیگنال فرکانس بالا و پایین یک بایت است. برای پشتیبانی از مجموعه کامل زنگ های DTMF، 8 مقدار برای هر فرکانس DTMF از جدول 1 باید محاسبه و در جدول جستجو وارد شود.

برای دستیابی به دقت بالاتر، راه حل زیر پیاده سازی شد: مقادیر محاسبه شده با استفاده از عبارت 5 تنها به 5 بایت نیاز دارند. برای استفاده از تمام 8 بایت که خطاهای گرد کردن را کاهش می دهد، این مقدار در 8 ضرب می شود. اشاره گر به جدول جستجو نیز به همین ترتیب نوشته می شود. اما در این حالت دو بایت طول می کشد تا 8 برابر مقدار ذخیره شود. این بدان معناست که قبل از استفاده از این بایت ها به عنوان نشانگر مقادیر موج سینوسی، باید 3 شیفت به راست و یک عملیات مدول Nc ریشه (ضرب منطقی در Nc-1) انجام شود.


شکل 5 – نمودار ماژول برای اتصال به STK500

سیگنال PWM در پین OC1A (PD5) تولید می شود. یک فیلتر خروجی اضافی به سازگاری بیشتر سیگنال با شکل موج سینوسی کمک می کند. هنگام کاهش فرکانس PWM، ممکن است برای به دست آوردن یک نتیجه خوب، لازم باشد از فیلتری با پاسخ فرکانسی تندتر استفاده شود.

اتصال صفحه کلید در شکل 1 نشان داده شده است. عملکرد صفحه کلید باید به گونه ای سازماندهی شود که امکان تعیین کلید فشرده شده وجود داشته باشد. این کار را می توان با استفاده از الگوریتم زیر انجام داد:

  1. تعیین رشته کلید فشار داده شده
    • نوت بوک درجه پایین پورت B را به عنوان یک خروجی پیکربندی کنید و گزارش را تنظیم کنید. "0"
    • تتراد بالای پورت B را به عنوان ورودی با اتصال مقاومت های pull-up پیکربندی کنید
    • خط با دکمه فشار داده شده به عنوان رقم بالاترین تتراد با log تعریف می شود. "0"
  2. تعریف ستون کلید فشرده
    • نوت بوک بالا پورت B را به عنوان خروجی پیکربندی کنید و گزارش را تنظیم کنید. "0"
    • پیکربندی تتراد درجه پایین پورت B به عنوان ورودی با اتصال مقاومت های کششی
    • ستون با دکمه فشار داده شده به عنوان رقمی از تتراد درجه پایین با ورود به سیستم تعریف می شود. "0"

نکته: در STK200، مقاومت ها به صورت سری بین پایه های رابط PORTB و پایه های میکروکنترلر BP5، PB6 و PB7 متصل می شوند (نمودار STK200 را ببینید). در صورتی که صفحه کلید به کانکتور PORTB متصل باشد، مشکل ایجاد می کند.

شکل 6 عملکرد زیربرنامه برای تعیین کلید فشرده شده را نشان می دهد. بسته به کلید فشرده شده، مدت زمان فاصله تعیین می شود. روتین وقفه از این مقدار برای محاسبه تنظیمات PWM برای دو موج سینوسی تون DTM استفاده می کند. روش رسیدگی به وقفه در شکل های 7 و 8 نشان داده شده است.

این روال مقداری را برای مقایسه با خروجی تایمر برای دوره PWM بعدی محاسبه می کند. روال وقفه ابتدا موقعیت مقدار نمونه بعدی را در جدول جستجو محاسبه می کند و مقدار ذخیره شده در آنجا را می خواند.

موقعیت نمونه در جدول جستجو با عرض پالس و عرض پالس واقعی با فرکانس تولید شده تعیین می شود.

مقدار نهایی که در رجیستر مقایسه تایمر نوشته می شود با استفاده از فرمول (7) تعیین می شود که مقادیر نمونه هر دو فرکانس DTMF را در نظر می گیرد.


شکل 6 – بلوک دیاگرام برنامه اصلی

با معرفی مدرن سانترال دیجیتالدر شبکه های تلفنی فدراسیون روسیه، یک روش چند فرکانس برای انتقال سیگنال های شماره گیری، که با علامت اختصاری انگلیسی DTMF (فرکانس چندگانه دوگانه) نشان داده شده است، به تدریج در حال گسترش است. گاهی اوقات یک اصطلاح انگلیسی دیگر برای نامگذاری این سیستم انتقال سیگنال شماره گیری استفاده می شود - Touch-None (شماره گیری آهنگ). این روش در سال 1960 توسعه یافت، اما گسترش واقعی آن در دهه 80 با گسترش مبادلات تلفن دیجیتال (الکترونیک) آغاز شد.

با این روش انتقال سیگنال های کنترلی، هر سیگنال رقمی چند فرکانس از دو تن مطابق با توصیه ITU-T Q.23 "ویژگی های فنی تلفن های لمسی" تشکیل شده است.

فرکانس های DTMF به صورت هارمونیک انتخاب نمی شوند. این بدان معناست که فرکانس ها مقسوم علیه عدد صحیحی غیر از 1 ندارند. به عنوان مثال، فرکانس های 1200 و 1600 هرتز هارمونیک های فرکانس 400 هرتز (3x400=1200 و 4x400=1600) و فرکانس های 697 و 770 هرتز غیر هارمونیک هستند.

هر سیگنال شامل دو فرکانس است: یکی از فرکانس های پایین و دومی از فرکانس های بالای گروه انتخاب شده است.

مطابقت بین اطلاعات ارسالی و فرکانس ها در جدول روی پانل جلوی نصب آزمایشگاه نشان داده شده است.

سطح انتقال در یک بسته دو فرکانس، اندازه گیری شده در بار 600 اهم، عبارت است از: برای گروه فرکانس پایین - منهای 6 dBmO ± 2 dB، برای گروه فرکانس بالا - منهای 3 dBmO ± 2 dB. سطح فرکانس گروه بالای فرکانس در سیگنال کل 2 ± dB بالاتر از سطح فرکانس گروه پایین است. سطح کل همه اجزای فرکانس مرتبه بالاتر حداقل 20 دسی بل کمتر از سطح فرکانس مرتبه پایین تر است.

شرایطی که تحت آن دریافت سیگنال طبیعی باید اتفاق بیفتد به شرح زیر است: وجود دو فرکانس در سیگنال که یکی از گروه پایین و دیگری از بالا انتخاب می شود. فرکانس ها با مقادیر اسمی آنها بیش از 1.8٪ تفاوت ندارند. سطح هر یک از دو فرکانس از منفی 7 تا منفی 30 dBmO است. تفاوت بین سطوح دو فرکانس از 3 دسی بل تجاوز نمی کند. مدت زمان سیگنال فرکانس حداقل 40 میلی ثانیه است.

قبل از روشن کردن نصب، عملیات زیر را انجام دهید:

سوئیچ S6 را در موقعیت پایین قرار دهید.

سوئیچ S13 را در موقعیت بالایی قرار دهید.

سوئیچ های ژنراتورهای گروه های فرکانس بالا و پایین را در موقعیت "خاموش" قرار دهید.

کلید آنالوگ (AK) را در وضعیت "روشن" قرار دهید.

دستگیره های تنظیم ولتاژ خروجی ژنراتورها و مقاومت R3 را در خلاف جهت عقربه های ساعت بچرخانید تا متوقف شوند.

تهویه سیگنال dtmf

1.1 نصب را فعال کنید

1.2 اسیلوسکوپ را به نقطه آزمایش KT3 وصل کنید.

1.3 ژنراتور گروه فرکانس بالایی را روشن کنید، با فشار دادن یکی از دکمه های سوئیچ، هر یک از فرکانس های این گروه را انتخاب کنید.

1.4 دکمه تنظیم ولتاژ خروجی ژنراتور را بچرخانید تا دامنه سیگنال در CT3 را روی 0.5 ولت تنظیم کنید.

1.5 ورودی اسیلوسکوپ را به نقطه آزمایش KT4 تغییر دهید. مراحل 1.3، 1.4 را برای ژنراتور گروه فرکانس پایین تر تکرار کنید و ولتاژ را در KT4 روی 0.5 ولت تنظیم کنید.

توجه داشته باشید: در نتیجه عملیات انجام شده، سیگنال هایی با دامنه مساوی از گروه های فرکانس بالا و پایین به ورودی جمع کننده عرضه می شود. پس از تنظیم این سطوح، دستگیره های تنظیم ولتاژ خروجی ژنراتورها را قفل کنید.

1.6 ورودی اسیلوسکوپ را به نقطه آزمایش KT7 تغییر دهید. با چرخاندن دستگیره مقاومت (R3) برای تنظیم ولتاژ خروجی تهویه کننده سیگنال DTMF، ولتاژ CT7 را روی 0.5 ولت تنظیم کنید.

توجه داشته باشید: در نتیجه عملیات انجام شده، یک سیگنال دو رنگ پیوسته به ورودی گیرنده ارسال می شود و نماد مربوط به ترکیب فرکانس های ژنراتورهای گروه فرکانس بالا و پایین باید بر روی نشانگر نماد دریافتی نمایش داده شود. ، مطابق با جدول. نشانه سیگنال دریافتی و شناسایی شده وجود سیگنال در خروجی گیرنده STD (درخشش LED) است.

      با تغییر فرکانس های گروه فرکانس بالا و پایین، مطمئن شوید که ترکیبات این فرکانس ها با نمادهای دریافتی مطابقت دارند.