ولتمتر 0 تا 30 با avr
ولتمتر 0 تا 30 با avr-ADC – مبدل آنالوگ به دیجیتال (ADC-Analog-to-Digital Converter). یک سیگنال آنالوگ خاص را به دیجیتال تبدیل می کند.
میزان بیت ADC دقت تبدیل سیگنال را تعیین می کند. زمان تبدیل – به ترتیب، سرعت ADC. ADC در بسیاری از میکروکنترلرهای خانواده AVR تعبیه شده است
و استفاده از میکروکنترلر را در هر طرح تنظیمی که لازم است سیگنال آنالوگ خاصی دیجیتالی شود، ساده می کند.
اصل عملکرد ADC را در نظر بگیرید. برای تبدیل به منبع ولتاژ مرجع و ولتاژ واقعی که می خواهیم
دیجیتالی کنیم نیاز دارید (ولتاژی که تبدیل می شود باید کمتر از ولتاژ مرجع باشد).
ولتمتر 0 تا 30 با avr
همچنین به یک ثبات نیاز دارید که مقدار تبدیل شده در آن ذخیره شود، اجازه دهید آن را Z بنامیم.
ولتاژ ورودی = ولتاژ مرجع * Z / 2 ^ N، که در آن N بیت ADC است. ما موافقیم که این رجیستر،
مانند ATmega8، 10 بیتی است. تحول در مورد ما در 10 مرحله انجام می شود.
بیت بالای Z9 روی یک تنظیم شده است.
سپس یک ولتاژ تولید میشود (ولتاژ مرجع * Z / 1024)، این ولتاژ با مقایسهکننده ورودی با استفاده از مقایسهکننده آنالوگ مقایسه میشود،
اگر از ولتاژ ورودی بیشتر باشد، بیت Z9 صفر میشود و اگر کمتر باشد، باقی میماند.
یکی در مرحله بعد، به بیت Z8 بروید و با روش بالا، مقادیر آن را بدست آوریم.
پس از اتمام محاسبه ثبت Z، یک پرچم تنظیم میشود که نشان میدهد تبدیل کامل شده است و مقدار حاصل را میتوان خواند.
ولتمتر 0 تا 30 با avr
دقت تبدیل و تداخل، و همچنین نرخ تبدیل، می تواند تا حد زیادی بر دقت تبدیل تاثیر بگذارد. هر چه تبدیل کندتر اتفاق می افتد، دقیق تر است.
همانطور که سازنده در برگه اطلاعات توصیه می کند، باید با هدایت و تداخل با اندوکتانس و خازن مبارزه کرد:
مدار فیلتر نویز در میکروکنترلرهای AVR، پین AREF یا منابع داخلی 2.56 ولت یا 1.23 ولت میتواند به عنوان منبع ولتاژ مرجع استفاده شود.
همچنین منبع ولتاژ مرجع می تواند ولتاژ تغذیه باشد. در برخی موارد و مدلهای میکروکنترلرها،
خروجیهای جداگانه برای تغذیه ADC:AVCC و AGND وجود دارد. نتیجهگیری ADCn – کانالهای ADC.
مدار ولتمتر دیجیتال با میکروکنترلatmega8 و سون سگمنت این مدار ولتاژ آنالوگ ورودی را که به ورودی adcمتصل می باشد
را به پالسهای دیجیتال با تراکم 10 بیت تیدیل کرده
و آن را درون متغیر ریخته و روی سون سگمنت نمایش می دهد
کد برنامه به زبان bascomavr
‘www.pc21.ir
$regfile = “m8def.dat”
$crystal = 1000000
Config Portd = Output
Config Portb = Output
‘————————— www.pc21.ir —————————————–
Config Adc = Single , Prescaler = Auto” , Reference = Internal
start adc
‘—————————— www.pc21.ir ——————————————–
Declare Sub volt
‘————————————–www.pc21.ir—————————————-
dim c as single
dim a as word ,b as word , d as word,e as word, ha as word
‘————————————www.pc21.ir—————————————-
‘————————————www.pc21.ir——————————————-
Main:
Do
Call volt
gosub seven
Loop
‘——————————————-www.pc21.ir————————————
Sub volt:
A = Getadc(0)
c=a
C = C / 3.4
b = C
‘Cls : Lcd W
End Sub
Return
‘—————————————www.pc21.ir—————————————-
seven:
portd = &B1110 : Ha = b/1000 : Gosub 7seg
d=b mod 1000
portd = &B1101 : Ha =d / 100 : Gosub 7seg
e=d mod 100
portd = &B1011 : Ha = e/10 : Gosub 7seg
portd = &B0111 : Ha =e Mod 10 : Gosub 7seg
Return
7seg:
portb = Lookup(ha , Det)
Waitms 4
Return
‘—————————————-www.pc21.ir—————————————
Return
‘—————————————-www.pc21.ir—————————————
‘————————————-www.pc21.ir————————–
Det:
Data &B00111111 , &B00000110 , &B01011011 , &B01001111
Data &B01100110 , &B01101101 , &B01111101 , &B00000111
Data &B01111111 , &B01101111
فایل شبیه سازی شده با نرم افزار proteus7.10