گیتی الکترونیک مبتکر ایرانیان (گاما)

طراحی و ساخت انواع پروژه های الکترونیکی صنعتی و دانشجویی 09137291125

گیتی الکترونیک مبتکر ایرانیان (گاما)

طراحی و ساخت انواع پروژه های الکترونیکی صنعتی و دانشجویی 09137291125

آموزش جامع میکروکنترلر AVR جلسه2

به نام خدا


آموزش جامع میکروکنترلر AVR جلسه2


آموزش جامع میکروکنترلر AVR جلسه2



 

 

 

آموزش جامع میکروکنترلر AVR جلسه2

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

اگر به PORTA.0  تا  PORTA.7  نگاه کرده باشید کنارشون یه کلماتی هست : ADC0 تا ADC7 که با استفاده از این پورت( PORTA ) میتونیم سیگنال آنالوگ رو دیجیتال کنیم.

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

 

 6 روش وجود داره که بشه سیگنال آنالوگ رو به دیجیتال تبدیل کرد :
1) روش موازی یا همزمان
2) روش دو شیب
3) روش پله ای
4) روش تبدیل ولتاژ به فرکانس
5) روش تبدیل ولتاژ به زمان
6) روش تقریب متوالی

حالا میکروکنترلر AVR از کدوم یک از این روش ها استفاده میکنه ؟ روش تقریب متوالی

کانال

معمولا در یک میکرو AVR چندین کانال ADC وجود داره ؛ مثلا در مدل ATMEGA16  تعداد 8 عدد کانال ADC وجود داره !
توجه داشته باشید که در میکروکنترلر AVR تنها یک مبدل آنالوگ به دیجیتال وجود دارد و برای هر کانال از یک مبدل جدا استفاده نشده است.
یعنی اگر میبینید 8 تا کانال ADC در میکرو ATmega32 داریم ،
معناش این نیست که 8 تا مبدل داریم بلکه این 8 کانال با یکدیگر مالتی پلکس شدند و در نهایت اون که مورد نیازه به مبدل وصل میشه.
مثال خودمونی : تو خونتون 8 تا تلوزیون هست(چه شود ^_^) !!! حالا بابات میره یه آنتن میخره برا همشون و همشون مجبورن از این آنتن استفاده کنن.    افتاد؟؟؟؟؟

حالا با همدیگه میخوایم ببینیم برای تبدیل ( آنالوگ به دیجیتال ) چه فرایندی طی میشه :
فرض کنید ؛ در حوزه آنالوگ یه ولتاژِ بین 0 تا 5 ولت به کانال ADC داده میشه. این ولتاژی که داده میشه پیوسته است و میتونه هرمقداری داشته باشه.مثلا : 1.13 یا 4.69 و … اما این ولتاژ
چجوری برای میکرو قابل فهم میشه ؟؟؟
در روش تقریب متوالی یه فرمولی وجود داره بدین صورت :

VadcsadVin*1024)/Vref

پس سه تا مجهول داریم :
Vin : همون ولتاژی هست که کانال میگیره و قراره تبدیل به سیگنال دیجیتال بشه.(همون ولتاژی که رو یکی از پایه ها مثلا  PORTA.1   اعمال میشه)
Vref : ولتاژ مرجع
n : دقت یا درجه تفکیک ؛ در مورد n هم میتونم بگم که میکروکنترلرهای AVR دقت 10 بیتی دارند .
یعنی مقدار سیگنال تبدیل شده با دقت 10 بیت ذخیره میشود. (البته لازم بذکره که میشه با دقت 8 بیت نیز ازشون استفاده کرد)

ببینید دوستان ، بنده گفتم درجه دقت 10 بیتی این یعنی چه ؟

ما وقتی به یکی از کانال های ADC میکرو ولتاژی بین 0 تا 5 ولت میدیم و انتظار داریم که میکرو هم برامون نسبت بگیره و اونو تبدیل به سیگنال دیجیتال کنه ، روش کار بدین صورته که در دقت 10 بیت،میکرو بازه بین 0 تا 5 ولت رو به  210 = (1024) واحد تقسیم میکنه :

آموزش جامع میکروکنترلر AVR جلسه2
تصویر بالا کاملا گویاست !
در حالت گفته شده 0 ولت برابر عدد 0 دیجیتال و 5 ولت برابر عدد 1023 دیجیتال میباشد.
و هر ولتاژی بین 0 تا 5 ولت با همون نسبتی که گفتم خدمتتون به مقدار دیجیتالش تبدیل میشه.
برای مثال ولتاژ 2.5 ولت معادل دیجیتالش در این حالت برابر با عدد 512 میباشد.
کاملا مشخص است که هرچقدر این درجه دقت (n) بالاتر باشد،مقدار دیجیتال بدست آمده نیز به مقدار آنالوگ آن نزدیکتر است.

در مورد ولتاژ مرجع( Vref  )
واحد ADC برای اینکه عملیات تبدیل رو انجام بده نیاز به یه ولتاژ مرجع داره تا ولتاژ وارد شده رو با اون مقایسه کنه.
در واقع اگر ولتاژ مرجع رو مثلا 3 ولت انتخاب کردیم،بازه 0 تا 3 ولت به 1024 قسمت تبدیل میشه و همون ماجرای بالا …

ریجسترهای دوس داشتنی خودمون!!!


1) بررسی رجیستر کنترلی ADMUX

رجیستر کنترلی ADMUX


بیت های 
و 7 (REFS 1,0 ) :  طبق جدول زیر میتونیم ولتاژ مرجعمون رو انتخاب کنیم :
رجیستر کنترلی ADMUX

حالت اول : ولتاژ روی پایه AREF به عنوان مرجع انتخاب میشود. (یکی از پایه های میکرو کنترلر مون هستش اگه ATMEGA 16   رو یه نگاه بندایزی پیداش میکنی!!!!)
حالت دوم : ولتاژ روی پایه AVCC به عنوان مرجع انتخاب میشود. (اینم یکی از پایه های میکرو کنترلر مون هستش اگه ATMEGA 16   رو یه نگاه بندایزی  پیداش میکنی!!!!)
حالت سوم : —— (رزرو شده)
حالت چهارم : ولتاژ مرجع داخلی 2.56 ولت تثبیت شده به عنوان مرجع انتخاب میشود.

اگه حالت اول انتخاب بشه،ما هر ولتاژی که به پین AREF وصل کنیم به عنوان مرجع در نظر گرفته میشه.
در حالت دوم هم هر ولتاژی که به پین AVCC بدیم به عنوان ولتاژ مرجع در نظر گرفته میشه.
در حالت چهارم میکرو میاد و خودش یه ولتاژ 2.56 ولتی تثبیت شده و درجه یک ! رو میسازه و اون رو به عنوان ولتاژ مرجع انتخاب میکنه.

بیت های 0 و 1 و 2 و 3 و 4  ( MUX 4,0 ) :  از این بیت ها برای پیکربندی کانال های ADC میکروکنترلر AVR استفاده میشه.

برای اینکه مشخص کنیم که میخوایم از کدوم کانال (PA0-PA7) استفاده کنیم ، طبق جدول زیر مقادیر رو انتخاب میکنیم :

آموزش جامع میکروکنترلر AVR جلسه2


2) بررسی رجیستر ADCSRA

رجیستر ADCSRA

بیت 7  :   ADEN همونطور که از اسمش پیداست ، وظیفه ی فعال/غیر فعال کردن واحد ADC رو داره.

بیت6 :   ADSC قبل از اینکه هر عمل تبدیلی انجام بدید،اول مقدار این بیت رو 1 کنید.==> فرمان شروع تبدیل (آنالوگ به دیجیتال منظورمه.) بعد از اینکه عمل تبدیل به پایان رسید مقدار این بیت 0 میشه.

بیت 5 :   ADATE   با 1 شدن این فلگ،خاصیت تحریک اتوماتیک فعال میشه. در اینصورت با هرلبه بالارونده پالس اعمال شده به CPU ، واحد ADC تحریک میشه.

بیت 4   : ADIF   این فلگ هم معروف به فلگ وقفه ADC هست و هر وقت که عملیات تبدیل ADC تمام شد این بیت بصورت اتوماتیک 1 میشه و ما رو مطلع میکنه که آیا عملیات تبدیل انجام شده یا نه ؟!

بیت 3 :  ADIE      یک بودن این بیت به این معنیه که وقفه ADC فعاله و 0 بودنش هم حاکی از غیرفعال بودنشه !

بیت های 0 و 1 و 2 :     این بیت ها هم برای انتخاب ضریب تقسیم فرکانس واحد ADC هستند.
این بیتها سرعت تدیل رو  تعیین میکنن.فرکانس ADC از کلاک سیستم تامین میشود.

با توجه به جدول زیر میتونید ضریب فرکانس  مورد نظرمون رو انتخاب کنیم :

آموزش میکروکنترلر avr

3) بررسی رجیستر  (ADC (ADCH,ADCL

آموزش میکروکنترلر avr

در این دو رجیستر اطلاعات خروجی ADC قرار میگیرند. یعنی وقتی تبدیل انجام شد،مقدار حاصل با دقت مورد نظر میاد و تو این رجیستر میشینه !
اگه یادتون باشه گفتم که دقت واحد ADC در میکروکنترلرهای AVR به 10 بیت میرسه ! این یعنی چه ؟ یعنی اینکه طول داده ها 10 بیتیه !
اما مگه نگفتیم که طول هر رجیستر 8 بیته ؟ حالا چجوری 10 بیت رو تو 8 بیت جا بدیم ؟؟؟ چاره اش رو اتمل پیدا کرده !
میگه میایم 2 تا رجیستر 8 بیتی به اینکار اختصاص میدیم میشه 8+8 = 16 بعد ما 10 تاشو لازم داریم دیگه ؟!
اون 6 تا که اضافیه رو هم بهشون محل نمیذاریم ! لذا داستان اینجوری میشه که این رجیستر 2 تیکه است !
و در واقع 2 تا رجیستر هستند اما با یک نام و یک وظیفه که بهم چسبیدند !
فقط برای اینکه با هم قاطی نشند اومدند و یه پسوند H و L بهشون دادند.(مخفف High و Low )

حالا چرا 2 شکل کشیدیم از این رجیسترها ؟

اون بیت ADLAR بود توی رجیستر ADMUX ، یادتونه که ایشالا ؟!اون مال همینه.
اگه ADLAR=1 باشه نتیجه تبدیل بصورت تنظیم از چپ و اگر ADLAR=0 باشه بصورت تنظیم از راست اطلاعات درون رجیسترها قرار میگیره !
شکل بالایی تنظیم از راست و شکل پایینی تنظیم از چپه !
نکته ای که باید بگم اینه که به مجموع دو تا رجیستر ADCL و  ADCH میگند ADCW که در واقع قراره یه عدد 10 بیتی رو به ما تحویل بده !

4) بررسی رجیستر SFIOR

 آموزش جامع avr

در کل ما زیاد کاری به این رجیستر در مبحث ADC نداریم.
ولی اگه بیت ADATE از رجیستر ADSRA رو 1 کردید ، تبدیل هامون با یک لبه صعودی تحریک کننده اتفاق میوفته !

میدونم چیزی متوجه نشدید ولی عیبی نداره !!! خودم هم چیزی نفهمیدم laugh 

بیت های 5 و 6 و 7  :  ADTS 5,7 از طریق این سه بیت و با توجه به جدول زیر مشخص میکنیم که واحد ADC چجوری تحریک بشه !
گاهی وقتها لازمه که براساس یه رخداد خاصی،ADC بکار بیوفته !
مثلا : هرگاه وقفه خارجی اتفاق افتاد،ADC تبدیل رو شروع کنه.

 آموزش جامع avr

استفاده های خاص خودشو داره و چون بیشتر مواردش مربوط به مبحث تایمر/کانترها میشه.


سایر منابع : سایت دمرچیلو

نظرات 1 + ارسال نظر
علی ترابزاده جمعه 20 آذر 1394 ساعت 22:20

دمت گرم داش. خیلی حال دادی بهمون

خواهش میکنم، قابلی نداشت

برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد