خانه / چگونه بسازیم / الکترونیکی / فانشن ژنراتور یا تولید کننده شکل موج بسازید ! [ پروژه AVR ]

فانشن ژنراتور یا تولید کننده شکل موج بسازید ! [ پروژه AVR ]

اگر دانشجوی رشته الکترونیک ، یکی از دوست داران پروژه های الکترونیکی و یا در حال آموزش الکترونیک هستید و یا اگر دوست دارید در کارگاه شخصی خودتان یک دستگاه فانشن ژنراتور (Function Generator) داشته باشید این پروژه ساختنی را از دست ندهید !
در این مقاله ، آموزش ساخت یک دستگاه تولید کننده شکل موج یا فانشن ژنراتور با استفاده از میکرو کنترلر AVR را به شما آموزش خواهیم داد. اما قبل از شروع آموزش بد نیست اندکی در مورد فانشن ژنراتور ها بیشتر بدانید.

فانشن ژنراتور چیست ؟

این دستگاه در واقع تولید کننده سیگنال های مختلف الکترونیکی است که به شما اجازه می دهد شکل این سیگنال ها ، دامنه ولتاژ و فرکانس آن ها را با توجه به نیازتان تنظیم کنید. این دستگاه برای تست و تعمیر قطعات الکترونیکی ، پژوهش روی مدار های الکترونیکی ، آزمایش پاسخ مدار طراحی شده به ورودی های مختلف ، تست آمپلی فایر های ساخته شده و … به کار می رود. در واقع فانشن ژنراتور یک نوع نوسان ساز قابل تنظیم و پیشرفته با امکانات اضافی است.
در هر آزمایشگاه یا کارگاه الکترونیکی که قدم بگذارید ، دو دستگاه ضروری را روی میز کار خواهید دید. یک اسیلوسکوپ و یک فانشن ژنراتور ! هردو این دستگاه ها گرانقیمت هستند ، در حالی که ساختن نمونه های ساده و کاربردی آن ها تقریبا نیاز های عادی شما را کاملا برطرف می کند و نیازی به صرف هزینه های زیاد نیست. قبلا به شما آموزش داده ایم که چگونه یک اسیلوسکوپ بسازید ، حالا نوبت ساخت فانشن ژنراتور است !
این دستگاه می تواند شکل موج هایی نظیر مربعی ، سینوسی ، مثلثی و دندان اره ای تولید کند. برای ساخت فانشن ژنراتور از یک میکرو کنترلر AVR با مدل ATMEGA 32 ساخت شرکت ATMEL استفاده می کنیم . این تراشه میکروکنترلر دارای امکانات بسیار زیادی است و در مقایسه با میکرو کنترلر های هم رده اش ، دارای قیمت مناسب تری نیز هست.

ابزار مورد نیاز:

  • یک دستگاه برنامه ریزی میکرو کنترلر AVR
  • مدار تبدیل سیگنال دیجیتال به آنالوگ (ADC)
  • یک اسیلوسکوپ برای دیدن شکل موج خروجی
  • یک منبع تغذیه مانند آداپتور یا منبع تغذیه رو میزی
  • سیم برای اتصال قسمت های مختلف
  • پراب های CRO برای اسیلوسکوپ
  • برد PCB طراحی شده و یا برد برد (Bread Board)

قطعات مورد نیاز:

  • میکرو کنترلر AVR مدل ATMEGA 32
  • IC مبدل دیجیتال به آنالوگ DAC0808 یا ماژول DAC
  • IC تقویت کننده عملیاتی (Op-Amp) مدل LM741
  • کلید های فشاری
  • مقاومت و خازن به مقدار کافی !
نمونه آماده شده دستگاه فانشن ژنراتور روی برد آزمایشگاهی به همراه خروجی
نمونه آماده شده دستگاه فانشن ژنراتور روی برد آزمایشگاهی به همراه خروجی

از لحاظ تئوری ، برای تولید شکل موج های مختلف سیگنال های الکتریکی آنالوگ با استفاده از میکرو کنترلر با خروجی سیگنال دیجیتال ، باید خروجی دیجیتال میکروکنترلر را به یک مبدل دیجیتال به آنالوگ (DAC) وصل کرد که سیگنال دیجیتال را تبدیل به آنالوگ کند.
خروجی های DAC ها از از لحاظ جریان به ورودی ارتباط دارد. به عبارت ساده تر مبدل های آنالوگ به دیجیتال ، رقم های دیجیتال را گرفته و با توجه به بزرگی رقم ، مقدار جریان دهی در خروجی از آن ها بیشتر می شود. پس برای داشتن خروجی آنالوگ ما باید این جریان را تبدیل به ولتاژ کنیم. ساده ترین تبدیل کننده ولتاژ به جریان مقاومت تنها است . البته مقاومت به دلایل مختلفی از جمله خطای زیاد و اتلاف انرژی در عمل برای این منظور استفاده نمی شود.
در این پروژه با از یک تقویت کننده عملیاتی برای تبدیل خروجی جریان به ولتاژ استفاده کرده ایم. برای این منظور از آسی سی LM741 را به کار گرفته ایم که معروف ترین IC تقویت کننده عملیاتی موجود در بازار است.

در ساختنی بخوانید :  آموزش ساخت : آبگرمکن خورشیدی مسافرتی بسازید

توضیحات مدار فانشن ژنراتور

پورت A در میکرو کنترلر به عنوان ورودی و پورت C به عنوان خروجی تعریف شده است . چهار عدد کلید فشاری به درگاه A متصل شده اند (از پایه A0 تا پایه A3) ، بقیه پایه های درگاه A (یعنی از A4 تا A7) به ولتاژ Vcc متصل شده اند . همه 8 پایه پورت C به خروجی های A1 تا A8 مبدل دیجیتال به آنالوگ DAC0808 متصل هستند . پایه Vref تراشه DAC0808 به عنوان ولتاژ مرجع مقایسه به Vcc متصل شده است . پایه -Vref هم به ولتاژ زمین (صفر) متصل است. یک مقاومت 5 کیلو اهمی به عنوان واسطه در سر راه این اتصال قرار گرفته است که جریان Iref ، از مقدار مورد نیاز DAC0808 بالاتر نرود.

مدار فانشن ژنراتور را مشاهده می کنید :

نقشه مدار فانشن ژنراتور (Function generator) ساده و کاربردی با استفاده از میکروکنترلر Atmega32
نقشه مدار فانشن ژنراتور (Function generator) ساده و کاربردی با استفاده از میکروکنترلر Atmega32

مبدل دیجیتال به آنالوگ (DAC) چگونه کار می کند ؟

مبدل دیجیتال به آنالوگ DAC0808 دارای 8 پایه ورودی است که هر پایه معرف یک بیت (Bit) دیجیتال است. همان طور که می دانید هر بیت می تواند مقدار 1 یا 0 را داشته باشد یا به عبارتی هر کدام از این پایه ها می توانند خاموش یا روشن باشند . مجموع 8 پایه می تواند اطلاعاتی برابر با 8 بیت از 00000000 ( که معادل ولتاژ مرجع حد پایین است) و 11111111 (که معادل ولتاژ حد بالااست) را منتقل کند ، یعنی این 8 پایه می توانند به 256 حالت مختلف روشن و خاموش باشند. پس می توانیم بگوییم که بازه بین ولتاژ مرجع بالا و پایین را می توانیم به 256 قسمت تقسیم کنیم . یعنی ارزش هر شماره از 0 تا 255 برابر است با :

(5-0) / 256 =0.0195

یعنی اگر خروجی میکرو کنترلر عدد 01100100 را نشان داد ، DAC0808 میفهمد که این عدد متناظر 100 است . سپس محاسبه می کند :

100* 0.0195 = 1.95

و در خروجی 1.95 واحد از 5 واحد اجازه ایجاد جریان می دهد.
خروجی مبدل DAC که جریان Iout است به ورودی وارونگر (Inverting Output) آپ-امپ LM741 متصل است که قرار است این جریان را به ولتاژ تبدیل کند که برای ما قابل استفاده باشد. یک مقاومت 5 کیلو اهمی هم در خروجی این آپ-امپ قرار دارد که نقش نهایی در ایجاد ولتاژ را بازی می کند. مدار الکترونیکی فانشن ژنراتور سه ولتاژ تغذیه مختلف لازم دارد +5 ولت ، +12 و -12 ولت . این ولتاژ ها به این دلیل هستند که میکرو کنترلر Atmega32 و تراشه DAC0808 با ولتاژ 5 کار می کنند ولی تقویت کننده عملیاتی LM741 با ولتاژ های -12 و +12 به شکل متقارن کار می کند. این ولتاژ ها را می توانید با پروژه های مختلف منبع تغذیه که در ساختنی معرفی شده است تولید و استفاده کنید. همچنین منابع تغذیه متنوعی در فروشگاه های الکترونیک موجود است که می توانید از آن ها بهره ببرید.

کد میکرو کنترلر فانشن ژنراتور

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

تولید موج مربعی :

برای تولید موج مربعی ، میکرو کنترلر باید به شکل متناوب همه پایه های خروجی را صفر کرده و پس از مدتی دوباره یک کند که در خروجی مدار به ترتیب ولتاژ+12 و -12 ولت به شکل متناوب دیده شود .

در ساختنی بخوانید :  با میز کار تخته سیاه ایده هایتان را در لحظه ثبت کنید

تولید موج پله ای :

برای تولید این شکل موج میکرو کنترلر باید در ابتدا خروجی صفر تولید کند و پس از ایجاد تاخیری کوتاه این مقدار را پله به پله افزایش دهد مثلا : 33h و 66h و 99h و CCh و FFh (عدد ها برای کوتاه شدن بر مبنای 16 نوشته شده اند که شما می توانید با استفاده از مبدل هگز به باینتری ، آن ها را تبدیل به 0 و1 کنید.) . خروجی مدار به شکل یک راه پله با چندین پله از -12 ولت تا +12 ولت خواهد بود.

تولید موج سینوسی :

برای تولید موج سینوسی قضیه کمی سخت تر می شود. برای این کار نیاز به یک جدول داده داریم که در آن سینوی زاویه های مختلف با معادله زیر برای زوایای 30 ، 60 ، 90 و … محاسبه و جا گذاری شده است.

Value = 5 + 5sin(?)

توجه کنید : در معادله بالا Value به معنای خروجی آنالوگ است. پس ورودی های دیجیتال باید متناظر با آن تولید شوند. وقتی این مقدار های تولید شده به مبدل دیجیتال به آنالوگ داده شد ، مقدار به دست آمده به شکل یک موج سینوسی خواهد بود.

تولید موج مثلثی :

برای تولید موج مثلثی ، کافی است میکرو کنترلر یک بار از صفر تا 255 بشمرد و در خروجی نشان دهد و سپس بلافاصله همین عمل را از 255 تا 0 به صورت معکوس انجام دهد.

تولید موج دندان اره ای یا موج رمپ (Ramp) :

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

  • با زدن کلید 1 موج مربعی تولید می شود.
  • اگر کلید 2 را به تعداد زوج فشار دهید پله های بالا و سپس پایین تولید می شود. اگر کلید 2 را به تعداد فرد فشار دهید پله ها فقط رو به بالا هستند.
  • کلید 3 موج سینوسی تولید می کند.
  • کلید 4 در فشار اول موج مثلثی ، در فشار دوم موج دندان اره ای مستقیم (رمپ مثبت) و در فشار سوم دندان اره ای معکوس (رمپ منفی) تولید می کند و پس از 4 بار دوباره موج مثلثی تولید می شود.

کد برنامه نویسی پروژه فانشن ژنراتور با میکروی AVR را در پایین می بینید . این برنامه به زبان برنامه نویسی C نوشته شده است :

در کد برنامه نویسی از دستور goto استفاده شده است که گرچه کار می کند اما زیاد باب طبع برنامه نویسان حرفه ای نیست، آیا شما می توانید کد برنامه را به شکل بهتری بنویسید ؟ نتایج کارتان را با ما در میان بگذارید.

در ساختنی بخوانید :  یک محقق نشان داد که سیاهچاله ها وجود ندارند!

منبع

خلاصه مطلب
فانشن ژنراتور یا تولید کننده شکل موج بسازید ! [ پروژه AVR ]
عنوان مطلب
فانشن ژنراتور یا تولید کننده شکل موج بسازید ! [ پروژه AVR ]
توضیح کوتاه
آموزش ساخت دستگاه تولید کننده شکل موج یا فانشن ژنراتور (Function generator) .
نویسنده

بیشتر بخوانید:

راهنمای شناخت سیگنال های الکتریکی : مفاهیم پایه ای (بخش اول)... در عصر حاضر ما انسان ها همواره در محاصره انواع سیگنال ها هستیم. سیگنال های تصویری، صوتی، مکانیکی، الکتریکی، سیگنال های فعال و منفعل. اتفاقات فیزیکی که...
آموزش ساخت سرعت سنج دوچرخه با برد آردوینو و میکروکنترلر Atmega 328p... در این ساختنی آموزش ساخت سرعت سنج دوچرخه را یاد می گیرید. قطعه اصلی این سرعت سنج میکروکنترلر آردوینو است که کار با آن بسیار ساده است. ما کدهای آردوینو...
مدار نشانگر سطح صدا (بارگراف) با استفاده از تراشه TA7666P... برای نشان دادن سطح سیگنال صوتی ، بسیاری از مدار ها با استفاده از IC ها مقایسه گر ئ ترانزیستور ها ایجاد شده است. برای مثال مدار حسگر صدا که قبلا در ساخ...
مدار دیمر لامپ LED ساده و ارزان با استفاده از IC 555... باید قبول کنیم که امروزه مصرف بی حد و حساب انرژی ، دیگر راه حل خوبی برای زندگی نیست. با گران شدن انرژی و بالا رفتن هزینه های ناشی از مصرف انرژی و از ط...
آموزش ساخت : دستگاه کیسه پزی ارزان بسازید... آیا با روش پخت کیسه پزی آشنا هستید؟ در این روش فرانسوی؛ مواد غذایی داخل یک کیسه پلاستیکی بدون هوا قرار می گیرند و با حرارت غیرمستقیم پخته می شوند. در ...
دستور پخت: شکلات خانگی ساده با طعم بادام زمینی... همه یک دستور پخت ساده و  خوب را دوست دارند!هیچ استثنایی هم در این مورد نیست! این دستور مانند شکلات های مشهور موجود در مغازه ها نمی شود، اما بسیار خوشم...

درباره مهرداد جمالی

مهرداد جمالی
مهرداد جمالی ، متولد 1367 ، دانش آموخته رشته لیسانس مهندسی مخابرات دانشگاه ملی زنجان و دانشجوی ارشد مدیریت صنعتی است. وی بنیان گذار اصلی پروژه ساختنی و یکی از مدیران ارشد وبسایت است.

پیشنهاد می کنیم

با برد آردوینو مدار ژنراتور موج سینوسی بسازید

موج سینوسی موجی است که شکل آن شبیه منحنی سینوسی است. برخی از قطعات الکترونیکی …

پاسخ دهید