پنج شنبه, شهریور 29, 1403
ادامه منو
    خانهپروژه های میکروکنترلر AVRپروژه با انواع LCDپروژه AVR مولد موج مربعی با قابلیت تغییر فرکانس

    پروژه AVR مولد موج مربعی با قابلیت تغییر فرکانس

    در این پست از سایت اِمیک, با استفاده از میکروکنترلر AVR یک مولد یا ژنراتور موج مربعی خواهیم ساخت که دارای قابلیت تغییر فرکانس نیز می باشد. ما با استفاده از تایمر در میکروکنترلر AVR این پروژه را طراحی کرده ایم که در این پروژه از میکروکنترلر ATmega16 و تایمر 0 ان استفاده خواهیم کرد. شما می توانید از هر میکروکنترلر AVR که دارای تایمر می باشد استفاده کنید.

    P-prj-Frequency-generation-using-avr-emic

    دامنه ولتاژ خروجی موج مربعی ما 5 ولت خواهد بود و فرکانس ان نیز از حدود 250 هرتز تا 62500 هرتز (62.5Khz) قابل تنظیم است. در ادامه شماتیک این پروژه را مشاهده می کنید و با این پروژه بیشتر اشنا خواهید شد.

    پروژه AVR مولد موج مربعی با قابلیت تغییر فرکانس:

    prj-Frequency-generation-using-avr-emic

    شماتیک این پروژه را در بالا مشاهده می کنید که بسیار ساده می باشد. همانطور که مشاهده می کنید خروجی موج مربعی ما پایه 4 میکرو (پین 3 از پورت B) می باشد و با عبارت OUTPUT مشخص شده است, که این پایه خروجی تایمر 0 میکروکنترلر ATmega16 می باشد. برای نمایش مقدار فرکانس خروجی از یک LCD کاراکتری استفاده شده که بصورت دائم فرکانس خروجی را نمایش می دهد.

    پتانسیومتر RV1 برای تنظیم فرکانس خروجی استفاده شده که با تغییر ان می توانید فرکانس موج مربعی را از 250Hz هرتز تا 62.5KHz تغییر دهید. همانطور که مشاهده می کنید دو سر این پتانسیومتر به مثبت و منفی تغذیه (VCC و GND) متصل شده و با تغییر ان, ولتاژ پایه وسط ان که به پین 40 میکرو متصل است از 0 تا 5 ولت تغییر می کند. پایه 40 میکروکنترلر ATmega16 پایه ی ADC0 می باشد و ما این ولتاژ پایه وسط پتانسیومتر را توسط ADC میکرو اندازه گیری می کنیم و با توجه به مقدار این ولتاژ فرکانس موج مربعی توسط میکرو تنظیم می شود.

    پتانسیومتر RV1 برای تنظیم کنتراست یا روشنایی LCD کاراکتری استفاده شده, در صورتی که نخواستید استفاده کنید باید پایه 3 ال سی دی را به زمین (GND) متصل کنید.

    توجه کنید که پایه های تغذیه میکروکنترلر (پایه 10 و 11) را که در شماتیک بالا نیست, فراموش نکنید به تغذیه 5 ولت متصل کنید و همچنین پایه های 30 و 32 میکروکنترلر ATmega16 را هم به دلیل استفاده از ADC باید به مثبت تغذیه متصل کنیم.

    برنامه کدویژن :

    برنامه این پروژه به زبان C و با استفاده از کامپایلر کدویژن نوشته شده است. فرکانس میکروکنترلر 1 مگاهرتز تنظیم شده و همانطور که گفته شد از ADC0 میکرو برای اندازه گیری ولتاژ پایه وسط پتانسیومتر استفاده شده که این ولتاژ را برابر تایمر 0 میکرو قرار داده ایم تا از این طریق بتوانیم فرکانس خروجی موج مربعی را تغییر دهیم. تایمر 0 میکرو نیز در مد CTC و مقسم فرکانسی 8 استفاده شده (در کدویزارد مقدار فرکانس تایمر 125KHz انتخاب شده) در زیر برنامه پروژه را مشاهده می کنید:

    توضیحات قسمت های مهم برنامه نوشته شده, اگر سوالی داشتید می تونید در قسمت نظرات مطرح کنید.

    نکات:

    • در صورتی که با ADC در میکروکنترلر AVR و نحوه راه اندازی ان اشنا نیستید این پست را مطالعه کنید
    • برای اشنایی با LCD کاراکتری و نحوه راه اندازی ان این پست را مطالعه کنید
    • توجه کنید که در کدویزارد در زمان فعالسازی ADC باید حتما تیک Use 8 bits را فعال کنید

    کلیپ تست عملی پروژه :

     

    دانلود فایل ها

    پسورد فایل زیپ : www.emic.ir

    نظر یادتون نره…

    عابد رازانی
    عابد رازانیhttps://emic.ir/
    فارغ التحصیل کارشناسی الکترونیک از دانشکده باهنر شیراز و علاقمند به برنامه نویسی و طراحی مدارات الکترونیکی, در حال حاضر به تولید محتوای آموزشی و طراحی و انجام پروژه مشغول هستم.

    10 نظرات

    1. سلام
      فرمول زیر از کجا آوردید؟ ممنون
      F=Fclk/(2*N*(OCR0+1)); //دستور روبرو فرکانس را برای نمایش روی ال سی دی محاسبه می کند//

    2. سلام
      امکانش هست که برنامه ای قرار بدید که فرکانس خروجی توسط کیپد انجام بشه
      یا میتونی توضیح بدید که باید چیکار کنم

    3. سلام وقت شما بخیر
      من متاسفانه خیلی در زمینه میکرو تازه کار هستم . اگر همین برنامه رو در atmega8au بخواهیم داشته باشیم چه تغییراتی لازمه؟

    4. سلام من یک پروژه داشتم که در اون یک کد هگز رو از کیپد اسکن میکنه و با استفاده از مدولاسیون FSK مدوله میکنه کسی میتونه انجام بده این پروژؤ< ؟

    5. سلام وقت بخیر این پروژه رو بخوام با atmega 8 راه اندازی کنم کدوم قسمت بای تغییر کنه .ممنون میشم راهنمایی کنید.

    6. سلام با تشکر از سایت خوبتون. من میخواستم بازه تغییرات طول موج رو با تغییر مقدار پیش تقسیم کننده و مقدار تایمر به
      صورتی تنظیم کنم که فرکانس خروجی از یک هرتز تا 500 کیلوهرتز تغییر کند.، کدوم قسمت کد رو باید تغییر بدم؟؟؟ مقدار فرکانس تایمر و مقدار پیش تقسم کننده رو باید تغییر بدم؟

      • سلام, متاسفانه این پروژه را چندین ماه پیش انجام دادم و الان حضور ذهن ندارم ولی تا اونجایی که یادم هست فکر نمیکنم بشه این محدوده مورد نظر شما را یعنی تا 500 کیلو را ایجاد کرد. حالا اگر خواستید هم سعی کنید از کریستال خارجی برای میکرو با فرکانس حداقل 8 مگ استفاده کنید

    ارسال دیدگاه

    لطفا نظر خود را وارد کنید!
    لطفا نام خود را اینجا وارد کنید

    spot_img