لینک پرداخت و دانلود *پایین مطلب*
فرمت فایل:Word (قابل ویرایش و آماده پرینت)
تعداد صفحه83
بخشی از فهرست مطالب
فهرست مطالب
2-1) آشنایی با برنامه CodeVision. 7
3-3)آشنایی با سنسور های گازی سری MQ.. 15
4-3) کاربردهای عمومی ماژول RF12:.. 23
4-4-1) فیلتر کردن داده ها و بازیابی کلاک: 24
4-4-3) اسیلاتور کریستالی Crystal oscillator. 25
4-4-4) کاشف ولتاژسطح پایین باطری Low Battery Voltage Detector. 25
4-4-5) تایمر بیدار ساز Wake-Up Timer. 26
4-4-6) راه اندازی رخدادها Event Handling. 26
4-4-7) واسط کنترلی Interface and Controller. 26
4-5) شرح وظا یف پایه های ماژول.. 27
4-6) مشخصه های کاری DC ماژولRF. 28
5-1)تفاوت میکرو کنترولر و میکرو پروسسور 30
5-2) ساختار داخلی میکروکنترلر.. 30
5-3) رجیستر های همه منظوره(General Purpose Register) 31
5-6)انواع حافظه در میکرو های AVR. 32
5-8-1) AVR Timer / Counter:.. 33
5-8-3) مبدل آنالوگ به دیجیتال ADC(A to D): 35
6-1) المانهای الکترونیکی فرستنده:.. 40
6-3) بررسی نرم افزار و کد های سیستم فرستنده. 44
6-4)توابع مربوط به ماژول بیسیم:.. 46
6-6) بررسی نرم افزار و کد های سیستم گیرنده: 49
این پروژه در دو بخش کلی مدار فرستنده و مدار گیرنده طراحی شده است . در بخش فرستنده مدار ما شامل سنسورهای نور (Photocell) و دود (MQ2) و همچنین دو Stepper Motor و یک LCD است که در ادامه مقاله به تفصیل به آنها اشاره خواهیم کرد و توضیحات مربوطه را ارائه خواهیم داد . اطلاعات کنترلی از طریق ماژول بیسیم با فرکانس MHz915 برای گیرنده ارسال میشودو پس از دریافت و اعمال دستورات لازم ومحاسبات نتیجه روی نمایشگر نشان داده میشود.
ولی بطور کلی اگر بخواهیم به عملکرد و وظیفه این پروژه بطور خلاصه اشاره کنیم باید از اینجا شروع کنیم که در ابتدا زمانی که مدار را روشن می کنیم سنسورهایی که از قبل کالیبره شده اند شروع به کار می کنند به این صورت که برای هر سنسور یک رنجی در نظر گرفته شده که بر اساس آن مقدار ، موتورها شروع به چرخش می کنند و همان میزان در LCD موجود در مدار گیرنده نمایش داده می شود.
مقدمه:هر سیستم مبتنی بر پردازنده برای ارتباط با دنیای خارج ،به انتقال داده احتیاج دارد.انتقال داده به دو روش سریال و موازی صورت می گیرد.
در روش موازی ،در هر واحد زمانی یک بیت ،منتقل می شود .و در روش سریال ،در هر واحد زمانی 8 بیت اطلاعات ،منتقل می شود.تبادل داده سریال در اغلب میکروکنترولر ها گنجانده شده است.نحوه انتقال سریال به صورت دوطرفه است .بدین معنی که،در عین حال که یک طرف داده ی خودش را می فرستد ؛طرف دیگر هم بتواند داده خودش را ارسال کند بدون اینکه تداخلی پیش بیاید.
برنامه هایی که برای میکرو کنترولر می نویسند را باید پس از کامپایل کردن ، توسط یک پرو گرامر در میکرو کنترولر بارگذاری می کنند.حافظه فلش میکرو کنترولر های AVR ،امکان برنامه ریزی تراشه و تغییر کد را در چند ثانیه فراهم می آورد.علاوه بر این ،تراشه های AVR،دارای قابلیت "برنامه ریزی درون مدار" هستند .بدین معنا که می توان بدون خارج کردن میکرو کنترولر از مدار آن را به صورت سریال برنامه ریزی نمود.
مدار پروگرامر از طریق پایه های SCK،MOSI،MISO با میکرو کنترولر ارتباط برقرار می کند.و کد hex برنامه را در آن بار گذاری می کند ویا از آن می خواند.
فصل اول
کلیات
در این فصل ضمن بیان هدف و انگیزه از این پژوهش پیشینه کار و تحقیق و روشی که برای تحقیق و در نهایت پیادهسازی خانه هوشمند به کار برده شده، به طور مختصر توضیح داده میشود.
1-1)پیشینه کار و تحقیق:
از حیث منابع علمی برای تحقیق در این زمینه، به دلیل اینکه میکروکنترلر ها در اثر امروز بسیار رایج شده و کاربرد وسیعی دارند، منابع علمی متعدد اعم از منابع مکتوب و اینترنتی در رابطه با آن ها در دسترس می باشد. به علاوه کاربرد وسیع میکروکنترلرها موجب شده پروژه های علمی بسیاری در رابطه با آن ها موجود باشد که امکان استفاده از تجربیات آن ها نیز فراهم شد.
از جمله این پروژه ها دماسنج دیجیتال، برنامه ساعت، تابلو روان توسط صفحه نمایش کریستال مایع، فرکانسمتر دیجیتال و ... می توان اشاره کرد.
بنابراین با مطالعه و بررسی این منابع اصول کار مشخص شد.
1-2)روش کار و تحقیق:
با بررسی کتب جامع در رابطه با موضوع و در کنار آن ها، رجوع به سایت های تخصص الکترونیک و کامپیوتر شناخت کافی از موضوع حاصل شد.
با این شناخت از میان طیف وسیع میکروکنترلر های موجود در بازار، میکروکنترلری منطبق با نیازهای پروژه برگزیده و به تفصیل به مطالعه و بررسی ساختار و معماری آن پرداخته شد.
برای انجام این پروژه فرآیند چند مرحله ای باید صورت گیرد که نیازمند مهیا کردن امکانات نرمافزاری و سختافزاری قبل از انجام آن است.
امکانات نرم افزاری شامل نرم افزار کامپایلر، نرم افزار شبیهساز و نرم افزار برنامه ریز میباشد وامکانات سختافزاری شامل برنامه ریز و محیط پیاده سازی سختافزاری پروگرامر و محیط پیاده سازی سخت افزاری پروژه است. بنابراین قبل از پیاده سازی کامل پروژه باید این فرآیند آماده شده و از عملکرد صحیح آن اطمینان حاصل شود. چرا که در هر بخش از روند اجرای این فرآیند ممکن است اختلالاتی رخ دهد که باعث به نتیجه نرسیدن پیاده سازی نهایی پروژه شود.
( اختلالاتی در تنظیمات کامپایلر که باعث ایجاد فایل باینری نامعتبر می شود، اختلالاتی در برنامه ریز و نرم افزار درایور آن که باعث عدم برنامه ریزی صحیح میکرو و در نتیجه عدم کارکرد صحیح آن می شود و ... ) بنابراین ابتدا باید نگارشی معتبر از کامپایلر مورد نظر (CodeVision) را تهیه نموده و روی کامپیوتر شخصی نصب شود. سپس سعی بر این است که برنامه ای ساده برای میکرو مورد نظر نوشته، کامپایل شود. چنان چه با خطایی و هشداری مواجه نشد به مرحله بعد رفته در این مرحله سخت افزار مورد نظر را با استفاده از یک برنامه شبیه ساز مانند Proteus شبیهسازی نموده، سپس کد باینری حاصل از کامپایل برنامه نوشته شده را به درون میکرو موجود در محیط شبیه سازی بارگذاری کرده و از عملکرد صحیح مدار در محیط شبیه سازی اطمینان
حاصل شود. در مرحله بعد نوبت به برنامه ریزی کردن میکروکنترلر واقعیمیرسد.با استفاده از نرم افزار برنامه ریز فایل باینری تولید شده در کامپایل برنامه را بارگذاری کرده، به درون حافظه فلش میکروکنترلر نوشته و سپس میکروکنترلر را در مدار قرار داده، چنان که از صحت عملکرد آن اطمینان حاصل شد و این روند با موفقیت انجام شد، فرآیند برای انجام پروژه اصلی آماده است و در غیر این صورت باید آن را مرحله به مرحله عیب یابی کرده تا نقایض آن برطرف شود.
فصل دوم
آشنایی با code vision
2-1) آشنایی با برنامه CodeVision
CodeVision یک IDE برای میکرو کنترلر AVR است. به وسیله این برنامه می توان از زبان C برای برنامه ریز میکرو استفاده کرد. برنامه را اجرا کنید. یک پروه TestAVR بسازید.در قسمت Setting->Programmer نوع Programmer را انتخاب کنید. (Kanda Systems STK200+/300) برای تنظیمات اولیه میکرو از Code wizard استفاده می کنیم. به وسیله این wizard کدهای C لازم برای تنظیماتی از قبیل Crystal Clock, Timer Setting, Port Setting, … تولید و به کد برنامه شما اضافه می شود. پس از هر تغییر در این تنظیمات باید آن را به وسیله منو File->Generate, Save and Exit ذخیره کرد.
پس از تنظیمات اولیه کد برنامه را در Code Vision به زبان C می نویسیم. (می توان از توابع کتابخانه ای Code Visionنیز در این کار استفاده کرد.) سپس دکمه Make the project را برای تولید کد اسمبلی برنامه شما برای میکرو کنترلر AVR بزنید. حالا می توانید میکرو کنترلر خود را برنام ریزی کنید. برای این کار از Chip Programmer استفاده می کنیم.
تنظیمات اولیه میکرو:
به وسیله Tools->CodeWizardAVR منو تنظیمات اولیه را ظاهر کنید. حالا این تنظیمات را انجام دهید:
Chip Tab:
Chip: Atmega16L
Clock: 1.0000
Prot Tab:
Port B tab:
Bit 0: out
Bit 1: out
ما با این تنظیمات نوع میکرو کنترلر و همچنین فرکانس 1MHz را برای آن انتخاب کردیم.(ما به میکرو یک کریستال وصل کردیم تا فرکانس 8MHz (یا MHz7.3728) تولید کند. ولی یک Oscillator نیز در داخل AVR قرار دارد که فرکانس آن 1MHz است. ما در این قسمت از این Oscillator استفاده می کنیم).در ضمن بیت 0 و 1 پورت B را به صورت خروجی تنظیم کردیم تا سیگنال روشن و خاموش شدن را در آن تولید کنیم. حال به وسیله منو File->Generate, Save and Exit تنظیمات خود را ذخیره کنید.
برنامه میکرو کنترلر:
پس از مراحل بالا باید یک فایل که در آن قسمت هایی به زبان C نوشته شده است به همراه توضیحاتی در مورد آنها به صورت شکل زیر تولید شده باشد.
حال این خط را به برنامه اضافه کنید:
Line 26:
#include <delay.h>
و سپس برنامه خود را در جایی که //Place your code here بنویسید:
void main(void)
{
While(1)
{
// Place your code here
delay_ms(100);
- 0 = 1;
- 1 = ~PORTB.0;
delay_ms(100);
- 0 = 0;
- 1 = ~PORTB.0;
};
}
در این برنامه در هر 100 میلی ثانیه خروجی را در بیت
صفر و یک پورت B تغییر می دهیم.
برنامه ریزی میکرو کنترلر:
ابتدا یک Programmer را به پورت LPT کامپیوتر متصل کرده و کابل Flat آن را به کانکتور JP4 روی مدار خود وصل کنید. به وسیله منو Tools->Chip Programmer منو تنظیمات Programmer میکرو کنترلر را ظاهر کنید. VCC و GND را به مدار وصل کنید و کلید را روشن کنید.
ابتدا به وسیله منو Read->Chip Signature اتصالات VCC و GND به میکرو و اتصالات Programmer به بورد را چک می کنیم. پس از اجرا دستور بالا باید پیغام زیر ظاهر شود:
در غیر این صورت اتصالات خود را چک کنید.
حالا می خواهیم برنامه خود را به میکرو وارد کنیم. برای این کار دستورات زیر را به ترتیب اجرا می کینم:
Program->Erase Chip
Program->Blank Check (optional)
Program->Flash
حالا باید دیودها روشن و خاموش شوند.
اگر در Chip Programmer در تب Fuse Bit(s):، BootSZ0=0 و BootSZ1=0 را تیک بزنیم و اجرا Program->Fuse(s) Bit ، میکرو از کلاک Crystal استفاده می کند. بنابر این باید تنظیمات میکرو را با توجه به کریستال تغییر دهید.
اخطار: حتما در تب Fuse Bit(s):، BootSZ0=0 و BootSZ1=0 را تیک بزنید در غیر این صورت میکرو شما در حالتی قرار می گیرد که دیگر نمی توانید آن را به وسیله CodeVision برنامه ریزی کنید.
فصل سوم
المان های مدار
3-1) LCDکاراکتری :
دارای یک کنترلر است که با فرستادن اطلاعات به آن این اطلاعات را در صفحه ای که عموما به چند سطر و ستون تقسیم شده نمایش می دهد.
LCD ها از طریق مقدار اطلاعاتی که میتوانند در صفحه نمایش بدهند انتخاب و خریداری می شوند. انواع معمول آن عبارتند از 16 ، 20 ، 32 و 40 کاراکتر در هر خط در 1 یا 2 یا 4 سطر. مثلا 2 در 16 یعنی صفحه دارای دو خط و هر خط 16 کاراکتر است. در تصویر زیر یک نمونه 2 در 16 مشاهده می شود:
LCDها دارای 16 پایه هستند که 8 خط آن مربوط به فرستادن یا خواندن داده ها یا دستورالعمل ها می باشد. پایه های دیگر خطوط کنترل و ولتاژهای تغذیه می باشند.
تمام lcd های کاراکتری دارای 16 پایه می باشد که در زیر اورده شده است :
پایه شماره 1 : VSS ، این پایه ،پایه گراند lcd است و باید به زمین مدار وصل شود.
پایه شماره 2 : VDDاین پایه پایه VCC، LCD است که باید به 5ولت وصل شود.
پایه شماره 3 : VEE این پایه روشنایی پیکسل های LCD را تعیین میکند واتصال ان طبق مدار روبرو است.
پایه شماره 4 : RS در lcd دو رجیستر به نام دستورالعمل وداده وجود دارد اگر rs =0 باشد lcd برای گرفتن دستورالعمل اماده می شود در غیر این صورت برای داده .مثلا دستور cls یک دستور العمل است و qwer که باید روی lcd نوشته شود یک داده است .
پایه شماره 5 :RW این پایه دو وضعیت دارد ، rw =1 برای خواندن از lcd و rw=0 برای نوشتن در lcd.
پایه شماره 6 : E با این پایه می توان LCD را انتخاب کرد.
پایه شماره 7 : DB0 این پایه برای گرفتن دیتا (اطلاعات) از LCD میباشد (پایه دیتا ی صفر(
پایه شماره 8 : DB1 این پایه برای گرفتن دیتا (اطلاعات) از LCD میباشد (پایه دیتا ی یک(
پایه شماره 9 : DB2 این پایه برای گرفتن دیتا (اطلاعات) از LCD میباشد (پایه دیتا ی دو(
پایه شماره 10 : DB3 این پایه برای گرفتن دیتا (اطلاعات) از LCD میباشد (پایه دیتا ی سه(
پایه شماره 11 : DB4 این پایه برای ارسال دیتا (اطلاعات) به LCD میباشد (پایه دیتا ی چهار(. پایه شماره 12 : DB5 این پایه برای ارسال دیتا (اطلاعات) به LCD میباشد (پایه دیتا ی پنج(
پایه شماره 13 : DB6 این پایه برای ارسال دیتا (اطلاعات) به LCD میباشد (پایه دیتای شش(
پایه شماره 14 : DB7 این پایه برای ارسال دیتا (اطلاعات) به LCD میباشد (پایه دیتای هفت(
پایه شماره 15 : این پایه و پایه شماره 16 تغذیه LED پشت LCD می باشد که به 5ولت متصل میشود.
پایه شماره 16 : این پایه و پایه شماره 15 تغذیه LED پشت LCD می باشد که به 5ولت متصل میشود.
3-2)سنسور MQ2 :
3-3)آشنایی با سنسور های گازی سری MQ
از سری سنسور های تشخیص انواع گاز ، سنسور های سری MQ میباشد که کاربرد فراوانی دارند و با قیمت های متفاوتی و در مدل های مختلفی دربازار ایران یافت میشود.
از نظر کارایی ونحوه استفاده نیز بسیار ساده میباشد اما تنها مشکل موجود در دیتا شیت های آن میباشد که براحتی یافت نمیشود.
همانطور که درشکل بالا میبنید یک هیتر برای گرم شدن سنسور هست که پایه vh مربوط به ان میباشد و باید به آن ولتاژ ۵ ولت وصل نمائید تا هیتر شما روشن شود دراین صورت سنسور شما کمی گرم میشود که جای نگرانی نیست .
اما پایه دیگر vc نام دارد که به ان ولتاژ ۵ الی ۲۴ ولت وصل میشود البته در سنسور های مختلف این ولتاژ تغییر میکند که با افزایش گاز میزان هدایت در سنسور افزایش یافته وولتاژ خروجی در پایه vrl تغییر میکند و با افزایش گاز ولتاژ خروجی نیز افزایش پیدا میکند که با وصل ان به adc میکرو میتوان ولتاژ را اندازه گرفت و در هنگام افزایش گاز و افزایش ولتاژ خروجی ، دستگاه شما پردازش مورد نظر را انجام دهد این مطلب توسط مدیر انجمن سایت جهت تکمیل مطلب ارسال شده است.
همان طور که میدانید این سنسورها شمیایی هستند و برای فعال شدن آنها از یک هیتر داخلی استفاده شده پس توجه داشته باشید که هرچه این سنسور مدت زمان بیشتری روشن باشد دقت و حساسیت آن بیشتر هست . در ابتدای اتصال این سنسورها به برق ولتاژ خروجی از ۵ ولت شروع به کم شدن می کنه و نهایتا بهد از یک تایم حدود یک ساعت به یک سطح ولتاژ نسبتا ثابت می رسید حدود ۱.۲ تا ۲.۴ ولت که برای هرکدوم از سنسورها حتی با یک شماره هم این مقدار متفاوت هست این کم شدن ولتاژ ادامه داره و بعد از ۲۴ ساعت روشن بودن مداوم تقریبا تغییری نداریم.
فقط در بعضی موارد نادر باید توجه داشت که در صورت استفاده از adc باید از این ولتاژ صرف نظر شود و در برنامه بعد از یک ساعت شروع به اندازه گیری کند و مقدار به دست اومده توسط adc با مقدار قبلی مقایسه و در صورت کمتر بودن مقدار کمتر به عنوان مبنا انتخاب شود .
عمر این سنسورها حدود ۵ سال است در صورت قرار نگرفتن در معرض گرد و خاک و رطوبت . دما و رطوبت در میزان اندازه گیری اثر دارند همچنین میزان ریپل تغذیه .
من با تعداد زیادی از این سنسورها کار کردم و به این تجربه رسیدم که هنگام اتصال سنسور برای اولین بار بوی سوختن می دهد که ناشی از حرارت هیتر است و چیز مهمی نیست
در این قسمت به معرفی سنسور ها می پردازیم
۱- سنسور MQ-2 حساس به کلیه گازهای مشتعل و دود
۲- سنسور MQ-3 حساس به گازهای طبیعی- متان
۳-سنسور MQ-4 حساس به گازهای طبیعی- متان
۴-سنسور MQ-5 حساس به گازهای LPG - گازهای طبیعی - گازهای ایجاد شده از سوختن
۵- سنسور MQ-6 حساس به گازهای LPG - Propane - iso-butane
6- سنسور MQ-7 حساس منواکسید کربن
۷- سنسور MQ-8 حساس به هیدروژن و گازهای ایجاد شده از سوختن
۸- سنسور MQ-9 حساس به کلیه گازهای مشتعل و CO
9- سنسور MQ214 حساس متان
۱۰- سنسور MQ216 حساس به کلیه گازها و گازهای ایجاد شده از سوختن
۱۱- سنسور MQ306A حساس به گازهای LPG - گازهای طبیعی - گازهای ایجاد شده از سوختن
۱۲- سنسور MQ307A حساس منواکسید کربن
۱۳- سنسور MQ309A حساس به کلیه گازهای مشتعل و CO
3-4) انواع سنسور های گاز
روش های متفاوتی برای ساخت سنسور های گاز مورد استفاده قرار می گیرد و به همین صورت می توان حسگر ها را بر اساس ساختار دسته بندی نمود. مهمترین انواع حسگر در این نوع دسته بندی عبارت است از:
- حسگر های مبتنی بر نیمه هادی اکسید فلزی (MOS)1
- حسگر های مبتنی بر Schottky Diode
- حسگر های مبتنی بر امواج صوتی بدنه (BAW)2 یا حسگر های ریز کوارتز (QMB)3
- حسگرهای مبتنی بر امواج صوتی سطحی (SAW)4
- حسگر های مبتنی بر ترانزیستورهای اثر میدانی (MOSFET)5
- حسگر های مبتنی بر پلیمر های هادی ارگانیک (COP)6
a) حسگرهای مبتنی بر نیمه هادی اکسید فلزی b) حسگرهای مبتنی بر امواج صوتی سطحی c) حسگرهای مبتنی بر امواج صوتی سطحی d) حسگر های مبتنی بر ترانزیستورهای اثر میدانی
این حسگر ها بر اساس کارکردشان به دو دسته ی آشکارساز وجود گاز1 و تشخیص دهنده ی نوع گاز تقسیم می شوند. دسته ی اول صرفاً وجود گاز را احساس می کنند و در مورد ماهیت آن اطلاعی نمی دهند. دسته دوم علاوه بر احساس گاز، نوع و تراکم آن را نیز مشخص می کنند. در حال حاضر، کامل ترین دستگاه های تشخیص گاز کارماتوگراف ها هستند که دستگاه هایی حجیم و گران قیمت اند و بکارگیری آن ها به کاربرانی مجرب و کار آزموده نیاز دارند. زمان تشخیص گاز توسط این سیستم ها طولانی بوده و در حدود چند دقیقه می باشد. اساساً کلیه حسگر های گاز موجود به جز حسگر های حالت جامد پیچیده، گران، حجیم و سنگین می باشند و بکارگیری آنها در بسیاری از موارد مقرون به صرفه نیست.
مقاله در مورد خانه هوشمند