آزمایشگاه مدار واسط

 

دانشگاه اصفهان

دانشکده مهندسی کامپیوتر

 

 

آزمایشگاه مدار واسط

 

نسخه 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

 


 


1 آزمایش اول: رسم شماتیک در نرم افزار آلتیوم

1-1پیش آگاهی

نرم افزار آلتیوم، یک نرم افزار تخصصی برای طراحی بورد مدار چاپی می‌باشد. برای تهیه بورد مدار چاپی یک مدار، باید در گام اول شماتیک مدار را رسم کرد. هدف این آزمایش رسم شماتیک یک مدار برای تست یک دیکدر می‌باشد. برای این منظور از دیکدر 74138 و هشت LED استفاده شده است در شکل 1-1، شماتیک مدار مورد نظر نمایش داده شده است.

شکل 1-1: شماتیک یک مدار برای تست دیکدر 74138

 

 

 

 

 

1-2پیش گزارش

نرم افزار آلتیوم را طبق توضیحات ارائه شده در فیلم آموزشی نصب کنید سپس با استفاده از آن، شماتیک نمایش داده شده در شکل 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 درجه دوران می یابد)

 

 

 


2 آزمایش دوم: کتابخانه شماتیک در آلتیوم و ایجاد یک قطعه جدید

2-1پیش آگاهی

در نرم افزار آلتیوم امکان ساخت کتابخانه برای شماتیک وجود دارد. در کتابخانه می‌توان قطعات استفاده شده در شماتیک را ویرایش کرد و همچنین قطعات جدیدی را تعریف کرد. برای ایجاد کتابخانه شماتیک باید از منوی Design گزینه Make Schematic Library را انتخاب کنید. با انجام این کار یک فایل با پسوند schlib به پروژه اضافه می‌شود. برای دیدن کتابخانه و قطعات آن باید در پنجره Project ، فایل کتابخانه را ا انتخاب کنید.

شکل 2-1: نحوه مشاهده کتابخانه ایجاد شده برای پروژه

برای تولید یک قطعه جدید و اضافه کردن آن به کتابخانه از منوی Tools گزینه New Component انتخاب کنید.

2-2پیش گزارش

قطعه نمایش داده شده در شکل 2-2 را ایجاد کنید.

شکل 2-3: یک تراشه 48 پایه

 


3 آزمایش سوم: آماده‌سازی شماتیک برای انتقال به PCB

3-1پیش آگاهی

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

بعد از اینکه شماتیک مدار تکمیل گردید مراحل زیر باید انجام گردد:

1-    Annotate کردن شماتیک

2-    تعیین footprint برای تمام قطعات بکار رفته در شماتیک

3-    انتخاب گزینه Update PCB … از منوی Design

در ادامه به شرح موارد فوق پرداخته می‌شود.

3-1-1 مفهوم واژه Annotate

هر قطعه‌ای که در صفحه شماتیک قرار داده می‌شود دارای یک فیلد به نام 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 تکراری در شماتیک مجاز نیست)

3-1-2 تعیین FootPrint قطعات

شماتیک قطعات حاوی اطلاعاتی شامل تعداد پایه‌های ورودی/خروجی، شماره پایه و نام پایه می‌باشد و نشان دهنده شکل واقعی قطعه و نوع پکیج آن نمی‌باشد. این در حالی است که هنگام رسم 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

3-1-3 انتخاب گزینه Update PCB از منوی Design

هرگاه مراحل سه گانه فوق انجام شد و هیچ خطایی در شماتیک موجود نبود با انتخاب گزینه Update PCB Document از منوی Design می‌توانید وارد محیط PCB شوید. در صورتیکه این گزینه در منوی Design وجود نداشت باید ابتدا یک فایل PCB به پروژه اضافه کنید. در شکل 3-2 نحوه اضافه کردن یک فایل pcb به پروژه نمایش داده شده است.

بعد از اینکه گزینه Update PCB Document را انتخاب کردید پنجره ای ظاهر می شود با زدن دکمه Validate Change خطاهای احتمالی نمایش داده میشود و در صورتی که خطایی وجود نداشت با زدن دکمه Execute Change عملیات انجام خواهد شد و Footprintهای شماتیک به فایل PCB وارد می شوند.

شکل 3-2: اضافه کردن یک فایل PCB به پروژه

 

3-2پیش گزارش

1-    برای مدار نمایش داده شده در شکل 3-3، مراحل لازم برای انتقال به PCB را اجرا کنید. (4 مرحله ذکر شده در بخش 3-1)

شکل 3-4: شماتیک یک مدار برای پراگرام کردن تراشه های شرکت Atmel

 

3-3 دستور کار

 

1-    بعد از انتقال مدار به PCB، قطعات را بچینید و تمام تراکهای (Track) مورد نیاز را رسم کنید (برد شما تک لایه و فقط از لایه زیر استفاده کنید).

راهنمایی: ابتدا در قسمت پایینی صفحه، برگه BottomLayer را انتخاب کنید. سپس با زدن کلیدP و سپس کلید T به مود رسم تراک وارد شوید و شروع به رسم تراکها در لایه زیر کنید . رنگ پیش فرض برای لایه زیر در نرم افزار آلتیوم، آبی است

شکل 3-5: نمونه یک مدار PCB، رسم شده

2-    کادر صورتی رنگ دور مدار را در لایه KeepOutLayer رسم کنید. تحقیق کنید که این لایه چه کاربردی دارد؟

3-    قسمتهایی که به رنگ زرد هستند در چه لایه ای می‌باشند؟


4 آزمایش چهارم: آشنایی با PCB و مفاهیم آن

4-1پیش آگاهی

در جلسه قبل نحوه انتقال شماتیک به PCB و رسم PCB انجام شد. در این جلسه نکاتی در مورد طراحی PCB ارائه خواهد شد سپس نحوه ایجاد کتابخانه PCB و طراحی footprint شرح داده خواهد شد.

4-1-1 واحدهای اندازه گیری فاصله در PCB

رعایت صحیح فاصله‌ها در PCB، از اهمیت ویژه ای برخوردار است و ممکن است عدم دقت در این رابطه، منجر به سخت شدن عملیات مونتاژ قطعات و بعضی اوقات چاره ای جز طراحی مجدد PCB و ساخت بورد جدید نیست. مواردی که هنگام طراحی PCB باید به فاصله‌های آنها دقت کرد عبارتند از: ابعاد فیزیکی قطعات (فضایی که روی بورد اشغال می‌کنند)، فاصله بین پایه‌های قطعات، قطر سوراخ پایه‌ها روی بورد(برای تعیین نوع مته ای که برای سوراخکاری استفاده می‌شود)، ابعاد کل بورد، ضخامت تراک‌ها، فاصله بین تراکها(Clearance) و فاصله بین قطعات مختلف روی بوردبرخی از این فاصله‌ها را باید هنگام طراحی FootPrint قطعه‌ها لحاظ کرد (ابعاد فیزیکی قطعه، فاصله بین پایه‌ها، قطر سوراخ پایه‌ها) و موارد دیگر باید هنگام رسم PCB در نظر گرفته شود.

واحدهای اندازه گیری فاصله در آلتیوم عبارتند از mil و mm. یک میل برابر با 1 هزارم اینچ می‌باشد. (این واحد به این خاطر استفاده می‌شود که اکثر سازندگان قطعات در ساخت قطعه از واحد اینچ استفاده می‌کنند) مثلا فاصله بین دو پایه متوالی در پکیج دیپ برابر با 0.1 اینچ می‌باشد. در مورد مته‌ها، عموما از واحد میلی متر استفاده می‌شود. بنابراین برای تعیین قطر سوراخهای بورد بهتر است از واحد mm استفاده شود. (هر میلی متر به صورت تقریبی برابر با 39.37mil است)

نکته کاربردی: فاصله بین دو سوراخ متوالی روی برد بوردها[1] دقیقا برابر با 100mil می‌باشد. این نکته می‌تواند به عنوان معیار مناسبی برای اندازه گیری فاصله بدون داشتن خط کش یا کولیس باشد. به عنوان مثال با توجه به شکل 4-1، می‌توان متوجه شد که فاصله پایه‌های تراشه نصب شده روی برد بورد برابر با 100mil و طول تراشه برابر با 800mil و عرض تراشه برابر با 300mil است. یا در footprint مربوط به مقاومت نصب شده روی برد بورد، فاصله بین پایه‌های مقاومت برابر با 300mil باید قرار داده شود و برای دیود 400mil است.

شکل 4-1: استفاده از برد بورد برای اندازه گیری فاصله قسمتهای مختلف یک تراشه

رعایت فاصله‌ها در رسم PCB

همانطور که گفته شد، ضخامت تراکهای رسم شده در PCB و همچنین حداقل فاصله بین دو تراک موازی از پارامترهای مهم در رسم PCB است و اندازه آنها معمولا بر حسب mil سنجیده می‌شود. دو عامل در تعیین این دو فاصله دخالت دارند که عبارتند از: محدودیتهای تکنولوژی ساخت بورد مدار چاپی و محدودیتهای که به نوع و ماهیت سیگنال عبوری از این تراک بستگی دارد

محدودیتهای ناشی از تکنولوژی ساخت بورد

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

محدودیتهای ناشی از ماهیت سیگنال عبوری از تراک

برای سیگنالهای تغذیه باید تراک با ضخامت زیاد رسم کرد (مثلا 30mil یا بیشتر). سیگنالهایی که فرکانس تغییرات آنها زیاد است (مثلا بیشتر از 500 کیلو هرتز) اگر نزدیک همدیگر رسم شوند روی همدیگر اثر همشنوایی[2] خواهند داشت و باعث ایجاد خطا می‌شود برای کاهش اثر همشنوایی بهتر است فاصله بین تراکها بیشتر از 10mil باشد.

4-1-2 ایجاد Footprint جدید

برای ایجاد 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 هر قطعه باید اطلاعاتی در مورد ابعاد قطعه، تعداد پایه‌ها، فاصله بین پایه‌ها، ضخامت هر پایه، طول هر پایه و ... داشته باشید. این اطلاعات را می‌توان با اندازه گیری قطعه واقعی بدست آورد یا اینکه از دیتا شیت قطعه استخراج کرد. معمولا در صفحات انتهایی دیتاشیت هر قطعه، ابعاد فیزیکی قطعه بر حسب اینچ و میلیمتر ارائه می‌شود.

4-1-3 مفهوم Grid

در نرم افزار آلتیوم به منظور کمک به طراح، صفحه رسم PCB به صورت شطرنجی می‌باشد. این خطوط شطرنجی به صورت دو سطحی است. طراح PCB با کمک گرید می‌تواند قطعات را با نظم مشخص روی صفحه بچیند و تراکها را روی خطوط گرید رسم کند تا شکل منظمی داشته باشند. برای تعیین اندازه Gridهای سطح 1 و سطح 2 باید گزینه snap در Status Bar انتخاب شود. در شکل 4-3، محل تعیین این پارامتر، مشخص شده است. همانطور که در این شکل ملاحظه می‌شود برای این دو سطح مقادیر 20mil و 100mil انتخاب شده است. وقتی که در صفحه رسم PCB با استفاده از دکمه‌های PgUp و PgDn روی مدار Zoom In یا Zoom Out می‌کنید، به صورت اتوماتیک نرم افزار آلتیوم، گرید مناسب را برای شما نمایش می‌دهد.

4-1-4 مفهوم Snap

زمانی که در قسمت PCB از نرم افزار آلتیوم، قطعه ای را جابجا می‌کنید حرکت قطعه در جهت افقی و عمودی به صورت پله پله انجام خواهد شد و قطعه‌ها را نمیتوان به اندازه خیلی کم جابجا کرد. این خاصیت باعث می‌شود که نظم دادن به قطعه‌ها به راحتی امکان پذیر شود. مثلا برای اینکه پایه‌های دو قطعه دقیقا روبروی هم قرار گیرد نیازی به دقت زیاد کاربر ندارد و چون حرکتها به صورت پله ای است به راحتی می‌توان قطعات را روبروی هم دیگر و روی گریدها قرار داد. این مساله حرکت کردن قطعه‌ها به صورت پله ای، در مرحله رسم تراک نیز مشاهده می‌شود. در واقع هنگام رسم تراک، نرم افزار آلتیوم اجازه نمیدهد هر نوع زاویه ای به تراک بدهید و از هر مکانی که خواستید عبور دهید. برای تنظیم فاصله پله‌ها باید از منوی Design، گزینه Options… را انتخاب کنید و در پنجره ظاهر شده، برگه Option را انتخاب کنید. در شکل 4-4، پنجره مربوط به تنظیم Snap نمایش داده شده است. همانطور که ملاحظه می‌شود مقدار Snap هم برای Component و هم برای تراکها قابل انتخاب است.

شکل 4-3: نحوه تعیین اندازه گریدهای سطح 1 و سطح 2 (با انتخاب گزینه Snap از قسمت پایینی نرم افزار آلتیوم)

شکل 4-4: نحوه تعیین Snap (با انتخاب گزینه Snap از قسمت پایینی نرم افزار آلتیوم)

4-2پیش گزارش

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: نمونه پیشنهادی برای چینش قطعات


5 آزمایش پنجم: تکمیل کردن PCB و آماده کردن آن برای ساخت

5-1پیش آگاهی

در جلسات قبل نحوه رسم PCB توضیح داده شد. در این جلسه قابلیتهای نرم افزار آلتیوم برای رسم PCB توضیح داده می‌شود.

5-1-1مفهوم via

به سوراخهایی که روی بورد ایجاد می‌شود تا تراکها را از یک لایه به یک لایه دیگر منتقل کند via گفته می‌شود. در واقع با استفاده از via می‌توان لایه‌های مسی در لایه‌های مختلف را به یکدیگر متصل کرد. اگر در حین رسم تراک خواستید ادامه آن را در لایه دیگری رسم کنید باید از حالت کشید تراک خارج شوید سپس با زدن دکمه‌های P و V (Place Via) به حالت اضافه کردن via وارد شوید، با کلیک کردن موس روی تراک مورد نظرتان یک Via اضافه کنید، به صورت اتوماتیک نام via با نام تراک شما یکسان می‌شود. اگر نام تراک و نام via یکسان نباشد آنگاه امکان اتصال آنها به یکدیگر وجود ندارد

5-1-2مفهوم بورد متالیزه

اگر داخل سوراخهای بورد (سوراخهای مربوط به پایه قطعات و سوراخهای مربوط به viaها) یک لایه فلزی گذاشته شود تا اتصال فیزیکی بین لایه‌ها برقرار شود آنگاه به بورد بورد متالیزه گفته می‌شود. توجه داشته باشید که این اصطلاح مربوط به نرم افزار آلتیوم نیست (در نرم افزار آلتیوم فرض بر این است که این لایه فلزی وجود دارد) این اصطلاح توسط شرکتهایی که عمل ساخت بورد PCB را انجام می‌دهد به کار می‌رود. بوردهای غیر متالیزه ارزان قیمت تر هستند و قرار دادن یک سیم مسی در سوراخها و لحیم کردن آن باید توسط شخص مونتاژ کار انجام شود.

5-1-3رسم تراکها به صورت خودکار

برای رسم تراکها به صورت خودکار باید ruleهای مورد نیاز را تعریف کنید سپس با انتخاب گزینه All… در منوی AutoRoute وارد پنجره Auto Route Setup شوید. این پنجره در شکل 5-1 نمایش داده شده است. استفاده از این گزینه فقط برای ساخت بوردهای نمونه، برای صرفه جویی در وقت استفاده میشود و توصیه می شود برای رسم PCB از این گزینه استفاده نشود.

5-1-4 اضافه کردن لایه

به صورت پیش فرض، تعداد لایه ها در نرم افزار آلتیوم دو لایه می باشد، لایه زیر و لایه رو. در صورتیکه نیاز به افزایش تعداد لایه ها باشد(معمولا برای بوردهایی با فرکانس کاری بالاتر از 10مگاهرتز) با انتخاب گزینه Layer Stack Manager … از منوی Design میتوان تعداد لایه ها و ترتیب آنها را مدیریت کرد.

5-1-5 تعریفRules در آلتیوم

برای اینکه رسم PCB ساده تر انجام شود و از اشتباهات احتمالی جلوگیری شود می توان قوانینی را تعریف کرد تا هنگام رسم PCB، خود نرم افزار قسمتی از کارها را به صورت خودکار برای شما انجام دهد. مثلا در رسم PCB، تراکهای مربوط به تغذیه بورد باید ضخیمتر از تراکهای بقیه سیگنالها باشند. شما می توانید با ایجاد یک قانون مشخص کنید که اندازه تراک استفاده شده برای VCC و GND دقیقا 50 mil باشد. در صورتی که این قانون تعریف شده باشد، به محض اینکه با موس روی یک Pad متصل به GND کلیک کنید تا تراک را رسم کنید، خود به خود اندازه تراک 50mil می شود.

برای ایجاد قوانین، شما می توانید از منوی Design، گزینه Rules را انتخاب کنید. با انتخاب این گزینه، لیستی از قوانینی که قادر به تعریف آنها هستید نمایش داده می شود. در شکل 5-1 پنجره مربوط به مدیریت قوانین نمایش داده شده است. از لیست ظاهر شده برای قوانین موارد زیر خیلی مهم هستند و قطعا باید قوانینی برای آنها تعریف شود:

-        Clearance Constraint

-        Routing Layers

-        Width Constraint

شکل 5-1: پنجره مربوط به تعریف و ویرایش قوانین رسم PCB

5-1-6 قراردادن قطعه در لایه زیر

با دابل کلیک کردن روی یک قطعه و انتخاب گزینه Bottom Layer در قسمت Layer می توان قطعه را به پشت بورد منتقل کرد

5-1-7 نوشتن متن در لایه زیر

معمولا برای راهنمایی استفاده کننده از بورد نوشته هایی روی سطح بورد قرار داده میشود(مثلا نام بورد، ورژن آن، محلهای اتصال تغذیه و ...) که این نوشته ها می تواند در لایه Top Overlay باشد یا به صورت مسی در لایه رو یا در لایه زیر نوشته شود. با انتخاب کلیدهای میانبر P و سپس S، میتوان یک رشته متنی را روی نوشت و با دابل کلیک روی آن، لایه مورد نظر را انتخاب کرد.

5-1-8 چک کردن‌های نهایی بورد PCB

با توجه به اینکه رسم 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

 


5-2پیش گزارش

1-    PCB مربوط به آزمایش شماره 4 را با استفاده از Ruleهای زیر مجددا رسم کنید(از AutoRoute استفاده کنید) سپس تمام مراحل گفته شده در بخش 5-1-8 را روی آن اجرا کنید.

قانون 1: کلیه تراکهای VCC برابر 20mil باشد

قانون2: کلیه تراکهای GNDبرابر با 25milباشد

قانون3: تراکهای باقیمانده برابر با 8mil باشند

قانون4: فقط از لایه زیر استفاه شود

قانون 5: فاصله تراکها از همدیگر کمتر از 12milنباشد

قطر padهای مربوط به همه تراشه ها 0.7 میلیمتر و برای مقاومت و خازنها 0.8میلیمتر باشد

5-2دستور کار

بررسی 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

میکروکنترلر های avr حداکثر دارای 6 تایمر-کانتر هشت بیتی و یا شانزده بیتی می باشند .که تایمر کانتر ها بسته به نوع آنها دارای امکانات مختلفی ازجمله تولید موج pwm ، حالت مقایسه ،عملکرد غیر همزمان و پشتیبانی از وقفه هایی از جمله وقفه سرریز ،وقفه مقایسه و ......می باشند .

نحوه برنامه نویسی برای تایمر

برنامه نویسی تایمر در avr بدین صورت می باشد که اول ما هدف خود و نوع تایمر-کانتری را که میخواهیم استفاده کنیم انتخاب می کنیم .برای زمان های کم معمولا 8 بیتی استفاده می کنیم و برای زمان های بیشتر از 16 بیتی .بعد از انتخاب تایمر-کانتر فرکانس آن را تعیین می کنیم و زمان هردور شمارش آن را تعیین می کنیم و بدین وسیله می توانیم زمان هر بار سرریز تایمر کانتر را بدست آورده و از وقفه سرریز استفاده کنیم یا اگر زمانی که ما میخواهیم اندازه بگیریم کمتر از یک دور سرریز باشد از وقفه مقایسه استفاده کنیم و وقتی مقدار شمارنده به حد مورد نطر رسید با توجه به وقفه مقایسه متوجه گذشت زمان مورد نظر می شویم.همچنین برای استفاده از موج های pwm در رجیستر های تایمر تنطیمات لازم را انجام داده و حالات های مختلف تولید موج را انتخاب می کنیم.

معرفی WatchDog

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 ثانیه هیچ کلیدی فشرده نشد، میکرو ریست شود.

8آزمایش هشتم: کار با پورت سریال

پیش آگاهی

اصول پورت سریال

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

usart start and stop bit 0

ارتباط سریال می تواند همزمان(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 ساعت را مشاهده کنید

 


9آزمایش نهم: کار با مبدل آنالوگ به دیجتال

 

پیش آگاهی

در واقع مبدل آنالوگ به دیجیتال به ما این امکان را می دهد تا سیگنال های آنالوگ را به دیجیتال تبدیل کنیم .

مبدل آنالو گ به دیجیتال در AVR

میکروکنترلر ها نیاز به ارتباط با دنیای خارج از میکروکنترلر را دارند . معمولا دنیای خارج ماهیت آنالوگ دارد مثلا خروجی سنسور ها ،سیگنال های مختلفی که به میکرو می رسند آنالوگ می باشند و درون میکروکنترلر هم ماهیت دیجیتال دارد بدین ترتیب نیاز است تا برای ارتباط میکروکنترلر با دنیای بیرون امکان تبدیل این سیگنال ها به هم وجود داشته باشد.از همین رو در میکرکنترلر های 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 درجه قرار دارد چراغ سبز را روشن کند .

 


10-1پیش آگاهی

هدف از این آزمایش، آشنایی با ماژولهای وای-فای و مراحل آماده سازی محیط برنامه نویسی آنها می باشد. تراشه ESP8266 یکی از پر کاربردترین و ارزان قیمت ترین تراشه های وای-فای است. این تراشه در واقع یک میکروکنترلر 32 بیتی است که اینترفیس وای-فای نیز دارد و توسط شرکت Espressif Systems ساخته شد.

شکل 1: میکروکنترلر ESP8266

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

در ادامه ابتدا به شرح سخت افزار این ماژولها و سپس به توضیح نحوه آماده سازی محیط برنامه نویسی آن پرداخته می شود.

10-1-1 ماژولهای وای-فای با ارتباط UART

یکی از معروفترین شرکتهایی که در حوزه ساخت ماژولهای وای-فای با پروتکل ارتباطی 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".

 

10-1-2 ماژولهای وای-فای با ارتباط USB

ماژولهای ذکر شده در بخش قبل، برای ارتباط با کامپیوتر مناسب نیستند، چون آنها را نمیتوان برای پراگرام کردن مستقیم به کامپیوتر متصل کرد و نیاز است از یک مبدل 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.

 

10-1-3 محیط برنامه نویسی

از نرم افزار 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) باودریت رو مطابق با شکل زیر تنظیم میکنیم .

 

 

 

10-2دستورکار

1-    طبق مراحل گفته شده در پیش آگاهی، نرم افزار آردوینو را نصب نموده و کتابخانه وای فای را به آن اضافه نمایید.

 

 

 


11-1پیش آگاهی

در جلسه قبل، با دستوراتی از آردوینو برای برنامه نویسی پایه های I/O ماژول وای-فای آشنا شدید، این دستورات به صورت زیر بودند. از دستور pinMode برای تعریف ورودی/خروجی بودن پایه استفاده می شود. این دستور معمولا در بخش setup برنامه آردوینو استفاده می شود. با استفاده از دستورات digitalRead می توان مقدار پورت را خواند و با استفاده از دستور digitalWrite می توان یکی از پایه ها را صفر یا یک کنیم.

pinMode(pinName, IN);

digitalRead(pinName);

pinMode(pinName, OUTPUT);

digitalWrite(pinName,LOW);

 

11-1-1 کار با پورت سریال

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

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"

11-2دستور کار

1- برنامه ای بنویسید که مدت روشن/ خاموش بودن LED روی ماژول وای فار را بتوان با استفاده از کامپیوتر تنظیم کرد.(یک عدد از کامپیوتر دریافت کند(برحسب میلی ثانیه) و به همان مدت روشن و سپس به همان مدت خاموش باشد.

2-برنامه فوق را به نحوی عوض کنید که در حین روشن و خاموش شدن هم بتواند عدد جدیدی دریافت و مدت روشن و خاموش شدن را بر اساس مقدار دریافتی تنظیم کند.

 


12-1پیش آگاهی

در این جلسه قصد داریم یک وب‌سرور روی ماژول وایفای راه اندازی کنیم و کاربر بتواند از طریق مرورگر به ماژول متصل و Led روی بورد را کنترل کند. ماژول وایفای دارای دو حالت عملکردی است: عملکرد به عنوان Access Point و عملکرد در حالت Station. در ادامه به شرح آنها پرداخته می شود.

12-1-1 حالت عملکردی Access Point

در شکل 8-1، حالت عملکردی Access Point نمایش داده شده است. در این حالت ماژول وای فای به عنوان اکسس پوینت عمل میکند(AP) و دیوایسهای وای فای می توانند مستقیما به آن متصل شوند. این روش مزیتش این است که نیازی به نصب اکسس پوینت مجزا در محیط نیست و هزینه ها به شدت کاهش پیدا می کند.

شکل 12-1: عملکرد ماژول وای فای، در حالت Access Point

12-1-2 حالت عملکردی Station

در حالت عملکردی دوم، ماژول به عنوان یک Station عمل می کند(STA) و به یک اکسس پوینت متصل می شود و بقیه دیوایسها میتوانند از طریق آن اکسس پوینت با ماژول وای فای ارتباط داشته باشند. در شکل 8-2، نحوه اتصال به ماژول وای فای در حالت عملکردی Station، نمایش داده شده است.

شکل 12-2: عملکرد ماژول وای فای، در حالت Station

12-2دستورکار

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);

 

}

 

}

 

 



[1] BreadBoard

[2] CrossTalk

تاریخ به روز رسانی:
1401/11/17
تعداد بازدید:
455
Powered by DorsaPortal