(۲۳-فروردین-۱۳۸۸, ۱۷:۰۲:۲۰)ilgar نوشته است: [ -> ] (۲۳-فروردین-۱۳۸۸, ۰۹:۲۹:۵۶)ha_60 نوشته است: [ -> ]این روش دقت رو کم می کنه فقط عددی که می خونی بزرگتر می شه با اون روش دقت واقعا زیاد می شه فقط سرعت کند تر می شه
مطمئنید؟!
اگه 5 ولتو به 1024 قسمت تقسیمش کنیم دقت بالاتره یا اینکه 2.56 رو به 1024 قسمت تقسیمش کنیم؟
در حالت اول هر 5 میلی ولت یه عدد اضافه میکنه در حالت دوم هر 2.56 میلی
من همیشه ولتاژیکه میخوام اندازه بگیرم بیشتر از 5 ولته و از تقسیم مقاومتی استفاده میکنم
و برای اینکه خطای اندازه گیری کم بشه از Reference = Internal استفاده میکنم و در این صورت با ولتاژ 2.5 ، ADC میکرو میشه 1024
حالا برای اندازه گیری 12 ولت با روش شما چطور باید عمل کرد؟
(۲۳-فروردین-۱۳۸۸, ۱۷:۰۲:۲۰)ilgar نوشته است: [ -> ] (۲۳-فروردین-۱۳۸۸, ۰۹:۲۹:۵۶)ha_60 نوشته است: [ -> ]این روش دقت رو کم می کنه فقط عددی که می خونی بزرگتر می شه با اون روش دقت واقعا زیاد می شه فقط سرعت کند تر می شه
مطمئنید؟!
اگه 5 ولتو به 1024 قسمت تقسیمش کنیم دقت بالاتره یا اینکه 2.56 رو به 1024 قسمت تقسیمش کنیم؟
در حالت اول هر 5 میلی ولت یه عدد اضافه میکنه در حالت دوم هر 2.56 میلی
100% مطمئنم
دقت یعنی چی؟ اینی که شما داری می گی ولتاژ های کوچکتر رو می خونه که می شه با یه تقویت ولتاژ بهش رسید یعنی من اگه یه اپ امپ با گین ۱۰۰۰ داشته باشم دقتم ۱۰۰۰ برابر شده؟ نه ولتاژ های ۱۰۰۰ برابر کوچکتر رو می تونم بخونم ولی دقتم به خاطر اضافه شدن نویز و خطای اپ امپ کمتر هم شده
شما داری قبلش می گی تقسیم بر ۲ کن با ۲ تا مقاومت خود این یعنی کاهش دقت و ۲ برابر شدن نویز محیط و با این روش باز هر ۵ میلی ولت یه عدد اضافه می کنه درسته؟
چیزی که ایشون می خواد افزایش تعداد بیت هاست با ضرب در ۲ کردن تعداد بیت ها زیاد می شه ولی کاذب یعنی یه تعدادی صفر کنار عدد قرار دادی که همیشه صفرن با اون روش من، واقعا دقت افزایش پیدا می کنه یعنی خطای اندازه گیری به عدد اندازه گرفته شده شما با ضرب کردن خطا رو هم زیاد می کنی (هم صورت بزرگ می شه هم مخرج)
(۲۴-فروردین-۱۳۸۸, ۱۲:۰۴:۲۸)ha_60 نوشته است: [ -> ]100% مطمئنم
دقت یعنی چی؟ اینی که شما داری می گی ولتاژ های کوچکتر رو می خونه که می شه با یه تقویت ولتاژ بهش رسید یعنی من اگه یه اپ امپ با گین ۱۰۰۰ داشته باشم دقتم ۱۰۰۰ برابر شده؟ نه ولتاژ های ۱۰۰۰ برابر کوچکتر رو می تونم بخونم ولی دقتم به خاطر اضافه شدن نویز و خطای اپ امپ کمتر هم شده
دقت کجا به درد میخوره؟
LM35 که به ازای هر درجه سانتی گراد 10میلی ولت میده برا 7/25 درجه سانتی گراد چند میلی ولت میده؟
خاصیت LM35 ها اینه که همشون به ازای یک درجه ده میلی ولت میدن ولی بسته به اینکه نوع A ، B، C یا ... باشه دقتش فرق میکنه. دقیق یادم نیست ولی یه نوعش دقتش 5 میلی ولته. یعنی اینکه این حتی 5/0 درجه سانتی گرادم تشخیص میده در حالی که اون یکی ها نه . پس با دقت زیادی میشه این 7/25 رو تشخیص داد.
یادتونه تو علوم تجربی راهنمایی قطر یه مولکول روغنو چطوری حساب می کردیم؟ یه قطره که حجمش مشخصه رو رو سطح وسیعی از آب مینداختیم تا اینکه تا آخرین حد پخش بشه. بعد مساحت سطح چرب آب رو اندازه میگرفتیم. اگه سطح ظرف آب کوچک بود نمیشد با دقت در موردش اظهار نظر کرد.یا اگه سطح ثابت بود (1024) قطره با حجم مشخص (ولتاژ) رو باید کوچک میگرفتیم
حالا تو بحث خودمون ADC ما بطور ثابت اطلاعاتو تو 1024 قسمت ذخیره میکنه و این مقدارم نمیشه کارش کرد. حالا اینکه 5 ولتو تو این مقدار تقسمش کنیم دقتش بالاتر میره یا 56/2 ولتو؟
فقط لطفاً حواستون به این نکته باشه که مبدل ADC در AVR های معمولی مثل مگا 8 از نوع 10 بیتی بوده و بس . و ما Vref رو هر مقداری تعریف کنیم (مثلاً 2/4 ولت) این مقدارو به 1024 قسمت تقسیم میکنه و شروع به کار میکنه. یعتی به ازای (2/4 تقسیم بر 1024)0041/0 ولت یه واحد دیجیتال به ما میده. و ما این Vref رو هر چه پایینتر بگیریم با توجه به اینکه 1024 ثابته ،دقت بالاتر میره.
(۲۴-فروردین-۱۳۸۸, ۱۲:۰۴:۲۸)ha_60 نوشته است: [ -> ]شما داری قبلش می گی تقسیم بر ۲ کن با ۲ تا مقاومت خود این یعنی کاهش دقت و ۲ برابر شدن نویز محیط و با این روش باز هر ۵ میلی ولت یه عدد اضافه می کنه درسته؟
تقسیم ولتاژ با مقاومت هم ساده ترین و یکی از پرکاربردترین اصولیه که تو الکترونیک استفاده میشه. من تو تعریف نویز چیزی برای مقاومت نشنیدم. اگه نویز برای مقاومتم ما به حساب بیاریم که دیگه تو الکترونیک آجر روی آجر بند نمیشه.
برای بالا بردن دقت مقاومتها هم میشه چندتا از نوع تلرانس پایینو باهم موازی کرد. دیگه دقت بالاتر از اینم میکرو نمیتونه حساب کنه. مگه ما میخایم میکروسکوپ الکترونی بسازیم؟!
(۲۴-فروردین-۱۳۸۸, ۱۲:۰۴:۲۸)ha_60 نوشته است: [ -> ]چیزی که ایشون می خواد افزایش تعداد بیت هاست با ضرب در ۲ کردن تعداد بیت ها زیاد می شه ولی کاذب یعنی یه تعدادی صفر کنار عدد قرار دادی که همیشه صفرن با اون روش من، واقعا دقت افزایش پیدا می کنه یعنی خطای اندازه گیری به عدد اندازه گرفته شده شما با ضرب کردن خطا رو هم زیاد می کنی (هم صورت بزرگ می شه هم مخرج)
اول با دقت محاسبه میشه، بعد ضرب در دو میشه. هر چند این ضرب در 2 کردن دقتو پایین میاره ولی در حد و اندازه هایی نیست که ما قبلاً بالاترش بردیم. وقتی 1024 بیت به 2048 بیت تبدیل میشه ضرب در دو کردن حداکثر رو دقت 1 بیت، از 1024 بیت بدست اومده تأثیر داره.
bozonghare عزیز :
ولتاژ شما هر چه مقدار میخاد باشه، الگوریتم مهمه. برای ولتاژ مثلاً 12 ولت مقادیر مقاومتها برای تقسیم ولتاژ رو باید طوری انتخاب بکنی که ولتاژ در بازه دلخواه رو بتونی به دست بیاری
امیدوارم توضیحات قانع کننده باشه
با روش رییس تست کردم ولی جواب با موقعیکه یکبار از ADC خوندم تفاوتی نداشت!
خوب ایلگر جان ممکنه رو مدارش بیشتر توضیح بدی؟؟ من 12 رو با تقسیم مقاومتی به 0 تا 2.5 میرسونم همیشه و میدم به میکرو حالا شما میگی چه تغییری باید بدم؟؟؟
در مدار بالا وقتی 12 ولت اعمال میشه ، به میکرو تقریبا 2.5 ولت میرسه که 1024 درون میکرو داده میشه و یعنی از تمام بازه ADC استفاده شده حالا شما؟؟
خوب مداری که تو شکل دارین، سیگنال DC دادین به ADC و این سیگنال هم که همیشه ثابته و مشخصه که هر چند بار که اندازه بگیرین یه جواب درمیاد. با این حساب دقت رو واسه چی میخواین؟!!!
دقت برای وقتیه که یه سیگنال آنالوگ مثلاً 637/11 ولت داشته باشین .حالا پیکتون میشه 12 باشه.
در ضمن با این تقسیم مقاومتا ولتاژ 164/2 میفته رو میکرو نه 5/2 (شما که این همه دقت لازم دارین!!!)
اول بگین دقت میخاین در چه حدی باشه؟(12 بیت بودنو کاری نداشته باشین به ولت بگین)
ilgar جان فرض کن یه لودسل داریم با توان اندازه گیری ۱۰۲۴ کیلو که در صورتی که ۱۰۲۴ کیلو بهش می دی ۵ ولت تو خروجی بهت می ده و صفر به اضای صفر کیلو با adc ۱۰ بیتی شما دقت ۱ کیلوگرم داری درسته؟
حالا سوال اینجاست ما همین لود سل رو داریم می خوایم از صفر تا ۱۰۲۴ کیلو رو اندازه بگیریم ولی با دقت ۲۵۶ گرم نه یک کیلو یعنی من یه جسم دارم به وزن ۱۰۰۰/۲۵۰ اینو با مقاومت بگو چه جوری می شه اندازه گرفت
اون نویز هم مربوط به مقاومت نیست نویز تو محیط یه مقدار ثایت داره مثلا ۱ میلی ولت حالا اگه ولتاژ ۵ ولت داری نویز ۱/۵۰۰۰ خواهد بود ولی اگه ۲/۵۶ باشه نویز ۱/۲۵۰۰ خواهد بود که دوبرابر قبلیه
دقت میخوام یکهزارم ولت باشه ولتاژ باطری هم حداکثر 14 ولته
0.001
آقا هادی عزیز:
1024 رو 1000 فرض میکنیم که محاسبات راحت بشه.
1000 کیلو 5 ولت میده یعنی یک کیلو 005/0 ولت میده. حالا اگه دقت خروجی همون 5 میلی ولت به ازای هر کیلو باشه(یعنی 5 میلی 5 میلی بپره)، مثل همون مثال LM35 تو پست 14 نمیشه کاری کرد ولی اگه هرچند به ازای یک کیلو 5 میلی میده، اما خروجی بصورت آنالوگ و با دقت مثلاً یک میلی ولت باشه، میشه یه کارایی کرد . چطور؟
Vref مبدل ADC رو 1 ولت میدم. حالا سیگنال دقت ADC میشه 1 میلی ولت چون Vref / 1000 . این یعنی به ازای هر 1 میلی ولت یک واحد دیجیتالی به خروجیمون اضافه میشه. حالا به ازای هر 5 میلی ولت ما باید افزایش یک کیلو را احساس کنیم، در حالی که به ازای هر 1 میلی ولت خروجی یه واحد میره بالا. پس حالا با دقت 200 گرم خروجی دیجیتال یه واحد میره بالا(اگه این مقدارو تقسیم بر 5 بکنیم و تو متغییر اعشاری بریزیم برحسب کیلو میشه نه 200 گرم). حالا مشکلی که هست اینه که با این روال حداکثر تا 1 ولت مبدل، یا 200 کیلو میتونیم بشمریم پس 800 کیلوی بقیه (200 الی 1000) رو چیکارش کنیم؟(این قسمتو تو پستای قبلی حواسم نبود که مجبور شدم به خاطرش 4 طبقه آپ امپ تفاضلی بذارم که میشه یه دونه LM324 که 100 تومن قیمتشه)
برای این کار 4 تا تقسیم مقاومتی میکنیم (مطابق شکل ) و خروجیها رو میدیم به 5 تا کانال ADC ازکم ولتاژترین پایه بین کانالهای مبدل شروع به تبدیل میکنیم. اگه جواب 1023 بود بعدی رو هم بررسی میکنیم (چون ممکنه این محدوده رو سرریز کرده باشه) و قبلیا رو بهش اضافه میکنیم. اگه از 1023 کمتر بود دیگه لازم نیست بقیه رو بررسی کنیم و همون پایه به اضافه پایه های قبلی مجموع اطلاعات ما رو تشکیل میدن.به این ترتیب ما تا دقت 200 گرم هم بدست آوردیم.
تو این مثال محدوده بین 0 تا 5 ولت بود ولی اگه محدوده (خروجی لودسل) بین 0 تا 12 باشه همونطور که قبلاً بحثش شده مقاومتهارو یه جور دیگه تعیین میکنیم و در نهایت به ضریبی که مقدار پیک ما رو 12 بکنه ضرب می کنیم.
به این ترتیب ما یک مبدل ADC با دقت 1 میلی ولت خواهیم داشت که حد اکثر عدد 5000 به ما میده که میشه یه عدد با دقت 13 بیت
در باره نویز تقسیم مقاومتهم بگم که این محاسبات شما 2 برابر شدن نویزو نشون نمیده بلکه احتمال تأثیر نویز موجود رو، دو برابر نشون میده . تازه دامنه خود نویز هم اگه از منبع آنالوگ باشه با تقسیم مقاومت نصف میشه. خوب اگه این احتمال قوی باشه که نویز تو 56/2 ولت رو اطلاعات ما اثر بذاره، پس ما محدوده 0 تا 56/2 ولتو دیگه حتی بدون تقسیم مقاومت هم نمی تونیم روش حساب کنیم!
و اما bozonghare عزیز :
فکر کنم مطالب بالا یه پروژه کامل باشه برای چیزی که میخواستین (دقت 1 میلی ولت یا 13 بیت)
من فقط میخوام دقت بالا باشه مثلا حدود 12 بیت که بعضی از دوستان پیشنهاد دادند سراغ میکروی PIC برم و یا ADC خارجی 12 بیتی !
ولی اگر راهی هست که با همین AVR بتوان دقت داشت خوب از همین استفاده میکنیم و در مدار شما اون 1 ولت رو چگونه به میکرو بدیم؟ اگه این 1 ولت تغییری بکنه تمام محاسبات و اندازه گیری خراب میشه که!
ولی این روشیکه گفتید ولتاژ رو تقسیم میکنیم و با چند ADC میخوانیم جالب بود ، نمیشه بدون آپ امپ و اون 1 ولت این کار رو انجام داد؟ فقط با تقسیم مقاومتی؟ تو برنامه میکرو چطور باید عمل کنبم؟
روش ۵ تا ورودی رو می شه ولی نه به این راحتی که شما گفتی یعنی فقط با تقسیم مقاومتی نمی شه اگه ضریب تقسیم مقاومتی برای مثلا اپ امپ دوم رو دوبرابر کنی دقت نصف می شه درسته؟
شما نه نقسیم مقاومتی کن نه ولتاژ رو کاهش بده با همون اپ امپ ولتاژ رو تقویت کن (دقیقا مثل کاهش ولتاژ رفرنس می مونه)
شما فقط با کاهش ولتاژ می تونی این کارو بکنی یعنی از اپ امپ دوم با همون ضریب مقاومتی یک ولت کم کنی از اپ امپ دوم ۲ ولت و ... من تقریبا تمام این روش هایی که شما می گی رو رفتم هر کدوم از این قطعاتی که جلوی ADC قرار می دی دریفت حرارتی دارن گینشون کم و زیاد می شه و قطعات فعال مثل اپ امپ نویز به سیگنال اضافه می کنن تو دقت ۱۲ بیت واقعی تمام این ها رو می تونی ببینی در ضمن دقت اون ولتاژ ها هم که کم م یکنی در حد میلی ولت باید باشه که کم پیدا می شه
ولی روش من رو ببین با همون مثال قبلی بدون حتی یه مقاومت هر ۵ میلی ولت یه واحد عدد خونده شده رو افزایش می ده درسته ولی دقت هیچ ADC ای ۱۰۰٪ نیست حداقل یک بیت رو پرش داره مثلا وقتی ولتاز0 ولت باشه عدد هم کامل صفر وقتی می شه ۵ میلی ولت دقیق عدد خونده شده یک ولی وقتی ۲ میلی ولت داری چی؟ شروع می کنه بین صفر و یک پرش کردن حدودا توی ۵ بار خوندن ۲ بار یک می خونی ۳ بار صفر اگه باهم جمع کنی می شه ۲ تقسیم بر تعداد کنی می شه ۰/۴ تقریبا هم دیگه پرش نداری یعنی تونستی ۰/۴ یه واحد رو هم بخونی رنج کامل رو هم داری (من برای به دست آوردن یه چنین روشی شاید صدها هزار تومان هزینه کردم اینکه می بینی تو یه خط توضیح می دم دلیل بر عدم کاراییش نیست)