پنج شنبه, فروردین 9, 1403
More
    خانهپروژه های میکروکنترلر AVRپروژه با انواع LCDراه اندازی سنسور گاز MQ9 با میکروکنترلر AVR

    راه اندازی سنسور گاز MQ9 با میکروکنترلر AVR

    در این پست از سایت اِمیک, سنسور تشخیص گاز MQ9 را با استفاده از میکروکنترلر AVR راه اندازی خواهیم کرد. سنسور گاز MQ9 قابلیت تشخیص گاز مونو اکسید کربن CO و گاز شهری LPG و گاز CH4 را دارد. این سنسور در بازار معمولا به صورت ماژول موجود هست و ما هم در این اموزش از ماژول طراحی شده با این سنسور استفاده خواهیم کرد, که کار را برای راه اندازی این سنسور بسیار راحت می کند. شکل این ماژول به صورت زیر است :

    MQ9-Module-emic

    همانطور که می بینید این ماژول دارای 4 پایه است که دو پایه مربوط به تغذیه ماژول است (GND,VCC) و باید به ولتاژ 5 ولت متصل کنید, همچنین دقت کنید که جریان مصرفی این ماژول 180 میلی امپر می باشد. دو پایه دیگر خروجی انالوگ و دیجیتال ماژول است که بسته به نیاز می توان از خروجی دیجیتال (D0) یا خروجی انالوگ (A0) استفاده کرد. تغییرات ولتاژ خروجی در حالت آنالوگ  بین 0 تا 5V است, که با افزایش غلظت گاز ولتاژ خروجی بالاتر می رود. در این پروژه ی اموزشی ما از هر دو خروجی این ماژول استفاده خواهیم کرد.

    پروژه راه اندازی سنسور گاز MQ9 با میکروکنترلر AVR :

    MQ9-Test-with-AVR

    در این پروژه ما از میکروکنترلر ATmega16 استفاده کرده ایم, همچنین برای نمایش درصد گاز موجود در محیط از یک LCD کاراکتری 2*16 استفاده شده است. عملکرد این پروژه به این صورت است که میکرو با توجه به میزان گاز اندازه گیری شده توسط سنسور, در صورتی که این میزان گاز بیشتر از مقداری که مشخص می کنیم باشد یک بازر هشدار دهنده را به صدا در می اورد و همچنین بطور مداوم درصد گاز موجود در محیط را روی یک LCD کاراکتری نمایش می دهد. شماتیک این پروژه به صورت زیر است :

    MQ9-Test-with-AVR

    همانطور که در بالا گفته شد, در این پروژه ما از هر دو خروجی انالوگ و دیجیتال این ماژول استفاده خواهیم کرد. خروجی دیجیتال ماژول که با D0 مشخص شده, در زمانی که سنسور گازی را در محیط حس نکند برابر یک منطقی یا 5 ولت است و زمانی که سنسور گاز را در محیط تشخیص دهد برابر 0 منطقی (0 ولت) می شود. حساسیت خروجی دیجیتال ماژول از طریق پتانسیومتری که در پشت برد ماژول است تنظیم می شود. در این پروژه ما به این دلیل خروجی دیجیتال ماژول را به پایه 1 میکرو (یا پین 0 پورت B میکرو) متصل کرده ایم, تا میکرو خروجی را برای ما برعکس کند, یعنی زمانی که خروجی ماژول 1 منطقی است میکرو پایه 2 خود (پین 1 پورت B) را 0 کند و زمانی که خروجی ماژول 0 است میکرو پایه 2 خود را 1 منطقی کند. به این ترتیب زمانی که سنسور گازی را تشخیص داد, بازری که از طریق ترانزیستور و مقاومت به پایه 2 میکرو متصل است فعال می شود و زمانی که گازی در محیط نبود (یا مقدار ان کم بود) بازر غیرفعال است. از انجایی که جریان خروجی پایه های میکرو کم است و نمی تواند یک بازر را راه اندازی کند ما از یک مدار راه انداز شامل ترانزیستور و مقاومت استفاده کرده ایم.

    همانطور که گفته شد خروجی انالوگ ماژول در بازه 0 تا 5 ولت تغییر می کند که این تغییرات به غلظت یا میزان گاز موجود در محیط بستگی دارد. ما توسط مبدل انالوگ به دیجیتال میکروکنترلر (ADC) این تغییرات را اندازه گیری می کنیم و به این ترتیب می توانیم میزان گاز محیط را اندازه گیری کرده و ان را به صورت درصدی روی LCD کاراکتری نمایش دهیم. 

     

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

    برنامه این پروژه بصورت زیر است که به زبان C و با کامپایلر کدویژن نوشته شده است :

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

    نکات :

    • پایه های 10 و 11 میکرو برای تغذیه میکرو هستند که باید به ترتیب به مثبت و منفی منبع تغذیه 5 ولت متصل شوند, در شماتیک بالا بدلیل اینکه در شبیه سازی پروتئوس این پایه ها وجود ندارند من وصل نکردم ولی شما در عمل حتما این پایه ها را باید به تغذیه متصل کنید
    • برای تنظیم کنتراست LCD می توانید پین ۳ ان را به یک پتانسیومتر متصل کنید یا در غیر این صورت پین ۳ را به منفی تغذیه وصل کنید 
    • از اونجایی که از ADC میکرو استفاده کرده ایم حتما پین های ۳۰ و ۳۲ رو به ۵ ولت (VCC) متصل کنید
    • از بازر 5 ولت استفاده کنید (در صورتی که از بازر با ولتاژ بیشتر می خواهید استفاده کنید نیاز به تغذیه جداگانه برای ان دارید)
    • در صورتی که با ADC در میکروکنترلر AVR و نحوه راه اندازی ان اشنا نیستید این پست را مطالعه کنید
    • برای اشنایی با LCD کاراکتری و نحوه راه اندازی ان این پست را مطالعه کنید

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

    من برای تست پروژه از اونجایی که بازر نداشتم بجاش از یک LED استفاده کردم

     

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

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

     

     

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

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

    36 نظرات

    1. سلام من کد رو توی کد ویژن نوشتم ولی ارور ال سی دی میده ارور رو ترجمه زدم میگه : خطای کتابخانه بسته بندی شده: C:\cvavr\lib\alcd.lib(131): دستورالعمل #خطا: کتابخانه LCD الفبایی عددی در پیکربندی پروژه تنظیم نشده است.
      به زبان انگلیسی هم میشه : Packed library error: C:\cvavr\lib\alcd.lib(131): #error directive: Alphanumeric LCD library not set in the project configuration.
      چه مشکلی داره لطفا کمکم کنید ممنون

    2. سلام ببخشید سنسوری که توی پروتئوس برای من میاد به جای پایه های AO و DO پایهای OUT و test pin داره چه فرقی دارن

    3. سلام کلا هیچ کدوم از نسورهای mqرو نمیشه در پروتئوس تست کرد؟ این برنامه برای mq5 هم همینه؟ تفاوتش چیه؟

    4. سلام وقتتون بخیر
      من توی پروتیوس که میخوام ماژول رو بیارم برای شبیه سازی، برام نمیاره. انگار توی کتابخونه ش نیست.
      چطوری باید وارد کنم؟

    5. سلام مجدد
      جریان مصرفی این پروژه چقده؟
      به نظر شما با چه مداری اینو به برق مستقیم وصل کنیم؟
      اگه از این ماژول سنسور استفاده کنیم ایا باز هم نیاز به کالیبره کردن هست؟

      • سلام, جریان زیادی لازم ندارد فکر می کنم 0.5 امپرم کافی باشه. خودتون می تونید مشخصات قطعات پروژه مثل سنسور گاز, lcd و… را مطالعه کنید و ببینید که هر کدام چه میزان جریانی نیاز دارند. تغذیه مدار می تواند با اداپتور, منبع تغذیه و یا باتری تامین شود. مثلا می تونید از تغذیه های سوئیچینگ استفاده کنید.
        ماژول نیاز به کالیبره ندارد فقط یک پتانسیومتر برای تنظیم حساسیت دارد.

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

    7. سلام ال سی دیه این مداره درست کار نمیکنه یعنی عبارت
      Gas mount رو نشون نمیده و به چیز دیگه نشون میده درصدش هم درست نشون نمیده

      • سلام, برنامه را بدون تغییر روی میکرو پروگرام کنید و مطمئن بشید که میکرو بدرستی پروگرام شده باشد. اتصالات پروژه را هم بررسی کنید اشتباهی انجام نداده باشید

    8. سلام و خسته نباشید ممنون از سایت خوبتون
      این مدار 100 درصد کار میکنه ؟!
      نریم بسازیم سر کار بریم کار نکنه!!!!

    9. سلام..این سنسور چطور درصد گاز هوا رو نشون میده اخه مگه تا ۱۰۰۰۰ پی پی ام رو سنس نمیکنه .هزار پی پی ام هم که میشه یک درصد..پس بیشتر از اون رو چطور سنس میکنه. مگه این که الکی درصد بزنه…درسته؟

    10. سلام من هر کاری که گفتید رو گردم حتی کد خودتون رو بی هیچ تغییری پروگرم کردم و تمام اتصالات رو مجدد برقرار کردم . سنسور هم درسته میکرو هم درسته ولی با وجود اینکه کد خودتون رو پروگرم کردم ال سی دی فقط چن تا مربع سفید نشون میده . قبلا با کد شما ک خودم تغییرش دادم حد اقل عبارت روی ال سی دی میامد الان ک همونم نمیاد . اگه میشه بگید تنظیمات کد ویزارد رو روی چه مقادیری قرار بدم

      • سلام, برای پروگرام کردن از برنامه avr studio استفاده کنید و از اونجایی که LCD به پورت C وصله حتما فیوزبیت jtag را غیرفعال کنید. نرم افزار avr studio و اموزش پروگرام کردن با ان در سایت هست که می تونید مطالعه کنید. برای پروگرام کردن میکرو از کدویژن استفاده نکنید چون نسخه هایی که ما استفاده می کنیم کرک شده هست و مشکلات زیادی داره.
        شما اول از فایل هگز اماده و تست شده که قرار دادیم جواب بگیرید, بعدش برید سراغ اینکه تنظیمات کدویزارد را انجام بدید و کدها را تغییر بدید و… بهرحال اموزش راه اندازی ADC و همچنین اموزش راه اندازی LCD کاراکتری در سایت موجوده که در اون پست ها گفته شده تنظیمات کدویزارد به چه شکلیه, این پروژه هم تنظیماتش مثل همونا هست

        • jtag رو غیر فعال کردم . مطلب سایتتون راجع به ADC رو مطالعه کردم . میکروی من atmega16A هستش . چیپ کلاک رو روی 8 مگاهرتز گذاشتم . پورت سی دات صفر رو خروجی کردم . اتصالات رو چک کردم . ADC enabled رو تیک زدم . use 8 bit و intrupt رو غیر فعال کردم . clock ADC رو روی 1000000 کیلو هرتز گذاشتم ( یه بارم روی 500000 گذاشتم ) . بخش auto trigger source رو هم روی ADC stopped گذاشتم . توی بخش project گزینه ی configure رو زدم و از بخش c compiler و بخش sprintf features رو روی float , width , precision گذاشتم . سنسور و اتصالات رو چک کردم . باززززز هم کار نکرد !!! پیر شدیم مهندس!

          • فرکانس میکرو را روی 1 مگ قرار بدید و تمام پورت C را خروجی کنید نه فقط PORTC.0 و باید ال سی دی کاراکتری را هم از قسمت Alphanumeric LCD فعال کنید و در این قسمت Characters/Line را روی 16 بزارید و در پایین در قسمت LCD Module AVR هم تمام گزینه ها را روی پورت C بزارید. clock ADC را هم روی 31.250k بزارید.

    11. سلام . میشه لطف کنید و تنظیمات بخش کدویزارد رو توضیح بدید ؟ بخش adc و پورت ها باید به چه شکلی تنظیم بشن .

        • سلام مجدد . من این سنسور رو راه اندازی کردم ولی مقدار گاز تقریبا ثابته و با قرار دادن فندک مثل ویدیو مقدار گاز تغییر نمیکنه . علت چی میتونه باشه ؟

          • سلام, دلایل زیادی می تونه داشته باشه, ممکنه میکروتون بدرستی پروگرام نشده باشه یا اگر برنامه را تغییر داده باشید ممکنه برنامتون مشکل داشته باشه. دقت کنید که پایه های تغذیه میکرو و همچنین پایه های 30 و 32 که مربوط به adc هستند را به تغذیه متصل کرده باشید. همچنین دقت کنید که پایه های سنسور را به درستی به میکرو متصل کرده باشید و در اخر اگه بازم جواب نداد ممکنه که سنسورتون مشکل داشته باشه

    پاسخ دادن به عابد رازانی لغو پاسخ

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

    spot_img