حذف نویز ADC در AVR – رجیستر و وقفه در ADC – جلسه 7

حذف نویز ADC در AVR

وقفه | حذف نویز ADC در AVR

در جلسه ی مبدل آنالوگ به دیجیتال در avr از سری آموزش AVR پرداختیم به معرفی این واحد و در این جلسه به موارد پیشرفته تر مثل حذف نویز ADC و معرفی رجیسترهای این بخش و وقفه در ADC اختصاص میدیم.

 

رجیسترهای ADC در AVR

در ابتدا میریم سراغ رجیسترها و در ادامه حذف نویز ADC رو مورد بررسی قرار میدیم.

رجیستر ADCSRA :

رجیستر ADCSCR

بیت های 0 و 1 و 2 :

همونطور که در جلسه ی گذشته توضیح داده شد، باید کلاک واحد ADC در AVR رو تعیین کنیم.

 

بیت های 1 و 1 و 2 در رجیستر adcsra وظیفه ی تعیین کلاک میکرو رو داره و طبق جدول زیر میتونیم با تعیین بیت  ها ، مقدار عددی که کلاک میکرو بر اون تقسیم میشه رو تعیین کنیم.

جدول تقسیم فرکانسی در رجیستر ADCSRA :

تعیین کلاک های ADC رجیستر ADCSRA

بیت 3 : ADIE

1 بودن این بیت به معنی این هستش که وقفه ADC فعال است.

0 بودنش هم حاکی از غیرفعال بودنه !(وقفه ADC رو آخر همین مطلب توضیح میدم).

بیت 4 : ADIF

این فلگ هم معروف به فلگ وقفه ADC هست و هر زمان بیت یک بشه وقفه میکروکنترلر فعال میشه.

بیت 5 : ADATE

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

بیت 6 : ADSC

قبل از اینکه هر عمل تبدیلی انجام بدید،اول مقدار این بیت رو 1 کنید این بیت بعد از فعال کردن ADC فرمان آغاز تبدیل آنالوگ به دیحیتال رو میده .

بعد از اینکه عمل تبدیل به پایان رسید مقدار این بیت 0 میشه.

بیت 7 :

وظیفه ی فعال/غیر فعال کردن واحد ADC رو داره.

1 = ADC فعال میشه.

0 = ADC غیرفعال میشه.

 

رجیستر ADMUX

بعد از رجیستر ADCSCR ، میریم سراغ ADMUX.

همونطور که در جلسه ی راه اندازی adc در کدویژن توضیح داده شد ، باید ولتاژ مرجع ADC رو تعیین کنیم که این رجیستری مربوط به تنظیم همین بخش از ADC هستش.

رجیستر ADMUX

بیت های 6 و 7  REFS 1,0 :

طبق جدول زیر تعیین میشن :

رجیستر ADMUX

مشخصه که در هر حالت از تعیین بیت ها مرجع های AREF ، AVCC رزرو شده و 2.56 رو میشه انتخاب کرد.

بیت 5 :

این بیت اگر یک باشه نتیجه ی نمونه برداری به صورت چپ از راست در رجیستر های  ADCH و ADCL قرار بگیرند. و اگر صفر باشه بصورت راست به چپ.

 

بیت های 0 و 1 و 2 و 3 و 4 ( MUX 4,0 ) :

از این بیت ها برای پیکربندی کانال های ADC (PA0-PA7) میکرو استفاده میشه و برای تنظیم باید مطابق جدول زیر عمل کنیم.(از کدوم پین قراره استفاده کنیم؟)

 

رجیستر ADMUX - بیت های صفر تا 4

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

رجیستر های ADCH ADCL که با نام ADCW  هم شناخته میشه.

در رجیستری قبلی و در بیت 5 درباره ی این رجیستری ها یک توضیح کوتاه دادم و مشخص شد که اطلاعات ADC در این رجیستر ها ذخیره میشن. این رجیستری ها قابلیت تنظیم کردن ندارن و درواقع یکی هم هستن!

نمونه برداری در ADC همونطور که جلسه قبل گفته شد ، هم میتونه 8 بیتی و هم میتونه 10 بیتی باشه ، برای ذخیره سازی در حالت 10 بیتی باید 10بیت حافظه وجود داشته باشه به همین علت 2 رجیستر 8 بیتی برای این کار تعیین شده و در 10 بیت از اون این مقدار ریخته میشه.

در واقع 2 رجیستر هستند چون یک وظیفه واحد دارن با یک نام و با تفاوت پسوند فقط شناخته میشن.پسوند H و L مخفف High و Low هستش.

خودتون رو برای شناختن رجیستری ها و حفظ کردنشون به زحمت نندازین ، با کمی تجربه و کار روی پروژه های مختلف اونهارو به خاطر میسپارین! اما بقیه ی مطلب رو به هیچ عنوان از دست ندین!

حذف نویز ADC در AVR

در فرکانس های بالا (بالای 8مگاهرتز) احتمال ایجاد نویز داخلی و تاثیر نویز خارجی بر روی ADC بالا میره.

در کدویژن AVR میتونیم مطابق شکل زیر گزینه ی noise canceler رو فعال کنیم که تاثیر خوبی در حذف نویز داره.

حذف نویز ADC

البته راه های دیگه ای هم وجود داره ، مثل:

1- استفاده از فیلتر پایین گذر LC :

حذف نویز ADC فیلتر پایین گذر LC

2- استفاده از خازن 100 نانو فاراد در نزدیکترین محل اتصال تغذیه IC.

3- برنامه نویسی مناسب!

4-کشیدن یک لایه مسی در اطراف مدار چاپی و نقاط خالی از خطوط و اتصال اون به gnd مدار.

وقفه در ADC

و حالا در نظر داریم با وقفه در ADC آشنا بشیم. وقفه در ADC میکروکنترلر AVR رو میشه با تیک اون در بخش کدویزارد یا تنظیم رجیستری ها فعال کرد.

اگر وقفه در ADC رو توسط کدویزارد فعال کنیم تابع وقفه ADC مطابق شکل زیر در کدها ایجاد میشه:

که واقعا توضیح دیگه ای نداره اگر با وقفه ها در AVR آشنا باشید!

راه اندازی چند ADC همزمان

توضیحاتی که قرار بود بدم رو دادم ، اما یک توضیح کوتاه هم برای استفاده از چند ADC همزمان بدم.

در AVR ما یک واحد ADC داریم ، به این معنی که هر 8 پایه توسط یک واحد باید چک و نمونه برداری بشن، به همین اگر قرار باشه از چند ADC استفاده کنیم میکرو باید به شکل ترتیبی اونهارو جاروب و نمونه برداری کنه (مثل مالتی پلکسر).

ما میتونیم مطابق شکل زیر عمل نمونه برداری چند ADC همزمان رو فعال کنیم.

 

راه اندازی چند ADC در AVRFirst پین اول و Last پین آخری هستش که قراره برای نمونه برداری به میکرو معرفی بشه.(یعنی نمونه برداری همزمان برای هر 4 پایه صورت میگیره).

بعد از تعیین این بخش و ساختن کد ، یک ارایه و همچنین تابع وقفه برای هر 4 پایه ی صفر تا 3 برای ما توسط کدویزارد ایجاد میشه.

 

در این جلسه حذف نویز ADC ، معرفی رجیسترها و همچنین وقفه در ADC موضوعات هدف و مهم تر بودن و بقیه مباحث جنس پیشرفته داشتن.

امیدوارم کاربردی باشه براتون.جلسه بعد میریم سراغ پروژه!

موفق باشید.

ADS

حمیدرضا مودت

یک مهندس الکترونیک ، علاقه مند به یاد دادن و یاد گرفتن پیرامون دانش برق و الکترونیک

مطالب مرتبط