بخشی از مقاله
مدار كيكروكنترلر
در بسياري از مدارات ديجيتالي ( ميكروكنترلي ) كه با برق و باطري كار مي كنند با دو مشكل مواجه مي باشيم :
1- مشكل اول مربوط به عملكرد است. يعني عملكرد نمايش LCD با ولتاژ 5 ولت است در حالي كه اين مدارات در هنگام استفاده از خازن پشتيبان و باطري داراي ولتاژ 6/3 تا 5 ولت هستند.
2- مشكل دوم گراني باطري و دشوار بودن تعويض آن است . در بعضي از اين مدارات مثل كنتور ديجيتال تعويض باطري بسيار دشوار است در نتيجه بايد تا حد امكان مصرف را در حالت استفاده از خازن و باطري كم كرد در حالي كه دستگاه بايد به كار خود ادامه دهد.
1-2- مراحل انجام پروژه :
در اين پروژه جهت بررسي و حل اين دو مشكل يك مدار ميكرو كنترلي مثل ساعت ديجيتالي طراحي شده است و به حل مشكلات فوق پرداخته شده است اين ساعت بايد از نمايشگر 5 ولت استفاده كند و بتواند حداكثر به مدت 5000 ساعت در صورت استفاده از باطري 6/3 ولتي و 2/1 آمپر ساعتي در حالت قطع برق به كار خود ادامه دهد.
در طراحي اين مدار براي حل مشكل اول سعي شده است كه براي تامين ولتاژ 5 ولت LCD از تبديل ولتاژ DC به كمك يك مبدل DC/DC استفاده كنيم تا زماني كه ولتاژ ما 6/3 ولت است با يك آ ي سي Admbbo ولتاژ 2/7 توليد كنيم ( در ادامه خواهيم ديد اين آ ي سي يك دوبل كننده ولتاژ است) و بعد باكمك زنريك ولتاژ 5 ولت تحويل LCD مي دهيم و براي حل مشكل دوم سعي شده است كه تا زماني كه LCD از تغذيه اصلي استفاده نميكند از خازن پشتيبان تغذيه شود و بعد از مدت زماني كه تعريف مي كنيم ( در نرم افزار سيستم بررسي مي شود) ميكرو از طريق يك Mosfet از باطري استفاده ميكند كه توسط مبدل DC/DC و زنر به ولتاژ 5 ولت تبديل شده است.
فصل 2 - تئوري اي مرتبط با پروژه
2-1- مقدمه :
تئوري هايي كه در مورد پروژه وجود دارد به چندين بخش تقسيم مي شوند يكي از اين بخشها دستورات ميكروكنترلرAVR است كه بطور نسبتاً مشروح بيان شده اند البته در اين قسمت توجه شود كه از مباني مربوط به تايمرها ، وقفه ها ، كار با پورتها و ... بيشتر استفاده شده است و برخي مسائل نيز جهت آشنايي كامل تر خواننده با اين ميكروكنترلر آورده شده است. در مورد تئوري هاي مربوط به نرم افزار سيستم نيز مطالبي به طور كلي در اين فصل آورده شده است اما
توضيحات دقيق تر مربوط به نرم افزار ( صرف نظر از مطالب كلي ) در جاي خود در فصل هاي آينده بررسي شده است . خلاصه مطلب آنكه نكات تئوري مطرح شده در اين فصل كليات تئوري سيستم هستند و نكات ريز در فصل هاي مربوط به خود بحث شده اند.
فصل 3- بررسي سخت افزار سيستم
3-1-مقدمه :
در اين قسمت ابتدا يک بلوک دياگرام کلي از سيستم ارائه مي دهيم که در آن سخت افزار سيستم به طور کلي و به صورت بلوکي رسم شده است بعد از رسم اين بلوک و توضيحات مربوط به آن نقشه کامل مدار و توضيحات مربوط به نقشه به طور كامل بيان شده است. در آن قسمت برخي جزئيات که در بلوک دياگرام قابل مشاهده نمي باشد به طور کامل مورد بررسي قرار مي گيرد . در اين قسمت توضيحات مربوط شامل نيازهاي مدار و دلايل به کار بردن هر قطعه مي باشد . البته در لابلاي توضيحات سخت افزار نکات ديگري که در هنگام بستن مدار مطرح شده بررسي مي شود مثلا استفاده از زنر براي ساختن رگولاتور به جاي آي سي رگولاتور و يا مثلا استفاده از يک مقاومت به خصوصي در مسير مدار رگولاتور و مواردي از اين قبيل که تا اندازه اي که باعث طولاني شدن مطلب نشود بحث و بررسي مي شود.
3-2- بلوک دياگرام سيستم :
3-3-توضيحات مربوط به دياگرام :
3-3-1- تغذيه :
قسمت تغذيه به منظور فراهم کردن ولتاژ5 ولت DC مي باشد که جهت راه اندازي IC ميکروکنترلر و کليه مدارات سازگار با TTL به کار کمي رود . ورودي قسمت تغذيه مي تواند يک سيگنال AC يا DC باشد که الزاما به اندازه چند ولت از +5 بيشتر است. اين ورودي توسط يك سوييچ ON-OFFقطع و وصل مي شود. در حالتيكه سوييچ روشن است ، خازن مربوطه به علت ظرفيت بالايش باعث مي
شود كه ولتاژي تقريبا صاف بدست آيد كه داراي اندكي رايپل است.براي ايجاد يك ولتاژ 5 ولت کاملا DC از يک IC تنظيم کننده ولتاژ 780S استفاده مي کنيم که ورودي داراي اعواجاج را به يک ولتاژ کاملا مستقيم پنج ولت تبديل مي کند در خروجي تنظيم کننده ولتاژ يک خازن 10 ميكروفاراد قرار داده ايم که اين خازن به اندازه 5 ولت شارژ خواهد شد که نوسانات خروجي ناشي از تغييرات بار را کاهش مي دهد.
3-3-2- رله :
رله به کار رفته در مدار فقط براي اين است که چک کنيم تغذيه است يا خير هرگاه رله وصل باشد يعني تغذيه وصل است و هرگاه قطع باشد يعني تغذيه قطع است . اينجا ذکر يک نکته در مورد رله لازم استو آن اينکه رله چون جريان را از آداپتور مي گيرد باعث نمي شود كه بخاطر زياد شدن مصرف جريان کاهش پيدا کند.
3-3-3- ميکروکنترلر AVR :
در مورد اين بلوک مطالب فراواني را مي توان مورد بررسي قرار داد . در اينجا به ذکر برخي خصوصيات آن مي پردازيم . لازم به ذکر است مطالب دقيق تر در قسمت تئوري هاي مربوط با پروژه در فصل 2 بررسي شده است .
الف - استفاده از معماري AVR Risc
- کارايي بالا و توان مصرفي کم
- داراي 131 دستور العمل که اکثرا در يک کلاک سيکل اجرا مي شوند.
- 8* 32 رجيستر کاربردي
- سرعتي تا mps 16 در فرکانس mhz 16
ب- حافظه، برنامه و داده غير فرار
- KB 16 حافظه FLASH قابل برنامه ريزي داخلي
- 1204 بايت حافظه داخلي SRAM
- 512 بايت حافظه EEPROM
- قفل برنامه FLASH و حفاظت داده EEPROM
ج - خصوصيات جانبي
- دو تايمر - کانتر 8 بيتي با PRESCALER مجزا و مد COM PARE .
- يک مقايسه گر آنالوگ داخلي
- يک تايمر - کانتر 16 بيتي با PRESCALER مجزا
- WATCH DOG قابل برنامه ريز با اسيلاتور داخلي
- وقفه در اثر تغيير وضعيت پايه
د- خصوصيات ويژه ميکروکنترلر
- ON RESET - POWER - OUT - BROWN CIRCUTT برنامه ريزي .
- منابع وقفه (INTERRUPT ) داخلي و خارجي .
- داراي 6 حالت SLEEP .
- OWER – ON RESET CIRCUTT براي ATTING 12
- عملکرد کاملا ثابت
- توانت مصرفي پايين و سرعت بالا توسط تکنولوژي CMOS.
ﻫ - توان مصرفي در 25,3V.1MHZ براي ATMEGAIGL
- حالت فعال 10/MA
- در حالت بي کاري 0.35 MA
- در حالت 1 UA : POWER – DOWN
و - ولتاژ عملياتي يا کاري
- 2.7 V تا 5.5V براي ATMEGA 16 L
- 4.5 V تا 5.5 V براي ATMEGA 16
خ - فرکانس هاي کاري
- 0 MHZ تا 8 MHZ براي Atmega 16L
- 0 MHZ تا 16 MHZ براي Atmega
ج - انواع بسته بندي
- 32 خط ورودي / خروجي قابل برنامه ريزي
- 40 پايه PDIP , 44 پايه TQFP و 44 پايه MLF
3-3-4 LCD :
LCD مورد استفاده در اين پروژه 16 × 2 بوده و به کارگيري در سيستم شامل استفاده از دستورات مختلفي مي شود که دستورات و توابع مربوط به LCD ناميده مي شود . همچنين پايه هاي LCD براي اتصال به پايه هاي ميکرو به صورت زير پيکره بندي مي شوند :
CONFIG LCD PIN = PIN , D84 = PN . DBS = PN .
DB6 = PN , DB7 = PN , E = PN , RS = PN
PN پايه اي دلخواه از ميکرو است که پايه هاي LCD بايد در يک خط نوشته شود و يا در ادامه آن با علامت Cunder Line – در خط بعد نوشته شود .
3-3-5- MOS Switch
در اين پروژه 2 عدد MOS به عنوان کليد استفاده شده است يکي براي سوئيچ کردن خروجي ADM 660 روي ميکرو و ديگري براي LCD . توضيحات بيشتر در مورد عملکرد کليد ها در صفحات بعدي بررسي مي شود .
3-3-6- ADM 660
اين آ ي سي يک مبدل DC/DC مي باشد که ولتاژ ورودي خود را 2 برابر مي کند . ما در انجام اين پروژه از آي سي براي تبديل ولتاژ 6/3 ولت باطري به 2/7 ولت استفاده کرديم .
البته در مرحله بعد توسط يک رگلاتور زنري ما به ولتاژ 5 ولت دست پيدا کرديم . دليل استفاده از اين آ ي سي در قسمت هاي بعدي مورد بررسي قرار مي گيرد .
در مدار پيوست طريقه اتصالات پايه هاي آ ي سي مورد نظر را مي بينيد دقت کنيد که ظريفت خازن هاي به کار رفته 10 ميكروفاراد مي باشد.
3-4 نقشه کامل مدار و توضيحات مربوط به آن :
3-4-1 مقدمه :
در بلوک دياگرام مدار رسم شده در پيوست ، توضيحات هر بلوک نوشته شده و در اين قسمت توضيحات دقيق تري در مورد مدار مربوطه نوشته مي شود.
در اين بخش ما قصد داريم در مورد نحوه و چگونگي ارتباط اجزا مختلف مدار با يکديگر بررسي داشته باشيم . همچنين چنانچه نکاتي وجود داشته باشد که در هنگام انجام پروژه با آن برخورد داشته ايم ( نکات خاص ) آنها هم مورد بررسي قرار مي گيرند .
در اين قسمت ابتدا نقشه کلي مدار در پيوست ملاحظه مي گردد و سپس در صفحات بعد توضيحات کامل مربوط به عناصر بررسي خواهند شد.
3-4-2- توضيحات مربوط به نقشه کامل مدار :
همانطور که در نقشه پيوست مي بينيد اولين قسمت مدار يک منبع تغذيه است که شامل يک عدد پل ديود، يک آ ي سي رگولاتور و يک عدد خازن صافي مي باشد. قسمت تغذيه به منظور فراهم کردن ولتاژ 5 ولت DC مي باشد که جهت راه اندازي IC ميکروکنترلر و کليه مدارات سازگار با TTL به کار مي رود . ورودي قسمت تغذيه مي تواند يک سيگنال AC يا DC باشد . اين ورودي توسط يک سوئيچ ON – OFF قطع و وصل مي شود . در حالتي که سوئيچ روشن است ورودي وارد يک پل ديود مي شود و بعد به کمک يک خازن صاف مي شود . اين خازن به علت ظرفيت بالاي خود باعث مي شود ولتاژي تقريباً DC به دست آيد که داراي ريپل است براي ايجاد يک ولتاژ +5 کاملاً DC از يک آ ي سي تنظيم کننده ولتاژ 780S استفاده شده است که ورودي داراي اعوجاج را به يک ولتاژ کاملاً مستقيم 5 ولت تبديل مي کند .
در خروجي تنظيم کننده ولتاژ يک خازن 10 ميلي فاراد قرار داده شده است . که به اندازه 5 ولت شارژ خواهد شد که نوسانات خروجي ناشي از تغييرات بار را کاهش مي دهد.
بعد از اين قسمت يک مقاوت 470 اهم و يک عدد LED در مدار تعبيه شده است که LED براي نشان دادن اين است که مدار تغذيه وصل است و کار مي کند و مقاومت 470 اهم براي محافظت LED است تا نسوزد.
بعد از مقاومت و LED و قبل از رله ديود داريم که اين ديود هرز گرد رله است و المان بعدي رله است . رله به کار رفته در مدار براي اين است که چک کنيم تغذيه وصل است يا خير و اين يعني هرگاه رله وصل شود تغذيه برقرار است .
همانطور که در نقشه پيوست هم مي بينيد خروجي هاي رله به ميکروکنترلر و يکي از سوئيچ ها وصل مي شود. تغذيه ميکرو از 5 ولت منبع تغذيه است .
MOS هاي به کار رفته در مدار به عنوان Switch مورد استفاده قرار مي گيرند . MOS وصل شده به ADMBBO وظيفه دارد تا 5 ولت خروجي اين آ ي سي را به ميکرو اعمل کند . همانطور که در قسمت نرم افزار هم توضيح خواهيم داد بعد از اينکه تغذيه اصلي قطع شود خازن پشتيبان شروع به تغذيه ميکروکنترلر مي کند ( در مدتي که تغذيه اصلي وصل است خازن شارژ مي شود ) بعد از مدت زمان مشخصي که ما اين مدت زمان را در نرم افزار سيستم معلوم مي کنيم با فشار دادن
پوش با تن وصل شده به پايه 16 ميکروکنترلر يک اينتراپت صادر مي شود و ميکرو از طريق کليد MOS مربوط به ADM 660 وصل مي شود و از آن تغذيه مي کند . در مورد خازن پشتيبان ذکر اين نکته لازم است که اين خازن بعد از خاموش شدن تغذيه اصلي بايد بتواند تا 24 ساعت ميکرو را تغذيه کند يعني مدت زمان شارژ خازن بايد تا 24 ساعت طول بکشد . MOS ها چون داراي امپدانس ورودي بالايي هسنتد از ميکرو جرياني نمي کشند.
پوش با تن متصل به پايه شماره 9 ميکرو براي Reset کردن آن است . در مورد LCD هم در قسمت قبل و در توضيحات مربوط به بلوک دياگرام توضيحاتي کامل داده شده است. LCD هم با کمک يک کليد که به نام MOSFET LCD ناميده مي شود کار مي کند اين MOS به PORT A.O وصل است. قطعه 2 پايه نقره اي کنار ميکرو هم کريستال خارجي آن است . دليل استفاده از اين کريستال آن است که ما براي ساعت نياز به تايمر داريم و درمد Power save فقط تايمر 2 است که در حالت آسنکرون کار مي کند . فرکانس نوشته شده روي اين کريستال 32768 است از طرفي ما در برنامه نرم افزاري مربوطه Presale را 128 تعريف کرديم و اين يعني اينکه اگر 256 پالس روي ميکرو بيايد مي شود يک ثانيه و به اين ترتيب يک تايمر براي ساعت سازي ايجاد مي کنيم .
المان ديگر به کار رفته در مدار آ ي سي AMD 660 مي باشد . اين آ ي سي يک مبدل ولتاژ DC به DC است. به طوري که ولتاژ ورودي خود را 2 برابر مي کند همانطور که در قسمت بلوک دياگرام ها توضيح داده شد ما از اين آ ي سي براي تبديل ولتاژ 6/3 ولت به ولتاژ 2/7 ولت استفاده کرديم و بعد با کمک يک زنر ولتاژ 5 ولت ثابت به ميکرو تحويل داديم .
نحوه اتصلات پايه هاي اين آ ي سي در قسمت هاي قبلي بررسي شد .
3-5- چگونگي کارکرد مدار :
براي توضيح چگونگي کارکرد مدار بهتر است ابتدا بررسي کنيم هدف از انجام اين پروژه چه بوده است و بعد بررسي کنيم که براي حل مشکلات مطرح شده، مدار چگونه کار مي کند.
همانطور که در قسمت ضرورت ها و نيازها توضيح داده شد مشکل اول ما عملکرد سيستم بود يعني LCD با ولتاژ 5 ولت کار کار مي کند اما مدارات ما هنگام استفاده از خازن پشتيبان و باطري داراي ولتاژ 6/3 تا 5 ولت هستند و مشکل دوم گراني باطري و دشواري تعويض آن بود که باعث مي شد تا کاري کنيم که تا حد امکان مصرف در حالت استفاده از خازن و باطري کم شود.
براي اين منظور در مدار طرح شده ابتدا با فشردن کليد اصلي سر راه منبع تغذيه LCD روشن شده و يک کاراکتري که به طور دلخواه در نرم افزار سيستم تعريف مي شود را نشان مي دهد در اين مدت خازن پشتيبان شروع به شارژ شدن مي کند .حال بعد از مدتي که اين زمان را ما در نرم افزار سيستم تعريف مي کنيم تعذيه ميکرو و از خازن به روي باطري سوئيچ مي شود . حال ما با فشار دادن پوش با تن مربوط که روي برد اين کليد رنگي است مي توانيم يک فرمان اينتراپت صادر کنيم و ميکرو از اين حالت به سوئيچ مربوطه که يک MOS است فرمان مي دهد تا خروجي آ ي سي ADM660 را روي ميکرو بياورد و ما باز هم کاراکتر تعريف شده در نرم افزار را روي صفحه نمايش LCD مي بينيم . بعد از گذشت 5 ثانيه ( زماني که نرم افزار سيستم تعريف مي شود ) نمايش کاراکتر روي LCD قطع شده و ميکرو به Stand by مي رود.
فصل 4 - نرم افزار
4-1- مقدمه اي بر نرم افزار مورد استفاده و كامپايلر به كار رفته
انواع متنوعي ازكامپايلرهاي AVR عرضه شده اند كه از بين آنها كامپايلرهاي CODE VISION , BASCOM و FASTAVR استفاده كرديم . BASCOM تمام ميكروهاي AVR را حمايت كرده و از زبان BASIC براي برنامه نويسي AVRها استفاده مي نمايد. BASCOM داراي منوهاي متعددي است كه ما از تشريح آنها در اينجا خوداري مي نماييم. از قابليت هاي بسيار ارزنده محيطBASCOM داشتن تحليل گر يا به عبارتي SIMULATOR داخلي است كه براي يادگيري برنامه هاي AVRبسيار مفيد است.
$ Crystal= 8000000
$ Regfile = "m 16def.dat"
Config lcdpin = pin, Db7 = Portb .7, Db 6 = Portb .6, Db5 = Portb .5, Db4 = portb.4
, Rs = Portb .0, E = Portb.1
Confing lcdmode = Port
Confing lcdbus =4
Confing Watchdog = 2048
Confing Porta = Output
Confing Portb = Input
Confing Portd = Input
Confing Int0 = Low Leve]
Confinga =255
Confingd =255
Confing Timer = Timer, Async = on. Prescale = 128
Enable Interrupts
Stop Watchdog
Enable Timer 2
Enable Int0
On Int0 Int0 _ isr No save
Dim Ali as Word
Dim S as Byte
Dim M as Byte
Dim H as Byte
Dim H2 as Byte
Bat Alias porta.1
Lcdmos Alias Porta.0
Power relay Alias Pind .6
H2 = 0
Bat = 1
Lcdmos = 0
Start Timer2
Cls
Cursor off
LCD "Timer 2"
Do
Power save
If H2 < 12 Then
If Power relay = 1 Then
Lcdmos = 1
Portb = 0
End If
Else
If Ali < 5 Then
Lcdmos = 0
Portb = 255
Else
Lcdmos = 1
Portb = 0
End If
If Power relay = 0 Then
H2 = 0
Bat = 1
End If
End If
Loop
Timer2_isr :
If Power relay = 0 Then
Bat = 1
Ali = 0
Portb = 255
Initlcd
Cls
Cursor off
Lcd " Timer2"
Locate 2 , 1
Lcd H ; ":" ; M ; ":" ; S ; ":"
End If
Ali =Ali + 1
s = s + 1
If power relay = 1 Then
H2 = H2 + 1
End If
If H2 > 12 Then
Bat = 0
H2 = 20
Else
Nat = 1
End IF
If S= 60 Then
S = 0
M = M + 1
If M = 60 Then
M = 0
If H = 24 Then
H = 0
End If
End If
End If
Return
Int0_isr:
Lcdmos = 0
Ali = 0
Initlcd
Cls
Cursor off
Lcd " Timer2"
Local 2 , 1
Lcd H ; ":" ; M ; ":" ; S ; ":"
Return
End
4-3 - توضيحات نرم افزار برنامه
1- معرفي كريستال سيستم به عنوان کريستال هشت مگا هرتز به کامپايلر
2- معرفي IC مورد استفاده به کامپايلر
3- تنظيم LCD
4- تنظيم LCD براي دو خط و 16 کاراکتر
5- LCD بصورت پين هاي مجزا معرفي مي گردد
6- اطلاعات LCD 4 بيتي
7- تنظيم پورت A به عنوان خروجي
8- تنظيم پورت B به عنوان ورودي
9- تنظيم پورت D به عنوان ورودي
10- اينتراپت خارجي صفر حساس به لبه پايين رونده
11- همه پين هاي پورت A يک شوند
12- همه پين هاي پورت B يک شوند
13- تنظيم تايمر دو به صورت آسنکرون با تقسيم کلاک 128
14- فعال سازي عمومي وقفه ها
15- فعال سازي وقفه تايمر 2
16- فعال سازي وقفه خارجي صفر
17- معرفي Int0 –ISR به عنوان روال سرويس وقفه خارجي صفر
18- معرفي Timer 2 – ISR به عنوان روال سرويس وقفه تايمر 2
19- معرفي ALI به صورت Word
20- معرفي ساعت ، دقيقه و ثانيه و پارامتر H2 به صورت 1 بايتي
21- نام گذاري پورت a .1 با اسم BAT
22- نام گذاري پورت a.0 با اسم LCDDMOS
23- ناگذاري پورت 6.d با اسم Power relay
24- BAT يک شود
25- LCDMOS صفر شود
26- تايمر 2 را روشن کن
27- صفحه نمايش را پاک کن
28- مکان نما خاموش
29- " timer 2 " را نمايش بده
30- براي هميشه سيستم را به Power save ببر
31- پايان
32- روال سرويس وقفه تايمر 2
33- اگر تغذيه وصل است
34- باتري قطع شود
35- LCD روشن شود
36- آماده سازي LCD
37- زمان را نمايش بده
38- اتمام شرط
39- اگر ALI > 5 است
40- LCD خاموش شود
41- اگر ALI < 5 است ، LCD روشن شود
42- پايان شرط
43- S را يکي اضافه کن
44- اگر تغذيه وصل است
45- H را صفر کن
46- اگر وصل است ، H2 را يکي اضافه کن و پايان شرط
47- اگر H2 > 12 است
48- باتري وصل شود
49- اگر H2 < 12 است ، باتري قطع و پايان شرط
50- اگر S = 60 است
51- S را صفر کن و M را يکي اضافه کن
52- اگر M = 60 است ، M را صفر کن
53- اگر H = 24 است ، H را صفر کن
54- پايان شرط
55- برگشت از روال سرويس وقفه
56- روال سرويس وقفه خارجي صفر شود
57- LCD را روشن کن
58- ALI را صفر کن
59- LCD را آماده کن
60- نمايش زمان
بررسي دستورات AVR
دستور Const
براي تعريف يک ثابت از اين دستور استفاده مي شود .
CONST SYMBOL = NUMCONST
CONST SYMBOL = STRINGCONST
CONST SYMBOL = EXPRESSIONVD
SYMBOL نام ثابت و NUMCONST رشته انتساب يافته به SYMBOL و EXPRESSION مي تواند عبارتي باشد که نتيجه آن به SYMBOL انتساب يابد .
دستور ALIAS
از اين دستور براي تغيير نام متغير استفاده مي شود .
DIRECTION ALIAS PORTB.1