ADC دارای پین منبع تغذیه ولتاژ مجزایی است (AVCC). AVCC نباید بیشتر از ۰.۳ با VCC اختلاف داشته باشد. ولتاژ مرجع داخلی می تواند بصورت درون تراشه ای، ولتاژ اسمی v2.56 ویا AVCC انتخاب شود. ولتاژ مرجع خارجی می تواند از طریق خازن برای عملکرد بهتر در مقابل نویز به پایه AREF وصل شود.
(( اینجا فقط تکه ای از متن درج شده است. برای خرید متن کامل فایل پایان نامه با فرمت ورد می توانید به سایت feko.ir مراجعه نمایید و کلمه کلیدی مورد نظرتان را جستجو نمایید. ))
عملکرد ADC :
ADC ولتاژ آنالوگ ورودی را از طریق روش تقریبهای متوالی به ۱۰ بیت دیجیتال وصل می کند. کمترین مقدار برای ولتاژ ورودی GND و بیشترین مقدار ولتاژ روی پایه AREF منهای ۱lsb است. بطور دلخواه AVCC و یا ولتاژ نامی داخلی، می تواند به پایه AREF توسط رجیستر ADMUX وصل شود. ( بیتهای REFSn ).
کانالهای آنالوگ ورودی و همچنین گین دیفرانسیلی هم توسط بیتهای MUX در رجیستر ADMUX انتخاب می شوند. هر کدام از پینهای ورودی ADC می توانند به خوبی بعنوان ورودی یک طرفه انتخاب شوند و همگی عملکرد یکسانی دارند. همچنین پینهای ورودی ADC می توانند به عنوان ورودی مثبت و یا منفی برای تقویت کننده گین دیفرانسیلی انتخاب شوند. اگر کانالهای دیفرانسیلی انتخاب شوند، مرحله گین دیفرانسیلی، اختلاف ولتاژ بین ورودیهای انتخاب شده را تقویت می کند. سپس مقدار تقویت شده، به ورودی آنالوگ ADC می رود. اگر ورودیهای یکطرفه تنها انتخاب شوند مرحله تقویت گین حذف می شود.
ADC توسط ۱ کردن بیت فعال ساز ADC ، ADEN در رجیستر ADCSRA فعال می شود. انتخاب مرجع ولتاژ و کانالهای ورودی تا زمانی که ADC فعال نشود، اثری نخواهد داشت. همچنین ADC تا زمانی که ADEN 1 نشود، توان مصرف نمی کند. از اینرو توصیه می شود قبل از رفتن به مدهای Sleep ، ADC را خاموش کنید.
ADC نتیجه دیجیتال ۱۰ بیتی را تولید می کند که در رجیسترهای داده ADC ، ADCH و ADCL قرار داده می شوند. بصورت پیش فرض نتیجه از راست تنظیم می شوند، ولی می توان با تنظیم ADLAR در رجیستر ADMAX آن را از چپ تنظیم کرد. اگر نتیجه از چپ تنظیم شده باشد و وقتی بیشتر از ۸ بیت مورد نیاز نباشد، کافیست تنها ADCH را بخوانیم. همچنین باید ابتدا ADCL را خواند و بعد ADCH را تا مطمئن شویم که محتوای رجیسترهای داده مربوط به یک تبدیل است. وقتی که ADCL خوانده می شود،
دسترسی ADC به رجیسترهای داده قفل می شود. یعنی زمانی که ADCL خوانده می شود و تبدیل تمام می شود، قبل از اینکه ADCH خوانده شود، هیچ رجیستری بروز نمی شود و نتیجه تبدیل مربوطه از بین می رود. وقتی که ADCH خوانده شود، دوباره ADC به ADCL و ADCH می تواند دسترسی پیدا کند.
ADC دارای وقفه مربوط به خود است و این وقفه زمانی فعال می شود که تبدیل کامل شود. حتی هنگام خواندن ADCH و ADCL هم این وقفه اگر تبدیلی کامل شود، ایجاد می شود، ولو اینکه نتیجه تبدیل از بین برود.
شروع تبدیل :
یک تبدیل با نوشتن ۱ در بیت شروع تبدیل ADC، ADSC آغاز می شود. این بیت در طول زمان تبدیل، ۱ باقی می مانند و پس از اتمام آن بصورت سخت افزاری پاک می شود. اگر از چندین کانال استفاده کنیم، ADC قبل از تغییر کانال، تبدیلِ در حال انجام را به اتمام می رساند و سپس کانال را تغییر می دهد.
آغاز تبدیل می تواند توسط منابع مختلفی تحریک شود. تحریک خودکار توسط یک شدن بیت ADATE در رجیستر ADCSRA فعال می شود. منبع تحریک توسط تنظیم بیتهای ADTS در رجیستر SFIOR انتخاب می شود. وقتی که لبه مثبتی در سیگنال تحریک انتخاب شده بوجود بیاید، prescaler، reset می شود و تبدیل آغاز می شود. اگر وقتی که تبدیل تمام شود، سیگنال تحریک همچنان ۱ باشد، تبدیل جدیدی شروع نمی شود. همچنین اگر در طی انجام تبدیل، لبه مثبت تحریک دیگری بیاید، از آن چشم پوشی می شود. توجه کنید که پرچم وقفه ۱ می شود، حتی اگر وقفه مخصوص آن و یا بیت فعال ساز وقفه عمومی پاک شده باشد و غیر فعال باشد، همچنین تبدیل می تواند بدون اینکه ایجاد وقفه کند، تحریک شود.
با وجود این پرچم وقفه به منظور ایجاد تبدیل جدید در وقفه بعدی باید پاک شود.
استفاده از پرچم وقفه ADC بعنوان منبع تحریک باعث می شود تا تبدیل جدید بمحض تمام شدن تبدیل قبلی شروع شود. در نتیجه ADC بصورت مد Free Run کار می کند. اولین تبدیل توسط ۱ کردن ADSC آغاز می شود. در این مد ADC تبدیلهای متوالی را بدون توجه به اینکه آیا پرچم وقفه ADC ( ADIF ) پاک شده است یا نه، انجام می دهد.
Prescaling و زمان تبدیل :
بصورت پیش فرض مدارات تقریب متوالی نیاز به کلاک ورودی با فرکانس ما بین KHZ 50 تا KHZ 200 برای داشتن بیشترین دقت، دارند. اگر رزولوشن کمتر از ۱۰ بیت مورد نیاز بود، فرکانس کلاک ورودی می تواند بیشتر از KHZ 200 باشد تا سرعت نمونه برداری بیشتری داشته باشد. البته می توان با ۱ کردن بیت ADHSM در SFIOR اجازه داد تا فرکانس کلاک ADC افزایش پیدا کند و البته مصرف توان آن نیز زیاد می شود.
ADC دارای Prescaler است که فرکانس کلاک مورد قبول را برای ADC از هر فرکانس CPU بالای KHZ 100فراهم می کند.
Prescaler از لحظه ای که ADC روشن می شود، شروع بکار می کند و تا زمانی که ADC فعال است، آن هم روشن است. وقتی که تبدیل یکطرفه مقداردهی می شود، تبدیل در لبه بالا رونده کلاک بعدی آغاز می شود. تبدیل معمولی ۱۳ کلاک سیکل ADC طول می کشد. اولین تبدیل پس از اینکه ADC روشن شد، ۲۵ کلاک سیکل ADC طول می کشد.
۱بعلت اینکه مدارات آنالوگ مقداردهی شوند. عملکرد sample and hold ، ۵/۱ کلاک
سیکل ADC بعد از شروع تبدیل نرمال و ۵/۱۳ کلاک سیکل بعد از شروع تبدیل ADC انجام می شود. وقتی که تبدیل تمام شود، نتیجه در ADCH و ADCL نوشته می شود، و ADIF، ۱ می شود.
وقتی که از تحریک خودکار استفاده می شود، Prescaler وقتی که تحریک رخ می دهد Reset می شود. این عمل باعث تاخیر ثابتی بین تحریک و آغاز تبدیل می شود. در این مد sample and hold 2 کلاک ADC بعد از انجام تحریک واقع می شود. ۳ کلاک سیکل CPU هم برای همزمان سازی منطفی زمان صرف می شود.
کانالهای بهره تفاضلی :
تبدیلهای تفاضلی با کلاک داخلی CKADC2 همزمان هستند. که برابر با نصف کلاک ADC است. این همزمان سازی بصورت خودکار توسط رابطهای ADC انجام می شود. به این طریق که sample and hold در فاز مشخصی از CKADC2 اتفاق می افتد. تبدیل توسط کاربر مقداردهی اولیه می شود. وقتی که CKADC2 در سطح پایین باشد، مقدار زمانی برابر با تبدیل یک طرفه یعنی ۱۳ کلاک سیکل ADC طول می کشد. وقتی که CKADC2 در سطح بالا باشد، به منظور انجام همزمان سازی چهارده کلاک سیکل طول می کشد. در مد Free Run تبدیل جدید بلا فاصله بعد از کامل شدن تبدیل قبلی آغاز می شود و تا وقتی که CKADC2 در سطح بالا است، تمام تبدیلهای بطور خودکار آغاز شده ( یعنی بجز تبدیل اول ) همگی ۱۴ کلاک سیکل طول می کشند.
مرحله تقویت بهره برای پهنای باند KHZ 4 بهینه شده است. فرکانس های بالاتر ممکن است باعث عملکرد غیر خطی شوند. توجه داشته باشید که فرکانس کلاک ADC مستقل از محدودیت پهنای باند مرحله گین است.
اگر از کانالهای بهره تفاضلی استفاده می کنیم و تبدیل توسط تحریک خودکار آغاز می شود، ADC باید بین تبدیلها خاموش شود. از آنجائیکه مرحله تقویت بهره وابسته به پایداری کلاک است، تبدیل اول معتبر نیست. توسط غیر فعال کردن و دوباره قعال کردن ADC، تنها تبدیل های توسعه داده شده شکل می گیرند و تنها نتیجه آنها معتبر خواهد بود.
۴-۹کانالهای ورودی ADC :
وقتی که انتخاب کانالها تغییر می کنند، باید موارد زیر را رعایت کرد تا از انتخاب کانال مطمئن
شد. در مد تبدیل تکی اغلب باید قبل از شروع تبدیل کانال را انتخاب کرد. انتخاب کانال ممکن است یک کلاک سیکل ADC بعد از ۱ شدن ADSC تغییر کند. با وجود این, روش ساده تر این است که صبر کنیم تا تبدیل کامل شود و سپس کانال تغییر کند.
در مد Free Run همیشه کانال را قبل از آغاز اولین تبدیل انتخاب می کنیم. انتخاب کانال ممکن است تا یک کلاک سیکل ADC بعد از یک شدن ADSC نیز انجام شود. با وجود این روش ساده تر این است که صبر کنیم تا تبدیل کامل شود و سپس کانال را تغییر دهیم.
وقتی که به کانل بهره دیفرانسیلی سوئیچ می کنیم اولین تبدیل ممکن است دارای دقت پایین باشد و بهتر است از آن چشم پوشی کنیم.
مرجع ولتاژ ADC :
ولتاژ مرجع برای ADC (VREF) ، بازه تبدیل را برای ADC نشان می دهد. کانالهای یکطرفه ای که ولتاژ آنها از Vref فراتر رود، ۰x3FF را نتیحه خواهند داد. Vref می تواند AVCC ، ولتاژ داخلی v2.56 و یا ولتاژ خارجی پایه AREF تعیین شود.
AVCC از طریق سوئیچ پسیو به ADC وصل می شود. ولتاژ v2.56 داخلی از مرجع bandgap (VBG) از طریق تقویت کننده داخلی، تولید می شود. در مورد دیگر، پایه خارجی AREF مستقیما به ADC وصل می شود و می توان با اتصال خازن بین پایه AREF و زمین، مرجع ولتاژ را در مقابل نویز ایمن کرد. VREF را می توان در پایه AREF اندازه گیری کرد. اگر منبع ولتاژ ثابتی را به پایه AREF وصل کنیم، نباید از دیگر انتخابهای مراجع ولتاژ استفاده کنیم. اگر از مرجع ولتاژ خارجی استفاده نکنیم، می توان بین مراجع داخلی v2.56 وAVCC سوئیچ کرد. اولین نتیجه تبدیل بعد از سوئیچ مرجع ولتاژ، دقیق نیست و باید از آن صرفنطر کرد.
حذف نویز ADC :
ADC با فعال کردن تبدیل در مدهای sleep، اثر نویز تولید شده توسط CPU بر تبدیل را کاهش می دهد. حذف نویز با بهره گرفتن از مدهای Idle و ADC Noise Reduction می تواند انجام شود. برای استفاده از این مدها روش زیر باید استفاده شود:
۱- مطمئن باشید که ADC فعال است و مشغول تبدیل نیست. مد تبدیل تکی باید انتخاب شود، و وقفه تکمیل تبدیل باید فعال شود.
۲- مد ADC Noise Reduction یا مد Idle را وارد کنید. ADC شروع به تبدیل خواهد کرد وقتی که CPU متوقف شود.
۳- اگر وقفه دیگری قبل از تکمیل تبدیل رخ ندهد، وقفه تکمیل تبدیل، CPU را بیدار خواهد کرد و روتین وقفه را اجرا می کند. سپس CPU د رحالت فعال باقی خواهد ماند تا فرمان sleep جدیدی اجرا شود.
توجه کنید که ADC وقتی که وارد دیگر مدهای sleep بغیر از دو مورد گفته شده شود، بطور خودکار خاموش نمی شود و خودمان باید آن را خاموش کنیم تا از مصرف توان اضافه جلوگیری کنیم.
۴-۱۰تکنیکهای خذف نویز آنالوگ:
مدارات دیجیتال داخلی و خارجی، تولید EMI می کنند که روی دقت اندازه گیری آنالوگ اثر می گذارد. اگر دقت تبدیل خیلی مهم باشد, باید توسط تکنیکهای زیر نویز را کاهش داد.
۱- مسیرهای آنالوگ را تا حد ممکن کوتاه کنید. اطمینان حاصل کنید که مسیرهای آنالوگ به زمین آنالوگ وصل باشند و آنها را از مسیرهای دیجیتال سوئیچینگِ پر سرعت جدا کنید.
۲- پایه AVCC را از طریق شبکه LC نشان داده شده در شکل ۱۸-۱ به VCC دیجیتال وصل کنید.
۳- از توابع ADC Noise Reduction برای کاهش نویز تولیدی CPU استفاده کنید.
۴- اگر از پایه های پورت ADC بعنوان خروجی دیجیتال استفاده شود باید توجه شود که وقتی که ADC مشغول تبدیل است، به پورت خروجی سوئیچ نشود.
نتیجه تبدیل ADC :
بعد از تمام شدن تبدیل نتیجه در رجیستر داده ADC (ADCH , ADCL) قرا رمی گیرد.
برای تبدیل یکطرفه نتیجه برابر است با :
VIN برابر است با ولتاژ روی پین ورودیِ انتخاب شده.
VREF ولتاژ مرجع انتخاب شده است.
اگر از کانلهای دیفرانسیلی استفاده کنیم نتیجه برابر است با
VPOS : ولتاژ روی پایه ورودی مثبت
VNEG : ولتاژ روی پایه ورودی منفی