Presentation is loading. Please wait.

Presentation is loading. Please wait.

Analog to Digital Converter(ADC) Lecturer: Reza Arjmandi Autumn 2015 Lecture 18: Introduction ADC Unit and initialization.

Similar presentations


Presentation on theme: "Analog to Digital Converter(ADC) Lecturer: Reza Arjmandi Autumn 2015 Lecture 18: Introduction ADC Unit and initialization."— Presentation transcript:

1 Analog to Digital Converter(ADC) Lecturer: Reza Arjmandi Autumn 2015 Lecture 18: Introduction ADC Unit and initialization

2 AVR Microcontroller-General Structure AVR CPU BUS Flash Memory SRAM EEPROM Timer/ Counter Timer/ Counter USART TWI ADC MCU Control and Timing I/O Ports Interface I/O Ports Interface Watchdog Timer SPI ISP Interrupt Unit PORTDPORTCPORTBPORTA Internal Calibrated Oscillator Crystal Oscillator ATMEGA32 Block Diagram: DataSheet Page4

3 Analog to Digital Converter ADC قطعاتی مانند : ADC0804 ، MAX190 ، AD673 که به ترتیب بوسیله شرکت های Maxim ، National ، Analog Devices ساخته شده ‌ اند

4 Analog to Digital Converter ADC (10 bit) ولتاژ مرجع (Vref) ولتاژ ورودی (Vin) 1111111111  1023 Accuracy(10bit): 1023841 Vref(ex=5v) ? -Vref(-1023) +Vref(1023) 1023 Section 1023 Section  ? = (841 * 5) / 1023 = 4.11v رزولوشن یا توانایی تفکیک (LSB): یک LSB برابر کمترین مقداری است که ADC میتواند آن را تشخیص دهد، به بیان دیگر با تغییر ولتاژ ورودی ADC به اندازه ‌ ی یک LSB خروجی آن یک واحد افزایش می ‌ یابد LSB = Vref / Accuracy

5 ADC محدوده ولتاژ مرجع بصورت : 2v < Vref < 5v 1.9mv < LSB < 4.8mv ( رزولوشن یا تفکیک توانایی )LSB = Vref / Accuracy ADC 0~7 : پایه ولتاژ ورودی AREF: پایه ولتاژ مرجع AVCC, GND: پایه های تغذیه مبدل

6 ADC جهت کاهش نویز موثر بر روی واحد ADC تغذیه ‌ ی آن به صورت جداگانه از پایه Avcc تامین میشود. ولتاژ این پین نباید بیشتر از 0.3v با Vcc تفاوت داشته باشد Vcc (5v) 100nF 10uH

7 ADC-Register 1- ADMUX 2- ADCH,L 3-ADCSRA 4-SFIOR

8 ADC-Register-ADMUX ADMUX: ADC Multiplexer Selection Register انتخاب کانال و بهره ورودینحوه نمایش نتیجه تبدیل در رجیستر داده انتخاب ولتاژ مرجع

9 ADC-Register-ADMUX بیت ‌ های انتخاب کانال و بهره ورودی MUX 4~0: نکته ! در صورتی که ADC مشغول انجام یک تبدیل بوده و این بیت ‌ ها تغییر کنند، تا اتمام تبدیل جاری این تغییر انجام نخواهد شد.

10 روش ‌ های انتقال سیگنال : 1- تک پایانه (Single ended): ساده ترین راه انتقال سیگنال الکتریکی بوسیله یک کانال انتقال است. اغلب یک سیم حامل سیگنال مورد نظر است که سیگنال را نسبت به یک مرجع پتانسیل منتقل میکند 2- تفاضلی (Differential): سیگنال بوسیله دو سیم منتقل میشود، سیم دوم حامل قرینه ‌ ی سیگنال اول است. در سمت گیرنده این دو سیگنال به ورودی یک تقویت کننده تفاضلی اعمال شده و تنها اختلاف آن ‌ ها تقویت میشود. بدین ترتیب آنچه روی دو خط مشترک است و معمولا نویز است، در گیرنده حذف میشود دو سیگنال قرینه ‌ ی V+ و V- (V+) – (V-) ADC-Register-ADMUX

11 بیت ‌ نحوه نمایش تبدیل در رجیستر داده ADLAR(ADC Left Adjust Result): ADC-Register-ADMUX رجیستر داده ADC (ADCH,L) : با پایان یافتن عملیات تبدیل، نتیجه در این رجیستر قرار می ‌ گیرد.

12 ADC-Register-ADMUX-Reference Voltage Configuration ولتاژ مرجع (Vref) برای ADC از منابع زیر میتواند تامین شود : 1- ولتاژ 2.56v داخلی 2- ولتاژ 5v داخلی روی پایه AVCC 3- ولتاژ روی پایه Aref (2v < Aref < 5v) ADC BANDGAP REFERENCE (2.56v) BANDGAP REFERENCE (2.56v) 100nF 2v < Voltage < 5v Vcc (5v) مرجعتغذیه بیت ‌ های انتخاب مرجع ولتاژ REFS1~0 (Reference Select) :

13 ADCSRA: ADC Control and Status Register A ADC-Register-ADCSRA بیت فعال ‌ ساز مبدل تنظیمات مد کاری بیت های مربوط به وقفه بیت های مربوط به پیش تقسیم ‌ کننده Prescaler

14 بیت ‌ های مربوط به پیش ‌ تقسیم کننده ADPS 2~0 (ADC Prescaler) : واحد ADC مجهز به یک تقسیم کننده فرکانس (Prescaler) که بوسیله آن از فرکانس اصلی سیستم استفاده میکند. بوسیله این تقسیم کننده ، فرکانس سیستم به اعداد مختلفی تقسیم میشود و بدین وسیله میتوان سرعت نمونه برداری را تغییر داد نکته ! حداکثر فرکانس کاری ADC قطعه ‌ ی ATMEGA32 برابر با 200KHz بوده و افزایش این فرکانس تا 1MHz باعث کاهش دقت آن میشود ( شدیدا ) ADC-Register-ADCSRA تئوری نمونه برداری Nyquist: این قانون نرخ نمونه برداری مناسب برای تبدیل آنالوگ به دیجیتال را مشخص میکند. بدین صورت که فرکانس نمونه برداری از سیگنال آنالوگ، حداقل باید دو برابر بالاترین فرکانس موجود در طیف سیگنال باشد.

15 بیت ‌ های مربوط به وقفه ADIE, ADIF: ADC-Register-ADCSRA وقفه ‌ ی مبدل ADC: واحد ADC در AVR فقط دارای یک وقفه میباشد. این وقفه که ADC Conversion Complete نام دارد، با پایان یافتن عملیات تبدیل فعال میشود. بیت Flag: ADIF بیت فعال ساز اختصاصی : ADIE نام این بردار وقفه در IAR: ADC_vect

16 بیت ‌ های تنظیمات مد کاری ADSC (ADC Start Conversion), ADATE (ADC Auto Trigger Enable): ADC-Register-ADCSRA فرمان تبدیل (Conversion) : زمانی که این فرمان به سمت ADC صادر شود، واحد ADC یک نمونه برداری انجام میدهد، صدور فرمان تبدیل توسط منابع مختلف باعث بوجود آمدن Mode های کاری این واحد شده است. واحد ADC در AVR میتواند در یکی از 3 مد کاری زیر فعالیت کند : 1- تک تبدیل (Single): در این مد پس از هر عمل تبدیل، ADC منتظر میماند، تا دوباره فرمان تبدیل صادر شود. این فرمان تبدیل باید توسط کاربر صادر شود 2- تبدیل خودکار (Auto Trigger): این مد همانند مد Single میباشد و تنها تفاوت آن ‌ ها در این است که فرمان تبدیل به صورت خودکار انجام میشود و به کاربر نیازی نیست. در این مد فرمان تبدیل میتواند توسط منابع مختلفی صادر شود

17 ADC-Register-SFIOR SFIOR: Special Function I/O Register Free Running: این مد در واقع زیر مجموعه ‌ ای از مد بالا است، در این مد ADC ، به صورت پیوسته از ورودی نمونه ‌ برداری میکند. در این مد همیشه پایان یک نمونه ‌ بردای با آغاز نمونه ‌ بردای بعدی همراه است.

18 ADC-Register-ADCSRA بیت فعال ‌ ساز مبدل ADCEN (ADC Enable): با یک کردن بیت شماره 7 از این رجیستر واحد ADC فعال میشود، صفر کردن این بیت، در حالی که ADC مشغول تبدیل است باعث میشود که عملیات تبدیل نیمه ‌ کاره رها شود

19 ADC-Example1 ولت ‌ متر : یک ولت متر DC بسازید که محدوده اندازه ‌ گیری آن بین 0 تا 50 ولت باشد

20 ADC-Example1 ولت ‌ متر : یک ولت متر DC بسازید که محدوده اندازه ‌ گیری آن بین 0 تا 50 ولت باشد #include #include "LCDCHR_lib.c" unsigned int convert(void); void main(void) { DDRC=0xFF; float Data1=1; ADCSRA=((1<<ADEN)|(1<<ADPS1)|(1<<ADPS0)); LCDinit(); LCDcursorOFF(); while(1) { Data1=convert(); Data1=(Data1*(5.0/1023.0))*10; LCDGotoXY(0,0); LCDstring("V= "); LCD_floatnum(Data1); LCDstring(" v"); } unsigned int convert(void) { ADCSRA|=(1<<ADSC); while(!(ADCSRA & (1<<ADIF))); ADCSRA|=(1<<ADIF); return(ADC&0x03FF); }

21 Temperature Sensor-LM35 سنسور اندازه گیری دما LM35:

22 Temperature Sensor-LM35 سنسور اندازه گیری دما LM35: در صورتی که نیاز به اندازه گیری دمای زیر صفر ندارید میتوانید از آرایش سمت چپ ( شکل زیر ) و برای اندازه ‌ گیری دمای زیر صفر لازم است از پیکربندی سمت راست ( شکل زیر ) استفاده کنید فرمول : Vout * 100 = دما

23 LM35-Example2 #include #include "LCDCHR_lib.c" unsigned int convert(void); main() { DDRC=0XFF; int data1; ADCSRA|=((1<<ADEN)|(1<<ADPS1)|(1<<ADPS0)); ADMUX|=(1<<REFS0); //Vref= AVCC LCDinit(); LCDcursorOFF(); while(1) { data1=convert(); data1=(int)((data1*(5.0/1023.0))*100); LCDGotoXY(0,0); LCDstring("T= "); LCD_intnum(data1); LCDsendChar(0XDF); LCDsendChar('c'); } unsigned int convert(void) { ADCSRA|=(1<<ADSC); while(!ADCSRA_Bit4); ADCSRA|=(1<<ADIF); return(ADC&0X03FF); } اندازه گیری دما با LM35:

24 Contact us www.e-system.ir Info@e-system.ir


Download ppt "Analog to Digital Converter(ADC) Lecturer: Reza Arjmandi Autumn 2015 Lecture 18: Introduction ADC Unit and initialization."

Similar presentations


Ads by Google