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

14

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

ماژول MQ9

همانطور که می بینید این ماژول دارای 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

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

14 دیدگاه‌ها

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

    • سلام, برای پروگرام کردن از برنامه 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 بزارید.

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

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

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

        • شاید مشکلم توی تنظیمات ADC در کد ویزارد باشه . میشه بگید تنظیماتش چجوریه ؟

        • شما اول این پروژه را دنلود کن و فایل هگز را روی میکرو پروگرام کن ببین پروژه جواب میده, اگر مشکلی نبود بعد کدها را تغییر بده و یا…

ارسال دیدگاه

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