ساخت فن حساس به دما و رطوبت با میکروکنترلر الکترونیک Picaxe 08M2

ساخت فن حساس به دما و رطوبت با میکروکنترلر الکترونیک Picaxe 08M2

میکروکنترلر Picaxe 08M2 از نوع الکترونیک به همراه یک سنسور HIH6030 نیاز داریم تا بتوانیم با استفاده از دما یا رطوبت و یا هر دو فاکتور نسبت به کنترل فن تهویه استفاده نماییم.

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

می توانیم کنترل فن الکترونیک را با استفاده از سوئیچ خاموش و روشن انجام دهیم و یا می توانیم استفاده از این دستگاه ها را به صورت خودکار انجام دهیم. در این پروژه الکترونیک ما می خواهیم یک فن خودکار بسازیم که توسط تنظیمات دمایی که از کاربر دریافت می کند، تنظیمات رطوبت یا بر اساس هر دو فاکتور عمل می کند.

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

برای ساخت این پروژه ما یک مدار نیاز داریم که از میکروکنترلر الکترونیک Picaxe 08M2 پشتیبانی کند و همچنین یک سنسور از نوع دما و رطوبت ساخت شرکت Honeywell مدل HIH6030 را بتواند جایگذاری کند. بر اساس مقایسه ای که بین مقادیر تعریف شده توسط کاربر که در حافظه غیر ولتاژ Picaxe و مقادیر خوانده شده از سنسور برنامه ریزی شده اند، تصمیم گیری نسبت به خاموش یا روشن کردن فن را می گیرد.

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

شماتیک این پروژه الکترونیک

شماتیک این پروژه الکترونیک

وسایل مورد نیاز

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

  • فن از نوع Thermaltake Pure 20 با قیمت ۱۹.۹۵ دلار
  • تنظیم کننده ولتاژ مدل ۷۸L05 با ظرفیت ۱۰۰ میلی آمپر با قیمت ۰.۳۸ دلار
  • میکروکنترلر الکترونیک مدل Picaxe 08M2 با قیمت ۲.۸۹ دلار
  • سنسور مدل hum/tem نوع HIH6030-021-001 با قیمت ۸.۶۱ دلار
  • MOSFET نوع IRL540 مدل N-CH TO-220AB با قیمت ۱.۸۷ دلار
  • هشدار دهنده پیزوالکترونیک مدل ۵ ولت با قیمت ۰.۵۵ دلار
  • خازن قطبی با ظرفیت ۱.۰ میکرو فاراد
  • خازن غیر قطبی با ظرفیت ۰.۱ میکرو فاراد
  • خازن غیر قطبی با ظرفیت ۰.۲۲ میکرو فاراد
  • دیود مدل ۱N4001
  • دیود مدل ۱N914
  • مقاومت ۱۰ کیلو اهم
  • مقاومت ۳۳ کیلو اهم
  • مقاومت ۴.۷ کیلو اهم
  • مقاومت ۲.۲ کیلو اهم
  • مقاومت ۲.۲ کیلو اهم
  • مقاومت ۱۲۰ اهم

 

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

میکروکنترلر الکترونیک Picaxe 08M2 سمت چپ و سنسور HIH6030 سمت راست

سخت افزار

پردازنده ای که برای این پروژه در نظر گرفته شده است، یک میکروکنترلر الکترونیک از نوع Picaxe 08M2 می باشد که با استفاده از زبان برنامه نویسی BASIC Picaxe برنامه ریزی شده است. این میکروکنترلر الکترونیک دارای ۸ پین و ۲۰۴۸ بایت حافظه برنامه برای حداکثر ۱۸۰۰ خط برنامه می باشد. ۱۲۸ بایت رم و شش پین پورت C.0 تا C.4 I / O است. C.5 تنها به عنوان ورودی در نظر گرفته می شود.

برای این پروزه الکترونیک باید پین های پورت به توابع زیر اختصاص پیدا کند :

  • ۰ برای هشدار دهنده پیزو الکترونیک
  • ۱ – I۲C, SCL
  • ۲ – I۲C, SDA
  • ۳ برای خواندن سیگنال دما و رطوبت
  • ۴ برای خاموش و روشن کردن فن الکترونیک به واسطه سوئیچ MOSFET
  • ۵ غیر قابل استفاده (به واسطه R3 به زمین متصل شده است.

سنسور الکترونیک سنجش دما و رطوبت

در این پروژه از سنسور هانیول مدل HIH 6030 برای سنجش دما و رطوبت استفاده می شود. این تراشه دامنه ولتاژ از منبع تغذیه برابر با ۱.۸V تا ۵.۵V را دارد و از یک رابط ۱۲C برای برقراری ارتباط با میکروکنترلر الکترونیک استفاده می کند. R4 و R5 مقاومت کششی توصیه شده را دارند و خازنهای C4 و C5 همچنین مقادیر توصیه شده توسط هانیول را دنبال می کنند.

در این دستگاه یک پک SOIC-8 نصب شده است و برای این پروژه برد لحیم کاری برای پم DIP-8 قابلیت استفاده را دارد.

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

منبع تغذیه مورد استفاده

منبع تغذیه

منبع تغذیه دوازده ولت مدل F1650 که قبلا به عنوان یک منبع تغذیه لپ تاپ استفاده می شده است، مورد بهره گیری قرار می گیرد. این دستگاه توان ۱۲ ولت و ۳.۵ آمپر را دارا می باشد. خرید این مدل از فروشگاه های اینترنتی ساده است و در بازار به سادگی در دسترس خریداران می باشد. به یاد داشته باشید که همه منابع تغذیه F1650 لزوما برای شما کاربرد ندارند و شما باید جزئیات خروجی منبع تغذیه را که استفاده می کنید بررسی کرده و بر این اساس نسبت به خرید آن اقدام نمایید.

منبع تغذیه ۱۲ ولت برای کار با فن مورد استفاده قرار می گیرد و همچنین توان معادل با ۵ ولت را تامین می نماید. برای اجرای عرضه ۵ ولت از تنظیم کننده ۷۸L05 به همراه خازن های c1 و C2 استفاده می شود. منبع تغذیه ۵ ولت می تواند انرژی مورد نیاز در Picaxe، سنسور و هشدار دهنده پیزو الکترونیک را برق دهی کند.

فن

ما از فن Termaltake استفاده می کنید که دارای ابعاد ۲۰۰*۲۰۰mm بوده و منبع تغذیه برابر با دوازده ولت نیاز دارد. همچنین یک دیود برگشتی برای جلوگیری از اتصال کوتاه و همچنین تنظیم بار القایی مورد استفاده قرار می گیرد که بر روی ورودی M1 قرار می دهیم.

سرعت نمای فن

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

ما نیاز داریم که پورت ورودی از CM 08M2 سیگنال سرعت را بخواند ولی با فشار الکترونیک برابر با پنج ولت نه دوازده ولت. برای این امر ما از R3 دیود D2 را استفاده می کنیم تا بتواند میزان فشار بار را کاهش داده و به پنج ولت برساند. باید توجه داشته باشیم که چون دو آهنربا در این فن وجود دارد، در هر گردش دو پالس به وجود می آید.

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

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

هشدار دهنده پیزو الکترونیک در سمت چپ و MOSFET مدل IRL540 در سمت راست

سوئیچ کنترل کننده فن

این فن با استفاده از یک بیت خروجی ۰۸M2 به ورودی Q1 که یک MOSFET از نوع NRL IRL 540 بر روی آن نصب شده است کنترل می گردد. در درایور پایین به طوری که ولتاژ کاهش پیدا کرد و منبع نتوانست این میزان ولتاژ مورد نیاز را تامین نماید، باید با چند ولت افزایش بتواند کارایی دستگاه را افزایش دهد.

IRL540 از نظر کاربردی گزینه ای بسیار مطلوب به شمار می رود. زمانی که دروازه نزدیک به ۵ ولت می شود، مقاومت دستگاه برابر با ۰.۰۷۷ اهم اندازه گیری می شود و می تواند مقدار جریان بیشتری را تهیه کند. بنابراین زمانی که پین خروجی Picaxe برابر با ۵ ولت اندازه گیری می شود، فن روشن می گردد و زمانی که پین خروجی در سطح منطقی کم باشد، فن خاموش می شود.

R1 برای کاهش ولتاژ در ورودی Q1 هنگامی که درگاه خروجی Picaxe در حالت امپدانس بالا باشد، استفاده می گردد.

هشدار دهنده پیزو الکترونیک

SG1 یک هشدار دهنده ۵ ولت می باشد. جریان وارد شده در دستگاه برابر با ۵ ولت و ۲۴ میلی آمپر می باشد. از آنجا که این مقدار نزدیک به حداکثر جریان خروجی پورت Picaxe می باشد، از مقاومت با محدود کننده جریان R6 استفاده می کند. SG1 به خروجی C.0 میکروکنترلر الکترونیک Picaxe متصل می شود و به عنوان یک هشدار دهنده فعالیت می کند. حتی با R6 نیز می توانید آن را ست کنید.

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

پروژه اجرا شده بر روی برد مدار الکترونیک

نرم افزار

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

خواندن مقادیر رطوبت و دما

برای این که بتوانیم درک کاملی از نحوه استفاده از سنسور HIH 6030 داشته باشیم، توصیه می شود که با یادداشت فنی شرکت هانیول که در ادامه در رابطه با این سنسور الکترونیک اعلام شده است را شرح می دهیم که قطعا می تواند برای شما مفید واقع شود.

آدرس پیش فرضی که برای این سنسور اعمال می شود برابر با ۱۲C 0x27 می باشد و Picaxe BASIC مقدار تغییر یافته هشت بیتی چپ در قسمت 0x4E را نیاز دارد. یک باید داده 0xA0 را برای قرار دادن آن در حالت فرمان نیز انتخاب می کند. می توانیم از حالت فرمان برای تنظیم هشدارها، خواندن EEPROM و حتی پیکربندی آدرس پیش فرض ۱۲C استفاده داشته باشیم. در صورتی که می خواهید اطلاعات بیشتری در این زمینه داشته باشید می توانید توصیه نامه شرکت هانیول را مطالعه کنید. با این حال ما از حالت فرمان استفاده نمی کنیم و از نرم افزاری که خودمان آن را برنامه نویسی می کنیم استفاده می کنیم تا بتوانیم برنامه نویسی را انجام دهیم.

برای خواندن درجه حرارت و رطوبت می توانیم یک درخواست برای اندازه گیری سنسور ارسال کنیم که به این منظور ما باید به آدرس سنسور یک پیام ارسال کنیم. سنسور با تایید پاسخ ACK را ارسال می کند و دستگاه MASTER یک وضعیت ایست ایجاد می نماید. برای تکمیل این تراکنش الکترونیک باید یک بایت داده را به همراه دستور نوشتن اولیه ارسال کنیم. پس ما یک بایت داده ساختگی از 0xFF ارسال می کنیم که همواره توسط سنسور نادیده گرفته می شود.

پس از صدور درخواست اندازه گیری و انتظار برای یک مدت زمان کوتاه ۳۷ میلی ثانیه ای، می توانیم مقادیر سنسور را با بازایابی چهار بایت داده مانند تصویر زیر بخوانید.

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

مراحل خواندن داده از HIH6030

جریان داده شامل وضعیت، رطوبت و مقادیر دما می شود. مقادیر دما می توانند در وضعیت 0b00 یعنی طبیعی، 0b01 یعنی داده های قدیمی، 0b10 یعنی در حالت فرمان و 0b11 یعنی تعریف نشده باشند. برای اطلاعات بیشتر در مورد این کد ها باید یادداشت فنی شرکت تولید کننده را مطالعه کنید. در پروژه ما، مقدار مضعیت باید برابر با 0b00 یا حالت عادی باشد که یک فرآیند طبیعی به شمار می رود. هر مقدار وضعیت دریافتی دیگر نشانگر خطای حسگر یا انتقال می باشد و در صورت زنگ هشدار در یک حلقه نامحدود به وجود می آید.

میکروکنترلر الکترونیک Picaxe چهار مقدار را می خواند و مقدار رطوبت ۱۴ بیتی را در یک متغیر و مقدار درجه حرارت ۱۴ بیتی در متغیر دیگر ذخیره سازی می کند.

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

این رابطه برای درصد رطوبت نستی توسط فرمول زیر آورده شده است. مقدار رطوبت خام برابر با ۱۴ بیت می باشد.

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

سنجش میزان رطوبت

برای روابط مربوط به دما، باید از فرمول زیر استفاده کنید. همانطور که مشاهده می کنید، دما نیز یک داده ۱۴ بیتی می باشد.

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

سنجش میزان دما

پیکربندی زمان خاموش و روشن شدن فن

حالت کار کردن فن الکترونیک در نرم افزار دستگاه توسط کاربر تنظیم می شود که نماد UMODE را تنظیم می کند. که مقدار متغیر برنامه MODE را در کد Picaxe را نیز تعیین می نماید. مقادیر یک، دو و سه کاربردی است و فن با مقادیر دیگر کار نمی کند.

  • زمانی که MODE برابر با یک قرار داده می شود، فن بر اساس مقدار دمای سنسور کار می کند. زمانی که دما در تعداد حسگرها برابر یا بیشتر از مقدار تعیین شده در متغیر TemH باشد، فن روشن می شود و زمانی که دما در حسگر ها برابر یا پایین تر از مقدار تعیین شده در متغیر TemL باشد، فن خاموش می گردد.
  • زمانی که MODE برابر با دو قرار داده شود. فن بر اساس مقدار سنجی رطوبت سنسور کار می کند. زمانی که رطوبت را محاسبه کنید، برابر است با مقدار تعیین شده در متغیر HumH و فن روشن می گردد. زمانی که رطوبت پایین تر یا برابر با متغیر HumL باشد، فن خاموش می گردد.
  • زمانی که MODE برابر با ۳ تنظیم شود، از مقادیر سنسور برای دما و رطوبت برای کنترل فن استفاده می شود. یعنی هر دو متغیر رطوبت و دما برای تصمیم گیری در زمینه روشن یا خاموش شدن فن مورد استفاده قرار می گیرند. در ادامه بیشتر با این مفهوم آشنا می شویم.

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

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

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

بررسی دور فن

دور سرعت فن الکترونیک بر اساس واحدی که در برنامه نویسی مشخص می شود ۸۰۰ دور در دقیقه می باشد می توانیم با استفاده از دو فرکانس مختلف دور فن را اندازه گیری کنیم و به ۹۰۰ دور در دقیقه برسانیم.

برای اینکه بتوانیم دور فن در دقیقه را در این پروژه الکترونیک اندازه گیری کنیم از دستور count در BASIC Picaxe استفاده می کنیم. این فرمان می تواند تعداد انتقال را اندازه گیری کند و نسبت به شمارش دور موتور فن مورد استفاده قرار می گیرد. برای مثال در صورتی که ۳۰.۲ پالس در ثانیه یا ۱۸۱۲ پالس در دقیقه دریافت می کند. فن الکترونیک دارای دو آهن ربا می باشد که توسط سنسور الکترونیک هال عمل می کند. بنابراین باید تعداد پالس ها را به دو تقسیم کنیم که در نتیجه به عدد ۹۰۶ دور در دقیقه می رسیم که نزدیک به اندازه گیری های برنامه نویسی می باشد.

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

همچنین می توانیم از این ویژگی برای تشخیص اینکه فن هنگام خاوش بودن در حال چرخش می باشد استفاده کنیم. یعنی در صورتی که دور موتور فن الکترونیک بیشتر از mRPM باشد، خطای فن رخ می دهد.

فن ترمز ندارد و هنگامی که خاموش است، مقدار دور موتور در چند ثانیه به صفر کاهش پیدا می کند. همچنین هنگام روشن شدن تا رسیدن به اوج ممکن است نیاز به زمان داشته باشد. ما قبل از اینکه بخواهیم اندازه گیری را انجام دهیم باید ۵ ثانیه وقفه در کار اندازه گیری ایجاد کنیم. همچنین ۱۰ ثانیه وقفه برای دما و رطوبت مورد نیاز است.

کد

*این کد از روی سایت مرجع کپی شده است.

۰۰۱          ; AxeFan.bas-PICAXE code to accompany the article –

۰۰۲          ; “Build a temperature and/or humidity controlled fan”

۰۰۳          ;

۰۰۴          ; *** This software is offered stricly as-is with no warranties

۰۰۵          ; whatsoever. Use it at your own risk. ***

۰۰۶          init:

۰۰۷          ;——————————–

۰۰۸          ; User sets the following turn on and turn off values for temperature

۰۰۹          ; and humidity as 16 bit sensor counts in decimal

۰۱۰                         SYMBOL TemH=6852  ;۲۹ degrees (C)

۰۱۱                         SYMBOL TemL=6703  ;۲۷.۵ degrees (C)

۰۱۲                         SYMBOL HumH=13443 ;82 % RH

۰۱۳                         SYMBOL HumL=12131 ;74 % RH

۰۱۴                         SYMBOL mRPM=100             ;۱۵۱=~۹۰۰ RPM full on

۰۱۵          ; User sets the mode to 1=temperature only, 2=humidity only, 3=both

۰۱۶                         SYMBOL UMode=3

۰۱۷          ;——————————–

۰۱۸          ; The SYMBOLS below are for program variable use

۰۱۹                         SYMBOL HUM=W0 ; 16 bit humidity

۰۲۰                         SYMBOL TEMP=W1               ; ۱۶ bit temperature

۰۲۱                         SYMBOL status=B4 ; HIH status (must be 0)

۰۲۲                         SYMBOL Fstatus=B5              ; fan bit status (0=off, 1=on)

۰۲۳                         SYMBOL MODE=B6               ; fan mode

۰۲۴                         SYMBOL FMODE=B7             ; to track which (T or H) or both turned the Fan on

۰۲۵                                                                      ; FMODE bit 0=T and bit 1=H

۰۲۶                         SYMBOL RPM=W4 ; to measure Fan RPM

۰۲۷          ; Note: Fan=4=MOSFET G on C.4

۰۲۸                         SYMBOL Fan=4;

۰۲۹          ; Note: Buzzer=0=piezo on C.0

۰۳۰                         SYMBOL Buzzer=0;

۰۳۱          ; Note: RPMin=3=Fan tach on C.3

۰۳۲                         SYMBOL RPMin=3

۰۳۳          ;——————————–

۰۳۴                         let MODE=UMode

۰۳۵                         ; get fan bit status, Fstatus=1 if fan GPIO is on

۰۳۶                         Fstatus=pinc.4

۰۳۷                         gosub FanOff          ; should boot up off but switch it to be sure

۰۳۸                         let Fstatus=0

۰۳۹          ; I2C address is $27 shifted=$4e

۰۴۰                         hi2csetup I2CMASTER, $4E, i2cslow, i2cbyte

۰۴۱                         let B5=$ff                ; dummy arg

۰۴۲                         pause 30                 ; wait past command window

۰۴۳                         gosub PU_tone

۰۴۴          ;——————————–

۰۴۵          ; main loop

۰۴۶          main:       ;get temperature and humidity

۰۴۷                         hi2cout (B5)             ; wake up kick to start measurement cycle

۰۴۸                         pause 60                 ; wait for measurement cycle (nominally 36.65 ms)

۰۴۹                         hi2cin (B1)                              ; Hum hi

۰۵۰                         hi2cin (B0)                              ; Hum low

۰۵۱                         hi2cin (B3)                              ; Tem hi

۰۵۲                         hi2cin (B2)                              ; Tem lo

۰۵۳                         let status=B1 & %11000000   ; get status bits

۰۵۴                         let B1=B1 & %00111111          ; mask status

۰۵۵                         let W1=W1/4                                          ; shift temperature

۰۵۶          ; if status is not 0, we have a read error indicating either a

۰۵۷          ; transmission error or a sensor error.

۰۵۸          ; ** This results in an error trap. **

۰۵۹                         if status<>0 then

۰۶۰                                        goto TerrorS

۰۶۱                         endif

۰۶۲          ; handle fan on/off depending on the operating mode

۰۶۳          MODE1:

۰۶۴          ; mode 1 is temperature only

۰۶۵                         if MODE = 1 then

۰۶۶                                        if TEMP >=TemH then

۰۶۷                                                       gosub FanOn

۰۶۸                               endif

۰۶۹                                        if TEMP <=TemL then

۰۷۰                                                       gosub FanOff

۰۷۱                                        endif

۰۷۲                         endif

۰۷۳          MODE2:

۰۷۴          ; mode 2 is humidity only

۰۷۵                         if MODE=2 then

۰۷۶                                        if HUM >=HumH then

۰۷۷                        gosub FanOn

۰۷۸                                        endif

۰۷۹                                        if HUM<=HumL then

۰۸۰                                          gosub FanOff

۰۸۱                                        endif

۰۸۲                         endif

۰۸۳          MODE3:

۰۸۴          ; mode 3 is both humidity and temperature

۰۸۵                         if MODE=3 then

۰۸۶                                        ; If fan is off, should we turn it on?

۰۸۷                                        if Fstatus=0 then

۰۸۸                                                       if TEMP >=TemH then

۰۸۹                                                                       FMODE=FMODE|1  ;set b0

۰۹۰                                                                       gosub FanON

۰۹۱                                                       endif

۰۹۲                                                       if HUM >=Humh then

۰۹۳                                                                       FMODE=FMODE|2  ;set b1

۰۹۴                                                                       gosub FanOn

۰۹۵                                                       endif

۰۹۶                                        elseif Fstatus=1 then

۰۹۷                                        ;else

۰۹۸                                        ; if fan is on should we turn it off?

۰۹۹                                                       if TEMP <=TemL then

۱۰۰                                                                       FMODE=FMODE&2               ;reset b0

۱۰۱                                                       endif

۱۰۲                                                       if HUM <=HumL then

۱۰۳                                                                       FMODE=FMODE&1               ;reset b1

۱۰۴                                                       endif

۱۰۵                                                       if FMODE=0 then

۱۰۶                                                                       gosub FanOff

۱۰۷                                                       endif

۱۰۸                                        endif

۱۰۹                         endif

۱۱۰

۱۱۱          next1:

۱۱۲          ; get fan bit status, Fstatus=1 if fan GPIO is on

۱۱۳                         Fstatus=pinc.4

۱۱۴          ; delay for 10 seconds before looping

۱۱۵                         pause 5000;

۱۱۶          ; check fan RPM as part of the 10 sec delay

۱۱۷                         count RPMin,5000,RPM

۱۱۸                         if Fstatus=1 then

۱۱۹                                        if RPM < mRPM then

۱۲۰                                                       goto TerrorF ; fan error – RPM too low!

۱۲۱                                        endif

۱۲۲                         elseif Fstatus=0 then

۱۲۳                         ;else

۱۲۴                                        if RPM >= mRPM then

۱۲۵                                                       goto TerrorF  ; fan error – RPM too high!

۱۲۶                                        endif

۱۲۷                         endif

۱۲۸                         goto main

۱۲۹          ;——————————–

۱۳۰          ; Error Traps (infinite loops)

۱۳۱          ; sensor or transmission error – give continuous fast beeps

۱۳۲          TerrorS:

۱۳۳                         switchon Buzzer

۱۳۴                         pause 35

۱۳۵                         switchoff Buzzer

۱۳۶                         pause 100

۱۳۷                         goto TerrorS

۱۳۸          ; Fan RPM eror – give continuous slow beeps

۱۳۹          TerrorF:

۱۴۰                         switchon Buzzer

۱۴۱                         pause 75

۱۴۲                         switchoff Buzzer

۱۴۳                         pause 300

۱۴۴                         goto TerrorF

۱۴۵          ;——————————–

۱۴۶          ; subroutines

۱۴۷          FanOn:

۱۴۸                         if pinc.4=0 then switchon Fan endif

۱۴۹                         return

۱۵۰          FanOff:

۱۵۱                         if pinc.4=1 then switchoff Fan endif

۱۵۲                         return

۱۵۳          PU_tone:

۱۵۴          ; power up – three beeps

۱۵۵                         switchon Buzzer

۱۵۶                         pause 100

۱۵۷                         switchoff Buzzer

۱۵۸                         pause 100

۱۵۹                         switchon Buzzer

۱۶۰                         pause 100

۱۶۱                         switchoff Buzzer

۱۶۲                         pause 100

۱۶۳                         switchon Buzzer

۱۶۴                         pause 100

۱۶۵                         switchoff Buzzer

۱۶۶                         return

بررسی ساختار برنامه

خطوط ۸ الی ۱۶ : مقادیر تعریف شده توسط کاربر برای نمادها برای تعیین متغیرهای برنامه ای که فن را کنترل می کند.

  • TemL, TemH, HumH, HumL مقادیر کم و زیاد داده های خام برای کنترل روشن یا خاموش کردن دستگاه فن الکترونیک.
  • mRPM مقدار دور در دقیقه است که برای تعیین این که آیا فن در حال حاضر روشن است یا خیر.
  • UMODE حالت عملکرد فن الکترونیک را تعیین می کند. یک برابر با فقط دما، دو برابر با فقط رطوبت و سه برابر با هر دو.

خطوط ۱۷ الی ۳۲ : تعاریف نماد برای متغیر های مورد استفاده در برنامه.

خطوط ۳۳ الی ۴۳ : تنظیمات اولیه.

  • تنظیمات اولیه I۲C
  • تنظیمات روش شروع

خطوط ۴۴ الی ۱۲۸ : حلقه اصلی

  • خط ۴۷ الی ۶۱ : سنسور HIH3060 را تنظیم می کند و مقادیر وضعیت داده ها و رطوبت و درجه حرارت داده های خام را ذخیره سازی می کند.
  • خط ۶۲ الی ۱۱۱ : مشخص می کند که فن در چه حالتی باید روشن یا خاموش شود.
  • خط ۱۱۶ الی ۱۲۷ : بسته به وضعیت خاموش یا روشن بودن دستگاه دور گردش دستگاه را اندازه گیری می کند.

خط ۱۲۹ الی ۱۴۴ : وضعیت هشدار را مشخص می کند.

  • خطوط ۱۳۲ تا ۱۳۷ : مشخص می کند که اگر وضعیت داده ها نامشخص است هشدار می دهد.
  • خطوط ۱۳۹ الی ۱۴۴ : هشدار خطا در صورتی که دور فن با حالت خاموش یا روشن بودن ناسازگار است.

خطوط ۱۴۵ الی ۱۶۶ : برنامه های فرعی

کلام آخر

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

پاسخی را بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *