با سلام
یه مقاله ی آموزشی برای تازه کار ها که به زبان ساده شرح داده
منبع:مکاترونیک ایران
ADC مخفف "Analog-Digital Converter" و به معنای مبدل آنالوگ به دیجیتال است.یعنی تبدیل زبان طبیعت به زبان کامپیوتر(صفر و یک)
اگر بخواهیم این قابلیت را به صورت ساده توصیف کنیم، یک ولت متر دیجیتال است که بر روی پایهآهای میکروکنترلر نصب شده است و به وسیلهآی آن میآتوان ولتاژ پایهآهای ورودی را با دقت مناسبی اندازهآگیری کرد. همانطور که میآدانید ما تا به حال در هیچآ آی سی نمیآتوانستیم شدت ولتاژ ورودی را به دقت اندازه گیری کنیم و فقط میآتوانستیم بدانیم آیا ولتاژ ورودی بالای 2.5 ولت است یا زیر 2.5 ولت، و ورودیآهایمان را به صورت 0 و 1 برسی میآکردیم.(آی سی ها ورودیآهای خود را منطقی میآکنند)
اما به کمک این قابلیتِ میکروکنترلرآهایِ خانوادهآی AVR، ما میآتوانیم با دقت مناسبی ولتاژ ورودی خود را بررسی کنیم.
ADC یکی از پر کاربردترین قابلیتآهای میکروکنترلرآهای خانوادهآی AVR است که به تدریج با کاربردآهای فراوان آن در بخشآهای مختلف آشنا خواهید شد.
هم اکنون نحوهآی انجام تنظیمات اولیهآی CodeWizard برای راهآاندازی ADC را آموزش میآدهیم.
ابتدا CodeWizard را باز کرده و در آن، لبهآی ADC را انتخاب میآکنیم، و در لبهآی ADC، گزینهآی "ADC Enabled" را تیک میآزنیم
سپس تیک 8بیت را میزنیم
بعد VRER=AVCC (ولتاژ مرجع برابر با ولتاژ تغذیه در نظر گرفته شود)
Vref یا ولتاژ مرجع چیست ؟
میکرو برای تبدیل باید یک مرجع داشته باشد تا بتواند ولتاژهای ورودی را با آن مقایسه کند . در میکرو یک پورت با نام Aref وجود دارد که هر ولتاژی که به آن بدهید به عنوان مرجع انتخاب میکند . مثلا یک 5 ولت ثابت به آن می دهید تا Vref همیشه 5 باشد .
یا مثلا اگر رفرنس داخلی 2.56 ولت را فعال کنید و به ورودی ADC ولتاژ 1.28 ولت اعمال کنین عدد گرفته شده برابر 511 خواهد شد . (با توجه به فورمول گقته شده در بالا برای محاسبه)
همانطور که گفته شد، وظیفهآی ADC، اندازه گیری ولتاژی است که بر روی پایهآی ورودی قرار گرفته است. اما ADC عددی را که مولتی متر به ما نشان میآدهد گزارش نمیآکند، بلکه متناسب با ولتاژ پایهآی ورودی، عددی را در بازهآی 0 تا 255 به ما گزارش میآکند. یعنی عدد 0 را به ولتاژ 0ولت اختصاص میآدهد، و 255 را به 5 ولت؛ و هر ولتاژی بین 0 تا 5 ولت را، متناسباً، با عددی بین 0 تا 255 گزارش میآکند. در حقیقت برای سهولت در محاسبه، می توانید فرض کنید اندازهآی ولتاژ ورودی بر حسب ولت، ضربدر 51، برابرست با عددی که ADC برای آن ولتاژ مشخص، به ما گزارش میآکند.
به عنوان مثالی دیگر، اگر خروجی مدار یک سنسور نوری را به پایهآی ورودی ADC متصل کرده باشید، و خروجی مدار سنسور 2 ولت باشد،آADC عدد 102 را به ما گزارش میآکند.
اگر تیکِ گزینهآی "Use 8 bits" را برداریم، بازهآی ما به 0 تا 1024(10بیت)، گشترش پیدا خواهد کرد و در حقیقت دقت اندازهآگیری ما 4 برابر خواهد شد. یعنی 5 ولت ما، به جای 255، با عدد 1024 گزارش خواهد شد، و ولتاژهای بین 0 و 5 ولت نیز متناسباً با عددی بین 0 تا 1024 گزارش خواهند شد. اما در کارآهای معمولی نیازی به این دقت نیست و معمولاً "Use 8 bits" را تیک میآزنیم تا بازهآی ما بین 0 تا 255 باشد.
فورمول کلی ADC به شکل زیر استفاده میشه:
خروجی دیجیتالی =ولتاژ مرجع/ (ولتاژ ورودی * 1024)
Digital output =(Vin * 1024)/Vref]
دربارهآی تنظیمات ADC مطالب زیادی وجود دارد که ما از مطرح کردن تمام آنآها در این بخش میآپرهیزیم، دوستانی که علاقهآمند هستند، میآتوانند از طریق کتابآهای مرجع و دیگر مراجع موجود، مطلب را پی بگیرند، اما در همین حدی که مطالب در اینجا مطرح میآشوند، برای کار ما تقریباً کافیست و الزامی در مطالعهآی منابع جانبی نیست.
نحوه ی استفاده از ADC در برنامه :
در میکرو کنترلر ATMEGA16، 8 پایه ی به ADC اختصاص داده شده، یعنی شما می توانید به صورت همزمان، خروجیِ 8 سنسور یا مدار جانبی را به میکروکنترلر خود وصل کنید و اطلاعات آن ها را به وسیله ی ADC دریافت کنید.
اما این 8 پایه کدام پایه ها هستند؟
این 8 پایه، پایه مربوط به پورت A هستند که با فعال کردن ADC در CodeWizard، این پایه ها در اختیار ADC قرار می گیرند. دقت کنید که برای استفده از ADC حتماً باید قبلاً تنظیمات را در CodeWizard انجام داده باشید.
چگونه از ADC در برنامه استفاده کنیم؟
هنگامیکه شما تنظیمات اولیه را برای فعال سازی ADC در CodeWizard انجام می دهید، به شما این امکان داده می شود که در هر قسمت از برنامه، مقدار هر یک از 8 ADC را بخوانید و از آن استفاده کنید. عبارت" (شماره ی ADC )read_adc " در هر قسمت از برنامه، حاوی مقدار ADC مورد نظر شماست. مثلاً اگر بخواهیم مقدار ADC0 را بررسی کنیم که آیا از 100 بزرگتر است یا خیر، به شکل زیر عمل میآکنیم:
یا مثلاً اگر بخواهیم مقدار ADC1 را در داخل یک متغیر نگه داری کنیم، به شکل زیر عمل می کنیم:
مبدل آنالوگ به دیجیتال، یکی از مهمترین قابلیتآهایست که اکثر میکروکنترلرآهای خانوادهآی AVR آن را دارند. در میکروکنترلرآهای قدیمیآتر، برای این کار، باید یک آی سی به صورت جداگانه بر روی مدار تعبیه میآشد.
یه مقاله ی آموزشی برای تازه کار ها که به زبان ساده شرح داده
منبع:مکاترونیک ایران
ADC مخفف "Analog-Digital Converter" و به معنای مبدل آنالوگ به دیجیتال است.یعنی تبدیل زبان طبیعت به زبان کامپیوتر(صفر و یک)
اگر بخواهیم این قابلیت را به صورت ساده توصیف کنیم، یک ولت متر دیجیتال است که بر روی پایهآهای میکروکنترلر نصب شده است و به وسیلهآی آن میآتوان ولتاژ پایهآهای ورودی را با دقت مناسبی اندازهآگیری کرد. همانطور که میآدانید ما تا به حال در هیچآ آی سی نمیآتوانستیم شدت ولتاژ ورودی را به دقت اندازه گیری کنیم و فقط میآتوانستیم بدانیم آیا ولتاژ ورودی بالای 2.5 ولت است یا زیر 2.5 ولت، و ورودیآهایمان را به صورت 0 و 1 برسی میآکردیم.(آی سی ها ورودیآهای خود را منطقی میآکنند)
اما به کمک این قابلیتِ میکروکنترلرآهایِ خانوادهآی AVR، ما میآتوانیم با دقت مناسبی ولتاژ ورودی خود را بررسی کنیم.
ADC یکی از پر کاربردترین قابلیتآهای میکروکنترلرآهای خانوادهآی AVR است که به تدریج با کاربردآهای فراوان آن در بخشآهای مختلف آشنا خواهید شد.
هم اکنون نحوهآی انجام تنظیمات اولیهآی CodeWizard برای راهآاندازی ADC را آموزش میآدهیم.
ابتدا CodeWizard را باز کرده و در آن، لبهآی ADC را انتخاب میآکنیم، و در لبهآی ADC، گزینهآی "ADC Enabled" را تیک میآزنیم
سپس تیک 8بیت را میزنیم
بعد VRER=AVCC (ولتاژ مرجع برابر با ولتاژ تغذیه در نظر گرفته شود)
Vref یا ولتاژ مرجع چیست ؟
میکرو برای تبدیل باید یک مرجع داشته باشد تا بتواند ولتاژهای ورودی را با آن مقایسه کند . در میکرو یک پورت با نام Aref وجود دارد که هر ولتاژی که به آن بدهید به عنوان مرجع انتخاب میکند . مثلا یک 5 ولت ثابت به آن می دهید تا Vref همیشه 5 باشد .
یا مثلا اگر رفرنس داخلی 2.56 ولت را فعال کنید و به ورودی ADC ولتاژ 1.28 ولت اعمال کنین عدد گرفته شده برابر 511 خواهد شد . (با توجه به فورمول گقته شده در بالا برای محاسبه)
همانطور که گفته شد، وظیفهآی ADC، اندازه گیری ولتاژی است که بر روی پایهآی ورودی قرار گرفته است. اما ADC عددی را که مولتی متر به ما نشان میآدهد گزارش نمیآکند، بلکه متناسب با ولتاژ پایهآی ورودی، عددی را در بازهآی 0 تا 255 به ما گزارش میآکند. یعنی عدد 0 را به ولتاژ 0ولت اختصاص میآدهد، و 255 را به 5 ولت؛ و هر ولتاژی بین 0 تا 5 ولت را، متناسباً، با عددی بین 0 تا 255 گزارش میآکند. در حقیقت برای سهولت در محاسبه، می توانید فرض کنید اندازهآی ولتاژ ورودی بر حسب ولت، ضربدر 51، برابرست با عددی که ADC برای آن ولتاژ مشخص، به ما گزارش میآکند.
به عنوان مثالی دیگر، اگر خروجی مدار یک سنسور نوری را به پایهآی ورودی ADC متصل کرده باشید، و خروجی مدار سنسور 2 ولت باشد،آADC عدد 102 را به ما گزارش میآکند.
اگر تیکِ گزینهآی "Use 8 bits" را برداریم، بازهآی ما به 0 تا 1024(10بیت)، گشترش پیدا خواهد کرد و در حقیقت دقت اندازهآگیری ما 4 برابر خواهد شد. یعنی 5 ولت ما، به جای 255، با عدد 1024 گزارش خواهد شد، و ولتاژهای بین 0 و 5 ولت نیز متناسباً با عددی بین 0 تا 1024 گزارش خواهند شد. اما در کارآهای معمولی نیازی به این دقت نیست و معمولاً "Use 8 bits" را تیک میآزنیم تا بازهآی ما بین 0 تا 255 باشد.
فورمول کلی ADC به شکل زیر استفاده میشه:
خروجی دیجیتالی =ولتاژ مرجع/ (ولتاژ ورودی * 1024)
Digital output =(Vin * 1024)/Vref]
دربارهآی تنظیمات ADC مطالب زیادی وجود دارد که ما از مطرح کردن تمام آنآها در این بخش میآپرهیزیم، دوستانی که علاقهآمند هستند، میآتوانند از طریق کتابآهای مرجع و دیگر مراجع موجود، مطلب را پی بگیرند، اما در همین حدی که مطالب در اینجا مطرح میآشوند، برای کار ما تقریباً کافیست و الزامی در مطالعهآی منابع جانبی نیست.
نحوه ی استفاده از ADC در برنامه :
در میکرو کنترلر ATMEGA16، 8 پایه ی به ADC اختصاص داده شده، یعنی شما می توانید به صورت همزمان، خروجیِ 8 سنسور یا مدار جانبی را به میکروکنترلر خود وصل کنید و اطلاعات آن ها را به وسیله ی ADC دریافت کنید.
اما این 8 پایه کدام پایه ها هستند؟
این 8 پایه، پایه مربوط به پورت A هستند که با فعال کردن ADC در CodeWizard، این پایه ها در اختیار ADC قرار می گیرند. دقت کنید که برای استفده از ADC حتماً باید قبلاً تنظیمات را در CodeWizard انجام داده باشید.
چگونه از ADC در برنامه استفاده کنیم؟
هنگامیکه شما تنظیمات اولیه را برای فعال سازی ADC در CodeWizard انجام می دهید، به شما این امکان داده می شود که در هر قسمت از برنامه، مقدار هر یک از 8 ADC را بخوانید و از آن استفاده کنید. عبارت" (شماره ی ADC )read_adc " در هر قسمت از برنامه، حاوی مقدار ADC مورد نظر شماست. مثلاً اگر بخواهیم مقدار ADC0 را بررسی کنیم که آیا از 100 بزرگتر است یا خیر، به شکل زیر عمل میآکنیم:
if(red_adc(0)>100)
یا مثلاً اگر بخواهیم مقدار ADC1 را در داخل یک متغیر نگه داری کنیم، به شکل زیر عمل می کنیم:
int a;
a=read_adc(1)
a=read_adc(1)
مبدل آنالوگ به دیجیتال، یکی از مهمترین قابلیتآهایست که اکثر میکروکنترلرآهای خانوادهآی AVR آن را دارند. در میکروکنترلرآهای قدیمیآتر، برای این کار، باید یک آی سی به صورت جداگانه بر روی مدار تعبیه میآشد.
دیدگاه