ADC چیست؟ توضیح ADC در Arduino

مقدمه

میکروکنترلرها فقط دیجیتال میفهمن. یعنی فقط صفر و یک میدونن چیه. یک کلید فشار داده شده یا نه. این  نمونه ای از سیگنال دیجیتاله. موقعی یه میکروکنترلر با 5 ولت کار میکنه اون میفهمه که 0 ولت یعنی منطق 0 و 5 ولت یعنی منطق 1. ولی واقعیت اینه در عمل همه چی به این سادگی ها نیست و دنیا یه دنیای خاکستری هست. مثلا 2.72 ولت یعنی چی؟صفره یا یک؟ توی دنیای آنالوگ ما اغلب نیاز داریم که ولتاژ های مختلفی رو اندازه گیری کنیم. یه سنسور آنالوگ که با 5 ولت کار میکنه خروجیش میتونه از 0.01 تا 4.99 تغییر کنه. خوشبختانه اکثر میکروکنترلرها یه واحد داخلی توی خودشون دارم که میتونن ولتاژ آنالوگ رو به یه عدد دیجیتال تبدیل کنن. اسم اون واحد هست ADC . قبل از خوندن ادامه این بحث پیشنهاد میکنم حتما مطالب زیر که توی سایت منتشر شده رو بخونید:

ولتاژ، جریان، مقاومت و قانون اهم

مولتی متر دیجیتال

ADC چیست؟

ADC مخفف عبارت  Analog to Digital Converter هست که به معنی مبدل آنالوگ به دیجیتال هست. حالا این چیکار میکنه؟ میاد ولتاژهای ورودی آنالوگ که روی یه پایه میفته رو تبدیل میکنه به اعداد دیجیتال. با تبدیل اعداد آنالوگ به اعداد دیجیتال ما میتونیم ارتباط با دنیای آنالوگ اطرفمون رو شروع کنیم. بدون این که هیچ دغدغه ای داشته باشیم. در عکس زیر پایه های ADC برد آردوینو رو آوردیم:

ADC آردوینو

توی یه میکروکنترلر همه ی پایه ها این خاصیت رو ندارن تا ولتاژ آنالوگ رو به دیجیتال تبدیل کنن. توی بردهای آردوینو فقط پایه هایی میتونن این کار رو انجام بدن که جلوی شماره ای که دارن از حرف “A” استفاده بشه. مثلا A0 یا A2 .
برد آردوینو 6 تا پایه مبدل آنالوگ به دیجیتال داره که با نام های A0 تا A5 شماره گذاری شدن.

توی میکروکنترلرها و بردهای مختلف ADC های مختلفی وجود داره. ADC که در برد آردوینو استفاده میشه 10 بیتی هست یعنی میتونه یه ولتاژ آنالوگی که داره رو با دقت 210 (1024) بخونه. منظور از این جمله اینه که هر ولتاژ آنالوگ که روی پایه اش میفته بهش یه عدد از 0 تا 1023 نسبت میده و هر چی این ولتاژ بالاتر باشه عدده هم بالاتره. مثلا اگه ولتاژ صفر بیاد عدد 0 رو میخونه و اگه ولتاژ 5 بیاد عدد 1023 رو میخونه. و بقیه ولتاژ ها هم به همین ترتیب. حالا هر چه این دقت بالاتر باشه طبیعی هست که ولتاژ رو دقیق تر میتونه تبدیل کنه. مثلا اگه دقت 16 بیتی باشه به ولتاژها عددی بین 0 تا 65534 نسبت میده. خوب اگه با اون ADC که دقتش 10 بیتی هست مقایسه کنیم میبینیم که این ADC داره ولتاژ ها رو بهتر به عددهای دیجیتال تبدیل میکنه.

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

نحوه تبدیل ولتاژآنالوگ به عدد دیجیتال توسط ADC :

ADC یه نسبت تبدیل داره. این به معنی هست که ADC مقدار 5 ولت آنالوگ رو برابر 1023 قرار میده و هر چی که کمتراز 5 ولت باشه یه مقداری از 0 تا 1023 بهش نسبت میشه. فرمول ADC طبق رابطه زیر هست:

فرمول ADC

مثالی که الان میخوایم بزنیم مربوط به آردوینو هست. توی آردوینو دقت مبدل آنالوگ به دیجیتال 10 بیتی هست بنابراین رزولوشن اندازه گیری میشه از 0 تا 1023  هست. پس به جای Resolution of the ADC میذاریم 1023 . ولتاژ آردوینو یا به عبارت دیگه  ولتاژ سیستم که در رابطه بالا تحت عنوان System voltage اومده مقدارش برابر 5 ولت هست. خوب تا اینجا رابطه ی بالا به شکل زیر در میاد:

ADC در آردوینو

حالا فرض کنید ولتاژ آنالوگ ورودی شما 2.12 ولت هست. اون عددی که ADC به ما تحویل میده طبق رابطه ی بالا برابر میشه با :

مثال ADC در آردوینو

که با یه طرفین وسطین ساده بدست میاریم:

مثال ADC آردوینو

مثال adc آردوینو

مساله: اگر ولتاژ سیستم شما 3.3 ولت بود و ADC شما دقت 9 بیتی داشت. مقداری که مبدل آنالوگ به دیجیتال برای ولتاژ ورودی 2.12 ولت نشون میداد چقدر بود؟

مثال ADC برای برد آردوینو:

کدنویسی ADC در آردوینو

در ابتدا باید یکی از پایه های آنالوگ رو به صورت ورودی تعریف کنیم. برای این که پایه مون با شکل بالا تطبیق داشته باشه از پایه A3 استفاده میکنیم:

pinMode(A3, INPUT)


سپس با دستور ()analogRead مقدار آنالوگ خودمون رو به دیجیتال تبدیل میکنیم و در متغیر عدد صحیحی مثل x میریزیم:

 

int x = analogRead(A3); //Reads the analog value on pin A3 into x


در رابطه بالا عددی که توی متغیر x ریخته میشه یه عدد بین 0 تا 1023 هست. چون دقت ADC برد آردوینو 10 بیتی هست.

نکته: ما این مقدار رو در یه متغیر عدد صحیح میریزیم چون متغیر از نوع Byte فقط تا 8 بیت میتونه داده رو توی خودش نگهداری کنه.پس حتما حواستون باشه که نوع متغیری که تعریف میکنید int باشه.

Serial.print(“Analog value: “)

; Serial.println(x)

اگه ما مقدار ولتاژ آنالوگ خودمون رو تغییر بدیم باید مقدار عددی x هم تغییر کنه. مثلا اگه x برابر 334 شد و آردوینو ما 5 ولتی بود در این صورت مقدار ولتاژ آنالوگ ما چقدره؟ مولتی متر بذارید رو نقطه ی مورد نظر مدار. باید چیزی حدود 1.63 ولت رو اندازه گیری کنه.

تذکر
حالا فرض کنید توی دستور analogRead به جای A3 که یه پایه دیجیتال هست بذاریم مثلا 8 . یه پایه ی عادی دیجیتال. حالا چه اتفاقی میفته؟ اتفاق خاصی نمیفته فقط شما نمیتونید مقدار درست ولتاژ رو توی متغیر x خودتون بریزید. اون کدی هم که نوشتیم کامپایل میشه ولی مقدار عددی x غلط هست.( البته تمیز تر بود که نرم افزار آردوینو جوری میبود که خودش میفهمید و کد رو کامپایل نمیکرد) حال فرض کنید یه سنسور دیجیتال رو وصل کنم به پایه آنالوگ. چه اتفاقی میفته؟ بازم هم اتفاق خاصی پیش نمیاد و قطعه ای هم نمیسوزه. فقط مقداری که میخونید درست نیست. مثلا عددی که میخونید یا خیلی نزدیک به 1023 هست یا خیلی نزدیک به 0 .

مثل همیشه اگه دوست دارید از ما مطلع بشید و مطالب جدید رو بدونید کی منتشر میشه میتونید ما رو در تلگرام و یا اینستاگرام دنبال کنید:

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

 

 

 

خازن ها- بخش سوم

خازن- بخش سوم-معرفی انواع خازن ها

سلام. در این قسمت میخوایم بحث خازن ها رو ادامه بدیم. قبلا دو جلسه ازاین سری آموزش  منتشر کرده بودیم که پیشنهاد میکنم حتما اون رو از لینک های زیر بخونید:

جلسه اول   جلسه دوم

در این قسمت میخوایم ابتدا وارد بحث انواع خازنها بشیم بعد هر کدوم از اون ها رو بررسی کنیم:

انواع خازنها

خازنهای مختلفی در دنیای واقعی وجود داره که هر کدوم مزایا و معایب خاص خودش رو داره که باعث میشه یکی از دیگری بهتر بشه و برای کارهای خاصی عملکرد مناسب تری رو داشته باشن. توی دسته بندی خازنها ما یه سری عوامل انگشت شمار رو در نظر گرفتیم که در زیر به این عوامل اشاره میکنیم:

1-اندازه: هم از نظر حجم فیزیکی و هم از نظر ظرفیت. زیاد معمول نیست که خازن بزرگترین قطعه توی یه مدار باشه. اونا میتونن خیلی کوچک باشن. البته بعضی ظرفیت ها باید نیازمند یه اندازه ی بزرگتر هم هستن.

2ماکزیمم ولتاژ: خازنها هر کدوم یه ولتاژ ماکزیمم دارن که نباید توی مدار ولتاژی که بهشون وصل میشه از اون حد تجاوز کنه. بعضی از خازنها ولتاژشون 1.5 ولت هست، بعضی هاشون اما مثلا 100 ولت. ولتاژ بیش از حد معمولا باعث آسیب رسیدن به خازنها میشه.

3-جریان نشتی: خازنها ایده آل نیستند. از طریق دی الکتریک یه مقدار جریان از یه ترمینالش به ترمینال دیگه اش عبور میکنه که به اون میگن جریان نشتی یا به اصطلاح انگلیسیش Leakage Current. البته این مقدار معمولا در حد نانو آمپر یا کمتر هست. همین جریان باعث میشه که انرژی توی خازن کند ذخیره بشه اما همین جریان هم باز باعث خازن دیرتر تخلیه بشه.

4-ESR یا Equivalent series resistance : ترمینال خازنها 100 درصد رسانا نیستند و یه مقداری هم مقاومت از خودشون نشون میدن. این مقدار زیاد نیست و چیزی در حدود 0.01 اهم برای هر ترمینال است. این مقدار مقاومت  برای جریان های زیاد باعث تولید گرما و تلف شدن انرژی میشه.

5-Tolerance(خطا)- خازنها دقیق ساخته نمیشن. ظرفیت هر خازن با مقداری که توی عمل ساخته میشه ممکنه یه ذره تفاوت کنه. مقدار این تفاوت هم وابسته است به نوع خازن و معمولا از 1 درصد تا 20 درصد کمتر و بیشتر تغییر میکنه.

خازنهای سرامیکی:

این نوع خازن یکی از پرکاربردترین نوع خازنها است که استفاده ی زیادی ازش میشه. نام اون هم از ماده ی دی الکتریکی که توی اون استفاده میشه گرفته شده.

خازنهای سرامیکی معمولا و اندازه و ظرفیتشون کوچک هست. خیلی سخت میتونید خازن سرامیکی با ظرفیتی بیشتر از 10 میکروفاراد پیدا کنید. خازنهای سرامیکی با نصب سطحی معمولا در اندازه های خیلی کوچیک مثل 0.4mm x 0.2mm)  0402) یا 0603 (0.6mm x 0.3mm) و یا 0805 وجود دارند. خازنهایی هم که از طریق سوراخ نصب میشن معمولا اندازه شون کوچیکه و در رنگ های زرد یا قرمز وجود دارن. عکس زیر رو نمونه ای یه خازن سرامیکی هست.

خازن سرامیکی

 

در مقایسه با سایر خازنهای الکترولیتی مشابه ،  خازنهای سرامیکی ایده آل تر هستند(یعنی مقدار ESR و جریان نشتی اون ها یه بقیه کمتره) اما ظرفیت پایین اونا میتونه محدود کننده باشه برای ما.این نوع خازنها همچنین بسیار مناسب برای مدارات فرکانس بالا coupling و decoupling هستند.

خازن های آلمینیومی و تانتالیومی الکترولیتی:

این خازنها ، خازنهای بسیار خوبی هستند. ظرفیت بالای این خازنها میتونه توی یه پک کوچیک قرار داده بشه و نیازی نیست برای خازنی با ظرفیت بالا حجم زیادی هم اشغال بشه. اگه شما به یه خازن توی رنج 1 میکروفاراد تا 1 میلی فاراد نیاز دارید میتونید از خازنهای الکترولیتی استفاده کنید. این خازنها برای مدارات ولتاژ بالا کاربردهای زیادی دارند چون ولتاژ ماکزیمم اونا بالا هست.

خازنهای الکترولیتی آلمینیومی معروف ترین خازنها توی دسته خازن های الکترولیتی هستند.اون مثل قوطی های حلبی کوچیک هستند. شکل زیر نمونه ای این نوع خازن ها هست:

خازن های الکترولیتی

متاسفانه خازنهای الکترولیتی دارای پولاریزه هستند. به پایه مثبت اونا میگن پایه آند و به پایه منفی اونا میگن پایه کاتد. موقعی ولتاژ به یه خازن الکترولیتی اعمال میشه پایه آند باید ولتاژش از پایه کاتد ببیشتر باشه. پایه کاتد توی این خازنها به صورت یه نوار رنگی روی خازن و با علامت “-” مشخص میشه. پایه آند همچنین ممکنه یه مقدار از پایه کاتد بزرگتر باشه.اگه  به این خازن ولتاژ برعکسی اعمال بشه ممکنه اتفاق های بدی بیفته مقلا بترکه و سرش باز بشه و از این دست مشکلات و درنهایت باعث میشه مدارتون اتصال کوتاه بشه.

این خازنها همچنین جریان نشتی هم دارن.جریان هایی در حدود 1 نانو آمپر که از یه ترمینال به ترمینال دیگه اش منتقل میشه. این باعث میشه که خازنهای الکترولیتی زیاد برای ذخیره انرژی ایده آل نباشن.

ابرخازنها:

اگه شما دنبال یه خازن میگردید که باهاش انرژی رو ذخیره کنید احتمالا بهترین گزینه برای شما ابرخازنها هستند.رنج ابرخازن ها در حد فاراد هست. کلا این نوع خازنها برای ظرفیت های بالا طراحی شدن.نمونه ای از یک ابرخازن در شکل زیر اورده شده:

نمونه ای از یک ابرخازن

نکته ای که در مورد این خازنها وجود داره اینه که اگر چه ظرفیت بالایی دارن و ماکزیمم ولتاژشون از یه حدی بالاتر نمیره. مثلا یه خازن با ظرفیت 10 فاراد نهایتا ماکزیمم ولتاژش 2.5 ولت هست و اگه بهش ولتاژی بالاتر اعمال کنیم باعث سوختنش میشه. از این خازنها بیشتر در مدارهای سری استفاده میشه تا برسن به یه نرخ ولتاژ بالاتر.(در حالی که ظرفیتشون کاهش پیدا میکنه)

کاربرد اصلی ابرخازنها مربوط به ذخیره سازی و آزاد کردن انرژی هست مثل باتری ها. البته ابرخازنها نمیتونن به اندازه باتری ها شارژ ذخیره کنن ضمن این که سرعت خالی شدنشون هم خیلی بیشتر از باتری هاست و البته طول عمر بیشتری هم نسبت به باتری ها دارن.

خازنهای دیگر:

خازنهای الکترولیتی و سرامیکی حدود 80 درصد خازن هایی که در بیرون وجود داره رو تشکیل دادن. سهم ابرخازن ها هم چیزی حدود 2 درصد هست. نوع دیگه ای از خازن ها ، بهشون میگن خازن فیلم و یا Film capacitor که مشخصه اصلی این خازن ها اینه که مقدار ESR اونا خیلی کوچیکه و باعث میشه که برای جریان های خیلی بالا مناسب باشن.

البته یه سری خازنهای کم کاربرد دیگه ای هم وجود دارن. مثلا خازن های متغیر که میتونن رنج های مختلفی رو تولید کنن که جایگزین بسیاری خوبی برای مقاومت های متغیر در مدارات تنظیم هستن. سیم های پیچ خودرده و PCB ها هم میتونن ناخواسته نقش یه خازن رو ایفا کنن چون دو تا رسانا در کنار هم قرار گرفتن و به وسیله ی یه عایق از هم جدا شدن. درنهایت هم میتونیم از خازن های شار(ترکیبی عجیب غریب از یه سلف و خازن) نام ببریم.

خوب دوستان.این جلسه هم به پایان رسید. بحث خازن ها هنوز یه جلسه دیگه داره که احتمالا جلسه آخرش باشه   و اون هم مربوط میشه به کاربرد خازن ها. اگه دوس دارید بدونید که این جلسه کی منتشر میشه میتونید ما رو توی تلگرام و یا اینستاگرام دنبال کنید:

 

 

 

 

 

 

 

 

نمایی از یک PCB

PCB – بخش اول

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