ايران ويج

نسخه‌ی کامل: *** استفاده از ADC ده بیتی برای 12 بیت دقت ***
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3 4
اساتید گرامی AVR

چگونه بدون استفاده از قطعه های اضافی میتوان از ADC های 10 بیتی AVR ، دقت 12 بیت یا بیشتر گرفت ؟ یا تبدیلش کرد به 12 بیتی؟


در حقیقت میخواهیم دقت اندازه گیری یک ولتاژ رو بالا ببریم!


با تشکر
با میانگین گیری می شه یه کارایی کرد
یعنی شما ۲۰ بار بخون و تقسیم بر ۲۰ کن
متوجه نمیشم خوب در هر مرتبه با همون adc داریم میخونیم دیگه!!! پس چه فرقی کرد؟

در ضمن برنامه تو لوپه و با سرعت درحال چرخش و اندازه گیری و نمایش ..

ممکنه بیشتر توضیح بدین؟؟؟


نمیشه از دوتا adc با هم استفاده کرد و جمعشون کرد بشن 2048 ؟؟؟
نه ببین مثلا یه بار می خونی ۴۳۵ یه بار می خونی ۴۳۶ دوباره می خونی ۴۳۵ جمع کنی تقسیم بر ۳ کنی یه عدد اعشاری در می یاد که هم پرش نداره هم دقتش بیشتر
یعنی سه مرتبه از دستور Get ADC استفاده بشه و مقدیرش میانگین گرفته بشه !

خوب تست میکنیم

همین الان هم پرشی در کار نیست چون یک ولتاژ ثابت مثلا از باطری رو داره اندازه میگیره!
خوب برای گرد کردن یک عدد سینگل در محاسبات چکار باید کرد؟

مثلا A AS SINGLE
A = A / 1024
اینجا A اعشاری بدست می آید و برای محاسبات بعدی میخواهیم با دو رقم اعشار و گرد شده باشد؟؟!
مثلا 0.98645 بشود 0.99
یه کار دیگه هم میشه کرد که فکر کنم چیزی که میخاینو برآورده کنه:

ظاهراً محدوده سیگناله آنالوگتون 0 تا 5 ولته. شما با دو مقاومت یکسان با حداقل تلرانس، سیگنال آنالوگتونو به 2 تقسیم کنید. حالا این مقدارو با مبدل تا 1024 بیت تبدیلش کنید. مقدار بدست اومده رو در 2 ضربش کنید. در این حالت در حقیقت دقت اندازه گیری 11 (2*10)بیت میشه. این الگوریتمو میتونید برای دقتهای بیشتر هم بکار بگیرید.
البته برای تعیین سطوح ولتاژ 2.56 ، حواستون به نوع پیکره بندیه ADC باشه
نقل قول: خوب برای گرد کردن یک عدد سینگل در محاسبات چکار باید کرد؟
دستور fusing
و دستور config single=2
(۲۲-فروردین-۱۳۸۸, ۱۷:۴۹:۲۶)terip2008 نوشته است: [ -> ]
نقل قول: خوب برای گرد کردن یک عدد سینگل در محاسبات چکار باید کرد؟
دستور fusing
و دستور config single=2

این دستور عدد رو در نمایش گرد میکنه و در محاسبات گردش نمیکنه درسته؟

منظورتون : Config Single = Scientific , Digits = 2 هست دیگه درسته؟
(۲۲-فروردین-۱۳۸۸, ۱۵:۴۰:۲۷)ilgar نوشته است: [ -> ]یه کار دیگه هم میشه کرد که فکر کنم چیزی که میخاینو برآورده کنه:

ظاهراً محدوده سیگناله آنالوگتون 0 تا 5 ولته. شما با دو مقاومت یکسان با حداقل تلرانس، سیگنال آنالوگتونو به 2 تقسیم کنید. حالا این مقدارو با مبدل تا 1024 بیت تبدیلش کنید. مقدار بدست اومده رو در 2 ضربش کنید. در این حالت در حقیقت دقت اندازه گیری 11 (2*10)بیت میشه. این الگوریتمو میتونید برای دقتهای بیشتر هم بکار بگیرید.
البته برای تعیین سطوح ولتاژ 2.56 ، حواستون به نوع پیکره بندیه ADC باشه

مثلا من میخوام ولتاژ 14 ولت رو با دقت هر چه بیشتر اندازه بگیرم!

خوب ابتدا با تقسیم مقاومتی به 0 تا 5 ولت برسونمش و بعد دوباره با تقسیم مقاومتی مجدد به 0 تا 2.5 برسونم؟ و بعد نتیجه رو ضرب در دو و سپس ضرب در ضریب قبلیش کنم؟
(۲۲-فروردین-۱۳۸۸, ۱۵:۴۰:۲۷)ilgar نوشته است: [ -> ]یه کار دیگه هم میشه کرد که فکر کنم چیزی که میخاینو برآورده کنه:

ظاهراً محدوده سیگناله آنالوگتون 0 تا 5 ولته. شما با دو مقاومت یکسان با حداقل تلرانس، سیگنال آنالوگتونو به 2 تقسیم کنید. حالا این مقدارو با مبدل تا 1024 بیت تبدیلش کنید. مقدار بدست اومده رو در 2 ضربش کنید. در این حالت در حقیقت دقت اندازه گیری 11 (2*10)بیت میشه. این الگوریتمو میتونید برای دقتهای بیشتر هم بکار بگیرید.
البته برای تعیین سطوح ولتاژ 2.56 ، حواستون به نوع پیکره بندیه ADC باشه
این روش دقت رو کم می کنه فقط عددی که می خونی بزرگتر می شه با اون روش دقت واقعا زیاد می شه فقط سرعت کند تر می شه
(۲۳-فروردین-۱۳۸۸, ۰۹:۲۹:۵۶)ha_60 نوشته است: [ -> ]این روش دقت رو کم می کنه فقط عددی که می خونی بزرگتر می شه با اون روش دقت واقعا زیاد می شه فقط سرعت کند تر می شه

مطمئنید؟!
اگه 5 ولتو به 1024 قسمت تقسیمش کنیم دقت بالاتره یا اینکه 2.56 رو به 1024 قسمت تقسیمش کنیم؟
در حالت اول هر 5 میلی ولت یه عدد اضافه میکنه در حالت دوم هر 2.56 میلی
صفحه‌ها: 1 2 3 4