خانه / آموزش میکروکنترلرهای AVR / آموزش برنامه نویسی BASIC – مبدل آنالوگ به دیجیتال ADC

آموزش برنامه نویسی BASIC – مبدل آنالوگ به دیجیتال ADC

آموزش برنامه نویسی پیشرفته BASIC – مبدل آنالوگ به دیجیتال ADC

مبدل آنالوگ به دیجیتال یک دیگر از خصوصیات میکروکنترلرهای AVR است. این مبدل با روش تقریب ها مداوم مقدار ولتاژ آنالوگ ورودی را به دیجیتال تبدیل می کند. از جمله مدها و خصوصیات این مبدل در زیر بیان شده است.

:: وضوح تبدیل = 10 بیت

:: ولتاژ ورودی = 0 تا Vcc

:: رجیستر پرچم وقفه = ADC

:: زمان تبدیل = 65 الی 260us

:: میزان خطای تبدیل = 2LSB ±

:: فرکانس کلاک مورد نیاز = 50 الی 200KHz

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

نکته : منبع تغذیه مبدل آنالوگ به دیجیتال جدا از منبع میکرو بوده اما می توان آن را به تغذیه میکرو متصل نمود. این دو پایه AVCC پایه مثبت و AGND پایه زمین مبدل است.

آموزش برنامه نویسی پیشرفته BASIC – مبدل آنالوگ به دیجیتال ADC

ولتاژ مرجع:

برای میکرو کنترلرهای avr دو حالت برای دسترسی به ولتاژ مرجع تعبیه شده که برای دسترسی پایه ای به نام AREF وجود دارد که می توان تا ولتاژ VCC را به این پایه به عنوان ولتاژ مرجع متصل نمود و یکی ولتاژ مرجع داخلی که به میزان 2.56v بوده و باید در زمان استفاده یک خازن به پایه AREF متصل شود.

آموزش برنامه نویسی پیشرفته BASIC – مبدل آنالوگ به دیجیتال ADC

البته برای جلوگیری از نویزهای احتمالی که CPU بر مبدل القا می کند. می توان از مدار زیر استفاده کرد که در اکثر مواقع استفاده نمی شود و تنها در پروژه های حساس از این روش استفاده می شود.

آموزش برنامه نویسی پیشرفته BASIC – مبدل آنالوگ به دیجیتال ADC

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

Config Adc = Single|Free , Prescaler = Auto , Reference = State

Single : این مد زمانی استفاده می شود که عمل تبدیل تنها زمان فراخوانی با دستور Getadc انجام می شود و این مد تنها برای کانال 0 (Adc0) قابل اجراست.

Free : این مد به حالت دائم عمل تبدیل را انجام می دهد و مقدار تبدیل را در رجیستر Adcd قرار می دهد. این مد تنها برای کانال 0 (adco) قابل اجراست.

Prescaler : با قرار دادن گزینه Auto میکرو به صورت هوشمند بهترین کلاک برای Adc تعیین می کند.

State : حالت های ولتاژ مرجع را مشخص می کند و گزینه های Off برای خاموش کردن ولتاژ مرجع داخلی و اتصال ولتاژ مرجع به پایه Aref, گزینه Avcc برای استفاده از پایه Avcc به عنوان ولتاژ مرجع و گزینه Internal برای استفاده از ولتاژ مرجع 2.56v داخلی می باشد.

:: فعال سازی عمل ADC

Start adc

Enable adc

برای فعال سازیو شروع به کار مبدل از این دستور استفاده می شود. در صورت نیاز می توان از دستور stop adc برای غیر فعال کردن adc استفاده کرد.

نکته: همان طور که می دانیددر زمان استفاده از adc دیگر نمی توان پورت مبدل را به عنوان 1/0 استفاده کرد.

:: فرخوانی مبدل آنالوگ به دیجیتال

Var = getadc (n)

این دستور از کانال n مبدل آنالوگ به دیجیتال مقدار آنالوگ را دریافت کرده و پس از تبدیل به مقدار دیجیتال 10 بیتی آن را در متغیر var قرار می دهد.

نکته : متغیر var از نوع word است.

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

On adc lable

رجیستر وقفه مبدل آنالوگ به دیجیتال به نام adc بوده و می توان با این دستور پایان عمل تبدیل به زیر برنامه وقفه پرش کرد.

نکته : دستورات Enable Interrupts و Enable Adc فراموش نشود.

:: تبدیل مقادیر دیجیتال به مقادیر واقعی (نرمالیزه کردن)

فرض کنید ولتاژ مرجع 5v به میکرو وصل است. در نتیجه بعد از فراخوانی adc مقدار گرفته در متغیر مربوطه بین 0 تا 1023 خواهد شد (10 بیت) در صورتی که بخواهید مقدار متغیر را به مقدار واقعی خود یعنی بین 0 تا 5 برسانید به روش زیر عمل کنید:

Dim a as word

Dim b as single

Dim m as string * 10

Dim * a single

A= getadc (o)

B= a/204.6

M= fusung ( d,”#.####”)

X= var (m)

مقدار خوانده شده توسط دستور Getadc را در متغیر از نوع word با نام a ریخته شده و بعد مقدار متغیر را بر عدد 204.6 تقسیم کنید. ( 1023/5 = 204.6 ) و در متغیر b از نوع single قرار دهید. در آخر برای روند کردن مقدار تا 4 رقم اعشار از دستور fusing استفاده کرده و در متغیر از نوع string ریخته می شود. می توانید با دستور var نوع متغیر را از رشته به عدد تبدیل کنید. با این روش مقدار واقعی ورودی در متغیر قرار می گیرد.

نکته : در صورت استفاده از ولتاژ مرجع داخلی 2.56v مقدار متغیری که عدد تبدیل شده در آن ریخته شده را بر 399.6 تقسیم کنید. ( 1023/2.56 = 399.6 )

پروژه :

آموزش برنامه نویسی پیشرفته BASIC – مبدل آنالوگ به دیجیتال ADC

$regfile = “m32def.dat”

$crystal = 8000000

Config Lcdpin = Pin , Db4 = Pinb.4 , Db5 = Pinb.5 , Db6 = Pinb.6 , Db7 = Pinb.7 , Rs = Pinb.2 , E = Pinb.3

Config lcd = 16*4

Config adc = single , prescaler = auto , reference = off

Start adc

Enable interrupts

Enable adc

Dim w as word , channel as byte , d as single

Dim m as string * 6

Channel = 1

Do

W = Getadc(channel)

Locate channel , 1

Lcd “channel:” ; Channel

Incr Channel

Locate channel , 1

D = w / 204.6

M = Fusing(d , “#.####” )

Lcd “value:” ; M

Waitms 100

Incr channel

If channel > 4 then

Channel = 1

Cls

End If

Loop

End

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

 دسته اصلی : زبان برنامه نویسی BASIC

 نویسنده : electronics98

 تاریخ انتشار :

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

مطلب پیشنهادی

آموزش برنامه نویسی پیشرفته BASIC – ارتباط سریال I2C

آموزش برنامه نویسی پیشرفته BASIC – ارتباط سریال I2C پایه های مورد استفاده پروتکل I2C …