130 likes | 413 Views
بسم الله الرحمن الرحیم. مبدل آنالوگ به دیجیتال. مبدل ADC. مبدل آنالوگ به دیجیتال (که کوتاه شده ی آن ADC ،A/D یا A to D می باشد .) یک مدار الکترونیکی است که سیگنال های پیوسته را به اعداد دیجیتالی گسسته تبدیل می کند . عمل عکس توسط یک مبدل دیجیتال به آنالوگ انجام می شود. کاربردها:
E N D
بسم الله الرحمن الرحیم مبدل آنالوگ به دیجیتال
مبدل ADC مبدل آنالوگ به دیجیتال (که کوتاه شده ی آن ADC ،A/D یا A to D می باشد.) یک مدار الکترونیکی است که سیگنال های پیوسته را به اعداد دیجیتالی گسسته تبدیل می کند. عمل عکس توسط یک مبدل دیجیتال به آنالوگ انجام می شود کاربردها: انتقال سیگنال آنالوگ به میکرو بصورت دیجیتال برای پردازش و نمایش اطلاعات مربوط به پدیده اندازه گیری شده و صدور فرمان کنترلی در صورت نیاز. سیگنال آنالوگ می تواند خروجی یک سنسور باشد. روش های تبدیل: 1.روش موازی یا همزمان 2.روش دو شیب 3.روش پله ای 4.روش تبدیل ولتاژ به فرکانس 5.روش تبدیل ولتاژ به زمان 6.روش تقریب متوالی Successive Approximation • سنسورهایی چون: • سنسور دما (LM35) • سنسور فشار هوا (MPXV 7002 DP) • سنسور وزن (L6D) • سنسور مغناطیس (UGN3503) • سنسور رطوبت (HS-1101) • سنسور شتاب (ADXL345) • سنسور گاز (MQ-9) • سنسور فلو (FM6060) • و ...
مبدل ADC به روش تقریب متوالی شمارنده N بیتی QN Q0 STOP پالس شمارش 0 N مبدل دیجیتال به آنالوگ (DAC) VDAC Vref - + VIN درجه تفکیک ولتاژ خروجی DAC فقط می تواند مقادیر گسسته (با تقریب بیت) را داشته باشد، به این ویژگی درجه تفکیک می گویند.
رجیسترهای ADC ADC Multiplexer Selection Register – ADMUX Bit 7:6 – REFS1:0: Reference Selection Bits
رجیسترهای ADC : ADMUX Bits 4:0 – MUX4:0: Analog Channel and Gain Selection Bits
رجیسترهای ADC: ADCSRA ADC Control and StatusRegister A – ADCSRA Bits 2:0 – ADPS2:0: ADC Prescaler Select Bits Bit 7 – ADEN: ADC Enable Bit 6 – ADSC: ADC Start Conversion Bit 5 – ADATE: ADC Auto Trigger Enable Bit 4 – ADIF: ADC Interrupt Flag Bit 3 – ADIE: ADC Interrupt Enable
رجیسترهای ADC The ADC Data Register –ADCL and ADCH ADLAR = 0 تنظیم از راست ADLAR = 1 تنظیم از چپ
رجیسترهای کنترلی ADC Special Function IO Register –SFIOR Bit 7:5 – ADTS2:0: ADC Auto Trigger Source If ADATE = 1
مثال برنامه ای بنویسید که با استفاده از کانال صفر ADC ولتاژ آنالوگ وصل شده به این پایه را روی LCD نشان دهد. #include <mega32.h> #include <lcd.h> #include <stdio.h> // Declare your global variables here #asm(".equ __lcd_port=0x15"); void main(void) { int x; float v; char buf[32]; // ADC initialization // ADC disabled ADCSRA=0x81; ADMUX=0x40; ADCSRA|=0b01000000; while(!(ADCSRA & 0x10)); ADCSRA|=0x10; lcd_init(16); x=ADCW; v=(float)x/1023*5; sprintf(buf,"Dig_V=%.2f",v); lcd_puts(buf); }
مثال برنامه ای بنویسید که با استفاده از کانال صفر ADC ولتاژ آنالوگلحظه ای وصل شده به این پایه را بوسیله حالت خودکار – تریگر با سرریز تایمر صفر روی LCD نشان دهد. #include <mega32.h> #include <delay.h> #include <lcd.h> #include <stdio.h> #define ADC_VREF_TYPE 0xC0 #asm(".equ __lcd_port=0x15") int x; interrupt [TIM0_OVF] void timer_int(void) { while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; PORTB=ADCL; x=ADCW; } void main(void) { float v; char buf[32]; DDRB=0xff; TCCR0=0x03; TCNT0=0x00; OCR0=0x00; TCCR1A=0x03; TIMSK=0x01; SFIOR=0x80; ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0xA1; #asm("sei") lcd_init(16); while (1) { // Place your code here lcd_gotoxy(0,0); v=(float)x*2.56/1023; sprintf(buf,"V=%.2f",v); lcd_puts(buf); } }
مثال برنامه ای بنویسید که با استفاده از کانال صفر ADC فرکانس موج سینوسی با دامنه حداکثر 1 ولت و آفست ثابت 1 ولت و فرکانس حداکثر 1KHz و حداقل 1Hz را بدست آورید.