ساخت مقاومت فن با میکروکنترلر الکترونیک Picaxe 08M2

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

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

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

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

آموزش تخصصی پیشنهادی ما به شما:

آموزش تعمیرات برد

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

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

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

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

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

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

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

  • فن از نوع Thermaltake Pure 20 با قیمت 19.95 دلار
  • تنظیم کننده ولتاژ مدل 78L05 با ظرفیت 100 میلی آمپر با قیمت 0.38 دلار
  • میکروکنترلر الکترونیک مدل Picaxe 08M2 با قیمت 2.89 دلار
  • سنسور مدل hum/tem نوع HIH6030-021-001 با قیمت 8.61 دلار
  • MOSFET نوع IRL540 مدل N-CH TO-220AB با قیمت 1.87 دلار
  • هشدار دهنده پیزوالکترونیک مدل 5 ولت با قیمت 0.55 دلار
  • خازن قطبی با ظرفیت 1.0 میکرو فاراد
  • خازن غیر قطبی با ظرفیت 0.1 میکرو فاراد
  • خازن غیر قطبی با ظرفیت 0.22 میکرو فاراد
  • دیود مدل 1N4001
  • دیود مدل 1N914
  • مقاومت 10 کیلو اهم
  • مقاومت 33 کیلو اهم
  • مقاومت 4.7 کیلو اهم
  • مقاومت 2.2 کیلو اهم
  • مقاومت 2.2 کیلو اهم
  • مقاومت 120 اهم

 

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

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

سخت افزار

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

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

  • 0 برای هشدار دهنده پیزو الکترونیک
  • 1 – I2C, SCL
  • 2 – I2C, SDA
  • 3 برای خواندن سیگنال دما و رطوبت
  • 4 برای خاموش و روشن کردن فن الکترونیک به واسطه سوئیچ MOSFET
  • 5 غیر قابل استفاده (به واسطه R3 به زمین متصل شده است.

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

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

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

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

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

منبع تغذیه

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

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

فن

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

سرعت نمای فن

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

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

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

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

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

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

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

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

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

 

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

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

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

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

نرم افزار

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

بررسی دور فن

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

برای اینکه بتوانیم دور فن در دقیقه را در این پروژه الکترونیک اندازه گیری کنیم از دستور count در BASIC Picaxe استفاده می کنیم. این فرمان می تواند تعداد انتقال را اندازه گیری کند و نسبت به شمارش دور موتور فن مورد استفاده قرار می گیرد. برای مثال در صورتی که 30.2 پالس در ثانیه یا 1812 پالس در دقیقه دریافت می کند. فن الکترونیک دارای دو آهن ربا می باشد که توسط سنسور الکترونیک هال عمل می کند. بنابراین باید تعداد پالس ها را به دو تقسیم کنیم که در نتیجه به عدد 906 دور در دقیقه می رسیم که نزدیک به اندازه گیری های برنامه نویسی می باشد.

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

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

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

کد

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

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

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

003          ;

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

005          ; whatsoever. Use it at your own risk. ***

006          init:

007          ;——————————–

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

009          ; and humidity as 16 bit sensor counts in decimal

010                         SYMBOL TemH=6852  ;29 degrees (C)

011                         SYMBOL TemL=6703  ;27.5 degrees (C)

012                         SYMBOL HumH=13443 ;82 % RH

013                         SYMBOL HumL=12131 ;74 % RH

014                         SYMBOL mRPM=100             ;151=~900 RPM full on

015          ; User sets the mode to 1=temperature only, 2=humidity only, 3=both

016                         SYMBOL UMode=3

017          ;——————————–

018          ; The SYMBOLS below are for program variable use

019                         SYMBOL HUM=W0 ; 16 bit humidity

020                         SYMBOL TEMP=W1               ; 16 bit temperature

021                         SYMBOL status=B4 ; HIH status (must be 0)

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

023                         SYMBOL MODE=B6               ; fan mode

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

025                                                                      ; FMODE bit 0=T and bit 1=H

026                         SYMBOL RPM=W4 ; to measure Fan RPM

027          ; Note: Fan=4=MOSFET G on C.4

028                         SYMBOL Fan=4;

029          ; Note: Buzzer=0=piezo on C.0

030                         SYMBOL Buzzer=0;

031          ; Note: RPMin=3=Fan tach on C.3

032                         SYMBOL RPMin=3

033          ;——————————–

034                         let MODE=UMode

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

036                         Fstatus=pinc.4

037                         gosub FanOff          ; should boot up off but switch it to be sure

038                         let Fstatus=0

039          ; I2C address is $27 shifted=$4e

040                         hi2csetup I2CMASTER, $4E, i2cslow, i2cbyte

041                         let B5=$ff                ; dummy arg

042                         pause 30                 ; wait past command window

043                         gosub PU_tone

044          ;——————————–

045          ; main loop

046          main:       ;get temperature and humidity

047                         hi2cout (B5)             ; wake up kick to start measurement cycle

048                         pause 60                 ; wait for measurement cycle (nominally 36.65 ms)

049                         hi2cin (B1)                              ; Hum hi

050                         hi2cin (B0)                              ; Hum low

051                         hi2cin (B3)                              ; Tem hi

052                         hi2cin (B2)                              ; Tem lo

053                         let status=B1 & %11000000   ; get status bits

054                         let B1=B1 & %00111111          ; mask status

055                         let W1=W1/4                                          ; shift temperature

056          ; if status is not 0, we have a read error indicating either a

057          ; transmission error or a sensor error.

058          ; ** This results in an error trap. **

059                         if status<>0 then

060                                        goto TerrorS

061                         endif

062          ; handle fan on/off depending on the operating mode

063          MODE1:

064          ; mode 1 is temperature only

065                         if MODE = 1 then

066                                        if TEMP >=TemH then

067                                                       gosub FanOn

068                               endif

069                                        if TEMP <=TemL then

070                                                       gosub FanOff

071                                        endif

072                         endif

073          MODE2:

074          ; mode 2 is humidity only

075                         if MODE=2 then

076                                        if HUM >=HumH then

077                        gosub FanOn

078                                        endif

079                                        if HUM<=HumL then

080                                          gosub FanOff

081                                        endif

082                         endif

083          MODE3:

084          ; mode 3 is both humidity and temperature

085                         if MODE=3 then

086                                        ; If fan is off, should we turn it on?

087                                        if Fstatus=0 then

088                                                       if TEMP >=TemH then

089                                                                       FMODE=FMODE|1  ;set b0

090                                                                       gosub FanON

091                                                       endif

092                                                       if HUM >=Humh then

093                                                                       FMODE=FMODE|2  ;set b1

094                                                                       gosub FanOn

095                                                       endif

096                                        elseif Fstatus=1 then

097                                        ;else

098                                        ; if fan is on should we turn it off?

099                                                       if TEMP <=TemL then

100                                                                       FMODE=FMODE&2               ;reset b0

101                                                       endif

102                                                       if HUM <=HumL then

103                                                                       FMODE=FMODE&1               ;reset b1

104                                                       endif

105                                                       if FMODE=0 then

106                                                                       gosub FanOff

107                                                       endif

108                                        endif

109                         endif

110

111          next1:

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

113                         Fstatus=pinc.4

114          ; delay for 10 seconds before looping

115                         pause 5000;

116          ; check fan RPM as part of the 10 sec delay

117                         count RPMin,5000,RPM

118                         if Fstatus=1 then

119                                        if RPM < mRPM then

120                                                       goto TerrorF ; fan error – RPM too low!

121                                        endif

122                         elseif Fstatus=0 then

123                         ;else

124                                        if RPM >= mRPM then

125                                                       goto TerrorF  ; fan error – RPM too high!

126                                        endif

127                         endif

128                         goto main

129          ;——————————–

130          ; Error Traps (infinite loops)

131          ; sensor or transmission error – give continuous fast beeps

132          TerrorS:

133                         switchon Buzzer

134                         pause 35

135                         switchoff Buzzer

136                         pause 100

137                         goto TerrorS

138          ; Fan RPM eror – give continuous slow beeps

139          TerrorF:

140                         switchon Buzzer

141                         pause 75

142                         switchoff Buzzer

143                         pause 300

144                         goto TerrorF

145          ;——————————–

146          ; subroutines

147          FanOn:

148                         if pinc.4=0 then switchon Fan endif

149                         return

150          FanOff:

151                         if pinc.4=1 then switchoff Fan endif

152                         return

153          PU_tone:

154          ; power up – three beeps

155                         switchon Buzzer

156                         pause 100

157                         switchoff Buzzer

158                         pause 100

159                         switchon Buzzer

160                         pause 100

161                         switchoff Buzzer

162                         pause 100

163                         switchon Buzzer

164                         pause 100

165                         switchoff Buzzer

166                         return

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

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

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

خطوط 17 الی 32 : تعاریف نماد برای متغیر های مورد استفاده در برنامه.

خطوط 33 الی 43 : تنظیمات اولیه.

  • تنظیمات اولیه I2C
  • تنظیمات روش شروع

خطوط 44 الی 128 : حلقه اصلی

  • خط 47 الی 61 : سنسور HIH3060 را تنظیم می کند و مقادیر وضعیت داده ها و رطوبت و درجه حرارت داده های خام را ذخیره سازی می کند.
  • خط 62 الی 111 : مشخص می کند که فن در چه حالتی باید روشن یا خاموش شود.
  • خط 116 الی 127 : بسته به وضعیت خاموش یا روشن بودن دستگاه دور گردش دستگاه را اندازه گیری می کند.

خط 129 الی 144 : وضعیت هشدار را مشخص می کند.

  • خطوط 132 تا 137 : مشخص می کند که اگر وضعیت داده ها نامشخص است هشدار می دهد.
  • خطوط 139 الی 144 : هشدار خطا در صورتی که دور فن با حالت خاموش یا روشن بودن ناسازگار است.

خطوط 145 الی 166 : برنامه های فرعی

کلام آخر

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

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

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