انجام پروژه متلب: طراحی و ساخت یک کنترل دمای دیجیتالی تابلوهای برق
انجام پروژه متلب طراحی و ساخت یک کنترل دمای دیجیتالی تابلوهای برق :انجام پروژه متلب
پیشگفتار
انجام پروژه متلب با ورود میکرو کنترلر ها به بازار الکترونیک و استفاده از آنها کار را بر روی بسیاری از قسمتهای الکترونیک آسان تر نمود و به خصوص در صنعت با در دست گرفتن کنترل قسمتهای مختلف یک کارگاه یا کارخانه صنعتی منجر به تولید بیشتر با کیفیت بهتر شد و افق وسیعی از کار را بر روی سازندگان قطعات الکترونیک گشود. نکته ای که در صنعت بسیار مهم به نظر می رسد اندازه گیری پارامتر هایی مثل دما ، فشار و میزان جابه جایی اجسام و … می باشد که کار ها توسط سنسور های مختلف انجام می شود اما روز به روز بر تعداد سنسورها افزوده شده و سنسورهای بهتر با قابلیت های بیشتری به بازار عرضه می گردد و همچنین دستگاه هایی که توسط میکرو کنترلر ها ساخته می شود داری انواع مختلفی بوده و کارهای متفاوتی انجام می دهند یکی ازاین دستگاه ها دستگاه کنترل دمای تابلو و اتاقک ها می باشند که توسط میکروکنترلر ها و حتی بردهای الکترونیکی نیز ساخته می شوند.
پروژه مورد توجه و حائز اهمیت در این پایان نامه در خصوص کنترل دما تابلو های برق می باشد که می توان برای ماشینهای جوجه کشی ، محل کار ، تابلو های برق و غیره میتوان استفاده کرد.
در این پایان نامه ابتدا توضیح مختصری راجع به میکرو کنترلر های AVR آورده شده در بخش های بعد یک توضیح راجع به برنامه bascom ،انواع سنسورهای دما می خوانید و در پایان نیز شکل مدار و برنامه نوشته شده در میکرو آورده شده است.
فصل اول : مقدمه ای بر AVR
انجام پروژه متلب در این فصل هدف بر این است که یک توضیح کلی در مورد AVR کفته شود
یکی از جدید ترین میکروکنترلر های قوی عرضه شده به بازار الکترونیک متغلق به شرکت ATMEL به نام میکروکنترلرهای AVR می باشد این میکرو کنترلر هشت بیتی به علت وجود کامپایلر های قوی به زبان سطح بالا مورد استقبال فراوانی قرار گرفت یادگیری و استفاده از این میکروکنترلر بسیار ساده می باشد و دامنه استفاده آن بسیار وسیع می باشد
از جمله مزیت های آن حافظه بالاتر نسبت به میکروکنترلر های قبلی و وجود دستورات وسیع میباشد و همچنین بر خلاف زبان های سطح بالا که کدهای بیشتری را نسبت به زبان اسمبلی تولید میکردند تولید کدهارا به مینیمم رسانده و با ایجاد تحولی عظیم در معماری میکروکنترلر ها عملیات را تنها در یک سیکل ماشین انجام می دهد و از ۳۲ رجیستر همه منظوره استفاده می کند که این خود باعث شده که ۴ تا ۱۲ بار سریعتر از میکروکنترل های قبلی باشد و دارای حافظه کم مصرف غیرفرار نیز می باشند که و با به کار بردن تکنولوژی شرکت ATMEL حافظه های FLASH وEEPROM در داخل مدار قابل برنامه ریزی هستند
اکثر میکرو کنترلر ها کلاک اسیلاتور به سیستم را را با نسبت ۴/۱ یا ۱۲/۱ تقسیم می کنند که خود باعث کاهش سرعت می شود امادر AVR کلاک اسیلاتور با کلاک داخلی سیستم یکی می شود و هیچ تقسیم کننده ای در داخل AVR وجود ندارد و بنابراین اختلاف فاز کلاک وجود ندارد.
تا قبل از به وجود آمدن AVR ها بیشترین توجه به زبان اسمبلی می شد و توجه خیلی کمی در مورد برنامه نویسی میکروکنترل ها به زبان های سطح بالا می شد.
هدف ATMEL طراحی و معماری میکروکنترل هایی بود که هم برای زبان اسمبلی و هم زبان های سطح بالا مفید باشند به طور مثال در برنامه نویسی C و BASIC می توان یک متغیر محلی به جای متغیر سراسری در داخل زیر برنامه تعریف کرد که در این صورت در زمان اجرای یک زیر برنامه مکانی از حافظه RAM برای متغییر اشغال می شود در صورتی که اگر متغییری به عنوان متغییر سراسری تعریف شود در تمام وقت مکانی از حافظه FLASH را اشغال می کند.
همچنین برای دسترسی سریعتر به منغییرهای محلی و کاهش کد نیاز به افزایش رجیسترهای همه منظوره است AVR ها دارای ۳۲ رجیستر هستند که مستقیم به LOGIC ALU منصل شده اند و تنها در یککلاک سیکل به این واحد دسترسی پیدا می کنند. سه جفت از این از این رجیستر ها می توانند به عنوان رجیستر ۱۶ بیتی استفاده شوند.
میکرو کنترلر های AVR به سه نوع AT90S , TINY AVR و MEGAAVR تقسیم بندی شده اند .
۱-۱میکرو کنترل های TINY AVR
به طورکلی و نمونه می توان به چند تا از میکروکنترلر های معروف AVR اشاره کرد که عبارتند از ATTINY 10 , 11 , 12 , 15L , 26 , 26L , 28L , 28
شکل ۱
برخی از خصوصیات ATTINY 10,11,12
- کارآیی بالا و توان مصرفی کم
- دارای ۹۰ دستورالعمل با کارآیی بالا که اکثرا تنها در ی
- ک سیکل اجرا می شوند
- ۸*۳۲ رجیستر کاربردی
- سرعتی تا ۸ مگاهرتز
- یک کیلوبایت حافظه FLASH داخلی قابل برنامه ریزی و پایداری آن انجام پروژه متلب تا ۱۰۰۰ بار خواندن و نوشتن
- ۶۴ بایت حافظه EEPROM داخلی قابل برنامه ریزی و پایداری آن تا ۱۰۰۰۰۰ بار نوشتن و پاک کردن
- قفل برنامه FLASH و حافظه EEPROM
- یک تایمر-کانتر ۸ بیتی
- یک مقایسه گر آنالوگ داخلی
- وقفه در اثر تغییر وضعیت پایه
- منابع وقفه داخلی و خارجی
- ارتباط سریال SPI در ATTINY 12
- قابل انتخاب بودن اسیلاتور داخلی برای ATTINY 12
- در حالت فعال ۲٫۲ میلی آمپر و در بیکاری ۵/ میلی آمپر
- ولتاژ عملیاتی ۵ تا ۵٫۵ ولت برای ATTINY 12
- فرکانس کاری تا ۸ مگاهرتز
انجام پروژه متلب این سری از AVR ها همگی ۸ پایه بوده و کمترین تعداد پایه را در AVR ها دارا می باشند.
اما فیوز بیت های این خانواده که در ATTINY 11 برابر ۵ فیوز بیت و در ATTINY 12 دارای ۸ فیوز بیت می باشند
فیوز بیت ها بیت های قابل برنامه ریزی هستند که با پاک شدن میکرو تاثیری نمی بینند و در واقع تعیین کننده برخی از شرایط کاری میکرو می باشند پیشنهاد می شود جهت آشنایی بیشتر با این فیوز بیت ها به کتاب هایی که در زمینه میکرو کنترلر های avr توشتهشده است مراجعه شود اما برای اطلاع بیشتر برنامه ریزی این فیوز بیت ها در برتامه ای مثل BASCOM کاری بسیار راحت می باشد که در موقع توضیح این برنامه توضیح داده خواهد شد.
ATTINY 15L
شکل ۲
خصوصیات این AVR هم دقیقا مثل ATTINY های قبلی است اما دارای تغییراتی و فرق های جزئی می باشد که عبارتند از:
- دو تایمرـ کانتر ۸ بیتی
- ۴ کانال مبدل آنالوگ به دیجیتال و یک کانال تفاضلی آنالوگ به دیجیتال با کنترل گین X 20
- مدار POWER-ON RESET
- اسیلاتور داخلی کالیبره شده ۶/۱ مگاهرتزی وقابل تنظیم
- خروجی PWM ,8 بیتی با فرکانس ۱۵۰ کیلو هرتز
- عملکرد کاملا ثابت
- توان مصرفی در حالت فعال ۳ میلی آمپر و در حالت بیکاری ۱ میلی امپر
- ولتاژ عملیاتی ۲٫۷ تا ۵٫۵ ولت
- ۶ خط ورودی خروجی قابل برنامه ریزی
- دارای ۶ فیوز بیت می باشد.
ATTINY 26
انجام پروژه متلب دارای خصوصیاتی است که با میکرو های قبلی تا حدودی فرق میکند که در زیر به بعضی از آنها اشاره می کنیم .
- دارای ۱۱۸ دستورالعمل با کارآیی بالا که اکثرا در یک سیکل اجرا می شوند.
- سرعتی تا ۱۶ مگاهرتز
- ۲ کیلو حافظه FLASH قابل برنامه ریزی و پایداری آن تا ۱۰۰۰ بار نوشتن و پاک کردن
- ۱۲۸ بایت حافظه SRAM
- ۱۲۸ بایت حافظه EEPROM و پایداری آن تا ۱۰۰۰۰۰ بار خواندن و نوشتن
- ایجاد وقفه با تغییر وضعیت بر روی ۱۱ پایه
- یک تایمر ـکانتر ۸ بیتی
- یم تایمر ـ کاتنتر ۸ بیتی پر سرعت
- دوخروجی PWM فرکانس بالا
- ۱۱ آنالوگ ADC با کنترل گین X1 تا X20 و ۸ کانال شیز تفاضلی
- یک مقایسه گر آنالوگ داخلی
- دارای اسیلاتور داخلی
- ولتاژ کاری ۲٫۷ تا ۵٫۵ ولیت برای ATTINY 26L و ۴٫۵ تا ۵٫۵ ولت برای
- فرکانس کاری ۸ مگاهرتز برای ATTINY 26L و ۱۶ مگاهرتز برای ATTINY26
- در دو نوع بسته بندی و۲۰ پایه در حالت PDIP و ۳۲ پایه در MLF که ۱۲ پایه آن بدون مصرف است.
- دارای دو بایت فیوز بیت می باشد
https://www.youtube.com/watch?v=wNpxAXqZgUk&t=20s
https://www.youtube.com/watch?v=wNpxAXqZgUk&t=20s
شکل ۳
خصوصیات ATTINY 28L , 28V
شکل ۵
- دارای ۹۰ دستورالعمل
- ۲کیلو بایت حافظه FLASH سرعتی تا ۴ مگا هرتز
- دارای یک تایمر ـ کانتر ۸ بیتی
- یک مقایسه گر انالوگ داخلی
- دارای اسیلاتور داخلی
- توان مصرفی ۳ میلی امپر در حالت فعال
- و در حالت بیکاری ۱٫۲ میلی آمپر
- ولتاژ کاری ۱٫۸۷ تا ۵٫۵ ولت برای ATTINY 28V
- ولتاژ کاری ۲٫۷ تا ۵٫۵ ولنت برای ATTINY 28L
- فرکانس ۱٫۲ مگا هرتز برای ATTINY 28V
- فرکانس ۴ مگاهرتز برای ATTINY 28L
- دارای ۲۸ پایه در بستع بندی PDIP و ۳۲ پایه در نوع TQFP و MLF
- دارای ۵ فیوز بیت
۱-۲ میکرو کنترلرهای AT90S
شکل ۶
در اینجا به انواع AT90S ها که شامل
AT90S1200 ,AT90S2313, AT90S2323/L2323/S2343/L2343 , AT90S2333/LS 2333/S4433/LS4433 AT90S8515, AT90S8535/L 8535
خصوصیات AT90S1200
- دارای ۸۹ دستورالعمل
- ۸*۳۲ رجیستر کاربردی
- سرعتی تا ۱۲ مگا هرتز
- یک کیلو بایت حافظه FLASH و ۱۰۰۰ بار قابلیت نوشتن و پاک کردن
- ۶۴ بایت حافظه EEPROM داخلی و قابلیت ۱۰۰۰۰۰ بار نوشتن و پاک کردن
- توان مصرفی در حالت فعال ۱۲ میلی امپر و در حالت بلیکاری ۴/ میلی آمپر
- ولتاژ کاری ۲٫۷ تا ۶ ولت برای نوع ۴ و ۴ تا ۶ ولت برای نوع ۱۲
- فرکانس کاری ۴ مگاهرتز برای نوع ۴ و تا ۱۲ مگاهرتز برای نوع ۱۲
- دارای ۱۵ پایه ورودی و خروجی
- دارای ۲۰ پایه در انواع PDIP , SOIC , SSOP
- دارای ۲ فیوز بیت
خصوصیات AT90S2313
- دارای ۱۱۸ دستورالعمل
- سرعتی تا ۱۰ مگاهرتز
- ۲ کیلو بایت حافظه FLASH قابل برنامه ریزی و قابلیت برنامه ریزی تا ۱۰۰۰ بار
- ۱۲۸ بایت حافظه SRAM
- ۱۲۸ بایت حافظه EEPROM و قابلیت پاک کردن و نوشتن تا ۱۰۰۰۰۰ بار نوشتن و پاک کردن
- یک تایمر ـکانتر ۸ بیتی
- یک تایمر ـکانتر ۱۶ بیتی و دارای مدهای CAMPARE , CAPTURE و PWM های ۸ یا ۹ یا ۱۰ بیتی
- توان مصرفی در حالت فعال ۲٫۸ میلی آمپر و ۸/ آمپر در حالت بیکاری
- ولتاژ کاری ۲٫۷ تا ۶ ولت برای نوع ۴ و ۴ تا ۶ ولت برای نوع ۱۰
- فرکانس ۴ مگاهرتز برای نوع ۴ و ۱۲ مگاهرتز برای نوع ۱۰
- ۱۵ خط ورودی و خروجی
- ۲۰ پایه در انواع PDIP , SOIC
- دارای دو فیوز بیت
خصوصیات AT90S2323/LS2323/S2343/LS2343
خصوصیات با نوع قبلی توضیخ داده شده تقریبا یکی است البته با تفاوتهایی جزئی که عبارتند از :
- دارای یک تایمر ـکانتر ۸ بیتی
- توان مصرفی در حالت فعال ۲٫۴ میلی آمپر و در حالت بیکاری ۵/ میلی آمپر
- ولتاژ کاری ۴ تا ۶ ولت برای AT90S2323/AT90S2343
- ولتاژ کاری ۲٫۷ تا ۶ ولت برای AT90LS2323/AT90LS2343
- فرکانس کاری تا ۱۰ مگاهرتز برای AT90S2323/AT90S2343-10
- فرکانس کاری تا ۴ مگاهرتز برای AT90LS2323/AT90LS2343-4
- فرکانس کاری تا ۱ مگاهرتز برای AT90LS2343-1
- ۳ خط ورودی و خروجی برای AT90S2323/LS2323
- ۵ خط ورودی خروجی برای AT90S2343/LS2343
- ۸ پایه در انواع PDIP , SOIC
- دارای ۲ فیوز بیت
خصوصیات AT90S2333/LS2333/S4433/LS4433
- دارای خصوصیات AT90S2313 به جز در مورد فرکانس کاری و ولتاژ کاری و توع بسته بندی
- توان مصرفی در حالت فعال ۳٫۴ میلی آمپر و در حالت بیکاری ۱٫۴ میلی آمپر
- ۷ تا ۶ ولت برای AT90LS2333/AT90LS4433
- ۴ تا ۶ ولت برای AT90S2333/AT90S4433
- فرکانس کاری تا ۴ مگاهرتز برای انولع LS
- فرکانس کاری تا ۸ مگاهرتز برای انواع S
- ۲۰ پایه ورودی خروجی قابل برنامه ریزی
- ۲۸ پایه در بسته بندی PDIP و ۳۲ پایه نوع TQFP
- دارای ۶ فیوز بیت قابل برنامه ریزی
خصوصیات AT90S8515
خصوصیات با میکر قبلی یکی است به جز:
- توان مصرفی در حالت فعال ۳ میلی آمپرو در حالت بیکاری ۱ میلی آمپر
- ولتاژ کاری ۲٫۷ تا ۶ ولت برای نوع ۴ و ۴ تا ۶ ولت برای نوع ۸
- فرکانس کاری ۴ مگاهرتز برای نوع ۴ و ۸ مگاهرتر برای نوع ۸
- ۳۲ پایه ورودی خروجی قابل برنامه ریزی
- ۴۰ پایه در بسته بندی PDIP و ۴۴ پایه در نوع PLCC , TQFP
- دارای ۲ فیوز بیت
خصوصیات AT90S8535/LS8535
خصوصیات مثل نوع قبل بجز:
- توان مصرفی در حالت فعال ۶٫۴ میلی آمپر و در حالت بیکاری ۱٫۹ میلی آمپر
- ولتاژ کاری ۲٫۷ تا ۶ ولت برای نوع LS و ۴ تا ۶ ولت برای نوع S
- فرکانس کاری تا ۴ مگاهرتز برای نوع LS و ۸ مگاهرتز برای نوع S
- دارای ۴۰ پایه در نوع PDIP و ۴۴ پایه در بسته بندی های PLCC, MLF,TQFP
۱-۳ میکروکنترلر های MEGAAVR
مهمترین گروه از AVR ها این گروه می باشد به واسطه اینکه دارای دامنه عملیاتی بسیار زیاد می باشند و قابلیت های بیشتری نسبت به گروه قبلی خود دارند.
مزیتمهمی که به نظر ما در این سری از AVR ها وجود دارد یکی دامنه فرمانی بسیار بالا و دیگری برخی از اعضای این خانواده دارای RTC یا CLOCK SOFT می باشند که این کار باعث شده تا بسیاری از برنامه های نوشته شده بر روی این خانواده کوتاهتر و دقیقتر شود اعضای مهم این گروه عبارتند از: ATMEGA323, 323L, 32, 32L, 128, 128L, 163, 163L, 8,8L, 8515, 8515L, 8535, 8535L, 161L, 161, 162, 162L, 16, 16L, 103, 103L, 169, 169L, 169V, 64, 64L
نکتهای که میان MEGA های هم نام ومتفائت در پسوند شان وجود دارد توان مصرفی و کلاک سیستم آنها می باشد.
در اینجا همه آنها را توضیح نخواهیم داد چون توضیح خود شامل گزارشی کامل و مفصل است این نکته قابل توجه است که تقریبا همگی دارای خصوصیات مشابه می باشند.
توضیحات ATMEGA 8 ,8L
- دارای ۱۳۰ دستورالعمل
- سرعتی تا ۱۶ مگاهرتز
- کبلو بایت حافظه FLASH داخلی و قابلیت ۱۰۰۰۰ بار پاک کردن و نوشتن
- ۱۰۲۴ بایت حافظه SRAM
- ۵۱۲ بایت حافظه EEPROM داخلی قابل برنامه ریزی و قابلیت ۱۰۰۰۰۰ بار نوشتن و پاک کردن
- دوتایمر ـ کانتر مجزا ۸ بیتی
- یک تایمر ـکانتر ۱۶ بیتی
- ۸ کانال مبدل دیجیتال به آنالوگ در بسته بندی های TQFP , MLF
- ۶ کانال مبدل دیجیتال به آنالوگ در بسته بندی PDIP
- قابلیت SPI
- قابلیت ارتباط د وسیمه
- ولتاپ عملیاتی ۲٫۷ تا ۵٫۵ برای MEGA8L و ۴٫۵ تا۵٫۵ برای MEGA8
- فرکانس تا ۸ مگاهرتز برای نوع L و ۱۶ مگاهرتز برای نوع معمولی
- ۲۳ خط ورودی و خروجی قابل برنامه ریزی
- ۲۸ پایه در بسته بندی PDIP و ۳۲ پایه در TQFP , MLF
- دارای دو بایت فیوز بیت
شکل ۷
توضیحات ATMEGA 16,16L
تقریبا مثل نوع قبل فقط دارای تعداد پایه های ورودی خروجی بیشتر و حافظه بیشتر
- دارای ۱۳۱ دستورالعمل
- سرعتی تا حدود ۱۶ مگاهرتز
- ۱۶ کیلو بایت حافظه FLASH داخلی قابل برنامه ریزی و قابلیت ۱۰۰۰۰ بار نوشتنو پاک کردن
- ۱۰۲۴ بایت حافظه داخلی SRAM
- ۵۱۲ بایت حافظه EEPROM
- قابلیت ارتباط STAG
- دو تایمرـ کانتر ۸ بیتی مجزا
- یک تایمرـ کانتر ۱۶ بیتی
- ۸ کانال مبدل دیجیتال به آنالوگ ۱۰ بیتی
- ولتاژ کاری ۲٫۷ تا ۵٫۵ برای نوع L و۴٫۵ تا ۵٫۵ برای نوع معمولی
- فرکانس کاری ۸ مگاهرتز برای نوع L و ۱۶ مگات هرتز برای نوع معمولی
- ۳۲ پایه قابل برنامه ریزی
- ۴۰ پایه در بسته بندی PDIP و ۴۴ پایه در بسته بندی TQFP , MLF
- دارای ۲ بایت فیوز بیت.
شکل ۸
توضیحات ATMEGA 32 , 32L
مهمترین عضو این خانواده می باشد چون همه قابلیت های یک AVR را دارا می باشد و بیشترین استفاده را در ساخت پروژه ها دارا می باشد
- دارای ۱۳۱ دستورالعمل
- سرعتی تا ۱۶ مگاهرتز
- ۳۲ کیلو بایت حافظه FLASH داخلی و قابلیت ۱۰۰۰۰ بار پاک کردن و نوشتن
- ۲ کیلو بایت حافظه SRAM
- ۱۰۲۴ بایت حافظه EEPROM با قابلیت ۱۰۰۰۰۰ بار خواندن و نوشتن
- قابلیت JTAG
- دو تایمر ـ کانتر ۸ بیتی
- یک تنایمر ـ کانتر ۱۶ بینتی
- ۴ کانال PWM
- ۸ کانال مبدل آنالوگ به دیجیتال ۱۰ بیتی با کنترل گین ۱ , ۱۰ , ۲۰۰X
- دارای RTC
- ولتاژ عملیاتی ۲٫۷ تا ۵٫۵ برای نوع L و ۴٫۵ تا ۵٫۵ ولت برای نوع معمولی
- فرکانس کاری تا ۸ مگا هرتز برای نوع L و تا ۱۶ مگاهرتز برای نوع معمولی
- ۳۲ پایه ورودی خروجی
- ۴۰ پایه در بسته بندی PDIP و ۴۴ پایه در بسته بندی TQFP , MLF
- دارای دو بایت فیوز بیت
توضیحات ATMEGA 64 , 64L
این میکرو نیز یکی از مهمترین اعضای این خاواده می باشد به واسطه دارای بودن همه امکانات و حافظه و تعداد پایه های بیشتر
- دارای ۱۳۰ دستورالعمل
- سرعتی تا حدود ۱۶ مگاهرتز
- ۶۴ کیلوبایت حافظه بمشسا داخلی قابل برنامه ریزی تا ۱۰۰۰۰ بار
- ۴ کیلو بایت حافظه داخلی SRAM
- ۲ کیلو بایت حافظه EEPROM و قابلیت پاک کردن و نوشتن تا ۱۰۰۰۰۰ بار
- دو تایمر ـ کانتر ۸ بیتی مجزا
- دو تایمر ـکانتر ۱۶ بیتی
- ۲ کانال PWM 8 بیتی.
شکل ۹
- ۶ کانال PWM 16 بیتی
- ۸کانال مبدل آنالوگ به دیجیتنال ۱۰ بیتی
- دارای RTC
- مطابقط با میکرو ۱۰۳ توسط انتخاب فیوز بیت
- ولتاژ عملیاتی ۲٫۷ تا ۵٫۵ ولت برای نوع L و ۴٫۵ تا ۵٫۵ ولت برای نوع معمولی
- فرکانس تا ۸ مگاهرتز برای نوع L و تا ۱۶ مگا هرتز برای نوع معمولی
- ۵۳پایه ورودی خروجی
- ۶۴ پایه در بسته بندی TQFP , MLF
- دارای ۳ بایت فیوز بیت
مهمترین ATMEGA ها توضیح داده شد توصیه می شود برای آگاهی بیشتر از بقیه اعضای این خانواده به کتابها و جزواتی که در این مورد نوشته شده است مراجعه کنید.
۱-۴ خصوصیات داخلی MEGA 32
کلاک سیستم
کلاک سیستم میکرو مطابق با شکل۱۰ توزیع می شود
شکل ۱۰ : کلاک سیستم
کلاک CPU : این کلاک برای انجام عملیات AVR استفاده می شود. توقف و به مکث بردن این کلاک باعث می شود که عملیات و محاسبات انجام نگیرد.
کلاکI/O : این کلاک توسط بسیاری از ماژول های I/O مثل تایمر ها و کانتر هاتر ها و … استفاده می شود.
کلاک FLASH :این کلاک عملیات ارتباطی با حافظه FLASH را کنترل می کند که این کلاک معمولا با کلاک CPU فعال می شود
کلاک غیر همزمان تایمر: با این تایمر/کانتر به صورت غیر همزمان توسط کریستال ساعت ۳۲۷۶۸ هرتز کار می کند .
کلاک ADC : ADC از یک کلاک جدا گانه حساس استفاده می کند که باعث می شود کلاک های CPU ,I/O به حالت ایست رفته تا نویز حاصل از مدار دیجیتال داخلی کاهش یافته و در نتیجه عملیات تبدیل با دقت بیشتری انجام یابد.
منابع کلاک:
میکرو دارای انواع منابع کلاک اختیاری ایت که می توان انواع آن رات به وسیله بیت های قابل برنامه ریزی FLASH (فیوز بیت ها) انتخاب کرد. این منابع عبارتند از:
اسیلاتور کریستالی : در این حالت کریستال یا نوسانگر سرامیکی یا کریستال کوارتز به دوپایه XTAL1 , XTAL2 وصل می شود.
اسیلاتور کریستالی فرکانس پایین ۳۲۷۶۸ هرتز
اسیلاتور RC خارجی : فرکانس تقریبی توسط معادله F=1/(3RC) به دست می آید. مقدار خازن بایستی حداقل ۲۲ پیکوفاراد باشد. با برنامه ریزی کردن فیوز بیت CKOPT می توان خازنهای داخلی ۳۶ پیکوفاراد را بین XTAL1 و GND راه اندازی کند و در نتیجه نیازی به خارجی نیست
اسیلاتور RC کالیبره شده داخلی :اسیلاتور داخلی کلاک های نامی ۱ و ۲ و ۴ و ۸ مگاهرتز را در ولتاژ ۵ ولت و دمای ۲۵ درجه سانتیگراد تولید می کند. این کلاک را با برنامه ریزی کردن بیتهای CKSEL می توان به عنوان کلاک سیستم مورد استفاده قرار دادو دیگر احتیاجی به کلاک و مدار خارجی نیست.
کلاک خارجی: برای راه اندازی میکرو توسط کلاک خارجی پایه XTAL1 طیق شکل زیر بایستی وصل شود. برای کار در این حالت باید فیوز بیت CLOPT را برنامه ریزی نمود تا خازن ۳۶ پیکوفاراد بین XTAL1 و GND فعال گردد.
اسیلاتور و تایمر: البته در میکروهایی که دارای پایه های TOSCI و TOSC2 هستند کریستال مستقیم بین این دو پایه قرار می گیرد.
۱۶-۱فیوز بیت کلاک :
میکرو دارای انواع منابع کلاک می باشد که مب توان با برنامه ریزی فیوز بیت ها یکی از انها را انتخاب نمود.
منابع کلاک | CKSEL3…۰ |
کریستال خارجی | ۱۱۱۱-۱۰۰۰ |
کریستال فرکانس پایین | ۰۱۱۱-۰۱۰۰ |
اسیلاتور RC کالیبره شده | ۰۰۱۰ |
کلاک خارجی | ۰۰۰۰ |
فیوز بیت های میکرو : همانطور که گفته شد فیوز بیت ها بیت هایی هستند که بابرنامه ریزی انها می توان میکرو را برای نوع کار خاصی آماده کرد و در واقع میکرو را در حالت خاصی قرار داد
در برنامه BASCOM برنامه ریزی کردن این فیوز بیت ها بسیار ساده می باشد هنگامی که به صفحه برنامه ریزی میکرو می روید یک از قسمتهای برنامه ریزی میکرو برنامه ریزی فیوز بیت ها می باشد که کنار هز فیوز بیت نوع کار و چگونگی کار آن نیز نوشته شده است برخی از فیور بیت های مهم میکرو به جز فیوز بیت های کلاک که در بالا توضیخ داده شد عبارتند از :
OCDEN : برنامه ریزی این بیت به قسمتهایی از میکرو اجازه می دهد که در مد SLEEP نیز کار کنند
JTAGEN : بیتی برای فعال سازی برنامه ریزی میکرو از طریق استاندارد ارتباطی IEEE که در حالت پیش فرض فعال است
SPIEN : در حالت پیش فرض برنامه ریزی شده و میکرو از طریق ارتباط SPI برنامه ریزی میشود.
EESAVE : با برنامه ریزی این بیت می توان هنگامی که میکرو را پاک می کنیم حافظه EEPROM آن را پاک نکرد و اطلاعات آن را محفوظ نگاهداشت.
BOOTSZ0 , BOOTSZ1 : در صورت برنامه ریزی شدن ای نفیوز بیت اجرای برنامه ار آدرس حافظه BOOT آغاز خواهد شد.
BOOTRST : در صورت برنامه ریزی آدری بردار ریسیت به آدرسی که فیوز بیت های قبلی تعغییت کرده اند تغییر می یابد.
BODLEVEL : در سورتی که برنامه ریزی نشده باشد اگر ولتاژ از ۲٫۷ ولت پایین تر بیاید ریسیت داخلی میکرو فعال می شود و میکرو را ریسیت می کند اما با برنامه ریزی این بیت هر گاه ولتاژ از ۴ ولت کمتر شود ریسیت داخلای میکرو فعال می شود و میکرو ریسیت می شود.
BODEN : برای فعال کردن عملکرد مدار BROWN-OUT این بیت بایستی برنامه ریزی شده باشد.
ساختار پردازنده AVR
در میکروکنترلر های AVR یک واحد مرکزی وجود دارد که تمام فعالیتهای میکروکنترلر را مدیریت و تمام عملیات لازم بر روی داده ها را انجام می دهد ، همچنین وظیفه ارتباط با حافظه ها و کنترل تجهیزات جانبی را بر عهده دارد به این واحد MCU می گویند .
شکل ۱۰ساختار کلی (Master Control Unit ) MCU را نشان می دهد .
شکل ۱۱ : واحد MCU
در میکرو کنترلرهای AVR از معماری هاروارد استفاده شده است . بطوریکه حافظه میکروکنترلرهای AVR به دو قسمت ((حافظه برنامه)) و (( حافظه داد ها)) تقسیم می شود ، همچنین برای ایجاد ارتباط با هریک از این قسمتها ، از گذرگهای مجزا استفاده می شود . معماری هاروارد در مقایسه با معماری سنتی ، فون نیومن که از طریق یک گذرگاه مشترک به داده و برنامه دسترسی پیدا می کند ، پهنای باند بهتری دارد . با توجه به توضیحات بالا ، به شرح عملکرد هر یک از قسمت ها خواهیم پرداخت .
رجیسترهای عمومی ( فایل رجیستر )
تعداد این رجیسترها ۳۲ عدد بوده و عبارتند از R0تا R31 که هر کدام از این رجیسترها هشت بیتی و با واحد ALU در ارتباط مستقیم می باشند .
از میان رجیسترهی R0 تا R31 رجیسترهای R26 تا R31 دارای نام دیگری نیز هستند که بصورت شکل ۱۳ تعریف می شوند .
همانطور که مشخص است رجیسترهای R26 و R26 تشکیلیک رجیستر ۱۶ بیتی به نام X را می دهد و برای رجیسترهای Yو Z نیز چنین است .
کاربرد این رجیسترها (Z,Y,X) که به آنها رجیسترهای اشاره گر می گویند ، علاوه بر کاربرد عمومی برای آدرس دهی غیر مستقیم ، در فضای حافظه داده و برنامه استفاده می شوند . ( شکل ۱۵)
واحد ALU
این واحد وظیفه انجام عملیات منطقی و ریاضی مانند ADD ، SUB ، AND ،… را دارد . واحد ALU بطور مستقیم با رجیستر های R0 تا R31 در ارتباط می باشند .
شکل ۱۲ :CPU
IR ( رجیستر دستور Instruction Register ) این رجیستر ، کد دستورالعملی را که از حافظه برنامه FLASH خوانده شده و باید اجرا شود را در خود جای می دهد .
شکل ۱۳ ارتباط رجیسترهای عمومی با واحد ALU
شکل ۱۳ : رجیسترهای عمومی
شکل ۱۴ : نام گذاری رجسیتر های R26 تا R31
شکل ۱۵ : آدرس دهی غیر مستقیم داده و برنامه
ID(واحد رمز گشایی دستور Instruction Decoder )
این واحد تشخیص می دهد کد واقع در IR مربوط به کدام دستورالعمل است و سیگنالهای کنترلی لازم برای اجرای آن صادر می نماید.
Pc(شمارنده برنامه program counter )
شمارنده برنامه آدرس دستورالعمل بعدی که باید اجراء شودرادرخودنگه می داردوبااجرای هردستورالعمل محتوای شمارنده برنامه افزایش یافته وبه آدرس دستورالعمل بعدی اشاره می کند .
نحوه عملکردواحد cpuدرهنگام روشن شدن میکروکنترلریک مقدارازپیش تعریف شده دردرون شمارنده برنامه (pc) قرارمی گیرد که می تواند مقدار بردارresetیعنی۰۰۰۰Hباشد.
این آدرس همان آدرس شروع برنامه است وبرنامه نویس بایدبرنامه ی خودرادرآدرس های بعدازآن درحافظه برنامه ذخیره نماید.
بعدازمشخص شدن مقدار pc، CPU فرایندخواندن دستورالعمل راانجام می دهدکه به این مرحله فراخوانی داده (data fetch) می گویند . CPU پس ازخواندن کد دستورالعمل آن رادر رجیستر IR قرار می دهد. پس ازاین مرحله واحدرمزگشایی دستور(ID) کد دستورالعمل موجود در رجیستر IR راتجزیه وتحلیل می کند تا تشخیص دهد که چه عملی بایدانجام شود . مانندجمع یاتفریق و…، پس از آن با ارسال سیگنال های کنترلی سایرداده های موردنیاز برای انجام عملیات راخوانده وسرانجام ALU عملیات مشخص شده راروی داده ها انجام داده وسپس مقدارPC تغییرمی کندوآدرس دستورالعمل بعدی که باید اجراء شوددرآن قرارمی گیرد.شکل ۱۶ مراحل عملکرد CPUرانشان می دهد.
شکل ۱۶ : مر حله عملکرد CPU
حافظه داده SRAM
حافظه SRAM یک فضای داده برای ذخیره سازی اطلاعات موقت دراختیارکاربرقرار می دهد.محتوای این حافظه باقطع برق ازبین می رود.
حافظه SRAM بطورمستقیم دراختیار CPU نمی باشد برای دستیابی به حافظه SRAM معمولا ازیک رجیستر واسط که یکی ازرجیسترهای R0 تاR31 است استفاده می شود. مطابق شکل ۱۷
شکل ۱۷ : نحوه دسترسی به فضای داده SRAM
حافظه داده SRAM می تواندداخلی یاخارجی باشد. البته داده خارجی دربرخی ازمیکروکنترلرهاپشتیبانی می شود (برای اطلاعات بیشتربه فصل سازماندهی حافظه های AVRمراجعه نمائید).
رجیستروضعیت (SREG)
بیت های این رجیسترتحت تاثیربرخی عملیات CPU(ریاضی ،منطقی) فعال می شود.
پرچم کری( c)
این پرچم هنگامی که یک رقم نقلی ازبیت هفتم خارج شودیکی می شود. این پرچم بین انجام عمل محاسباتی ومنطقی تاثیرمی نماید.
پرچم صفر(Z)
این پرچم هنگامی که نتیجه یک عملیات محاسباتی یامنطقی صفرباشدیک خواهدشد.
پرچم منفی(N)
این پرچم هنگامی که نتیجه ی یک عملیات محاسباتی یا منطقی منفی باشدیک خواهدشد.
پرچم سرریز(V)
این پرچم هنگامیکه نتیجه ی این عملیات علامت دار بزرگتر از۶ باشدیک می شود. یک شدن این بیت بیانگراین است که نتیجه ی محاسباتی صحیح نیست .(برای توضیح بیشتربه فصل دستورات اسمبلی مراجعه نمایید).
پرچم علامت دارS
پرچم علامت دارهمواره نتیجه XOR بین پرچم های N وV می باشد(S=N).
پرچم نیم کری H
این پرچم بنام پرچم نقلی کمکی نیزشناخته می شود . اگرهنگام عملیات جمع یک انتقال ازبیت۳به۴ دریکی ازرجیسترهای عمومی ویا نتیجه ی نیم بایت پایین (بیت های ۰تا۳) بزرگتراز۹ باشدپرچمHیک خواهدشد وبرای محاسبه به صورت BCDمفید است .
بیتT
هنگام استفاده ازدستورات اسمبلی کپی کردن بیت ها (BSTوBLD) از این بیت به عنوان مقصدیا مبدا استفاده می شود.
بیت فعال سازوقفه سراسری
I درصورت یکی کردن این بیت وقفه سراسری فعال می شود.اگراین بیت صفرباشد. هیچ وقفه ای رخ نمی دهد.بیت I درهنگام رخ دادن وقفه بطورسخت افزاری صفروبادستورRETI یک می شود.
اشاره گرپشته (Stack Pointer )
پشته قسمتی ازفضای حافظه داده SRAM است که جهت ذخیره اطلاعات ومعمولا دراجرای دستور(…,ICALL,CALL) ویااجرای برنامه ی وفقه نیازمی باشد.البته به کمک دستورPUSH نیزمی توان به این قسمت دسترسی داشت.درAVR هامی توان حداکثر۶۴K بایت ازحافظه SRAM جهت فضای پشته درنظرگرفتوشماره آدرس این فضا توسط اشاره گرپشته یا SP)) مشخص می شود.
رجیسترSP یااشاره گرپشته ازدوبایت SPLوSPH تشکیل شده است که درمجموع یک رجیستر۱۶ بیتی بنام SP را به وجود می آورد .
SPL | SPH |
SP:
درابتداوقتی سیستم روشن می شود. CPU ازمحل استقرار حافظه پشته آگاهی ندارد بنابراین این محل راباید به اطلاع آن رساند (پیش فرض SP=0 است ).
برای این کارمعمولا باوارد کردن یک آدرس ازحافظه SRAM(معمولا آدرس بزرگتراز۶۰H و ۱۰۰H) به داخل رجیستراشاره گرپشته (SP) انجام می گیرد.
حافظه پشته درAVR ها بصورت LIFO( Last in First Out) است .
به کمک دستورPUSH می توان به طورمستقیم به فضای پشته دسترسی داشت بااجرای دستورPUSH به خانه ای ازحافظه داده STRAM که آدرس آن توسط رجیسترSP مشخص می شودانتقال می یابدوسپس اشاره گرپشته (SP) یک واحدکاهش می یابد.
حافظه داده EEPROM
یکی ازخصوصیات بارزمیکروکنترلرها خانواده AVR ، بهره بردن از یک EEPROM داخلی است . کاربرد حافظه داده EEPROM زمانی مفید خواهد بودکه مقدار یک متغیر در برنامه مهم بوده و نباید با قطعولتاژ تغذیه (VCC) یا Reset شدن میکرو کنترلر از بین می رود . به همین دلیل می توان آن متغیر را در فضای حافظه داده EEPROM قرار داد.
واحد CPU بطور مستقیم به فضای حافظه داده EEPROM دسترسی ندارد ، بلکه توسط رجیسترهای واسط (R0 تا R31) و رجیسترهای کنترلی به آن آدرس دسترسی خواهد داشت.
برای اطلاعات بیشتر به فصل سازماندهی حافظه مراجعه فرمائید .
شکل ۱۸ : نحوه دسترسی به فضای داده EEPROM
پورت I/O
پورت ها امکان دسترسی میکروکنترلرها با دنیای خارج را میسر می سازند . یک میکروکنترلر به کمک پورت های I/O میتواند داده های مختلفی را از خارج دریافت و یا ارسال نماید . در میکروکنترلرهای AVR با توجه به نوع میکرو کنترلر ، تعداد پورت ها متفاوت میباشد . بطور مثال در سری ATTiny تعداد ۶،I/O در دسترس بوده و در حالی که در ATmega 128 تعداد ۵۳،I/O و یا در سری ATmega 256 تعدا ۸۶ ،I/O در احتیار کاربر قرار گرفته است . در ARP ها پورت ها بصورت PORTA و PORTB و PORTC و … نام گذاری می شوند ، که هر کدام بصورت هشت بیتی عمل می نمایند .
پورت ها علاوه بر کاربرد عمومی به عنوان I/O معمولا دارای وظایف خاصی نیز هستند ، که با توجه به AVR مورد نظر متفاوت است . بطور مثال در ATmega 32 پورت A علاوه بر I/O معمولی، ورودی های آنالوگ برای ADC و مقایسه کننده آنالوگ نیز است . ( برای اطلاعات بیشتر به برگه اطلاعاتی میکرو مورد نظر مراجعه نمائید .)
بعنوان نمونه در شکل ۱-۱۱ پایه های میکروکنترلر ATmega 32 آورده شده است .
ساخت پورت I/O
شکل ۱۹ مدار داخلی یک پین از پورت را نشان می دهد .
شکل ۱۸ : پایه های میکرو کنترولر ATmega32
شکل ۱۹ : مدار داخلی یک پین از پورت های میکرو کنترلر
همانطور که در شکل ۱۹ ملاحظه می فرمائید ، هر یک از پین های I/O دارای دو دیود محافظ برای محافظت از ولتاژ ورودی منفی یا بزرگتر از VCC است و همچنین دارای یک مقاومت بالاکش (Pull – Up) داخلی می باشند . مقاومت های بالاکش را می توان به دلخواه فعال یا غیر فعال نمود .
بافر خروجی در هر پین قابلیت جریان کشی جریان دهی (Sink , Source) تا ۲۰mA را فراهم می کند . بنابراین می توان بطور مستقیم یک LED را راه اندازی نمود .
با توجه به شکل ۱-۱۲ هر پین دارای دو نگهدار PORTXn , DDXn می باشد . نگهدار اولی وظیفه تعیین جهت پین بصورت ورودی یا خروجی را بر عهده دارد . و دومی نگهدار داده می باشد و دادهای که قرار است روی پین قرار گیرد را در خود نگه می دارد .
بنابراین هر پورت ۳ رجیستر برای کنترل پایه ها دارد.
تعیین جهت پایه های بصورت ورودی و خروجی
برای این منظور از رجیستر DDRx استفاده می شود ، بطوریکه اگر در بیت مورد نظر از این رجیستر ، صفر منطقی نوشته شود ، آن پایه بصورت ورودی و در صورت یک شدن به صورت خروجی تعریف می شود .
مقاومت بالاکش (Pull – Up)
هنگامیکه پایه بصورت ورودی تعریف می شود (DDXn = 0) ، اگر در بیت PORTXn مقدار یک منطقی و بیت PUD در رجیستر SFIOR نیز صفر منطقی نوشته شود ، مقاومت بالاکش داخلی فعال خواهد شد.
هنگامیکه بیت PUD برابر یک می گردد ، مقاومت بالاکش درون پورت های I/O غیر فعال می شود ، حتی اگر DDXn =1 PORTXn = 1 شده باشد.
نوشتن در پایه ها
برای این منظور ابتدا جهت پایه مورد نظر را به صورت خروجی تعریف نموده (DDXn = 1) . سپس با مقدار دادن بیت ( نگهدار) PORTXn مقدار دلخواه را برروی پایه مورد نظر بنویسید.
بطور مثال اگر DDRC =FFH باشد ، در این صورت اطلاعات متناظر با رجیستر PORTC روی پورت C نوشته خواهد شد.
خواندن از پورت
به دو صورت می توان داده را از پورت خواند :
- خواندن مستقیم از روی پایه ها در این حالت به کمک PINX می توان اطلاعات را از روی پایه دریافت نمود . بطور مثال دستور IN PINA اطلاعات را به طور مستقیم از روی پایه های پورت A خوانده ، و درون رجیستر R16 قرار می دهد .
- خواندن از روی نگهدارپایه ها در این حالت داده از روی نگهداره پایه خوانده می شود . بطور مثال دستور IN R16.PORTA اطلاعات را از رجیستر پورت داده A خوانده و درون رجیستر R16قرار می دهد . معمولا خواندن از روی نگهدار پایه هنگامی استفاده می شود که نیاز به خواندن آخرین وضعیت پایه ها و یا تغییر در وضعیت پایه ها باشد .
ورودی سیگنال آنالوگ
برخی از پایه ها AVR دارای حالت ورودی سیگنال آنالوگ می باشد که معمولا ورودی های مقایسه کننده آنالوگ یا ورودی برای مبدل آنالوگ به دجیتال (ADC) می باشد .
عملکرد پایه ها در حالت Sleep
فرمان Sleep می تواند توسط میکروکنترلر در حالت های POWER Down ، Power Save ، Standby ، Extended Standby فعال گردد. این حالت به دلیل جلوگیری از اتلاف توان صورت می گیرد و اگر پایه ها به حالت شناور رها کردند ، معادل ولتاژ خواهد داشت .
سیستم توزیع پالس ساعت در AVR
پالس ساعت داخلی از منابع مختلفی ایجاد می شود که با توجه به جدول ۱-۷ می توان چون ، نوسان ساز کریستالی ، نوسان ساز RC خارجی ، نوسان ساز کریستالی فرکانس پایین ، نوسان ساز RC داخلی و پالس ساعت خارجی را نام برد. شکل ۲۰ سیستم کلاک اصلی در AVR را نشان می دهد.
شکل ۲۰ : توزیع کلاک
پالسهای ساعت تولید شده از این منابع توسط یک Clock multiplexer انتخاب شده و پالس منبع انتخاب شده به قسمت AVR Click Control Unti وارد می شود ، این قسمت وظیفه پخش پالس ساعت به قسمت های مختلفی AVR ها را بر عهده دارد .
پالس ساعت های ایجاد شده توسط واحد clock control را می توان به صورت زیر دسته بندی نمود .
پالس ساعت CPU (CLKCPU)
این پالس ساعت به بخش های اصلی AVR ، مانند CPU، رجیسترهای عمومی ، رجیستر وضعیت SREG و حافظه داده SRAm اعمال می شود .
پالس ساعت I/O (CLK I/O)
این پالس ساعت برای بخش هایی چون فضای حافظه I/O که برای کنترل قسمت هایی نظیر USART،SPI، تایمر شمارنده و وقفه های خارجی به کار می رود.
پالس ساعت آسنکرون(CLKASY)
این پالس ساعت برای راه اندازی آسنکرون تایمر / شمارنده (۲) توسط کریستال ساعت ۳۲/۷۶۸KHz به کار می رود .
پالس ساعت حافظه (CLKFLASH) Flash
این پالس ساعت برای کنترل ارتباط با حافظه Flash به کار می رود و معمولا همراه CLKCPU فعال می شود .
پالس ساعت (CLKADC) ADC
این پالس ساعت برای مبدل آنالوگ به دیجیتال بوده و بصورت جداگانه تامین می شود و امکان توقف پالس ساعت CPU و I/O را به منظور کاهش تاثیر نویز مدرت دیجیتال روی ADC و در نتیجه افزایش دقت آن فراهم می کند .
منابع تولید پالس ساعت در AVR
همانطورکه قبلا اشاره شد منابع مختلفی برای تامین پالس ساعت ساعت میکروکنترلر وجود دارد . کاربر به کمک فیوزبیت ها ( برای اطلاعات بیشتر به پیوست الف مراجعه نمائید.) می تواند هر کدام از این منابع را انتخاب نماید.
منابع مختلف پالس ساعت با فیوزبیت های CKSEL3…۰ قابل انتخاب است.
در جدول ۱-۶ صفر به معنای برنامه ریزی شدن فیوزبیت و یک به معنی برنامه ریزی نشدن فیوزبیت است . هنگامیکه CPU از مد Power down یا Power save خارج می شود .پالس ساعت انتخاب شده با مقداری تاخیر به میکرو اعمال می شود . این تاخیر را زمان Startup می نامند و به منظور پایدار شدن پالس ساعت ، قبل از شروع به کار است .
هنگامیکه CPU از حالت Reset خارج می شود ، یک زمان تاخیر بیشتری به منظور تثبیت ولتاژ تغذیه و پایدار شدن پالس ساعت مورد نیاز است .
زمان Startup توسط تایمر Watchdog قابل تنظیم است . فیوز بیت های SUTI , SUTO به منظور تنظیم زمان Startup مورد استفاده قرار می گیرد و زمان های ۰ و ۴٫۱ ms و ۶۵ ms را می توان تنظیم نمود.
نوسان ساز کریستالی خارجی :
یکیاز منابع تولید پالس ساعت ، استفاده از نوسان ساز کریستال خارجی می باشد ، در این حالت پایه های XTALI و XTAL2 مطابق شکل ۱-۱۴ A به صورت ورودی و خروجی یک تقویت کننده داخلی وارونگر می باشند که می توانند به عنوان نوسان ساز بکار برده شوند .
دو نوع کریستال خارجی را می توان به این دو پایه متصل نمود ، ۱- کریستال کوارتز ، ۲- کریستال سرامیکی ، که هر کدام را می توان توسط فیوزبیت CKOPT انتخاب نمود .
هنگامیکه فیوز بیت CKOPT برنامه ریزی می شوند ، فرکانس خروجی نوسان ساز دارای محدوده وسیع و دامنه ثابت ولتاژ در خروجی خواهد بود . این حالت برای زمانی که از میکروکنترلر در محیط های پرنویز استفاده می شود ، مناسب است . همچنین در این حالت می توان از پایه خروجی XTAL2 مطابق شکل ۱-۱۴B برای فعال کردن بافر پالس ساعت دیگر میکروکنترلرها نیز استفاده نمود .
هنگامیکه فیوز بیت CKOPT برنامه ریزی نشده باشد . دامنه فرکانس نوسان ساز محدودتر خواهد شد . و دیگر نمی توان از پایه XTAL2 به منظور فعال کردن بافر پالس ساعت دیگر میکروکنترلر ها استفاده نمود . در صورت استفاده از رزوناتور سرامیکی اگر فیوز بیت CKOPT برنامه ریزی شود ، فرکانس نوسان ساز حداکثر ۱۶MHz و در صورت برنامه ریزی نشدن حداکثر ۸MHz خواهد بود .
خازن های C1 و C که به عنوان خازن های بالانس شناخته می شود ، دارای مقدار یکسانی بوده و مقدار آن به فرکانس کریستال مورد استفاده بستگی دارد .
هنگام استفاده از کریستال ها بسته به نوع کوارتز یا سرامیکی بودن آنها باید یک سری نکات را رعایت نمود . به طور کلی تفاوت اصلی بین کریستال کوارتز و سرامیکی را می توان به صورت زیر خلاصه نمود :
- کریستال کوارتز دارای ضریب کیفیت بالا ، محدوده فرکانس بالا و حساسیت کم نسبت به تغیرات دما است .
- کریستال سرامیکی نسبت به کوارتز دارای ضریب کیفیت پایین تر ، حساس نسبت به تغییرات دما و محدوده فرکانس پایین است و یکی از مزایای آن نسبت به کوارتز پایدار شدن شریع تر فرکانس می باشد .
نوسان ساز در سه محدوده مختلف کار می کند که هر کدام برای یک محدود فرکانس مناسب هستند و به کمک فیوزبیت های CKSEL 3:1 قابل انتخاب شدن است .
توجه داشته باشید فیوزبیت CKSEL0 به همراه فیوز بیت های SUT 1:0 برای تعین زمان Start up استفاده می شود ، مطابق جدول ۱-۸
نوسان ساز کریستالی فرکانس پائین
اگر از یک کریستال ۳۲/۷۶۸Khz به عنوان منبع پالس ساعت استفاده می کنید . باید فیوز بیتهای CLKSEL 3:0 را به صورت ۱۰۰۱ برنامه ریزی کرد . کریستال مطابق شکل ۱-۱۵ به پایه ها متصل می شود . در این حالت کاربر می تواند با برنامه ریزی فیوزبیت CKOPT ، خازن های داخلی بین پایه های XTAL1،XTAL2 که مقدار ۳۶PF است را فعال نماید و نیاز به استفاده از خازن خارجی را از بین ببرد.
با استفاده از این نوسان ساز زمان Start UP توسط فیوز بیت های SUT1 و SUT0 مطابق جدول ۱-۹ تعیین می شود .
شکل زیر نوسان ساز کریستالی فرکانسی پایین
نوسان ساز خارجیRC
می توان به جای استفاده از کریستال خارجی از شبکه RC خارجی مطابق شکل ۱-۱۶ استفاده نمود. در این حالت فرکانس نوسان ساز را می توان از فرمول F= 1/(3RC) بدست آورد .
در این فرمول خازن C حداقل ۲۲PE و مقدار مقاومت ۳k <R
<100K می باشد .
در صورت برنامه ریزی شدن فیوزبیت CKOPT یک خازن داخلی ۳۶PF بین XTALI و GND فعال خواهد شد و دیگر نیازی به استفاده از خازن خارجی نیست.
این نوسان ساز می تواند در جهار محدوده مختلف کار کند . با استفاده از فیوزبیت های CKSEL 3:0 طبق جدول ۱-۱۰ قابل انتخاب شدن می باشد.
زمان Start up توسط فیوز بیت های SUT0 و SUT1 برای زمان های مختلف قابل انتخاب است .
نوسان ساز RC کالیبره شدن داخلی
نوسان ساز RC داخلی ، ۴ فرکانس ۱ و ۲ و ۴ و ۸ مگاهرتز را در شرایط ولتاژ تغذیه %V و درجه حرارت محط ۲۵ درجه سانتیگراد تولید می کند .
به کمک فیوز بیت های CKSEL 3:0 می توان فرکانس مورد نظر را مطابق جدول ۱-۱۲ انتخاب نمود .
همچنین فیوز بیت CKOPT نباید برنامه ریزی شود .
زمان START UP توسط فیوز بیت های SUT0 و SUT1 مطابق جدول ۱-۱۳ انتخاب می شود . در این حالت پایه های XTAL1 و XTAL2 باید بدون اتصال باشند .
پالس ساعت خارجی
در صورت استفاده از پالس ساعت خارجی ، مطابق شکل ۲۱پالس ساعت را به پایه XTAL1 اعمال کنید . و فیوز بیت های CKSEL 3:0 باید به صورت ۰۰۰۰H تنظیم شوند. در صورت برنامه ریزی فیوز بیت CKOPT ، یک خازن ۳۶PF بین XTAL1 و GND خواهد شد .
شکل ۲۱ : پالس خارجی
زمان Start Up توسط فیوز بیت SUT0 و SUT1 و برای زمان های مختلف قابل انتخاب است.
در حالت استفاده از پالس ساعت خارجی ، باید از تغییر ناگهانی در فرکانس به منظور جلوگیری از اختلال در عملیات پردازنده اجتناب کرد ، تغییرات بیش از %۲ از یک سیکل به سیکل بعدی ، ممکن است باعث بوجود آمدن حالت های ناخواسته شود . به همین دلیل اگر می خواهید فرکانس پالس ساعت را تغییر دهید . مطمئن شوید میکروکنترلر در وضعیت Reset است .
فصل دوم
برنامه BASCOM
فصل دوم
برنامه BASCOM :
۲-۱ محیط برنامه :
توضیحات در مورد این برنامه بسیار مفصل است اما ما در اینجا به توضیخات کلی فقط در مورد برخی دستور های پرکاربرد و در مورد بعضی از فرمانهاای که در کتابهای نوشته شده در مورد این برنامه وجود نداشت و ما در این برنامه استفاده کردیم اشاره می کنیم.
آشنایی با محیط این برنامه :
برنامه BASCOM دارای محیطی بسیار ساده می باشد که کار کردن با این برنامه را آسان می کند این برنامه دارای یک منو می باشد که دارای گزینه هایی مطابق با شکل نشان داده شده می باشد.
یک منوی دیگر که مخصوص برنامه ریزی و اکثرا میانبرهای منوی بالا هستند چیپ می باشد مطابق با شکل
اما چیزی که در برنامه نوشته شده ما اهمیت داشت کار با امکانات گرافیکی این برنامه می باشد در منوی TOOLS یکی از گزینه های انتخابی GRAPHIC CONVERTER نام دارد.
کار آن تبدیل عکسهای موجود با هر پسوندی به عکسهایی قابل فهم برای این برنامه با پسوند BGF می باشد
محیط این قسمت به شکل زیر می باشد که با تعیین نوع LCD و اندازه آن به دکمه LOAD عکس مورد نظر را به این برنامه وارد کرده و با دکمه SAVE عکس مورد نظر را به پسوند مورد قبول برای برنامه نبدیل می کنیم.
اما هنگامی که برنامه مورد نظر نوشته شد و کارهای گرافیک انجام شد با فشار دکمه F7 کامپایلر برنامه به آنالیز کردن برنامه مشغول و می شود و به جز اینکه برنامه را عیب یابی کرده و عیب های آن را به ما اعلام می کند برنامه را کامپال کرده و میزان فضای اشغال شده از حافظه ها را به ما اعلام می کند.
بعد از آن با فشار دکمه F4 به محیط برنامه ریزی می رویم که محیط این برنامه به شکل زیر است.
با ورود به این قسمت اگر چیپ مورد نظر وارد پرگرمر شده باشد و همه پورت ها درست به کامپیوتر وصل شده باشد برنامه خودکار چیپ را شناخته و نام آنرا اعلام می کند اما توضیح منوی این برنامه از سمت چپ به راست.
پاک کردن بافر
باز کردن یک فایل به بافر
ذخیره کردن فایل موجود در کامپایلر در یک فایل مورد نظر
برای ذخیره کردن بافر در درون FLASH ROM چیپ مورد استفاده قرار می گیرد.
برای خواندن FLASH ROM چیپ قرار گرفته در پرگرمر
برای چک کردن فضای خالی چیپ مورد استفاده قرار می گیرد
توسط این گزینه می توان محتوای بافر را در حافظه ROM یا EEPROM چیپ میکرو قرار داد.
برای پاک کردن میکرو
برای برنامه ریزی خودکار میکرو
خروج از این قسمت
در این قسمت اطلاعاتی از قبیل نوع چیپ و تعداد دفعاتی که این برنامه را بر روی چیپ ریخته شده است و همچنین میزان فضای اشغال شده و حافظه چیپ مورد نظر نیز مشاهده می شود
در زیر این قسمت نیز سه برچسب نیز مشاهده می کنید که یکی از انها محتوای FLASH ROM ویکی از آنها محتوای EEPROM و سوی نیز برای برنامه ریزی فیوز بیت ها استفاده می شود.
۲-۲ محیط برنامه نویسی :
برنامه یا همان کامپایلر BASCOM دارای فرمانهای بسیار زیادی است که هریک کاربرد خاصی دارد و هرچند می توان از برخی از دستورات با برنامه ای خاص به جای دستور دیگر استفاده کرد ولی پیشنهاد می شود که برنامه ای مورد استفاده قرار گیرد که دارای متغیرهای کمترتعداد خطهای کمتری باشد تا ضریب اطمینان این برنامه بیشتر شود قبل از برنامه نویسی هم پیشنهاد می شود به کتابهایی که در مورد زبان برنامه نویسی بیسیک نوشته شدهمراجعه شود چون زبان برنامه نویسی BASCOM مطابق با بیسیک است.
قبل از هر برنامه نویسی بر روی میکروکنترلر های AVR باید میکرو مورد نظر که برنامه نویسی بر روی آن انجام می شود را به BASCOM معرفی کرد که این کار توسط دستور یا فرمان
$REGFILE = VAR
استفاده می شود که VAR نام میکرو مورد نظر است که طبق موارد زیر باید انتخاب شود
در ضمن باید فرکانس لسیلاتور مورد استفغاده برای میکرو را نیز مشخص کرد حتی وقتی که از کریستال داخلی میکرو استفاده می شود که این کار توسط فرمان
$CRYSTAL = X
انجام می شود.
می توان حتی در این برنامه نیز از فرمانهای اسمبلی استفاده کرد یا آدرس شروع برنامه را در FLASH مشخص کرد یا حتی کلاک برخی از میکرو ها را به صورت نرم افزاری تغییر داد، که معمولا این کار برای کاهش مصرف تغذیه استفاده می شود.
اما اعداد و متغییر هایی که در این برنامه استفاده می شود. باید قبل از استفاده به میکرو معرفی شودو بعد آنها را به کار برد که این کار توسط فرمان
DIM var AS [XRAM/SRAM/ERAM] data type [AT location] [OVERLAY]
انجام می شود اما VAR نام متغیر و data type نوع آن است که بر حسب نیاز و از روی جدول زیر استفاده می شود.
عملیات ریاضی:
در این برنامه می توان از عملیات ریاضی نیز استفاده کرد که طبق جدول زیر است
تابع ABS : این دستور به معنای قدر مطلق است.
تابع EXP : همان عدد نپر به توان است
Target =Exp(source)
Target برابر e به توان Source است
تابع LOG10 :
Target = LOG10(Source)
لگاریتم پایه ۱۰ Source در Target قرار می گیرد
تابع RND :این تابع یک عدد تصادفی ین ۰ و Limit تولید میکند.
VAR = RND (Limit)
تابع SIN : این دستور سینوس عدد مورد نظر را که بر حسب رادیان است تولید می کند.
تابع COS : این دستور کسینوس عدد مورد نظر که بر حسب رادیان است تولید می کند.
تابع TAN : این دستور تانژانت عدد مورد نظر را که بر حسب رادیان است تولید می کند.
توابع دیگر : SINH , COSH , TANH , ASIN , ACOS , ATN , ATN2
تبدیل کدها و متغییر ها به یکدیگر:
می توان با فرمانها و دستور هایی انواع متغیر و کد را به یکدیگر تبدیل کرد.
این دستورات شامل : DEG2RTAD , RAD2DEG , ROUND , ASC , HEX HEXVAL MAKEBCD , MAKEDEC , MAKEINT , STR , VAL , STRING, BIN2GREY GREY2BIN
رجیستر ها و آدرس های حافظه:
تمام میکرو های AVR دارای ۳۲ رجیستر ۸ بیتی همه منظوره در CPU خود هستندو رجیستر ها ۳۰ با ۳۱ و ۲۹ با ۲۸ و ۲۷ با ۲۶ تشکیل سه رجیستر ۱۶ بیتی با نام های X,Y,Z را می دهند.
توسط فرمانهای زیر می توان این رجیستر ها را رهبری کرد.
دستوراتی که مربوط به این بخش است شامل : SET , TOGGLE , RESET , BITWAIT , CPEEK , CPEEKH , LOADADR , OUT , INP , PEEK , POKE , VARPTR ,
دستورالعملهای حلقه و پرش
با این دستورات می توان به برچسب مورد نظر پرش کرد یا حلقه های شرطی تولید کرد یا دستورات و برنامه های شرطی نوشت.
این دستورات شامل : JMP , GOTO , DO , LOOP , FOR , NEXT , WHILE WEND , IF , CASE , EXIT , ON VALUE
ایجاد تاخیر در برنامه : شامل دستوراتی است برای ایجاد تاخیرهایی حدودی در برنامه برای ایجاد تاخیر دقیق باید از تایمر ها استفاده کرد.
شامل دستوراتی از قبیل : DELAY , WAITus , WAITms , WAIT
پیکر بندی پورت ها : بحث در مورد پورت ها یکی از مفصل ترین بحث های میکرو می باشد ینی شناسایی تک تک پایه های میکرو برای استفاده بهینه از میکرو و صرفه جویی در هزینه و وقت و از همه مهمتر کوتاهی در برنامه
انجام پروژه متلب پورت ها همگی می توانند به عنوان ورودی و خروجی به برده شوند که باید برای میکرو مشخص گردد و همچنین هر یک کاری مشخص انجام می دهند به عنوان مثال پورت A در ATMEGA32 به عنوان مبدل آنالوگ به دیجیتال استفاده می شود و….
پیکربندی ADC
انجام پروژه متلب مبدل آنالوگ به دیجیتال باید برای میکروهایی که ADC داراند توسط این دستور پیکربندیشود تا بتوان از ان استفاده نمود مبدل داخلی میکرو دارای وضوح ۱۰ بیتی است و برای تبدیل با این وضوح نیاز به کلاکی بین ۵۰ تا ۲۰۰ کیلوهرتز می باشد و این کلاک را توسط تقسیم کریستال تامین میکند.
CONFIG ADC = SINGLE/FREE ,PRESCALER = AUTO , REFERENCE = OPTIONAL
SINFLE / FREE : برای تبدیل سیکناتل آنالوگ به دیجینتال می توان از دو مد مذکور استفاده کرد که زمانی که از SINGLE استفادهکی کنید باید از دستور GETADC)) برای تبدیل دیجیتال به آنالوگ استفاده کرد.
PRESCALER : این گزیسنه کلاک ADC را مشخص می کند که با قرار دادن AUTO کامپایلر با توجه به فرکانس اسیلاتور بهترین کلاک را برای ADC تعیین می کندهچنین می توان از اعداد ۲,۴,۸,۱۵,۳۲,۶۴,۱۲۸ استفادهخ کرد.
REFERENCE :گزینه ای اختیاری برای ولتاژ مرجع می باشد که می تواند دارای OFF برای خاموش کردن ولتاژ مرجع داخلی و استفاده از ولتاژ بر روی پایه AREF بعنوان ولتاژ مرجع انتخاب شود که نویز گیر آن به شکل زیر است
AVCC : زمانی که ولتاژ بر روی پایه به همین نام ولتاژ مرجع باشد و INTERNAL در زمانی استفاده میشود که ولتاژ مرجع داخلی ۲٫۵۶ مورد استفاده قرار گیرد که در این دوحالت نویز گیر به شکل زیر است .
دستورGETADC : با این دستور سیگنال آنالوگ وارد شده به کانال های ۰ تا ۷ به مقدار دیجیتال خود تبدیل می شود
دستور STOP , START :با دستور START ADC میکرو شروع به نمونه برداری می کند با دتستور STOP ADC میکرو این کار را متوقف می کند.
پیکر بندی LCD ها گرافیکی :
به طور کلی پیکر بندی LCD چه LCD های کاراکتری چه LCD های گرافیکی یا همان دات ماتریکس ها یکی از بهنرین امکاناتی است که بر روی میکروکنترلر های AVR قرار گرفته که باعث کوتاهی در برنامه شده است نکته قابل توجه اینجاست که میکرو کنترلر AVR فقط LCD هایی را مورد حمایت خود قرار می دهد که از چیپ T6963C در آنها استفاده شده باشد حتی این قدرت را نیز دارا می باشد که LCD های نوع SED را نیز مورد حمایت قرار دهد.
اما چگو نگی پیکر بندی :
Config GRAPHLCD = type , DATAPORT =port , CONTROLPORT=port,CE = pin , CD = pin , WR = pin , RD = pin , RESET = pin ,FS = pin , MODE =mode
اما توضیح ساختار این فرمان :
Type :نوع Lcd را مشخص می کند که می تواند یکی از انواع ۱۲۸*۲۴۰ و ۶۴*۲۴۰ و ۱۲۸*۱۲۸و ۶۴*۱۲۸ باشد برای lcd های نوع SED باید کلمه SED بعد از اندازه LCD آورده شود
DATAPORT :مشخص کننده پورتی است که به عنوان ورودی داده LCD استفاده می شود.
CONTROLPORT :مشخص کننده پورتی است که پایه های آن برای کنترل LCD استفاده می شود.
بعد از انتخاب پورت کنترل باید مشخص کرد که کدام پایه از میکرو مربوط به کدام یکی از پایه ها در LCD می باشد که این کار با قرار دادن شماره پایه از پورت مورد نظر در مقابل اسنم همان پایه در پیکر بندی انجام می شود.
MODE : می تواند ۶ یا ۸ باشد و مشخص کننده تعداد ستون متنیLCD و نوع فونت متنی LCD می باشد.
دستورات کار با LCD های گرافیکی :
دستور CLS : این دستور تمام قسمت صفحه نمایش را پاک می کند.
دستور CLS GRAPH :این دستور فقط قسمت گرافیکی را پاک می کند.
دستور CLS TEXT : این دستور فقط قسمت متنی را پاک می کند
دستور LCD : برای نوشتن متن بر روی LCD استفاده می شود
دستور PSET X,Y,COLOR :این دستور یک پیکسل را در مختصات X,Y به ازای COLOR=0 خاموش می کند و به ازای COLOR = 255 روشن می کند.
دستور LOATE ROW , COLUMN : این دستور مکان نما را در سطر و سطون مشخص قرار می دهد.
دستور CURSOR ON/OF BLINK/NOBLINK : با این دستور می توان مکان نما را در حالتهای روشن یا خاموش و چشمک زن یا چشمک نزن مورد استفاده قرار داد
دستور Line (X0,Y0)-(X1,Y1) , COLOR :با این دستور خطی از X0,Y0 تا X1,Y1خطی را به ازای رنگ ۲۵۵ رسم می کند و به ازای رنگ ۰ پاک می کند.
دستور CIRCLE (X0,Y0) , RADIUS , COLOR : به این فرمان دایره ای به شعاع X0 , Y0 و شعاع مشخص شده بر حسب پیکسل و رنگ مشخص شده (۰یا ۲۵۵) رسم می کند.
دستور SHOWPIC X,Y,LABLE : برای نمایش دادن عکس که قبلا با GRAPHIC CONVERTER برنامه BASCOM تبدیل شده و کنار برنامه ذخیره شده استفاده می شود، این عکس در مکان X,Y قرار می گیرد و LABLE نام برچسبی است که اطلاعات عکس مورد نظر در آن قرار دارد.
برچسب “FILE.BGF” $BGF : اشاره به فایل BGFیا همان عکس مورد نظر دارد که با نام FILE در کنار برنامه ذخیره شده است .
استفاده از CLOCK SOFT : استفاده از این قسمت که فقط بر روی برخی از میکرو ها قرار دارد خودشامل یادگیری بسیاری از فرمان ها می باشد که در کتابهای میرو کمنترلرها گفته نشده و فقط در HELP خود BASCOM موجود می باشد.
تایمر-کانتر شماره ۲ یا ۰ در برخی از میکرو ها می تواند به صورت آسنکرون کار کند و به عنوان ساعت واقعی یا همان RTC زمان و تقویم را تنظیم کند در این حالت کریستالی به مقدار ۳۲۷۶۸ در پایه های TOSC1 , TOSC2 برای تامین کلاک تایمر مورد استفاده قرار می گیرد که تایمر پس از ۱ ثانیه سرریز شده و برنامه RTC در زیر برنامه وقفه زمان را به روز می کند.
فصل سوم
سنسورها
فصل سوم
سنسورها
سنسورهای دما:
۳-۱ ترمومترهای شیشه ای(مایعی):
ترمومتر های شیشه ایدرطیف گستردهای به کار گرفته می شوند که از جمله آنها ترمومترهای جیوه ای و الکلی است کهاکثرا به عنوان نمایشگر هستند. صحت ترموترهای فوق بهتر از۱% و در انئاع صنعتی آن ها تا ۱۵/% امکان پذیر است و گستره دمای آن ها بین ۲۰۰- تا ۱۰۰۰ می تواند باشد لازم به ذکر است که موارد اختصاصی تا بالای ۱۵۰۰ در جه سانتیگراد نیز قابل دسترسی است.
۳-۲ ترمومتر های بی متال:
شکل ۲۲
اگر نوار های فلزی A,B با ضریب انبساط حرارتی متناوب به هم جوش خورده باشند در اثر افزایش دما نوار فلزی با ضریب انبساط بیشتر(B) طول بیشتر و نوار دیگر طول کمتر خواهد داشت. بنابراین, انتهای نوار نسبت به لبتدای آن به طرف نوار دوم انحنا پیدا می کند.در صورتی که این مبدل به صورت حلزونی ساخته شود به دلیل طول زیادی که پیدا میکند انتهای آزاد آن تغییر مکان بلیشتری خواهد داشت و در عمل به تفکیک پذیری بیشتر می انجامدبرای رسیدن به حساسیت بیشتراز نوارهای با آلیاژ های نیکل و برنز استفاده می شود. برای کاربردهای نمایشی می توان در انتهای آزاد بی متال عقربه ای قرار داد که به صورت انتقالیو یا چرخشی عمل کند گستره کار مبدل از ۷۵- تا ۱۵۰۰ درجه سانتیگراد و صحت آن حدود ۵/% است.
شکل ۲۳
۳-۳ ترمومترهای فشاری :
ترمومترهای فشاری عملا تغییرات فشار گازرا که در اثر تغییرات دما حاصل میشوداندازه گیری می کنند مبنای فیزیکی کار این ترمومترها قانون بویل گاز ها است و گستره کار آن ها از ۲۵۰- تا ۲۰۰۰ درجه سانتیگراد می باشد و صخت آنها ۵/% میباشد.
شکل ۲۴: ترمو مو تور فشاری
۳-۴ ترموکوپل:
اندازه گیری دما در ترموکوپل ها بر مبنای اثر سیبک است. دو هادی که دارای چگالی الکترون های آزاد متفاوتی در دمای مساوی هستند وقتی یک سر هر کدام از آن ها به هم جوش خورد الکترو نها از هادی با چگالی الاکترون های آزاد بیشتر به طرف هادی با چگالی الکترون های آزاد کم تر منتقل می شود و نتیجه آن به وجود آمدن حفره های مثبت از یک طرف و الکترون های آزاد در طرف
شکل ۲۵: ترموکوپل
دیگر است. ولتاژی که بدین طریق به وجود می آید ولتاژ پولتیر نامیده می شود. ولتاژ پولتیر تابع دمای نقطه اتصال و در حدود۱۰ تا ۵۰ میکرو ولت بر درجه سانتیگراد می بلاشد بعلاوه در هر هادی هموژن در اثر اختلاف دما در دو سر آن یک ولتاژ بوجود می آید که به نام تومسون نامی ده می شود و الکترون ها از انتهای گرم به طرف انتهای سرد سرازیر می شود و انتهای گرم نسبت به انتهای سرد مثبت تر می شود.
۳-۵ اندازه گیری دما از طریق تغییر مقاومت اهمی:
تغییرات دما موجب تغییر مقاومت اهمی فلزات و نیمه هادی ها می شود در مواردی که افزایش دما موجی افزایش مقاومت شود المان به PTC و در مواردی که مقاومت المان در اثر افزایش دما کاهشپیدا کند NTC نامیده می شود.
مبدل ها با ضریب حرارتی مثبت(PTC )
مقاومت الکتریکی فلزات مطابق رابطه زیر تغییر می کند:
R=R0(1+α۱T +α۲T2 + α۳T3+…+αnTn)
که دارای رفتار غیر خطی است و برای کاربرد های اندازه گیری مناسب نیست.
البته با توجه به خیلی کوچ بودن ضرایب α به بالا می توان از ترم های دوم به بعد صرف نظر کرد.
اگر منحنی های فلزات متفاوت را مورد بررسی قرار دهیم می بینیم که منحنی پلاتین تقریبا خطی است که تنها امتیاز آن نیست بلکه رفتار شیمیایی ایده آل و گستردگی گستره دمای قابل اندازه گیری بوسیله حسگر ساخته شده از آن از محاسن بزرگ آن محسوب می شود اما تنها عیب آن این است که دارای قیمت خیلی گرانی می باشد.
ترمیستورها یا (NTC ) :
ترمیستور ها از مواد نی مه هادی هستند که هز اکسیدفلزهای گروه آهن از قبیل کرم , کبالت, آهن, منگنز و نیکل ساخته می شوند. مقاومت مواد مزکور با تغییرات دما مطابق رابطه زیر تغییر میکند.
R = R0expβ(۱/T-1/T0)
شکل ۲۶: مقاومت اهمی
برای مقایسه یک NTC با یک PTC مفاومت خیلی بالای ترمیستورها از محاسن آن محسوب می شود که امکان استفاده از اتصال دوسیمه بدون سیم های جبرانی را بدست می دهد ترمیستور ها به موازات انمتباز زیاد بودن مقاومت دارای یک عیب بزرگ نیز هستند و آن این است که رفتار آن ها در فاصله خیلی کم خطی است.
۳-۶ سنسور LM35 :
این سنسور یک سنسور با حساسیت بالا و دقیقا خطی می باشد که با این صورت که به ازای هر درجه ۱۰میلی ولت به خروجی آن اضافه می شود و مزیتی که نست به بقیه سنسورها دارد با ولتاژ ۵ ولت به راحتی کار می کند و به همین دلیل در جاهایی که از میکرو کنترلر ها استفاده می شود به صورت فراوان از این سنسور استفاده میشود اما یک عیب بزرگی که برای این سنسور می توان نام برد این است که دارای عمر زیادی نمی باشد و لحظه ای که داری مشکل می شود می توان به میکرو نیز آسیب زیادی وارد کند به همین دلیل در صنعت به هیچ وجه از این سنسور استفاده می شود یا اگر استفاده شود در موارد خاصی استفاده می شود.
فصل چهارم
طراحی و ساخت یک کنتر ل دمای دیجیتالی تابلو های برق
فصل چهارم
طراحی و ساخت یک کنتر ل دمای دیجیتالی تابلو های برق:
این برنامه از دمای داخل و خارج محفظه مورد نظر نمونه گیری کرده و با دمای پایه (مطلوب ) ذخیره شده در میکرو مقایسه می کند . باتوجه به ایکه دمای داخل از دمای پایه(مطلوب) کمتر یا بشتر باشد هیتر یا فن را روشن می کند همچنین در دمای پایه هر دو دستگاه را خاموش می کند .
نکته قابل توجه در این برنامه این است که دمای پایه نیز قابل تغییر است که توسط کار بر این کار انجام می شود.
۴-۱ توضیح برنامه نوشته شده :
$regfile = “m32def.dat”
Case 1
$crystal = 8000000
Config Adc = Single , Prescaler = Auto , Reference = Internal
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , Rs = Portb.2 , E = Portb.3
Config Lcd = 16 * 2
Dim A As Byte , Up As Byte , Down As Byte , Qualify As Word , B As Byte , C As Integer , D As Byte , Dama1 As Word , Dama2 As Word
Dim Dama3 As Word , Dama4 As Word , E As Byte , F As Byte , G As Byte , Sum1 As Word , Sum2 As Word
G = 0
A = 1
Up = 30
Down = 10
Qualify = 20
E = 20
F = 20
Config Portd.4 = Output
Config Pind.5 = Output
Config Pind.6 = Output
Start Adc
Cls
Cursor Off
Lcd “welcome”
Wait 2
Cls
معرفی نوع IC استفاده شده در پروژه
معرفی فرکانس کریستال میکرو
پیکربندی آنالوگ به دیجیتال
پایه های LCD متصل به میکرو معرفی می شوند.
تعین نوع LCD
تعریف نوع متغیرها
تعیین مقادیر اولیه و پیش فرض ها
Main:
Do
Gosub Andaze
Gosub Rele
If Pind.0 = 1 Then
Sound Portd.4 , 1 , 50000
Incr A
Waitms 300
End If
If Pind.1 = 1 Then
Sound Portd.4 , 1 , 50000
Decr A
Waitms 300
End If
If A = 0 Then A = 4
If A = 5 Then A = 1
If Pind.2 = 1 Then
Sound Portd.4 , 1 , 50000
Waitms 300
A = 1
Cls
Goto Menu
End If
Select Case A
Home
Lcd “tempreture in: ”
Locate 2 , 1
Lcd Dama1 ; ” ”
Case 2
Home
Lcd “tempreture out:”
Locate 2 , 1
Lcd Dama2 ; ” ”
Case 3
Home
Lcd “heater ”
Locate 2 , 1
If E = 10 Then Lcd “on ”
If E = 20 Then Lcd “off”
Case 4
Home
Lcd “fan ”
Locate 2 , 1
If F = 10 Then Lcd “on ”
If F = 20 Then Lcd “off”
End Select
Loop
برنامه اصلی
نمایش دمای داخلی تابلو
نمایش دمای بیرون تابلو
با توجه به موارد فوق و دماهای پیش فرض فن و هیتر روشن و خاموش می شوند .
کارهای تکراری در کل برنامه عبارتند از اندازه گیری دماهای داخلی و خارجی و کنترل اتوماتیک رله هاست .
با استفاده از کلید enter به زیر برنامه menu پرش می کنیم .
موقعیت فن و هیتر را به کاربر اعلام می کند که می توان با کلید بالا و پایین منوهای نمایشی را تغییر داد .
Menu:
Do
Gosub Andaze
Gosub Rele
Home
If Pind.0 = 1 Then
Sound Portd.4 , 1 , 50000
Incr A
Waitms 300
End If
If Pind.1 = 1 Then
Sound Portd.4 , 1 , 50000
Decr A
Waitms 300
End If
If A = 4 Then A = 1
If A = 0 Then A = 3
Select Case A
Case 1
Lcd “setting”
If Pind.2 = 1 Then
Sound Portd.4 , 1 , 50000
Waitms 300
Goto Tanzim
End If
Case 2
Lcd “manual ”
If Pind.2 = 1 Then
Sound Portd.4 , 1 , 50000
Waitms 300
Goto Manual
End If
Case 3
Lcd “about ”
If Pind.2 = 1 Then
Sound Portd.4 , 1 , 50000
Waitms 300
Goto Help
End If
End Select
If Pind.3 = 1 Then
Sound Portd.4 , 1 , 50000
Waitms 300
Cls
Goto Main
End If
Loop
منوی برنامه (menu) :
در این منو می توان با استفاده از کلید های بالا و پایین و کلید enter به یکی از تنظیمات حالت دستی یا تنظیمات مقادیر پیش فرض و معرفی شده توسط سازنده ی دستگاه را دست یافت که می توان به زیر برنامه های tanzim و manual و about پرش کرد .
Tanzim:
Do
Gosub Andaze
Gosub Rele
Home
If Pind.0 = 1 Then
Sound Portd.4 , 1 , 50000
Incr A
Waitms 300
End If
If Pind.1 = 1 Then
Sound Portd.4 , 1 , 50000
Decr A
Waitms 300
End If
If A = 4 Then A = 1
If A = 0 Then A = 3
Select Case A
Case 1
Lcd “temp up ”
If Pind.2 = 1 Then
Sound Portd.4 , 1 , 50000
Waitms 300
B = Up
Gosub Tt
Up = B
End If
Case 2
Lcd “temp down ”
If Pind.2 = 1 Then
Sound Portd.4 , 1 , 50000
Waitms 300
B = Down
Gosub Tt
Down = B
End If
Case 3
If Pind.2 = 1 Then
Sound Portd.4 , 1 , 50000
Waitms 300
B = Qualify
Gosub Tt
Qualify = B
End If
Lcd “temp qualify”
End Select
If Pind.3 = 1 Then
Sound Portd.4 , 1 , 50000
Waitms 300
Cls
Goto Menu
End If
Loop
Tt:
C = B
Do
Gosub Andaze
Gosub Rele
Locate 2 , 1
Lcd C ; ” ”
If Pind.0 = 1 Then
Sound Portd.4 , 1 , 50000
Waitms 300
Incr C
End If
If Pind.1 = 1 Then
Sound Portd.4 , 1 , 50000
Waitms 300
Decr C
End If
If Pind.3 = 1 Then
Sound Portd.4 , 1 , 50000
Waitms 300
Locate 2 , 1
Lcd ” ”
Return
End If
If Pind.2 = 1 Then
Waitms 300
Sound Portd.4 , 1 , 50000
B = C
Locate 2 , 1
Lcd “SAVE ”
Locate 2 , 1
Wait 2
Lcd ” ”
Sound Portd.4 , 1 , 50000
Waitms 300
Return
End If
If A = 1 Then
If C > 240 Then C = Down
If C < Down Then C = 240
End If
If A = 2 Then
If C < 1 Then C = Up
If C > Up Then C = 1
End If
If A = 3 Then
If C > Up Then C = Down
If C < Down Then C = Up
End If
Loop
زیر برنامه Tanzim :
در این زیر برنامه می توان یکی از مقادیر پیش فرض بالا و پایین و مقدار مطلوب را انتخاب کرد و با زدن کلید enter مقدار آن را در زیر برنامه tt تغییر داد
در زیر برنامه tt با توجه به مقدار a میتوان فهمید که کدام گزینه اتخاب شده است . در این زیر برنامه از دو مقدار واسط به نام های b و c استفاده شده است ،که ابتدا مقدار c را تغییر داده و برای ثبت ، آن را در b ذخیره می کنیم تا از تنظیم ناخواسته مقادیر اولیه خودداری کنیم .
Andaze:
Incr G
Dama3 = Getadc(0)
Dama4 = Getadc(1)
Sum1 = Sum1 + Dama3
Sum2 = Sum1 + Dama4
If G = 10 Then
G = 0
Dama1 = Sum1 / 40
Dama2 = Sum2 / 40
Sum1 = 0
Sum2 = 0
End If
Return
زیر برنامه andaze :
در این زیر برنامه ۱۰ بار از دمای داخل و خارج نمونه برداری می کنیم و با توجه به مقادار متوسط نمونه برداری ها مقدار متوسط دمای داخل و خارج را محاسبه می کنیم .
Help:
Home
Lcd “leila heidary”
Locate 2 , 1
Lcd “tanzim dama”
Do
If Pind.3 = 1 Then
Sound Portd.4 , 1 , 50000
Waitms 300
Cls
Goto Menu
End If
Loop
زیر برنامه help :
در این زیر برنامه می توان اطلاعات اضافی و کمکی درمورد پروژه را مشاهده کرد.
Rele:
If Dama1 = Qualify Then
Reset Portd.5
E = 20
Reset Portd.6
F = 20
End If
If Dama1 > Qualify And Dama1 <= Up Then
Set Portd.6
F = 10
Reset Portd.5
E = 20
End If
If Dama1 < Qualify And Dama1 >= Down Then
Set Portd.5
E = 10
Reset Portd.6
F = 20
End If
If Dama1 > Qualify And Dama1 > Up Then
Set Portd.6
F = 10
Reset Portd.5
E = 20
End If
If Dama1 < Qualify And Dama1 < Down Then
Set Portd.5
E = 10
Reset Portd.6
F = 20
End If
Return
زیر برنامه rele :
در این زیر برنامه رله ها یا همان فن و هیتر به صورت اتوماتیک تنظیم می شوند که اگر دمای داخل از دما بالا بیشتر بود، فن روشن می شود و اگر از دمای پایین کمتربود، هیتر روشن می شود و سعی می شود که دمای داخل تابلو نزدیک دمای مطلوب نگه داشته شود.
Manual:
Do
Gosub Andaze
Gosub Rele
Home
If Pind.0 = 1 Then
Sound Portd.4 , 1 , 50000
Incr A
Waitms 300
End If
If Pind.1 = 1 Then
Sound Portd.4 , 1 , 50000
Decr A
Waitms 300
End If
If Pind.3 = 1 Then
Sound Portd.4 , 1 , 50000
Goto Menu
Waitms 300
End If
If A = 3 Then A = 1
If A = 0 Then A = 2
Home
Select Case A
Case 1
Lcd “heater”
If Pind.2 = 1 Then
Sound Portd.4 , 1 , 50000
Waitms 300
D = E
Gosub Onoff
End If
Case 2
Lcd “fan ”
If Pind.2 = 1 Then
Sound Portd.4 , 1 , 50000
Waitms 300
D = F
Gosub Onoff
End If
End Select
Loop
Onoff:
Do
Gosub Andaze
Locate 2 , 1
If Pind.2 = 1 Then
Sound Portd.4 , 1 , 50000
Waitms 300
If D = 10 Then
D = 20
Goto Onoff
End If
If D = 20 Then
D = 10
Goto Onoff
End If
End If
Select Case A
Case 1
If D = 10 Then
Lcd “on ”
Set Portd.5
End If
If D = 20 Then
Lcd “off”
Reset Portd.5
End If
Case 2
If D = 10 Then
Lcd “on ”
Set Portd.6
End If
If D = 20 Then
Lcd “off”
Reset Portd.6
End If
End Select
If Pind.3 = 1 Then
Sound Portd.4 , 1 , 50000
Locate 2 , 1
Waitms 300
Lcd ” ”
Goto Manual
End If
Loop
زیر برنامه manual :
با توجه به مقدار a می توان فهمید که فن یا هیتر را باید خاموش یا روشن کرد که این کار کاملا به صورت دستی انجام می شود واین قسمت در مواقعی استفاده می شود که در قسمت اتومات مشکلی پیش آمده باشد و از زیر برنامه ی onoff نیز در این قسمت استفاده می شود.
۴-۲ شکل مدارو توضیحاتی در مورد آن:
شکل مدار
این مدار شامل:
انجام پروژه متلب میکرو M32 : جهت کنترل و اندازه گیری دمای داخلی و خارجی از آن استفاده شده است و در واقع مغز متفکر و هوشمند مدار می باشد .
LCD 16*2 : جهت نمایش و اطلاع رسانی به کار بر از آن استفاده شده است و کل نمای دستگاه که کار بر از آن استفاده می کند همین قسمت است .
OPAMP CA3140 : این IC یک OP AMP بدون آف ست و دارای سوئیچ زنی بالاست که در این مدار جهت تقویت ولتاژ خروجی از میکرو و مقایسه با ولتاژ رفرنس برای خاموش و روشن کردن رله استفاده شده است .
ترانزیستور: جهت تقویت جریان خروجی آپ امپ از آن استفاده شده است.
رله : جهت قطع و وصل فن و هیتر که این رله از نوع ۹ ولت DC می باشد.
مقاومت ۱۰Kو۱۰۰K : در این مدار به عنوان مقاومت های پایین کش برای کلید ها و پا یه های رله استفاده شده است .
LM 35 : جهت اندازه گیری دما مورد استفاده قرار می گیرد.
پتانسیومتر : برای تنظیم ولتاژ رفرنس OP AMP هاست
دیود : این دیود به عنوان هرز گرد برای رله ها استفاده شده است که درموقع قطع رله، سیم پیچ رله از طریق آن دشارژ شود .
کلید SW1 : به عنوان کلبد UP استفاده میشود
کلید SW2 : به عنوان کلید DOWN استفاده می شود
کلید SW3 : به عنوان کلید CANCEL استفاده میشود
کلید SW4 : به عنوان کلید ENTER استفاده می شود
نتیجه گیری :
میکرو کنترلری که در این پروژه استفاده شده ATMeg32 است که برنامه نویسی وکار با این نوع IC به علت قابلیت هایی که دارد، آسان است . دستگاهی که طراحی و ساخته شده در مناطق کوهستانی و سرد به علت تغییرات دمایی در این مناطق،کاربرد زیادی دارد.
دیدگاه ها