4

آموزش برنامه نویسی آردوینو

احتمالا اگر شما هم به تازگی کار با دنیای الکترونیک دیجیتال را شروع کرده باشید عبارت ADC را زیاد می شنوید و علاقه مند هستید بدانید ADC چیست ؟ و چه کاربردی دارد. در ادامه مطلب ADC که کاربرد بسیار گسترده ای در الکترونیک دیجیتال از میکروکنترلر ها گرفته تا برد های آردوینو، رزبری پای و حتی سیستم های اتوماسیون صنعتی و PLC دارد را به زبان ساده برای شما توضیح می دهم تا به خوبی با مفهوم این واژه آشنا شوید.

ADC یک واژه تخصصی علم الکترونیک است که برای توضیح علمی آن باید اصول و فرمول های زیادی را استفاده کنیم. اما در اینجا هدف آشنایی با مفهوم ADC به زبان ساده است، بنابراین سعی می کنم تا حد امکان با استفاده از مثال های قابل درک مفهوم ADC را برای شما تشریح کنم.

ADC یا مبدل آنالوگ به دیجیتال به زبان ساده

ADC در واقع سیستمی است که سیگنال های پیوسته آنالوگ را به اعداد دیجیتال تبدیل می کند. سیگنال آنالوگ می تواند اطلاعاتی باشد که از یک میکروفون به کامپیوتر ارسال می شود یا نوری که به سنسور های یک دوربین تابیده می شود یا اختلاف پتانسیلی که در اثر اختلاف دما در دو فلز ایجاد می شود. از ADC علاوه بر ثبت داده های آنالوگ برای اندازه گیری مقادیر ولتاژ و جریان و تبدیل آنها به اعداد استفاده می شود.

ADC از کجا پیدا شد؟

قبل از هر چیز باید بدانید ADC به معنی “Analog to Digital Converter” یا مبدل آنالوگ به دیجیتال است. اما مبدل آنالوگ به دیجیتال یعنی چه؟! دانش الکترونیک دیجیتال در مقایسه با الکترونیک دانش نسبتا جدیدی است. در گذشته قطعات الکترونیکی، کمیت های الکترونیکی و دستگاه های اندازه گیری الکترونیکی همگی آنالوگ بودند. همین چند سال قبل اگر سری به مغازه های فروش قطعات الکترونیک می زدید، مولتی متر های آنالوگی را در ویترین ها مشاهده می کردید که به آوومتر معروف بودند.

حتما در فیلم ها، ساختمان های قدیمی و دستگاه های الکترونیکی قدیمی، از این دست عقربه ها را زیاد مشاهده کرده اید. اما با ظهور الکترونیک دیجیتال و کامپیوتر ها همه چیز تغییر کرد. امروزه به جای استفاده از عقربه ها از نمایشگر های LED و LCD استفاده می کنیم. عقربه ها و سیستم های اندازه گیری آنالوگ با اینکه به خوبی می توانستند بسیاری از کمیت های طبیعی اطرافمان را اندازه گیری کنند اما قادر به ثبت این اطلاعات در سیستم های دیجیتال و کامپیوتری نبودند و همیشه اپراتور ها باید این اطلاعات را ثبت و بررسی می کردند. همین موضوع باعث می شد تا دستگاه های اندازه گیری آنالوگ با محدودیت های زیادی روبرو باشند.

هرچند کامپیوتر ها روز به روز در حال رشد بودند اما نباید فراموش کنیم که محیطی که ما در آن زندگی می کنیم به هیچ عنوان یک محیط دیجیتال و دو قطبی نیست! محیط پیرامون ما دربرگیرنده میلیون ها پارامتر پیوسته و آنالوگ است. با توسعه سیستم های دیجیتال یکی از چالش هایی که مهندسین الکترونیک دیجیتال با آن روبرو بودند این بود که چطور میتوانند اطلاعاتی که ذاتا آنالوگ هستند را وارد سیستم های دیجیتال کنند. اطلاعاتی مانند صدای انسان، صدای موسیقی، شدت نور، دمای هوا، میزان رطوبت، سرعت باد، فشار هوا و هزاران پارامتر شناخته شده ی دیگر، همگی مقادیری پیوسته دارند و به طور مستقیم قابل ثبت در سیستم های دیجیتال نیستند. در یک سیستم دیجیتال در هر لحظه اطلاعات یا ۰ است یا ۱ اما پارامتر های اطراف ما اغلب بیشتر به نمودار های سینوسی شباهت دارند.

فرض کنید می خواهیم یک سیگنال آنالوگ سینوسی با دامنه ۱۰ ولت را به صورت دیجیتال تبدیل کنیم. برای این کار یکی از راه هایی که می توانیم انجام دهیم این است که +۱۰ ولت را به عنوان ۱ و -۱۰ ولت را به عنوان ۰ دیجیتال در نظر بگیریم در این صورت داده های دیجیتال ما به شکل زیر خواهد بود.

تبدیل آنالوگ به دیجیتال ADC

Resolution در ADC به چه معناست؟

چنین مداری را با استفاده از یک آپ امپ می توانید بسازید و در واقع یک ADC یک بیتی ساخته اید. منظور از ADC یک بیتی این است که فقط از یک رقم باینری برای نمایش وضعیت سیگنال آنالوگ استفاده می کنیم. در این حالت اگرچه ولتاژ میانگین حاصل از سیگنال دیجیتال با ولتاژ RMS آنالوگ تقریبا برابر است اما همان طور که در تصویر می بینید تقریبا اغلب اوقات ولتاژ سیگنال دیجیتال با ولتاژ سیگنال آنالوگ همخوانی ندارد و همواره ولتاژ یا کمتر از حالت مطلوب است یا بیشتر از حالت مطلوب. راه حلی که می توان برای کاهش خطا ارائه داد مانند راه حل کشیدن دایره با خطوط صاف است. هرچه تعداد خطوط صاف را بیشتر کنیم. شکل نهایی به دایره نزدیک تر خواهد شد.

رسم دایره با چند ضلعی

همان طور که میبینید با افزایش ضلع ها ناحیه خطا ( ناحیه آبی رنگ ) کمتر می شود و شکل نهایی به شکل مورد نظر ما که دایره است نزدیک تر خواهد بود. سیگنال های آنالوگ هم دارای اشکال منحنی هستند بنابراین برای کاهش ناحیه خطا باید با افزایش تعداد بیت ها، سیگنال را در محدوده های کوچکتری اندازه گیری کنیم. یعنی به جای آنکه از یک ۰ و ۱ برای اندازه گیری بازه بین -۱۰ ولت تا ۱۰ ولت استفاده کنیم این بازه را به بازه های کوچکتر تقسیم کنیم و برای هر بازه از یک ۰ و ۱ استفاده کنیم.

بیاید فرض کنیم به جای ۱ بیت از ۲ بیت استفاده کنیم. در این حالت عملا ما بازه -۱۰ تا +۱۰ را به دو بازه ی کوچکتر تقسیم می کنیم. یکی از -۱۰ تا ۰ و دیگری از ۰ تا +۱۰٫ از آنجا که هر بیت ۲ حالت می تواند داشته باشد در حقیقت هر زیر بازه خود به ۲ قسمت دیگر تقسیم می شود. در واقع ما اگر از یک ADC با n بیت استفاده کنیم بازه اصلی را به level 2^n تقسیم کرده ایم. به عبارتی برای یک ADC 2 بیتی ما بازه اصلی را به ۲^۲ یعنی ۴ سطح تقسیم می کنیم. در این حالت همان طور که در شکل زیر مشاهده می کنید ناحیه خطا در مقایسه با ADC یک بیتی بسیار کوچکتر می شود.

مبدل ولتاژ آنالوگ به دیجیتال 2 بیتی 2Bit ADC

در ADC دو بیتی شکل بالا دقت اندازه گیری ولتاژ در بازه -۱۰ تا +۱۰ برابر از طریق فرمول زیر محاسبه می شود.

فرمول محاسبه وضوح ADC

بنابراین برای یک ADC دو بیتی که می تواند ۲۰ ولت ( یعنی از -۱۰ الی +۱۰ ولت )‌ را اندازه گیری کند، Resolution یا وضوح ADC به صورت زیر خواهد بود.

محاسبه Resolution مبدل آنالوگ به دیجیتال (ADC) 2 بیتی

بنابراین وضوح این ADC برابر ۵ ولت است یعنی به ازای هر ۵ ولت کاهش یا افزایش در ولتاژ ورودی خروجی ADC یک واحد کاهش یا افزایش پیدا می کند.

اغلب میکروکنترلر ها و برد های آردوینو از ADC های ۱۰ بیتی یا ۱۲ بیتی استفاده می کنند به این معنی که بازه بین ۰ ولت تا Aref ( حداکثر ولتاژ قابل اندازه گیری ADC ) را به ۱۰۲۴ قسمت یا ۴۰۹۶ قسمت تقسیم می کنند. با این کار شما می توانید با دقت بالایی سیگنال های آنالوگ را اندازه گیری کنید.

علاوه بر Resolution که به تعداد بیت های ADC وابسته است. پارامتر دیگری که برای تبدیل سیگنال های آنالوگ به دیجیتال دارای اهمیت است نرخ نمونه برداری یا Sampling Rate مبدل آنالوگ به دیجیتال است.

نمونه برداری یا Sampling چیست؟

سیگنال های آنالوگ می توانند دارای دامنه و فرکانس متغیر باشند و در طول زمان به طور پیوسته تغییر می کنند. اما همان طور که می دانید سیستم های دیجیتال به طور پیوسته کار نمی کنند. بلکه با استفاده از کلاک پالس ها داده ها را پردازش می کنند. در واقع سیستم های دیجیتال در فاصله بین کلاک پالس ها فریز می شوند تا گیت ها و مدارات منطقی فرصت کافی برای انجام عملیات لازم را داشته باشند. از آنجا که در ADC های متداول عملیات تبدیل سیگنال آنالوگ به داده دیجیتال دارای چندین مرحله ترتیبی است بنابراین ADC ها در فاصله های زمانی مشخصی و با فرکانس مشخصی از ورودی نمونه برداری می کنند. در واقع مبدل آنالوگ به دیجیتالی که شما استفاده می کنید بر اساس فرکانس کاری خود تنها از نقاط محدودی از سیگنال آنالوگ نمونه برداری می کند و بی نهایت نقطه از سیگنال آنالوگ هرگز مورد پردازش قرار نمی گیرند.

نمونه برداری مبدل آنالوگ به دیجیتال یا Sampling ADC

اگر به تصویر بالا نگاه کنید مفهوم نمونه برداری یا Sampling در مبدل های آنالوگ به دیجیتال را بهتر متوجه می شوید. در واقع ADC ها در زمان های مشخصی مقدار ولتاژ وصل شده به پین های ورودی را نمونه برداری می کنند و مدتی زمان نیاز دارند تا این نمونه را به اعداد دیجیتال تبدیل کنند و با پایان عملیات تبدیل، نمونه برداری و پردازش نمونه جدید را از سر می گیرند.

نرخ نمونه برداری یا Sampling Rate چیست؟

Sampling Rate یا نرخ نمونه برداری در واقع تعداد نمونه هایی است که یک ADC در واحد زمان از سیگنال ورودی بر می دارد. معمولا این کمیت را با واحد SPS (Samples Per Second) یا kSPS (Kilo Samples Per Second) یا mSPS به معنی میلیون نمونه بر ثانیه اندازه گیری می کنند.

هرچه نرخ نمونه برداری (Sampling Rate)‌ یک ADC بالاتر باشد، ADC می تواند نمونه های بیشتری از سیگنال ورودی دریافت کند و تا حد ممکن ( براساس Resolution ) اطلاعات دیجیتالی که ثبت می کند تطابق بیشتری با سیگنال ورودی داشته باشند.

پدیده ایلیاسینگ یا Aliasing چیست؟

اگر تابحال به چرخ خودرو های در حال حرکت دقت کرده باشید احتمالا متوجه شده اید که زمانی که خودرو سرعتش را افزایش یا کاهش می دهد در سرعت های خاصی ما چرخ ها را در حالتی می بینیم که در حال چرخیدن در جهت مخالف هستند یا سرعت چرخ ها را متفاوت از آنچه که هست می بینیم.

ایلیاسینگ در ADC

در واقع آنچه باعث چنین اتفاقی می شود این است چشم ما نیز مانند ADC ها دارای نرخ نمونه برداری یا Sampling Rate است. به همین علت نمی توانیم اشیائی که با سرعت بالاتر از ۲۴۶ متر بر ثانیه یا ۸۹۰ کیلومتر بر ساعت حرکت می کنند را ببینیم! زمانی که سرعت چرخش چرخ در ثانیه از نصف فرکانس نمونه برداری چشم ما بیشتر شود ( f > fs / 2 ) پدیده ی Aliasing کاملا پدیدار می شود و مشاهده می کنیم سرعت چرخش چرخ اتومبیلی که در حال افزایش سرعت است در حال کم شدن است! یا چرخ خودرو شروع به برعکس چرخیدن می کند.

این اتفاق ممکن است برای مدار های ADC نیز رخ دهد. اگر فرکانس نمونه برداری شما کمتر از ۲ برابر فرکانس ورودی باشد شما نمی توانید سیگنال دریافتی را به درستی دیجیتایز کنید.

ایلیاسینگ يا Aliasing در تبدیل آنالوگ به دیجیتال

در تصویر بالا فرض کنید سمپلینگ ریت ADC ثابت است و در نقاط سبز رنگ S1 تا S6 نمونه گیری اتفاق می افتد. حال اگر سیگنال آنالوگ قرمز رنگ را به ورودی ADC متصل کنیم اطلاعات نقاط S1 تا S6 برای این سیگنال ثبت می شود. در صورتی که سیگنالی با فرکانس بالاتر که به رنگ آبی مشخص شده است را به ورودی ADC وصل کنیم همان طور که مشاهده می کنید نمونه برداری در نقاط S1 تا S6 باز هم همان مقادیر قبلی را ثبت می کند. در واقع در اینجا ایلیاسینگ اتفاق افتاده است و ADC نمی تواند اطلاعات سیگنال آبی رنگ را دیجیتایز کند.

برای اجتناب از ایلیاسینگ که در زبان فارسی به اشتباه تداخل فرکانس یا الایزینگ نیز گفته می شود فرکانس نمونه برداری یا Sample Rate باید حداقل ۲ برابر فرکانس سیگنالی باشد که می خواهیم آن را اندازه گیری کنیم!

در صورتی که دقت بالا برای شما اهمیت زیادی دارد و می خواهید اطلاعات سیگنال را کاملا دقیق ثبت کنید در صورتی که Resolution مبدل آنالوگ به دیجیتال شما بسیار بالا باشد می توانید حتی فرکانس را تا ۱۰ برابر فرکانس سیگنال ورودی در نظر بگیرید. اما هرچه سمپل ریت بالاتر باشد قیمت ADC نیز افزایش می یابد و برای بسیاری از پروژه های تجاری یا حتی صنعتی چنین کاری مقرون به صرفه نیست.

همانطور که در ابتدا به شما قول دادم در این مطلب سعی کردم تا مفهوم ADC را به زبان ساده و به دور از محاسبات و فرمول های سنگین علمی و در عین حال کاربردی برای شما تشریح کنم. برای نوشتن این مطلب بیش از ۸ ساعت زمان صرف شده است و همان طور که می دانید دیجی نیک یکی از اولین مراجع آموزش آنلاین برق و الکترونیک به زبان فارسی است که از سال ۱۳۹۳ تاکنون با انتشار صد ها مطلب و آموزش رایگان به بیش از ۲ میلیون فارسی زبان کمک کرده است تا دانش خود را افزایش دهند و مسیر ساده تری برای تبدیل رویاهایشان به واقعیت را در پیش بگیرند.

در پایان از شما خواهش میکنم با ارسال نظرات خود از طریق بخش نظرات که در زیر همین نوشته قرار دارد و کمتر از ۳۰ ثانیه از وقت شما را می گیرد به ما کمک کنید تا با قدرت بیشتری در کنار شما باقی بمانیم. نظرات شما دلگرمی و چراغ راه ماست.

4 نظرات
  1. اصغر پاکزاد می گوید

    سلام توضیحات شما درمورد ADC بسیارگویاوروان وساده بود من که برای اولین باربااین واژه روبروشدم کاملا معنی انرادریافتم خواستم اززحمات شما تشکر کنم

  2. بهادردارافکن می گوید

    سلام
    با تشکراز زحمتی که کشیدید ؛ برای من به شخصه خیلی مفید بود.
    ای کاش DAC راهم قرارمی‌دادید.
    و بازهم ممنونم

  3. سعید حمیدی می گوید

    باور بفرمایید اگه تمام دبیرام از کلاس اول ابتدایی تا دیپلمم مثل شما موضوع درسو شرح میدادن من الان علامه ی دهر بودم، صد رحمت به امواتت، شیرمادر حلالت، احسنت، واقعا جگرم حال اومد با توضیحی که دادین، دلسوزانه، مخلصانه، زیبا، شیوا، جذاب و بی نظیر توضیح دادین، حتی لباسامم حالیشون شد ADC چیه، من غلام شما هستم، چرا؟ چون امام علی ع فرمودن: « مَن عَلَّمَنی حَرفاً فَقَد صَیَّرَنی عَبداً – هرکس مرا نکته ای آموزد، مرا بنده خویش ساخته است»
    سپاسگذارم بی نهایت.

    سعید حمیدی

  4. علی می گوید

    سلام
    عالی بود
    ممنون

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.