دانشگاه
اصفهان
دانشکده
مهندسی کامپیوتر
آزمایشگاه مدار واسط
نسخه 1.1
دکتر علی بهلولی
خرداد 1401
تاریخچه بازبینی ها
شماره نسخه
|
تاریخ
|
شرح تغییرات
|
0.0
|
01/07/1395
|
نسخه اولیه
|
1.0
|
01/08/1395
|
اصلاحات نگارشی
|
1.1
|
01/3/1401
|
افزودن آزمایشهای
مربوط به ماژول
وای فای
|
|
|
|
|
|
|
هدف از آزمایشگاه طراحی مدارهای واسط، آَشنایی عملی دانشجویان با نحوه
طراحی بورد و مدارچاپی و نحوه ارتباط دستگاه های I/O با
پردازنده مرکزی است. این آزمایشگاه از دو بخش اصلی تشکیل شده است. در بخش اول،
نحوه طراحی بورد مدارچاپی با استفاده از نرم افزار آلتیوم آموزش داده میشود و در
بخش دوم ماژولهای سخت افزاری معروف برای ارتباط بین پردازنده و محیط بیرون به صورت
عملی آموزش داده خواهد شد.
مقررات این آزمایشگاه نیز مطابق مقررات عمومی آزمایشگاههای دانشگاه
است. جلسات آزمایشگاه بلافاصله بعد از حذف و اضافه شروع شده و به صورت هفتگی تا
شروع امتحانات پایان ترم ادامه می یابد. دانشجویی که سه جلسه غیبت داشته باشد،
مردود است.
روند کلی آزمایشگاه به این صورت است که هر یک از دانشجویان باید قبل از
هر آزمایش، پیشآگاهی آن را از قبل مطالعه کرده، در ابتدای جلسه، در یک امتحان
کوچک 15-10 دقیقهای در مورد آن پیشآگاهی تسلط خود را نشان دهد ( این کار به خاطر
هدایت دانشجویان به مطالعة قبلی مطالب و تقلیل احتمال تقلب در پیش گزارشها در نظر
گرفته شده است). پس از امتحان کوچک، دانشجویان هر آزمایش (که علی القاعده 2 یا 3
نفر هستند)، گامهای مشخص شده در دستور کار را دنبال کرده، نتایج را در کاربرگهای
آن آزمایش (که توسط مربی در محل آزمایشگاه در اختیار دانشجو گذاشته می شود) ثبت میکنند.
به این ترتیب کاربرگها به صورت یک سری برای هر گروه کامل میگردد.
در ارزیابی نهایی هر دانشجو، علاوه بر نمرة امتحانات کوچک هر جلسه و
نمرة گزارش جلسات (که برای تمام اعضای هر گروه یکسان است)، نظر مربی در مورد آن
دانشجو و نتیجة امتحان پایان ترم دانشجو نیز دخالت دارد.
در انتها از تمام همکاران و دانشجویان درخواست میکنم با طرح
پیشنهادات مشخص و مدون خود برای رفع معایب، ارتقای کیفی و پویایی به عنوان یک
ویژگی ضروریِ آزمایشگاه معماری کامپیوتر، ادامه دهندة راهی باشند که اولین گام آن
برداشته شده است. لازم میدانم که از مسئولین دانشکده مهندسی کامپیوتر و همچنین
کارشناس محترم آزمایشگاه جناب آقای مهندس محمد علی آزادی که در خرید تجهیزات و راه
اندازی این آزمایشگاه از هیچگونه همکاری دریغ نفرمودند کمال تشکر را داشته باشم.
دکتر علی بهلولی
خرداد 1401
Email:
bohlooli@eng.ui.ac.ir, a_bohlooli@yahoo.com
HomePage:
http://eng.ui.ac.ir/bohlooli
Web
Site: http://bohlooli.ir
فهرست مطالب
1 آزمایش اول: رسم شماتیک در نرم افزار آلتیوم 6
1-1پیش آگاهی. 6
1-2پیش گزارش.. 7
2 آزمایش دوم: کتابخانه شماتیک در آلتیوم و
ایجاد یک قطعه جدید 10
2-1پیش آگاهی. 10
2-2پیش گزارش.. 10
3 آزمایش سوم: آمادهسازی شماتیک برای
انتقال به PCB.. 12
3-1پیش آگاهی. 12
3-2پیش گزارش.. 15
3-3 دستور کار 16
4 آزمایش چهارم: آشنایی با PCB و مفاهیم آن. 18
4-1پیش آگاهی. 18
4-2پیش گزارش.. 21
5 آزمایش پنجم: تکمیل کردن PCB و آماده کردن آن برای ساخت.. 23
5-1پیش آگاهی. 23
5-2پیش گزارش.. 28
5-2دستور کار 28
6 آزمایش ششم: وقفه های خارجی. 29
پیش آگاهی. 29
پیش گزارش.. 29
دستور کار 30
7آزمایش هفتم: کار با تایمر و واچ داگ.. 31
پیش آگاهی. 31
معرفی تایمر 31
تایمرها در AVR.. 31
نحوه برنامه نویسی برای تایمر 31
معرفی WatchDog. 31
پیش گزارش.. 32
دستور کار 32
8آزمایش هشتم: کار با پورت سریال. 33
پیش آگاهی. 33
اصول پورت سریال. 33
نحوه نوشتن برنامه برای پورت سریال به روش
سرکشی. 33
نحوه نوشتن برنامه برای پورت سریال به روش
وقفه 33
پورت سریال در بورد آموزشی. 33
معرفی برنامه Terminal
برای کار با پورت سریال. 34
پیش گزارش.. 34
دستور کار 35
9آزمایش نهم: کار با مبدل آنالوگ به دیجتال. 36
پیش آگاهی. 36
مبدل آنالو گ به دیجیتال در AVR.. 36
پیش گزارش.. 37
دستور کار 37
10 آزمایش دهم: راهاندازی ماژول Wifi 38
10-1پیش آگاهی. 38
10-1-1 ماژولهای وای-فای با ارتباط UART. 38
10-1-2 ماژولهای وای-فای با ارتباط USB.. 40
10-1-3 محیط برنامه نویسی. 40
10-2دستورکار 44
11 آزمایش یازدهم: ارتباط سریال با ماژول
وای-فای. 45
11-1پیش آگاهی. 45
11-1-1 کار با پورت سریال. 45
11-2دستور کار 46
12 آزمایش دوازدهم: راه اندازی وبسرور روی
ماژول وای فای. 47
12-1پیش آگاهی. 47
12-1-1 حالت عملکردی Access
Point 47
12-1-2 حالت عملکردی Station. 47
12-2دستورکار 49
نرم افزار آلتیوم، یک نرم افزار تخصصی برای طراحی بورد مدار چاپی میباشد.
برای تهیه بورد مدار چاپی یک مدار، باید در گام اول شماتیک مدار را رسم کرد. هدف
این آزمایش رسم شماتیک یک مدار برای تست یک دیکدر میباشد. برای این منظور از دیکدر
74138 و هشت LED استفاده
شده است در شکل 1-1، شماتیک مدار مورد نظر نمایش داده شده است.
شکل 1-1: شماتیک یک مدار
برای تست دیکدر 74138
نرم افزار آلتیوم را طبق توضیحات ارائه شده در فیلم آموزشی نصب کنید
سپس با استفاده از آن، شماتیک نمایش داده شده در شکل 1-1، را رسم کنید. برای رسم
این شماتیک، مراحل زیر را انجام دهید:
الف) ابتدا مطابق شکل زیر، یک پروژه ایجاد کنید و آنرا به نام Az1 ذخیره کنید(بعد از ایجاد پروژه، از منوی فایل گزینه Save project را
انتخاب کنید):
شکل 1-2: ایجاد یک پروژه
جدید
شکل 1-3: نحوه ذخیره
کردن پروژه ایجاد شده
ج) سپس مطابق شکل 1-4، یک صفحه شماتیک به پروژه اضافه کنید:
شکل 1-4: اضافه کردن یک
فایل شماتیک به پروژه
د)مطابق شکل 1-5، پنجره جستجوی قطعات را باز کنید و قطعات مورد نیاز
خود را به صفحه شماتیک اضافه کنید. در جستجو می توان از علامت * نیز استفاده کرد، مثلا برای جستجوی تراشه 74138، از عبارت *74*138*
استفاده کنید.
شکل 1-5: نحوه جستجوی
قطعات
اگر قطعه ای در کتابخانه شماتیک آلتیوم یافت نشد، میتوان کتابخانه آن
را از سایت آلتیوم دانلود کرد و به نرم افزار اضافه کرد. برای اضافه کردن کتابخانه
جدید به نرم افزار دکمه Libraries نمایش داده شده در شکل 1-5(کنار دکمه سرچ[مرحله 2]) را کلیک و در
پنجره ظاهر شده کتابخانه جدید را اضافه کنید.
ه) قطعات الکترونیکی از قبیل مقاومت، دیود، LED، سوئیچ،
دیپ سوئیچ، خازن را میتوانید از کتابخانه Miscellaneous Devices سریع بیابید. در شکل 1-6 نحوه انتخاب این کتابخانه و انتخاب قطعه نمایش
داده شده است.
شکل 1-6: نحوه انتخاب
قطعات الکترونیکی و پرکاربرد و اضافه کردن آن به شماتیک
و) برای اینکه یک قطعه را در صفحه شماتیک دوارن دهید باید روی آن کلیک
کنید و همزمان که کلید موس فشرده است، کلید Space را فشار
دهید (با هربار فشردن کلید Space، قطعه به اندازه 90 درجه دوران می یابد)
در نرم افزار آلتیوم امکان ساخت کتابخانه برای شماتیک وجود دارد. در
کتابخانه میتوان قطعات استفاده شده در شماتیک را ویرایش کرد و همچنین قطعات جدیدی
را تعریف کرد. برای ایجاد کتابخانه شماتیک باید از منوی Design گزینه Make Schematic Library را
انتخاب کنید. با انجام این کار یک فایل با پسوند schlib به پروژه
اضافه میشود. برای دیدن کتابخانه و قطعات آن باید در پنجره Project ، فایل
کتابخانه را ا انتخاب کنید.
شکل 2-1: نحوه مشاهده
کتابخانه ایجاد شده برای پروژه
برای تولید یک قطعه جدید و اضافه کردن آن به کتابخانه از منوی Tools
گزینه New Component انتخاب کنید.
قطعه نمایش داده شده در شکل 2-2 را ایجاد کنید.
شکل 2-3: یک تراشه 48
پایه
در جلسات قبل نحوه رسم شماتیک و نحوه تعریف قطعه جدید و کار با
کتابخانه شماتیک انجام شد. هدف از این آزمایش، نحوه آمادهسازی شماتیک برای انتقال
آن به مرحله رسم PCB است.
بعد از اینکه شماتیک مدار تکمیل گردید مراحل زیر باید انجام گردد:
1-
Annotate کردن شماتیک
2-
تعیین footprint برای تمام قطعات بکار رفته در شماتیک
3-
انتخاب گزینه Update
PCB … از منوی Design
در ادامه به شرح موارد فوق پرداخته میشود.
هر قطعهای که در صفحه شماتیک قرار داده میشود دارای یک فیلد به نام Designator
است این فیلد معمولا شامل یک حرف و یک علامت سوال است (مثلا U? یا D? یا J? و ..) حرف
اول نشان دهنده نوع قطعه است. در جدول 3-1 برخی از Designatorهای معرف آورده شده است.
جدول 3-1: برخی از Designatorهای معروف
.Designator
|
نوع قطعه
|
U?
|
تراشه (Unit)
|
R?
|
مقاومت
|
C?
|
خازن
|
L?
|
سلف
|
D?
|
دیود
|
J?
|
جامپر
|
S?
|
سوئیچ
|
با انتخاب گزینه Force Annotate
All schematics از منوی Tools، نرم افزار
آلتیوم به صورت اتوماتیک علامتهای "? "
را به شماره تبدیل میکند. به عنوان مثال اگر در شماتیک از 100 خازن استفاده شده
باشد. Designator این خازنها به ترتیب C1 تا C100 مقداردهی خواهند شد.(توجه داشته باشید که وجود Designator
تکراری در شماتیک مجاز نیست)
شماتیک قطعات حاوی اطلاعاتی شامل تعداد پایههای ورودی/خروجی، شماره
پایه و نام پایه میباشد و نشان دهنده شکل واقعی قطعه و نوع پکیج آن نمیباشد. این
در حالی است که هنگام رسم PCB، شکل فیزیکی قطعه مهم است و اینکه فاصله پایهها، ابعاد قطعه چقدر
است. بنابراین مکانیزمی باید وجود داشته باشد که نشان دهد هر قطعه ای که در
شماتیک قرار دارد شکل فیزیکی آن به چه صورتی است. پارامتر Footprint هر قطعه
این مساله را حل میکند و مشخص میکند که شکل فیزیکی قطعه نهایتا روی برد به چه
صورتی خواهد بود. برخی از footprintهای معروف در جدول 3-2
نمایش داده شده است.
جدول 3-2: برخی از footprintهای معروف
نام footprint
|
توضیح
|
DIP14
|
تراشه با پایههای سوزنی دوردیفه (تعداد کل پایهها 14 بوده است)
تعداد پایهها از 4 تا 64 میتواند باشد
|
SIP10
|
قطعه با پایههای سوزنی تک ردیفه(تعداد پایهها از 2 تا 20 میتواند
باشد)
|
AXIAL0.4
|
مقاومت که فاصله بین دو پایه آن 0.4 inch است
|
RB.2/.4
|
خازن الکترولیتی با شعاع 0.4 و
فاصله پایه 0.2 اینچ
|
RAD0.4
|
خازن عدسی که فاصله بین دو پایه آن 0.4inch است
|
DIODE0.4
|
دیودی که فاصله بین دو پایه آن 0.4inch است
|
برای مشاهده و تعیین Footprint یک قطعه، میبایست روی قطعه دابل کلیک کنید. در شکل 3-1، نتیجه
دابل کلیک کردن و محل فیلد footprint نمایش داده شده است.
شکل 3-1:نتیجه دابل کلیک
کردن روی هر قطعه و مکان فیلد footprint
هرگاه مراحل سه گانه فوق انجام شد و هیچ خطایی در شماتیک موجود نبود با
انتخاب گزینه Update PCB Document از منوی Design میتوانید وارد محیط PCB شوید. در
صورتیکه این گزینه در منوی Design وجود نداشت باید ابتدا یک فایل PCB به پروژه
اضافه کنید. در شکل 3-2 نحوه اضافه کردن یک فایل pcb به پروژه
نمایش داده شده است.
بعد از اینکه گزینه Update
PCB Document را انتخاب کردید پنجره ای ظاهر می
شود با زدن دکمه Validate Change خطاهای احتمالی نمایش داده میشود و در صورتی که خطایی وجود نداشت
با زدن دکمه Execute Change عملیات انجام خواهد شد و Footprintهای
شماتیک به فایل PCB وارد می شوند.
شکل 3-2: اضافه کردن یک
فایل PCB به
پروژه
1-
برای مدار نمایش داده شده در شکل 3-3، مراحل لازم برای
انتقال به PCB را اجرا کنید. (4 مرحله ذکر شده در بخش 3-1)
شکل 3-4: شماتیک یک مدار
برای پراگرام کردن تراشه های شرکت Atmel
1-
بعد از انتقال مدار به PCB، قطعات را
بچینید و تمام تراکهای (Track) مورد نیاز را رسم کنید (برد شما تک لایه و فقط از لایه زیر استفاده کنید).
راهنمایی: ابتدا در قسمت پایینی صفحه، برگه BottomLayer را انتخاب
کنید. سپس با زدن کلیدP و سپس کلید T به مود رسم تراک وارد شوید و شروع به رسم تراکها در لایه زیر
کنید . رنگ پیش فرض برای لایه زیر در نرم افزار آلتیوم، آبی است
شکل 3-5: نمونه
یک مدار PCB،
رسم شده
2-
کادر صورتی رنگ دور مدار را در لایه KeepOutLayer رسم کنید.
تحقیق کنید که این لایه چه کاربردی دارد؟
3-
قسمتهایی که به رنگ زرد هستند در چه لایه ای میباشند؟
در جلسه قبل نحوه انتقال شماتیک به PCB و رسم PCB انجام شد.
در این جلسه نکاتی در مورد طراحی PCB ارائه خواهد شد سپس نحوه ایجاد کتابخانه PCB و طراحی footprint
شرح داده خواهد شد.
رعایت صحیح فاصلهها در PCB، از اهمیت ویژه ای برخوردار است و ممکن است عدم دقت در این رابطه،
منجر به سخت شدن عملیات مونتاژ قطعات و بعضی اوقات چاره ای جز طراحی مجدد PCB و ساخت
بورد جدید نیست. مواردی که هنگام طراحی PCB باید به فاصلههای آنها دقت کرد
عبارتند از: ابعاد فیزیکی قطعات (فضایی که روی بورد اشغال میکنند)، فاصله بین
پایههای قطعات، قطر سوراخ پایهها روی بورد(برای تعیین نوع مته ای که برای
سوراخکاری استفاده میشود)، ابعاد کل بورد، ضخامت تراکها، فاصله بین تراکها(Clearance) و
فاصله بین قطعات مختلف روی بوردبرخی از این فاصلهها را باید هنگام طراحی FootPrint
قطعهها لحاظ کرد (ابعاد فیزیکی قطعه، فاصله بین پایهها، قطر سوراخ پایهها) و
موارد دیگر باید هنگام رسم PCB در نظر گرفته شود.
واحدهای اندازه گیری فاصله در آلتیوم عبارتند از mil و mm. یک میل
برابر با 1 هزارم اینچ میباشد. (این واحد به این خاطر استفاده میشود که اکثر
سازندگان قطعات در ساخت قطعه از واحد اینچ استفاده میکنند) مثلا فاصله بین دو
پایه متوالی در پکیج دیپ برابر با 0.1 اینچ میباشد. در مورد متهها، عموما از
واحد میلی متر استفاده میشود. بنابراین برای تعیین قطر سوراخهای بورد بهتر است از
واحد mm
استفاده شود. (هر میلی متر به صورت تقریبی برابر با 39.37mil است)
نکته کاربردی: فاصله بین دو سوراخ متوالی روی برد بوردها
دقیقا برابر با 100mil میباشد. این نکته میتواند
به عنوان معیار مناسبی برای اندازه گیری فاصله بدون داشتن خط کش یا کولیس باشد.
به عنوان مثال با توجه به شکل 4-1، میتوان
متوجه شد که فاصله پایههای تراشه نصب شده روی برد بورد برابر با 100mil و طول تراشه برابر با 800mil و
عرض تراشه برابر با 300mil است. یا در
footprint
مربوط به مقاومت نصب شده روی برد بورد، فاصله بین پایههای مقاومت برابر با 300mil باید قرار داده شود و برای دیود 400mil است.
شکل 4-1: استفاده از برد
بورد برای اندازه گیری فاصله قسمتهای مختلف یک تراشه
رعایت فاصلهها در رسم PCB
همانطور که گفته شد، ضخامت تراکهای رسم شده در PCB و همچنین
حداقل فاصله بین دو تراک موازی از پارامترهای مهم در رسم PCB است و
اندازه آنها معمولا بر حسب mil سنجیده میشود. دو عامل در تعیین این دو فاصله دخالت دارند که
عبارتند از: محدودیتهای تکنولوژی ساخت بورد مدار چاپی و محدودیتهای که به نوع و
ماهیت سیگنال عبوری از این تراک بستگی دارد
محدودیتهای ناشی از تکنولوژی ساخت بورد
این محدودیت به دقت دستگاههایی بستگی دارد که بورد مدار چاپی را تولید
میکنند. معمولا این دستگاهها در حداقل ضخامت تراکها و حداقل فاصله بین دو تراک
موازی محدودیت دارند و اگر این حداقلها رعایت نشود منجر به قطع شدن تراکها یا به
هم چسبیدن تراکها خواهد شد. در حال حاضر اکثر این دستگاهها قادرند بوردهایی با
تراکهایی با ضخامت 10mil و فاصله 10mil را تولید کنند. بهتر است قبل از شروع کشیدن PCB، با شرکتی
که قرار است بورد را بسازد مشورتی انجام شود و از محدودیتهای دستگاههای آنها
اطلاع حاصل شود.
محدودیتهای ناشی از ماهیت سیگنال عبوری از تراک
برای سیگنالهای تغذیه باید تراک با ضخامت زیاد رسم کرد (مثلا 30mil یا بیشتر). سیگنالهایی که فرکانس تغییرات آنها زیاد است (مثلا
بیشتر از 500 کیلو هرتز) اگر نزدیک همدیگر رسم شوند روی همدیگر اثر همشنوایی
خواهند داشت و باعث ایجاد خطا میشود برای کاهش اثر همشنوایی بهتر است فاصله بین
تراکها بیشتر از 10mil باشد.
برای ایجاد Footprint جدید باید کتابخانه PCB برای پروژه خود ایجاد کنید. برای ایجاد کتابخانه PCB باید از
منوی Design،
گزینه Make Library را انتخاب کنید (توجه داشته باشید که باید در محیط رسم PCB باشید). در
شکل 4-2، نحوه باز کردن فایل library و همچنین نحوه دیدن قطعات علامت زده شده است.
برای تعریف Footprintجدید باید از منوی Tools،
گزینه New Component را انتخاب کنید (توجه باید داشته باشید که باید فایل Library
باز باشد و در محیط کتابخانه باشید تا گزینه New Component در
منوی Tools
وجود داشته باشد). بعد از انتخاب گزینه فوق، ویزاردی باز میشود و در ابتدا باید
انتخاب کنید که Footprintی را که قصد ایجاد آن را
دارید شبیه کدامیک از footprintهای استاندارد است. بعد
از انتخاب یکی از footprintهای استاندارد، در ادامه
مشخصات قطعه و اندازه قسمتهای مختلف آن را میتوانید روی شکل تغییر دهید و نهایتا footprint
مورد نظر خود را ایجاد کنید. در آخرین مرحله، نام footprint را تایپ
کنید و کلید finish را بزنید. برای تهیه footprint هر قطعه باید اطلاعاتی در مورد ابعاد قطعه، تعداد پایهها، فاصله
بین پایهها، ضخامت هر پایه، طول هر پایه و ... داشته باشید. این اطلاعات را میتوان
با اندازه گیری قطعه واقعی بدست آورد یا اینکه از دیتا شیت قطعه استخراج کرد.
معمولا در صفحات انتهایی دیتاشیت هر قطعه، ابعاد فیزیکی قطعه بر حسب اینچ و
میلیمتر ارائه میشود.
در
نرم افزار آلتیوم به منظور کمک به طراح، صفحه رسم PCB به صورت
شطرنجی میباشد. این خطوط شطرنجی به صورت دو سطحی است. طراح PCB با کمک
گرید میتواند قطعات را با نظم مشخص روی صفحه بچیند و تراکها را روی خطوط گرید رسم
کند تا شکل منظمی داشته باشند. برای تعیین اندازه Gridهای سطح 1 و سطح 2 باید گزینه snap در Status Bar
انتخاب شود. در شکل 4-3، محل تعیین این پارامتر، مشخص شده است. همانطور که در این
شکل ملاحظه میشود برای این دو سطح مقادیر 20mil و 100mil انتخاب شده
است. وقتی که در صفحه رسم PCB با استفاده از دکمههای PgUp و PgDn روی مدار Zoom In یا
Zoom Out میکنید،
به صورت اتوماتیک نرم افزار آلتیوم، گرید مناسب را برای شما نمایش میدهد.
زمانی که در قسمت PCB از نرم افزار آلتیوم، قطعه ای را جابجا میکنید حرکت قطعه در جهت
افقی و عمودی به صورت پله پله انجام خواهد شد و قطعهها را نمیتوان به اندازه خیلی
کم جابجا کرد. این خاصیت باعث میشود که نظم دادن به قطعهها به راحتی امکان پذیر
شود. مثلا برای اینکه پایههای دو قطعه دقیقا روبروی هم قرار گیرد نیازی به دقت
زیاد کاربر ندارد و چون حرکتها به صورت پله ای است به راحتی میتوان قطعات را
روبروی هم دیگر و روی گریدها قرار داد. این مساله حرکت کردن قطعهها به صورت پله
ای، در مرحله رسم تراک نیز مشاهده میشود. در واقع هنگام رسم تراک، نرم افزار
آلتیوم اجازه نمیدهد هر نوع زاویه ای به تراک بدهید و از هر مکانی که خواستید عبور
دهید. برای تنظیم فاصله پلهها باید از منوی Design، گزینه Options… را
انتخاب کنید و در پنجره ظاهر شده، برگه Option را انتخاب کنید. در شکل 4-4، پنجره
مربوط به تنظیم Snap نمایش داده شده است. همانطور که ملاحظه میشود مقدار Snap هم برای Component و
هم برای تراکها قابل انتخاب است.
شکل 4-3: نحوه تعیین
اندازه گریدهای سطح 1 و سطح 2 (با انتخاب گزینه Snap از قسمت
پایینی نرم افزار آلتیوم)
شکل 4-4: نحوه تعیین Snap (با انتخاب
گزینه Snap از
قسمت پایینی نرم افزار آلتیوم)
1-
Footprintقطعات نشان داده شده روی
شکل زیر را رسم کنید.
شکل 4-5: اندازه گیری
فاصله ها با استفاده از بردبورد
2-
فایل lab4.ddb را باز کنید. این فایل حاوی شماتیک یک مدار میباشد. PCB این مدار
را رسم کنید. در رسم PCB نکات زیر را رعایت کنید: (برای Placement قطعات از
شکل 4-6 کمک بگیرید)
الف) ابعاد بورد 12 سانتی متر در
6 سانتیمتر باشد
ب)ضخامت تراکهای تغذیه را 30mil و ضخامت بقیه تراکها را 10mil در نظر بگیرید
ج) فقط از لایه زیر استفاده کنید
3-
اگر فاصلة بین پایههای یک آیسی DIP، 100mil و قطر Pad آن 50mil باشد و
بخواهیم دو تراک با پهنای 10mil از
وسط پایههای آن رد کنیم به موارد زیر پاسخ دهید.
الف) مناسبترین اندازه برای Grid و Snap چند است؟
چرا؟
ب) ماکزیمم clearance باید چند
باشد تا بتوان تراک را از بین پایههای آن رد کرد؟
شکل 4-6: نمونه پیشنهادی
برای چینش قطعات
در جلسات قبل نحوه رسم PCB توضیح داده شد. در این جلسه قابلیتهای نرم افزار آلتیوم برای رسم PCB توضیح داده
میشود.
به سوراخهایی که روی بورد ایجاد میشود تا تراکها را از یک لایه به یک
لایه دیگر منتقل کند via گفته میشود. در واقع با استفاده از via میتوان لایههای
مسی در لایههای مختلف را به یکدیگر متصل کرد. اگر در حین رسم تراک خواستید ادامه
آن را در لایه دیگری رسم کنید باید از حالت کشید تراک خارج شوید سپس با زدن دکمههای
P و V (Place Via)
به حالت اضافه کردن via وارد شوید، با کلیک کردن موس روی تراک مورد نظرتان یک Via اضافه
کنید، به صورت اتوماتیک نام via با نام تراک شما یکسان میشود. اگر نام تراک و نام via یکسان
نباشد آنگاه امکان اتصال آنها به یکدیگر وجود ندارد
اگر داخل سوراخهای بورد (سوراخهای مربوط به پایه قطعات و سوراخهای مربوط
به viaها) یک لایه فلزی گذاشته شود تا
اتصال فیزیکی بین لایهها برقرار شود آنگاه به بورد بورد متالیزه گفته میشود.
توجه داشته باشید که این اصطلاح مربوط به نرم افزار آلتیوم نیست (در نرم افزار آلتیوم
فرض بر این است که این لایه فلزی وجود دارد) این اصطلاح توسط شرکتهایی که عمل ساخت
بورد PCB را
انجام میدهد به کار میرود. بوردهای غیر متالیزه ارزان قیمت تر هستند و قرار دادن
یک سیم مسی در سوراخها و لحیم کردن آن باید توسط شخص مونتاژ کار انجام شود.
برای رسم تراکها به صورت خودکار باید ruleهای مورد نیاز را تعریف کنید سپس با انتخاب گزینه All… در منوی AutoRoute
وارد پنجره Auto Route Setup شوید. این پنجره در شکل 5-1 نمایش داده شده است. استفاده از این
گزینه فقط برای ساخت بوردهای نمونه، برای صرفه جویی در وقت استفاده میشود و توصیه
می شود برای رسم PCB از این گزینه استفاده نشود.
به صورت پیش فرض، تعداد لایه ها در نرم افزار آلتیوم دو لایه می باشد،
لایه زیر و لایه رو. در صورتیکه نیاز به افزایش تعداد لایه ها باشد(معمولا برای
بوردهایی با فرکانس کاری بالاتر از 10مگاهرتز) با انتخاب گزینه Layer Stack Manager … از
منوی Design
میتوان تعداد لایه ها و ترتیب آنها را مدیریت کرد.
برای اینکه رسم PCB ساده تر انجام شود و از اشتباهات احتمالی جلوگیری شود می توان
قوانینی را تعریف کرد تا هنگام رسم PCB، خود نرم افزار قسمتی از کارها را به صورت خودکار برای شما انجام
دهد. مثلا در رسم PCB، تراکهای مربوط به تغذیه بورد باید ضخیمتر از تراکهای بقیه
سیگنالها باشند. شما می توانید با ایجاد یک قانون مشخص کنید که اندازه تراک
استفاده شده برای VCC و GND دقیقا 50 mil
باشد. در صورتی که این قانون تعریف شده باشد، به محض اینکه با موس روی یک Pad متصل به GND کلیک کنید
تا تراک را رسم کنید، خود به خود اندازه تراک 50mil می شود.
برای ایجاد قوانین، شما می توانید از منوی Design، گزینه Rules را
انتخاب کنید. با انتخاب این گزینه، لیستی از قوانینی که قادر به تعریف آنها هستید
نمایش داده می شود. در شکل 5-1 پنجره مربوط به مدیریت قوانین نمایش داده شده است.
از لیست ظاهر شده برای قوانین موارد زیر خیلی مهم هستند و قطعا باید قوانینی برای
آنها تعریف شود:
-
Clearance
Constraint
-
Routing
Layers
-
Width
Constraint
شکل 5-1: پنجره مربوط به
تعریف و ویرایش قوانین رسم PCB
با دابل کلیک کردن روی یک قطعه و انتخاب گزینه Bottom Layer در قسمت Layer می
توان قطعه را به پشت بورد منتقل کرد
معمولا برای راهنمایی استفاده کننده از بورد نوشته هایی روی سطح بورد
قرار داده میشود(مثلا نام بورد، ورژن آن، محلهای اتصال تغذیه و ...) که این نوشته
ها می تواند در لایه Top Overlay باشد یا به صورت مسی در لایه رو یا در لایه زیر نوشته شود. با
انتخاب کلیدهای میانبر P و سپس S، میتوان یک رشته متنی را روی نوشت و با دابل کلیک روی آن، لایه
مورد نظر را انتخاب کرد.
با توجه به اینکه رسم PCB یک فرایند فوق العاده حساس است و کوچکترین اشتباه منجر به عدم کارایی
بورد می شود. برای اطمینان از صحت رسم PCB از موارد زیر می توان به عنوان
چکهای نهایی بورد استفاده کرد:
الف) DRC
با انتخاب گزینه Design
Rule Check… از منوی Tools پنجره
مربوط به DRC
باز میشود پس از انتخاب موارد مد نظر روی دکمه Run DRC کلیک کنید.
کلیه خطاهایی که در طراحی PCB وجود دارد برای شما نمایش داده می شود.
ب)چک کردن Violations:
بعد از اینکه DRC انجام شد، گزارش آن به صورت یک فایل html نمایش داده
می شود.
شکل 5-2: نحوه دیدن Violationها
ج)چک کردن قطر سوراخ viaها و پایههای قطعات:
با توجه به اینکه ضخامت پایه های قطعاتی که روی بورد مونتاژ می شوند
متفاوت است بنابراین باید قطر Padها و سوراخهای روی بورد
را با توجه به مشخصات فیزیکی قطعات تنظیم کرد. برای تنظیم قطر padها باید روی آنها دابل کلیک کرد و با تنظیم مقدار مناسب در
فیلد Hole Size این عملیات را انجام داد. با توجه به اینکه واحد اندازه گیری برای
قطر مته های استفاده شده بر حسب میلیمتر است، بهتر است با زدن دکمه Q، واحد
اندازه گیری را از mil به mm تغییر دهید آنگاه روی Padها
دابل کلیک کنید و قطر Pad را مشخص کنید. عدد متداول برای قطر padهای مربوط به تراشه های دیپ، 0.8mm و برای کانکتورها 1mm
است. با استفاده از قابلیت Global می توان تمامی پایه های مشابه را با هم انتخاب کرد و قطر Padآنها را تعیین کرد و نیازی به دابل کلیک روی تک تک پایه ها
نیست.
د)کپی کردن PCB در یک طرح جدید
برای ساخت بورد شما باید فایل پروژه آلتیوم خود را در اختیار شرکتهای
سازنده بورد مدار چاپی قرار دهید، برای اینکه طرح شما مورد سوء استفاده احتمالی
قرار نگیرد بهتر است یک پروژه جدید در آلتیوم ایجاد کنید و یک صفحه PCB ایجاد کنید
و با Select
کردن مدار PCB خود و استفاده از کپی و Paste، مدار PCB خود را در
این پروژه جدید قرار دهید. به این ترتیب در پروژه جدید فقط PCB وجود دارد
و شماتیک مدار وجود ندارد.
برای محکم کردن اتصال تراکها به Padها می توانید این گزینه را از منوی Tools انتخاب
کنید. در شکل 5-3، تاثیر استفاده از این گزینه روی محل اتصال تراکها با Padها نمایش داده شده است
شکل 5-3: تاثیر استفاده
از گزینه TearDrop
ز) استفاده از PolyGon
در طراحی مدارهای فرکانس بالا، برای اینکه امپدانس تراک مربوط به GND کاهش یابد
می توان تا حد امکان ضخامت تراکهای GND را افزایش داد. با استفاده از Polygon می
توان به نرم افزار آلتیوم این فرمان را داد که کلیه فضای باقیمانده از بورد را با
تراکهای پیوسته GND پر کند. برای اینکار با استفاده از کلیدهای میانبر P و سپس G، پنجره
مربوط به polygon باز می شود و می توان سیگنال مورد نظر را انتخاب نمود و تنظیمات
آن را انجام داد سپس با Ok کردن این پنجره و مشخص کردن ناحیه مورد نیاز برای رسم polygon،
این عملیات را انجام داد.
لیستی از کلیدهای میانبر
پر کاربرد در آلتیوم
شروع به رسم تراک
|
P+T
|
تغییر واحد اندازه گیری از mm به mil و برعکس
|
Q
|
اندازه گیری فاصله بین دو نقطه
|
R+M
|
حذف کردن قطعات، تراکها و ...
|
E+D
|
رسم Polygon
|
P+G
|
قرار دادن via
|
P+V
|
1-
PCB مربوط به آزمایش شماره 4 را با استفاده از Ruleهای زیر مجددا رسم کنید(از AutoRoute استفاده
کنید) سپس تمام مراحل گفته شده در بخش 5-1-8 را روی آن اجرا کنید.
قانون 1: کلیه تراکهای VCC برابر 20mil باشد
قانون2: کلیه تراکهای GNDبرابر با 25milباشد
قانون3: تراکهای باقیمانده برابر
با 8mil باشند
قانون4: فقط از لایه زیر استفاه
شود
قانون 5: فاصله تراکها از همدیگر
کمتر از 12milنباشد
قطر padهای مربوط به همه تراشه ها 0.7
میلیمتر و برای مقاومت و خازنها 0.8میلیمتر باشد
بررسی PCB طراحی شده
در بخش پیش گزارش و انجام اصلاحات مورد نیاز طبق بررسی استاد آزمایشگاه.
هر میکروکنترلر به تنهایی قادر است با چندین وسیله جانبی در ارتباط
باشد .یک وسیله خارجی می تواند به دو شکل از میکرو کنترلر سرویس دریافت کند
-
بررسی مدام مسیر ارتباطی با وسیله جانبی(polling)
-
استفاده از وقفه
در روش polling میکروکنترلر به طور مداوم وضعیت وسیله جانبی را مونیتور می کند
.وقتی وضعیت خاصی مشاهده شد سرویس متناظر را انجام می دهد.
در روش وقفه هرگاه وسیله جانبی به دریافت سرویسی از طرف میکرو نیاز
داشته باشد با ارسال یک سیگنال وقفه آن را به اطلاع میکروکنترلر می رساند .به محض
دریافت سیگنال وقفه در میکروکنترلر عملکرد عادی میکروکنترلر متوقف شده و به سرویس
وقفه دریافت شده رسیدگی می شود و سپس میکرو به عملکرد عادی خود باز می گردد .
وقفه هایی که ما در این آزمایش استفاده می کنیم وقفه های خارجی می
باشند و وقفه های داخلی هر قسمت در آزمایش مربوط به خود مطرح می شوند .هر
میکروکنترلر چند پایه وقفه خارجی دارد که با توجه به رویداد روی آن پایه به سرویس
وقفه روی آن پایه مراجعه می کند که این رویداد می تواند یک لبه ی بالا رونده یا پایین
رونده باشد و یا سطح بالا یا پایین باشد .
1-2-1 منظور از pullup وpulldown در مدارات الکترونیکی چیست و برای استفاده از وقفه های خارجی pullup و
pulldown به چه صورت به کار ما می آیند؟
1-2-1 رجیستر های مربوط به وقفه های خارجی در atmega16 را از دیتاشیت
استخراج کرده و کاربرد هر بیت از هر رجیستر را بیان کنید.
1-2-3
به منظور جلوگیری از فعال شدن وفقه خارجی به وسیله نویز چه
تمهیداتی را می توان در نظر گرفت ؟
1-2-4 می خواهیم سرعت روشن شدن LEDها در آزمایش 1 را کنترل کنیم. برای این منظور دو کلید
روی بورد را در نظر بگیرید. برنامه ای بنویسید که با فشردن یکی از آنها سرعت
افزایش یابد و با فشردن دیگری سرعت کاهش یابد(با هر بار فشردن کلید، تاخیر بین
روشن شدن LEDها100 میلی ثانیه کاهش/افزایش
یابد و سرعت اولیه روشن خاموش شدن 1000میلی ثانیه می باشد و نباید سرعت از
100میلی ثانیه کمتر شود)
1-
برنامه پیش گزارش را وارد کرده و تست کنید
2-
برنامه ای بنویسید که ورودی دیجیتال 8 بیتی را از روی دیپ
سوییچ های موجود در مدار دریافت نموده آن را به ال ای دی های موجود روی آرایه ی
ال ای دی موجود روی برد انتقال دهد.برنامه شامل دو کلید است که با فشردن کلید 1
حالت 1 اتفاق می افتد و با فشردن کلید 2 حالت دوم اتفاق می افتد .(توجه کنید در
اینجا باید از روش وقفه خارجی استفاده شود نه روش polling)
1-
دقیقا مقدار دیجیتالی که از ورودی دیپ سوییچ ها می گیرد و
روی آرایه ال ای دی نمایش دهد
2-
بیت های مقدار دیجیتالی که از ورودی دیپ سوییچ ها می گیرد
، متمم کرده و روی آرایه ال ای دی نمایش دهد
تایمر در واقع یک کانتر یا شمارنده است که توسط پالس ساعت خارجی یا
اسیلاتور داخلی میکروکنترلر راه اندازی می شود.فرکانس پالس تایمر تقسیمی از فرکانس
کاری میکروکنترلر می باشد که به مقدار شمارنده آن با هر پالس تایمر یکی اضافه می
شود.در بعضی مواقع لازم است اعمالی در زمانی معین انجام شود که برای نگهداری این
زمان می توان از تایمر-کانتر استفاده کرد
میکروکنترلر های avr حداکثر دارای 6 تایمر-کانتر هشت بیتی و یا شانزده بیتی می باشند
.که تایمر کانتر ها بسته به نوع آنها دارای امکانات مختلفی ازجمله تولید موج pwm ، حالت
مقایسه ،عملکرد غیر همزمان و پشتیبانی از وقفه هایی از جمله وقفه سرریز ،وقفه
مقایسه و ......می باشند .
برنامه نویسی تایمر در avr بدین صورت می باشد که اول ما هدف خود و نوع تایمر-کانتری را که
میخواهیم استفاده کنیم انتخاب می کنیم .برای زمان های کم معمولا 8 بیتی استفاده می
کنیم و برای زمان های بیشتر از 16 بیتی .بعد از انتخاب تایمر-کانتر فرکانس آن را
تعیین می کنیم و زمان هردور شمارش آن را تعیین می کنیم و بدین وسیله می توانیم
زمان هر بار سرریز تایمر کانتر را بدست آورده و از وقفه سرریز استفاده کنیم یا اگر
زمانی که ما میخواهیم اندازه بگیریم کمتر از یک دور سرریز باشد از وقفه مقایسه
استفاده کنیم و وقتی مقدار شمارنده به حد مورد نطر رسید با توجه به وقفه مقایسه
متوجه گذشت زمان مورد نظر می شویم.همچنین برای استفاده از موج های pwm در رجیستر
های تایمر تنطیمات لازم را انجام داده و حالات های مختلف تولید موج را انتخاب می
کنیم.
Watchdog در واقع امکانی است که از هنگ کردن میکروکنترلر جلوگیری می کند
بدین صورت که سرریز تایمر نگهبان روی زمان خاصی تنظیم می شود و در برنامه هر دفعه
زمان کمی قبل از سر رسیدن زمان سرریز تایمر نگهبان تایمر را بازنشانی می کند پس در
زمانی که میکرو هنگ می کند دیگر قادر به بازنشانی تایمر نگهبان نخواهد بود و تایمر
نگهبان با سرریز میکرو را ریست می کند
1-
تایمر کانترهای موجود در میکرو کنترلر و مد های کاری انها
را به طور کامل تشریح کرده و کاربرد های آن را بیان کنید.
2-
کابرد تمام بیت های رجیستر TCCR0 را بیان
کنید .
3-
منابع وقفه ی قسمت تایمر کانتر تراشه ی atmega16 را
نام برده و کاربرد هرکدام را به طور مختصر بیان کنید .
4-
مد های PWM در تایمر کانتر ها را توضیح داده و تفاوت آنها را بیان کنید.
5-
با فرض استفاده از کریستال خارجی 16MHZ برای میکروکنترلر atmega16 میخواهیم یک تاخیر 10 میلی ثانیه ای ایجاد کنیم
برای استفاده از وقفه سرریز مقدار اولیه TCNT1 و ضریب پیش تقسیم کلاک را باید چند قرار دهیم؟اگر برای همین کار
بخواهیم از وقفه مقایسه استفاده کنیم مقدار قرار داده در رجیستر OCR1 را تعیین
کنید.با این تنظیمات آیا می شود بازه 10ms را
دقیق اندازه گرفت ؟(برای هر دو قسمت چگونگی محاسبه اعداد را شرح دهید.
6-
Watchdog
timer را تشریح کرده و کاربرد آن را بیان
کنید.
7- با
استفاده از دستور شیفت، 8 عدد LED روی بورد را به یک Progress
Bar تبدیل کنید که هر ثانیه یک بار، یک LED به مجموع LEDهای روشن اضافه شود و وقتی همه LEDها روشن شدند مجددا همه خاموش شوند واین کار تکرار شود.(با
استفاده از وتایمر کانتر و بدون استفاده از کتابخانه delay.h)
1-
برنامه پیش گزارش را وارد و تست کنید.
2-
با استفاده از تایمر و ایجاد یک پالس PWM، شدت روشنایی
یک LED را
کنترل کنید. با اضافه کردن دو کلید، نور کم و زیاد شود.
3-
یک شمارنده طراحی کنید که با هر بار فشردن یکی از کلیدها،
یک واحد به مقدار شمارنده افزایش دهد. مقدار شمارنده در لحظه شروع برنامه صفر باشد
و تا 255 افزایش یافته و بعد از آن کاهش می یابد رو به صفر. مقدار را به صورت 8
بیتی روی آرایه ال ای دی نمایش دهد .
4-
به برنامه سوال 3، واچ داگ اضافه کنید که اگر به مدت 2
ثانیه هیچ کلیدی فشرده نشد، میکرو ریست شود.
پورت سریال در میکروکنترلر در واقع یک امکان برای ارتباط میکروکنترلر
با محیط یبرون می باشد که همانطور که از نامش بر می آید ارتباط به صورت سریال می
باشد یعنی داده هایی که میخواهیم منتقل کنیم به صورت سریال و پشت سر هم منتقل می
شوند. داده ها در ارتباط سریال به قالب کلی زیر می باشند.
ارتباط سریال می تواند همزمان(Synchronous) یا غیر همزمان(Asynchronous) باشد که در همزمان باید علاوه بر داده یک کلاک هم فرستاده شود ولی
در حالت غیر همزمان فقط داده ها فرستاده می شوند.معمولا ما پورت سریال را به صورت
غیر همزمان راه اندازی می کنیم و با استفاده از دو پایه rxd وtxd داده ها را
دریافت و ارسال می کنیم و برای ارتباط سریال باید Baud Rate (نرخ
ارسال) در فرستنده و گیرنده یکی باشد تا داده ها سالم به مقصد برسند .
روش Pulling در کل به معنی سرکشی پی در پی برای انجام کاری می باشد.یعنی در
برنامه مدام باید پارامتری چک شود به محض تغییر پارامتر مورد نظر عکس العمل نسبت
به وقایع مورد نظر انجام شود.در ارتباط سریال سرکشی برای ارسال و دریافت داده
انجام می شود یعنی پرچم های مربوط به ارتباط سریال را مدام چک می کنیم در حین
برنامه وقتی پرچم فعال گردید نشانگر خاتمه ارسال یا دریافت داده مورد نظر است.
در پورت سریال میتوان از وقفه دریافت یا ارسال داده سریال استفاده
نمائیم. یعنی برنامه روند خود را طی می کند وقتی داده ای از طریق ارتباط سریال
دریافت یا ارسال شد برنامه به بردار وقفه سریال مربوطه مراجعه می کند و عکس العمل
لازم را انجام داده و دوباره به روند عادی برنامه باز می گردد.
پورت سریال موجود روی بورد با استفاده از پروتکل rs232 و استفاده
از تراشه max232 به پورت سریال کامپیوتر متصل می شود .همچنین در این میان برای
ارتباط از کانکتور DB9 استفاده شده است . شماتیک کلی این ارتباط در شکل زیر آورده شده
است.
معرفی برنامه Terminal برای کار با پورت سریال
به طور کلی برای ارتباط سریال از نرم افزار های ترمینال استفاده می شود
که هم می توان از نرم افزار مجزای ترمینال استفاده کرد و هم از ترمینال کامپایلر
هایی از جمله codevision و ...... استفاده کرد.کار ترمینال بدین صورت است که هم می تواند
داده ها یی که از روی پورت سریال دریافت می کند نمایش دهد به صورت کاراکتر یا hex و همچنین
می تواند کاراکتر یا hex را روی پورت سریال ارسال کند.
1- پروتکل
های ارتباط سریال میکروکنترلر ATmega16 را نام برده و تعین کنید در شرایط مختلف استفاده از کدام یک از
این واسط های ارتباطی بهتر است.
2- کاربرد
آی سی max232
روی برد آزمایشگاهی را بیان کنید.
3- نحوه
محاسبه خطا در نرخ انتقال ارتباط سریال سنکرون را یبان کنید .همچنین نرخ خطا را
برای baud rate برابر 9600 و فرکانس نوسان ساز 1mhz در
حالت عملکرد سنکرون بیان کنید .
4- برنامه
ای بنویسید که نام و نام خانوادگی شما را که در یک رشته به نام str ذخیره شده
است را هر ثانیه یک بار از طریق پورت سریال به روش پولینگ ارسال کند.
5- برنامه
ای بنویسید که عدد 4 رقمی ذخیره شده در x را به اسکی تبدیل کنید. مثلا اگر
عدد ذخیره شده برابر با 1230 باشد،
کدهای اسکی تولید شده به ترتیب برابر با 0x31، 0x32، 0x33 و 0x30 باشد.
6- جدول
کدهای اسکی را با خود به آزمایشگاه بیاورید.
7- برنامه
ساعت در آزمایش قبلی را در نظر بگیرید، فرض کنید ساعت و دقیقه در متغیرهایی به
نامهای h و m ذخیره شده
اند، برنامه ای بنویسید که زمان فعلی را به صورت HH:MM به صورت
اسکی از طریق پورت سریال ارسال کند.
1- برنامه
ی نوشته شده در پیش گزارش را روی بورد تست کنید .
2- یک
کابل سریال از مسئول آزمایشگاه دریافت کنید و آنرا به کامپیوتر PC متصل کنید.
سپس با وصل کردن پایه های شماره 2 و 3، از صحت اتصالات کابل مطمئن شوید.(بعد از
اینکه این دو پایه را به هم متصل کردید، با استفاده از نرم افزار Terminal،
کاراکتری را ارسال کنید، با توجه به اینکه پایه های 2 و 3 به هم متصل شده اند،
همان کاراکتر باید توسط PC دریافت شود. اصطلاحا به این کار LoopBack گفته می
شود)
3- با
استفاده از کابل سریال، بورد آموزشی را به کامپیوتر متصل کنید، برنامه ای بنویسید
که کاراکترهای دریافت شده از پورت سریال کامپیوتر را روی LCD نمایش دهد.
4- به
برنامه ساعت، یک کلید اضافه کنید تا در صورت فشرده شدن آن کلید، ساعت کنونی را به
صورت اسکی با استفاده از پورت سریال برای کامپیوتر ارسال کند و شما در برنامه Terminal
ساعت را مشاهده کنید
در واقع مبدل آنالوگ به دیجیتال به ما این امکان را می دهد تا سیگنال
های آنالوگ را به دیجیتال تبدیل کنیم .
میکروکنترلر ها نیاز به ارتباط با دنیای خارج از میکروکنترلر را دارند
. معمولا دنیای خارج ماهیت آنالوگ دارد مثلا خروجی سنسور ها ،سیگنال های مختلفی که
به میکرو می رسند آنالوگ می باشند و درون میکروکنترلر هم ماهیت دیجیتال دارد بدین
ترتیب نیاز است تا برای ارتباط میکروکنترلر با دنیای بیرون امکان تبدیل این
سیگنال ها به هم وجود داشته باشد.از همین رو در میکرکنترلر های avr مبدل ADC تعبیه شده
است که بدون وسیله جانبی سیگنال های انالوگ محیط بیرون را به دیجیتال تبدیل کرده و
در اختیار میکروکنترلر قرار می دهد .همچنین برای تبدیل سیگنال های دیجیتال
میکروکنترلر به انالوگ برای محیط بیرون از DAC استفاده می کند.
1- چند
مورد از کاربرد های عملی ADC را بیان کنید .
2- واحد
ADC در
AVR
دارای دو مد عمکردی تک پایه و دیفرانسیلی است .هرکدام را توضیح دهید .
3- وقتی
از Adc در
مد 10 بیتی استفاده می کنیم و ولتاژ روی پایه adc برابر با 3.1v باشد و همچنین ولتاژ مرجع adc برابر 5v
باشد مقداری که از روی رجیستر داده adc
خوانده می شود برابر چند خواهد بود؟
4- یک
از کاربرد های ADC راه اندازی صفحه تاچ اسکرین مقاومتی می باشد .این کار چگونه انجام
می پذیرد .
5- دیتاشیت
سنسور lm35 را
تهیه کرده و با تعیین کنید خروجی این سنسور به ازای هر درجه افزایش دما چقد به
ولتاژ خروجی اش افزوده می شود
6- برنامه
ای بنویسید که با استفاده از سنسور LM35 دما را اندازه گیری کند و روی نمایشگر هفت قسمتی و LCD نمایش دهد.
1- برنامه
ی نوشته شده در پیش گزارش را روی بورد تست کنید .
2-
برنامه ای بنویسید که با استفاده از روش تفاضلی مقادیر روی
دو پایه از adc را خوانده و با هم مقایسه کند روی ال سی ولتاژ روی پایه 1 و پایه 2 را به صورت داینامیک نمایش داده و با
استفاده از پیغام های بزرگتر ،مساوی و یا کوچکتر وضعیت مقادیر روی دو پایه را نسبت
به هم نمایش دهد
3-
برنامه ای بنویسید که با استفاده از سنسور LM35 دما را
اندازه گیری و در صورتی دما به پایین تر از 20 درجه تجاوز کند یک بوق ممتد خطا به
مدت یک ثانیه پخش کند و ال ای دی قرمز را روشن کند و همچنسن در صورتی که دما به
بالاتر از 25 درجه تجاوز کند یک بوق ممتد دو ثاانیه ای پخش کند و چراغ قرمز را
روشن کند و وقتی دما بین 20 تا 25 درجه قرار دارد چراغ سبز را روشن کند .
هدف از این آزمایش، آشنایی با ماژولهای وای-فای و مراحل آماده سازی
محیط برنامه نویسی آنها می باشد. تراشه ESP8266 یکی از پر کاربردترین و ارزان قیمت
ترین تراشه های وای-فای است. این تراشه در واقع یک میکروکنترلر 32 بیتی است که
اینترفیس وای-فای نیز دارد و توسط شرکت Espressif Systems ساخته شد.
شکل 1: میکروکنترلر ESP8266
بعد از ساخت این تراشه، شرکتهای مختلف جهت کاربردی تر کردن این تراشه،
ماژولهای وای-فای را ساختند که کار با این تراشه را راحتتر کند. این ماژولها را می
توان به دو دسته کلی تقسیم کرد. ماژولهایی با پروتکل ارتباطی UART و
ماژولهایی با پروتکل ارتباطی USB.
در ادامه ابتدا به شرح سخت افزار این ماژولها و سپس به توضیح نحوه
آماده سازی محیط برنامه نویسی آن پرداخته می شود.
یکی از معروفترین شرکتهایی که در حوزه ساخت ماژولهای وای-فای با پروتکل
ارتباطی UART
فعالیت دارد، شرکت AI-Thinker است. این شرکت در سال 2014 اولین ماژول را که یک بورد مدار چاپی
با ابعاد 14.3 × 24.8mm با نام
تجاری ESP-01
وارد بازار کرد. این ماژول به صورت عمده در کاربردهای اینترنت اشیاء جهت اتصال
دستگاه ها به اینترنت از طریق وای-فای مورد استفاده قرار گرفت. روی این بورد از یک
تراشه ESP8266 و یک حافظه هشت مگابیتی با اینترفیس SPI (T25S80)برای
ذخیره برنامه مربوط به پیاده سازی پروتکل TCP/IP استفاده شده است.
شکل 2: ماژول ESP-01 و
اجزای آن
بعد از موفقیت بسیار زیادی که ماژول ESP-01 پیدا کرد،
ماژولهای دیگری بر مبنای تراشه ESP8266 وارد بازار شدند که تفاوت عمده آنها در تعداد پایه های I/O قابل
دسترس، وجود یا عدم وجود Led، وجود یا عدم وجود سوکت آنتن، وجود یا عدم وجود شیلد فلزی روی
آی-سی می باشد. در جدول 1، لیستی از این ماژولها به همراه مشخصات آنها آورده شده
است.
Name
|
Active pins
|
LEDs
|
Antenna
|
Shielded
|
Dimensions (mm)
|
Notes
|
ESP-01
|
6
|
Yes
|
PCB trace
|
No
|
14.3 × 24.8
|
512
KiB Flash and blue PCB from a generic manufacturer. 1 MiB Flash, AI-Cloud and
black PCB from AI-Thinker.
|
ESP-01M
|
16
|
No
|
PCB trace
|
Yes
|
18.0 × 18.0
|
Uses
ESP8285 (1 MiB built-in flash).
|
ESP-01S
|
6
|
Yes
|
PCB trace
|
No
|
14.4 × 24.7
|
1
MiB Flash
|
ESP-02
|
6
|
No
|
U.FL socket
|
No
|
14.2 × 14.2
|
|
ESP-03
|
10
|
No
|
Ceramic
|
No
|
17.3 × 12.1
|
|
ESP-04
|
10
|
No
|
None
|
No
|
14.7 × 12.1
|
|
ESP-05
|
3
|
No
|
U.FL socket
|
No
|
14.2 × 14.2
|
|
ESP-06
|
11
|
No
|
None
|
Yes
|
14.2 × 14.7
|
Not
FCC approved.
|
ESP-07
|
14
|
Yes
|
Ceramic + U.FL socket
|
Yes
|
20.0 × 16.0
|
Not
FCC approved.
|
ESP-07S
|
14
|
No
|
U.FL socket
|
Yes
|
17.0 × 16.0
|
FCC
and CE approved.
|
ESP-08
|
10
|
No
|
None
|
Yes
|
17.0 × 16.0
|
Not
FCC approved.
|
ESP-09
|
10
|
No
|
None
|
No
|
10.0 × 10.0
|
|
ESP-10
|
3
|
No
|
None
|
No
|
14.2 × 10.0
|
|
ESP-11
|
6
|
No
|
Ceramic
|
No
|
17.3 × 12.1
|
|
ESP-12
|
14
|
Yes
|
PCB trace
|
Yes
|
24.0 × 16.0
|
FCC
and CE approved.[20]
|
ESP-12E
|
20
|
Yes
|
PCB trace
|
Yes
|
24.0 × 16.0
|
4 MiB
flash.
|
ESP-12F
|
20
|
Yes
|
PCB trace
|
Yes
|
24.0 × 16.0
|
FCC
and CE approved. Improved antenna performance.
|
ESP-12S
|
14
|
Yes
|
PCB trace
|
Yes
|
24.0 × 16.0
|
FCC
approved.[21]
|
ESP-13
|
16
|
No
|
PCB trace
|
Yes
|
W18.0 × L20.0
|
Marked
as "FCC". Shielded module is placed sideways, as compared to the
ESP-12 modules.
|
ESP-14
|
22
|
Yes
|
PCB trace
|
Yes
|
24.3 × 16.2
|
Mostly
advertised with "AI Cloud Inside".
|
ماژولهای ذکر شده در بخش قبل،
برای ارتباط با کامپیوتر مناسب نیستند، چون آنها را نمیتوان برای پراگرام کردن
مستقیم به کامپیوتر متصل کرد و نیاز است از یک مبدل USB به UART استفاده
نمود. از این جهت ماژولهایی بر مبنای ESP8266 ساخته شدند که بتوان آنها را مستقیما به کامپیوتر متصل نمود و کار
پراگرام کردن آنها نیز ساده تر باشد. در جدول 2، لیستی از این ماژولها به همراه
مشخصات آنها آورده شده است.
در واقع روی این بوردها، یک تراشه
مبدل USB به
UART و
یکی از ماژولهای ذکر شده در بخش 6-1-2 قرار داده شده اند.
Name
|
Active pins
|
LEDs
|
Antenna
|
Shielded
|
Dimensions (mm)
|
Notes
|
NodeMCU DEVKIT
|
14
|
Yes
|
PCB trace
|
Yes
|
49 × 24.5
|
Uses the ESP-12 module; includes USB to serial interface.
|
WeMos[30]
D1[31]
|
12
|
Yes
|
PCB trace
|
Yes
|
53.4 × 68.6
|
Uses the ESP-12F module and Micro-USB socket. Discontinued in favor
of WeMos D1 R2.
|
WeMos[30]
D1 R2[32]
|
12
|
Yes
|
PCB trace
|
Yes
|
53.4 × 68.6
|
Uses ESP-12F module and has Micro-USB socket.
|
WeMos[30]
D1 mini[33]
|
12
|
Yes
|
PCB trace
|
Yes
|
25.6 × 34.2
|
Uses ESP-12S module and has Micro-USB socket.
|
WeMos[30]
D1 mini Lite[34]
|
12
|
Yes
|
PCB trace
|
Yes
|
25.6 × 34.2
|
Based on the ESP8285, an ESP8266 with 1 MiB flash built-in; has
Micro-USB socket.
|
WeMos[30]
D1 mini Pro[35]
|
12
|
Yes
|
Ceramic and U.FL socket
|
Yes
|
25.6 × 34.2
|
Uses ESP8266EX chip; has Micro-USB socket, U.FL antenna connector,
and 16 MiB flash.
|
Adafruit Huzzah ESP8266 breakout[24]
|
14
|
Yes
|
PCB trace
|
Yes
|
25 × 38
|
Uses the ESP-12 module.
|
SparkFun
ESP8266 Thing[25]
WRL-13231
|
12
|
Yes
|
PCB trace + U.FL socket
|
No
|
58 × 26
|
FTDI serial header, Micro-USB socket for power, includes Li-ion
battery charger.
|
DoIT
ESPduino[28]
|
12
|
Yes
|
PCB trace
|
Yes
|
53.4 × 68.6
|
Uses the ESP-WROOM-02 (ESP-13) module and USB Type B port. Fully
compatible with Arduino Uno shields.
|
از نرم افزار Arduino برای برنامه نویسی ماژولهای مبتنی بر ESP8266 می توان
استفاده کرد. به صورت پیشفرض این نرم افزار کتابخانه های لازم برای برنامه نویسی
ماژولهای مبتنی بر ESP8266 را ندارد و باید اضافه نمود. برای آماده سازی محیط برای برنامه
نویسی باید مراحل زیر را انجام داد.
مرحله 1: دانلود برنامه Arduino. (حدود 160مگابایت)
http://hw.ui.ac.ir/hc/files/arduino-1.8.5-windows.zip
مرحله 2: نصب کتابخانه های لازم برای ماژولهای ESP8266
بعد از دانلود برنامه Arduino، آن را از حالت فشرده خارج و فایل arduino.exe را اجرا
کنید. وارد منوی file شده و گزینه preferences رو انتخاب کنید و لینک
زیر رو در محل مشخص شده در عکس کپی کنید.
http://arduino.esp8266.com/stable/package_esp8266com_index.json
مرحله 3: وارد منوی Tools شوید و از قسمت
Board ، Board manager را
انتخاب کنید.
مرحله 4: طبق شکل زیر عبارت esp8266 را سرچ
کنید. سپس لینک More Info و
نهایتا دکمه Install را بزنید. حدود 150 مگابایت دانلود میشه، اگر احیانا خطا داد،
مجدد گزینه نصب را بزنید تا ادامه پیدا کند و فرایند نصب تکمیل گردد.
در صورت نصب کامل به صورت موفقیت آمیز، کلمه Installed نمایش داده
می شود
مرحله 5: حالا اگه به قسمت
Board برگردیم
می بینیم که یک بخش به نام ESP8266
Boards به این قسمت اضافه شدهاند.
مرحله 6: چون من از بورد
Wemos D1 استفاده میکنم پس گزینه آخر رو انتخاب میکنم .
مرحله 9) باودریت رو مطابق با شکل زیر تنظیم میکنیم .
1-
طبق مراحل گفته شده در پیش آگاهی، نرم افزار آردوینو را
نصب نموده و کتابخانه وای فای را به آن اضافه نمایید.
در جلسه قبل، با دستوراتی از آردوینو برای برنامه نویسی پایه های I/O ماژول
وای-فای آشنا شدید، این دستورات به صورت زیر بودند. از دستور pinMode
برای تعریف ورودی/خروجی بودن پایه استفاده می شود. این دستور معمولا در بخش setup
برنامه آردوینو استفاده می شود. با استفاده از دستورات digitalRead می توان
مقدار پورت را خواند و با استفاده از دستور digitalWrite می توان
یکی از پایه ها را صفر یا یک کنیم.
pinMode(pinName, IN);
digitalRead(pinName);
pinMode(pinName, OUTPUT);
digitalWrite(pinName,LOW);
برای کار با پورت سریال، ابتدا باید تنظیمات پورت سریال را انجام داد.
که شامل نرخ ارسال بیت و نحوه فریم بندی می باشد.
Serial.begin(speed, config)
Serial.begin(115200, SERIAL_8N1
); // دیتا به صورت 8 بیتی، بدون بیت پریتی و یک بیت پایان
Serial.println();//
فرستادن
کد اینتر
Serial.print ();//ارسال عدد، رشته یا کاراکتر
Serial.print(x, HEX);//عدد را به صورت مبنای شانزده
تبدیل و ارسال می کند
Serial.available();//
در صورتی که کاراکتری دریافت شده باشد مقدار آن بزرگتر از صفر خواهد بود
Serial.parseInt();
·
Serial.print(78)
gives "78"
·
Serial.print(1.23456)
gives "1.23"
·
Serial.print('N')
gives "N"
·
Serial.print("Hello
world.")
gives "Hello
world."
·
Serial.print(78,
BIN)
gives "1001110"
·
Serial.print(78,
OCT)
gives "116"
·
Serial.print(78,
DEC)
gives "78"
·
Serial.print(78,
HEX)
gives "4E"
·
Serial.print(1.23456,
0)
gives "1"
·
Serial.print(1.23456,
2)
gives "1.23"
·
Serial.print(1.23456,
4)
gives "1.2345"
1- برنامه ای بنویسید که مدت
روشن/ خاموش بودن LED روی ماژول وای فار را بتوان با استفاده از کامپیوتر تنظیم کرد.(یک
عدد از کامپیوتر دریافت کند(برحسب میلی ثانیه) و به همان مدت روشن و سپس به همان
مدت خاموش باشد.
2-برنامه فوق را به نحوی عوض کنید
که در حین روشن و خاموش شدن هم بتواند عدد جدیدی دریافت و مدت روشن و خاموش شدن را
بر اساس مقدار دریافتی تنظیم کند.
در این جلسه قصد داریم یک وبسرور روی ماژول وایفای راه اندازی کنیم و
کاربر بتواند از طریق مرورگر به ماژول متصل و Led روی بورد
را کنترل کند. ماژول وایفای دارای دو حالت عملکردی است: عملکرد به عنوان Access Point و
عملکرد در حالت Station. در ادامه به شرح آنها پرداخته می شود.
در شکل 8-1، حالت عملکردی Access Point نمایش
داده شده است. در این حالت ماژول وای فای به عنوان اکسس پوینت عمل میکند(AP) و
دیوایسهای وای فای می توانند مستقیما به آن متصل شوند. این روش مزیتش این است که
نیازی به نصب اکسس پوینت مجزا در محیط نیست و هزینه ها به شدت کاهش پیدا می کند.
شکل 12-1: عملکرد ماژول وای فای، در
حالت Access Point
در حالت عملکردی دوم، ماژول به عنوان یک Station عمل می
کند(STA) و
به یک اکسس پوینت متصل می شود و بقیه دیوایسها میتوانند از طریق آن اکسس پوینت با
ماژول وای فای ارتباط داشته باشند. در شکل 8-2، نحوه اتصال به ماژول وای فای در
حالت عملکردی Station، نمایش داده شده است.
شکل 12-2: عملکرد ماژول وای فای، در
حالت Station
1-
با استفاده از کدی که در آزمایشگاه توضیح داده شد و ضمیمه
این آزمایش شده است (حالت عمکردی Station) برنامه مربوط به روشن و خاموش کردن Led روی بورد
را به گونه ای تغییر دهید که مدت زمان روشن و خاموش شدن Led را بتوانید
کنترل کنید.
از کد htmlزیر استفاده کنید:
<html>
<form action="" method="get"
class="form-example">
<label for="ON">Time(ms) on:
</label>
<input type="text"
name="On" id="On" required><br><br>
<label for="OFF">Time(ms) off:
</label>
<input type="text"
name="off" id="off" required><br><br>
<input type="submit"
value="Send">
</form>
</html>
نتیجه اجرای کد فوق در
مرورگر، به صورت زیر خواهد شد:
در صورتیکه دکمه Send را بزنید و
اعداد فوق را وارد کرده باشید، در قسمت آدرس، URL به صورت
زیر خواهد بود:
ON=800&OFF=200
در ادامه برنامه آزمایش
شده در کلاس آورده شده و بخشهایی از کد که باید عوض شود هایلایت شده اند(زردها
باید تغییر کنند، سبزها باید اضافه شوند):
#include <ESP8266WiFi.h>
const char* ssid = "XXX";
const char* password = "YYYY";
int OnTime=0;
int OffTime=0;
int ledPin = D4;
WiFiServer server(80);
void setup() {
Serial.begin(115200);
delay(10);
pinMode(ledPin,
OUTPUT);
digitalWrite(ledPin, LOW);
// Connect to WiFi
network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid,
password);
while (WiFi.status()
!= WL_CONNECTED) {
delay(1000);
Serial.print(".");
digitalWrite(ledPin, !digitalRead(ledPin));
}
Serial.println("");
Serial.println("WiFi connected");
// Start the server
server.begin();
Serial.println("Server started");
// Print the IP
address
Serial.print("Use this URL : ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}
void loop() {
// Check if a client has connected
WiFiClient client = server.available();
if (!client) {
return;
}
// Wait until the
client sends some data
Serial.println("new client");
while(!client.available()){
delay(1);
}
// Read the first line
of the request
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
// Match the request
int value = LOW;
if (request.indexOf("/LED=ON")
!= -1) {
digitalWrite(ledPin,
LOW);
OnTime=??
value = LOW; }
if (request.indexOf("/LED=OFF")
!= -1){
digitalWrite(ledPin, HIGH);
OffTime=??
value = HIGH;
}
// Return the
response
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); // do not forget this one
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.print("Led pin is
now: ");
if(value == HIGH) {
client.print("On");
} else {
client.print("Off");
}
client.println("<br><br>");
client.println("Click <a
href=\"/LED=ON\">here</a> turn the LED on pin 5
ON<br>");
client.println("Click <a
href=\"/LED=OFF\">here</a> turn the LED on pin 5
OFF<br>");
client.println("</html>");
delay(1);
Serial.println("Client disconnected");
Serial.println("");
while(OnTime+ OffTime)
{
digitalWrite(ledPin, LOW);
delay(OnTime);
digitalWrite(ledPin, HIGH);
delay(OffTime);
}
}