.:: نویز | آموزش AVR | میکروکنترلر | الکترونیک ::.

وبلاگ آموزشی احسان نوری ::: Ehsan Nouri's Weblog

.:: نویز | آموزش AVR | میکروکنترلر | الکترونیک ::.

وبلاگ آموزشی احسان نوری ::: Ehsan Nouri's Weblog

" نویز رسانه ای است برای آموزش آسان مفاهیم میکروکنترلر و الکترونیک "

دریافت مستندات
آخرین نظرات
  • ۱۵ آبان ۹۵، ۱۸:۵۸ - الهام
    ممنون

مبدل آنالوگ به دیجیتال ADC در AVR ؟ [12]

جمعه, ۳ آبان ۱۳۹۲، ۱۰:۱۷ ب.ظ

 

 

در این بخش به توضیح "مبدل آنالوگ به دیجیتال" در میکروکنترلرهای AVR میپردازیم.

 

با ما در ادامه مطلب همراه باشید ...

 

اول از همه عذرخواهی میکنم به خاطر اینکه یکم در روند آموزش وقفه افتاد.

چیکار کنیم دیگه.این استادا ما رو ول نمیکنند بریم دنبال زندگیمون laugh.

 

اما بریم سراغ اصل مطلب؛

 

این دفعه میریم سراغ واحدی از میکروکنترلر AVR که وظیفه اش تبدیل سیگنال آنالوگ به دیجیتاله.

اما طبق معمول با زبانی ساده و خودمونی و همراه با مثال های واضح مسائل رو شرح خواهم کرد.

 

یه واحدی هست به نام ADC ، مخفف Analog Digital Conversion .

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

 

اما اصلا به چه دردی میخوره این مبدل ؟

ببینید ! اگه ما بخوایم دنیای خارج میکرو رو به دنیای داخل میکرو ربط بدیم مجبوریم که یه تبدیلی انجام بدیم.

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

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

تو این درسای عجیب غریب و (سه نقطه ...) قطعا این سیگنالها رو خواهید شناخت.

 

بگذریم ...

 

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

یه مثال ملموس میزنم که اکثرتون درگیرش شده باشید.

 

حتما ضبط صوت های دیجیتال رو دیدید.(منظورم از این انواع جدید سی دی خوره !).

اگر دقت کرده باشید ولومشون اول و آخر نداره ! یعنی هر چی به سمت راست بچرخونید میچرخه و هر چی هم به سمت چپ بچرخونید همینطور !

اما در انواع قدیمیش ولوم تا یه حدی به چپ و راست میچرخید !

 

وقتی ضبط صوت دیجیتال میشه،سیستمش هم دیجیتال میشه ! ولی ولوم دستگاه یه ابزار مکانیکیه که در محیط خارج قرار داره و باید با چرخوندنش صدا کم و زیاد بشه.

یکم رو این قضیه فکر کنید...

ما میایم و دست مبارک رو میزاریم روی ولوم مبارک دستگاه و اون رو میپیچونیم و اون هم مجبوره که بچرخه ! cool

اما انصافا چجوری میشه که با دست ولوم رو میچرخونیم و مقدار یه متغیر داخل میکرو عوض میشه ؟؟؟؟ (عجایب خلقته !!!)

من که نمیدونم شما میدونید ؟!  (ههههههههه !!!)

 

مثال بالا اگرچه که بهش میخوره سرکاری باشه ولی تهش یه چیزایی رو میخواد برسونه !

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

 

فکر میکنم که تا اینجا تونستم کلیت موضوع رو برسونم،پس میریم سراغ ادامه مبحث ...

6 روش وجود داره که بشه سیگنال آنالوگ رو به دیجیتال تبدیل کرد :

 

1.روش موازی یا همزمان

2.روش دو شیب

3.روش پله ای

4.روش تبدیل ولتاژ به فرکانس

5.روش تبدیل ولتاژ به زمان

6.روش تقریب متوالی

 

 

حالا میکروکنترلر AVR از کدوم یک از این روش ها استفاده میکنه ؟

روش تقریب متوالی یا Successive Approximation.

 

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

 

معمولا در یک میکرو AVR چندین کانال ADC وجود داره؛مثلا در مدل ATmega 32 تعداد 8 عدد کانال ADC وجود داره !

توجه داشته باشید که در میکروکنترلر AVR تنها یک مبدل آنالوگ به دیجیتال وجود دارد و برای هر کانال از یک مبدل جدا استفاده نشده است.

یعنی اگر میبینید 8 تا کانال ADC در میکرو ATmega32 داریم،معناش این نیست که 8 تا مبدل داریم بلکه این 8 کانال با یکدیگر مالتی پلکس شدند و در نهایت اون که مورد نیازه به مبدل وصل میشه . افتادددددد ؟!

 

حالا با همدیگه میخوایم ببینیم برای تبدیل چه فرایندی طی میشه :

فرض کنید؛

در حوزه آنالوگ یه ولتاژِ بین 0 تا 5 ولت به کانال ADC داده میشه (حواستون رو جمع کنید که از 5 ولت بیشتر نشه !).

این ولتاژی که داده میشه پیوسته است و میتونه هرمقداری داشته باشه.مثلا : 1.13 یا 4.69 و ...

 

اما این ولتاژ چجوری برای میکرو قابل فهم میشه ؟!

 

در روش تقریب متوالی یه فرمولی وجود داره بدین صورت :

 

 

که مقدار مورد نیاز ما همون عبارت Digital هست و به عبارتی دیگر میشه فرمول رو اینجوری هم نوشت :

 

پس سه تا مجهول داریم :

 

Vin : همون ولتاژی هست که کانال میگیره و قراره تبدیل به سیگنال دیجیتال بشه.

Vref : ولتاژ مرجع

n : دقت یا درجه تفکیک


دیگه فکر کنم Vin رو کاملا متوجه شده باشید؛چیز خاصی نیست !

در مورد n هم میتونم بگم که میکروکنترلرهای AVR دقت 10 بیتی دارند.یعنی مقدار سیگنال تبدیل شده با دقت 10 بیت ذخیره میشود.(البته لازم بذکره که میشه با دقت 8 بیت نیز ازشون استفاده کرد).

 

ببینید دوستان،بنده گفتم درجه دقت 10 بیتی این یعنی چه ؟

 

ما وقتی به یکی از کانال های ADC میکرو ولتاژی بین 0 تا 5 ولت میدیم و انتظار داریم که میکرو هم برامون نسبت بگیره و اونو تبدیل به سیگنال دیجیتال کنه،روش کار بدین صورته که در دقت 10 بیت،میکرو بازه بین 0 تا 5 ولت رو به 210 = (1024) واحد تقسیم میکنه :

 

تصویر بالا کاملا گویاست !

در حالت گفته شده 0 ولت برابر عدد 0 دیجیتال و 5 ولت برابر عدد 1023 دیجیتال میباشد.و هر ولتاژی بین 0 تا 5 ولت با همون نسبتی که گفتم خدمتتون به مقدار دیجیتالش تبدیل میشه.برای مثال ولتاژ 2.5 ولت معادل دیجیتالش در این حالت برابر با عدد 512 میباشد.

کاملا مشخص است که هرچقدر این درجه دقت (n) بالاتر باشد،مقدار دیجیتال بدست آمده نیز به مقدار آنالوگ آن نزدیکتر است.

 

اما برای Vref حالا حالا ها بحث داریم...

 

در مورد ولتاژ مرجع؛

واحد ADC برای اینکه عملیات تبدیل رو انجام بده نیاز به یه ولتاژ مرجع داره تا ولتاژ وارد شده رو با اون مقایسه کنه.

در واقع اگر ولتاژ مرجع رو مثلا 3 ولت انتخاب کردیم،بازه 0 تا 3 ولت به 1024 قسمت تبدیل میشه و همون ماجرای بالا ...

ادامه توضیحات بمونه برای بعد از معرفی رجیستر ADMUX.

 

بررسی رجیستر کنترلی ADMUX :

 

ADC Multiplexer Selection Register

 

بیت های 6 و 7؛ REFS1:0 – Reference Selection Bits :

طبق جدول زیر میتونیم ولتاژ مرجعمون رو انتخاب کنیم :

 

 

- حالت اول : ولتاژ روی پایه AREF به عنوان مرجع انتخاب میشود.

- حالت دوم : ولتاژ روی پایه AVCC به عنوان مرجع انتخاب میشود.

- حالت سوم : ------ (رزرو شده)

- حالت چهارم : ولتاژ مرجع داخلی 2.56 ولت تثبیت شده به عنوان مرجع انتخاب میشود.

 

عزیزم هول نشیا !!! (توضیح میدم الان !)

 

اگه یادتون باشه تو همون بخشهای اول آموزش یکی از میکروکنترلرهای AVR رو برای نمونه بررسی کردیم.یادته ؟!

میکروکنترلر ATmega32.

یادتون باشه 40 تا پایه داشت که دوتا پایه هم داشت با نام های AREF و AVCC !

 

این پایه ها رو اتمل برای قشنگی نذاشته ها ! laugh

اگه حالت اول انتخاب بشه،ما هر ولتاژی که به پین AREF وصل کنیم به عنوان مرجع در نظر گرفته میشه.

در حالت دوم هم هر ولتاژی که به پین AVCC بدیم به عنوان ولتاژ مرجع در نظر گرفته میشه.

در حالت چهارم میکرو میاد و خودش یه ولتاژ 2.56 ولتی تثبیت شده و درجه یک ! رو میسازه و اون رو به عنوان ولتاژ مرجع انتخاب میکنه.

 

بیت های 0 و 1 و 2 و 3 و 4 ؛ MUX4:0 – Analog Channel and Gain Selection Bits :

از این بیت ها برای پیکربندی کانال های ADC میکروکنترلر AVR استفاده میشه.

برای اینکه مشخص کنیم که میخوایم از کدوم کانال (PA0-PA7) استفاده کنیم،طبق جدول زیر مقادیر رو انتخاب میکنیم :

 

 

که ما فعلا در روند آموزش،8 سطر اول جدول مورد نیازمونه و بقیه حالات مربوط میشه به کانالهای دارای بهره تفاضلی که یه مقدار آموزش رو پیچیده میکنه و از توضیح و استفاده اونا صرفنظر میکنیم !

 

بیت 5 ؛ ADLAR – ADC Left Adjust Result :

وقتی دارم رجیستر ADCH,ADCL رو توضیح میدم یادم بندازید که براتون بگم (خخخخخخهه ! )

 

بررسی رجیستر ADCSRA :

ADC Control and Status Register A

 

 

بیت 7 ؛ ADEN – ADC Enable :

همونطور که از اسمش پیداست،وظیفه ی فعال/غیر فعال کردن واحد ADC رو داره.

 

بیت 6 ؛ ADSC – ADC Start Conversion :

قبل از اینکه هر عمل تبدیلی انجام بدید،اول مقدار این بیت رو 1 کنید.

بعد از اینکه عمل تبدیل به پایان رسید مقدار این بیت 0 میشه.

 

در اینجا لازمه برای اینکه مبحث ناقص نباشه بصورت حاشیه وار یه مطلبی رو توضیح بدم :

ADC میکروکنترلر AVR دو مد (Mode) تبدیل داره به نام های Single و  Free.

در مد Single بعد از هر عمل تبدیل،ADC منتظر میمونه تا دوباره تحریک بشه.که این تحریک شدن توسط برنامه ای که براش مینویسیم مشخص میشه !

منتها در مد Free واحد ADC شروع میکنه به همینجوری نمونه برداری کردن و بدون توجه به برنامه ای که برنامه نویس براش نوشته،دائم ADC رو میخونه و تبدیلاتش رو انجام میده و تو رجیستر ADCH,ADCL اطلاعات رو ذخیره میکنه.

حالا اگه مد تبدیل Single مدنظر باشه،کافیه یه 1 بنویسیم تو این بیت و بعد از اینکه عملیات تبدیل انجام شد خودش اتوماتیک صفر میشه.

ولی اگه مد تبدیل Free رو خواستیم،باید برای شروع حتما این بیت رو 1 کنیم !

که من اینجا گفتم قبل از تبدیل 1 کنید که مدتون Free باشه. پس ... پس چی ؟... پس حواستون باشه ...cheeky

برای انتخاب مد هم باید از طریق بیت های ADTS0:2 رجیستر SFIOR اقدام کرد.

 

بیت 5 ؛ ADATE – ADC Auto Trigger Enable :

با 1 شدن این فلگ،خاصیت تحریک اتوماتیک فعال میشه.

در اینصورت با هرلبه بالارونده پالس اعمال شده به CPU،واحد ADC تحریک میشه.

 

بیت 4 ؛ ADIF – ADC Interrupt Flag :

این فلگ هم معروف به فلگ وقفه ADC هست و هر وقت که عملیات تبدیل ADC تمام شد این بیت بصورت اتوماتیک 1 میشه و ما رو مطلع میکنه که آیا عملیات تبدیل انجام شده یا نه ؟!

 

بیت 3 ؛ ADIE – ADC Interrupt Enable :

1 بودن این بیت به این معنیه که وقفه ADC فعاله و 0 بودنش هم حاکی از غیرفعال بودنشه !

 

بیت های 0 و 1 و 2 ؛ ADPS2:0 – ADC Prescaler Select Bits :

این بیت ها هم برای انتخاب ضریب تقسیم فرکانس واحد ADC هستند.سر این موضوع بحث دارم؛پس خوب گوش بدید :

 

همونطور که میدونید(شاید هم نمیدونید !) میکروکنترلرهای AVR (منظورم فعلا ATmega32) با فرکانس های مختلفی میتونند کار کنند.

که قابلیت تنظیمش بصورت نرم افزاری وجود داره.

فرض کنید که فرکانس کاریمون رو روی 16 مگاهرتز تنظیم کردیم.این 16 مگاهرتز،فرکانس کاری کلی میکرو هست.

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

برای اینکه میزان تفکیک پذیری و دقت بالابره،سازنده میکروکنترلر AVR اومده و یه ناحیه فرکانس برای فعالیت واحد ADC مشخص کرده که طبق اعلام خودش باید یه مقداری بین 50 کیلوهرتز تا 200 کیلوهرتز باشه.

16 مگاهرتز کجا و 200 کیلوهرتز کجا !!!

چاره چیه ؟ راهی که خود اتمل پیش پای ما گذاشته اینه که بیا و اون فرکانس کلی رو که ما 16 مگاهرتز فرضش کردیم به یه عددی تقسیم کن که یُخده (یه خورده !) این عدده کوچیک بشه.

دوستان توجه کنید که اگه بخواین حداکثر دقت رو تو تبدیل ADC داشته باشید باید فرکانس کاریتون تو همون محدوده 50 کیلوهرتز تا 200 کیلوهرتز باشه،چون اگه حاصل تقسیم بزرگتر از 200 کیلوهرتز باشه باعث میشه که دیگه دقتمون 10 بیت نباشه !

 

حالا این جدول زیر رو هم نگاه کنید که برای شما نوشتنش ! :

 

 

مثلا با فرکانس کاری 16 مگاهرتز و ضریب تقسیم 128 داریم :

 

F_ADC = 16M/128 = 125kHz

 

پس اینجا ضریب تقسیم 128،مقدار مناسبیه،چون عدد حاصل تو اون رنجی که گفتم قرار داره !

پس میتونیم مقدار بیتهای این بخش رو بصورت 111 در نظر بگیریم.

 

فقط از کارهای حاشیه ای دست بردارید.نگید خب دیگه همیشه عدد رو 128 در نظر میگیریم !

آخه برادر من ممکنه فرکانس شما 8 مگاهرتز باشه ممکنه 10 مگاهرتز باشه ممکنه ...

 

واااااااااااااای خسته شدم !

برا سلامتیم صلوات ! laughcool

 

 

بررسی رجیستر ADC (ADCH,ADCL) 0:

ADC Data Registers

 

 

 

در این دو رجیستر اطلاعات خروجی ADC قرار میگیرند.

یعنی وقتی تبدیل انجام شد،مقدار حاصل با دقت مورد نظر میاد و تو این رجیستر میشینه !

 

اگه یادتون باشه گفتم که دقت واحد ADC در میکروکنترلرهای AVR به 10 بیت میرسه !

این یعنی چه ؟ یعنی اینکه طول داده ها 10 بیتیه !

اما مگه نگفتیم که طول هر رجیستر 8 بیته ؟ حالا چجوری 10 بیت رو تو 8 بیت جا بدیم ؟؟؟

چاره اش رو اتمل پیدا کرده ! enlightened

میگه میایم 2 تا رجیستر 8 بیتی به اینکار اختصاص میدیم میشه 8+8 = 16 cheeky

بعد ما 10 تاشو لازم داریم دیگه ؟! اون 6 تا که اضافیه رو هم بهشون محل نمیذاریم !

 

لذا داستان اینجوری میشه که این رجیستر 2 تیکه است ! و در واقع 2 تا رجیستر هستند اما با یک نام و یک وظیفه که بهم چسبیدند !

فقط برای اینکه با هم قاطی نشند اومدند و یه پسوند H و L بهشون دادند.(مخفف High و Low )

 

حالا چرا 2 شکل کشیدیم از این رجیسترها ؟

 اون بیت ADLAR بود توی رجیستر ADMUX،یادتونه که ایشالا ؟!

اون مال همینه.اگه ADLAR=1 باشه نتیجه تبدیل بصورت تنظیم از چپ و اگر ADLAR=0 باشه بصورت تنظیم از راست اطلاعات درون رجیسترها قرار میگیره !

 

شکل بالایی تنظیم از راست و شکل پایینی تنظیم از چپه !

 

بررسی رجیستر SFIOR :

Special Function I/O Register

قبلا هم یادی کردیم از این رجیستر،نمیدونم یادتون هست یا نه ؟!

 

در کل ما زیاد کاری به این رجیستر در مبحث ADC نداریم.ولی اگه بیت ADATE از رجیستر ADSRA رو 1 کردید،تبدیل هامون با یک لبه صعودی تحریک کننده اتفاق میوفته !

(میدونم چیزی متوجه نشدید ولی عیبی نداره !!!)

 

بیت های 5 و 6 و 7 ؛ ADTS0:2 - ADC Auto Trigger Source :

از طریق این سه بیت و با توجه به جدول زیر مشخص میکنیم که واحد ADC چجوری تحریک بشه !

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

 

 

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

 

خب دوستان.این بخش هم مطالب اصلیش گفته شد.

 

لازمه همینجا بگم این مطلبو که بنده وظیفه ام نشون دادن راه به شماست و زحمت پیمودن مسیر با خودتونه !

پس مطالبی که اینجا میگم به هیچ عنوان بصورت 100 درصد و کامل نیست و بنده بالاجبار بعضی از موارد رو مجبور میشم نگم !!!

دلیلش هم اینه که اگه بخوام توضیح بدم مسائل حالت پیشرفته به خودشون میگیره و برای دوستانی که مبتدی هستند بزرگ جلوه میکنه،در حالیکه شاید در جریان نباشند که این موارد یه سری نکات پیشرفته است که در حالتها و شرایط خاص ممکنه براشون پیش بیاد.

دلیل دومش هم اینه که بنده اینجا قرار نیست کتاب بنویسم که جامع و کامل باشه.

بغل دستمون دیتاشیت های میکرو هست و داخلش کامل توضیح داده گرچه با زبان اصلی و واژه های مصطلح در علم الکترونیک !

پس خودتون هم اگر احساس میکنید که به موارد بیشتری احتیاج دارید ، دست بکار بشید.

 

در مورد برنامه نویسی ADC هم در پستی جداگانه توابع رو مورد بررسی قرار خواهیم داد.

 

پس فعلا ...

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

you are the best!!!

 

پاسخ:
Best regards for you !
Be Successfull !!!
عالی بود
پاسخ:
خواهش میکنم.
موفق باشید

salam
That is very good..
Thank you very much for effort..
best regards,
hadi
پاسخ:
Hi
Thanks Gentelman ...
Be Successfull
دستت درد نکنه
داشتم تو این اسلاید های انگلیسی استاد غرق می شدم که یهو اینجا رو پیدا کردم فهمیدم زبون بسته(اسلایدها) چی می خواستن بگن
پاسخ:
خدا بگم چیکار کنه این استادایی که دانشجو رو میچزونن !!!

موفق باشید.
تشکر میکنم مطلب بسیار مفید بود با بیان ساده و روان.
پاسخ:
ممنون
موفق باشید.
۲۵ دی ۹۲ ، ۱۳:۰۵ نگار حجازی
عالی
پاسخ:
سپاس
دستت درد نکنه  .
این برنامه نویسیشو  کی روی سایت  میزاری؟☻
پاسخ:
خواهش میکنم.
انشاالله به زودی !!!

موفق باشید.
همه مطالبو خوندمو استفاده کردم فک کنم وقتش رسیده مطالبو تخصصی تر و کاربردی تر کنید بازم ممنون
پاسخ:
فعلا راه طولانی رو در پیش داریم.
وقتش برسه،خودم مایل تر از شما هستم.
چون دیگه لازم نیست،اینقدر خودمو خسته کنم و توضیحات اضافی و مفصل بدم.
IT IS EXECELENT

پاسخ:
Thanks
بسیار عالی خدا خیرتون بده
پاسخ:
تشکر
عالیه دستتون درد نکنه ولی لطفا نحوه استفاده از ویزارد کدویژن را همراه این مسائل توضیح بدهید
پاسخ:
خیلی وقت بود منتظر بودم که یه نفر این سوال رو بپرسه که خوشبختانه شما به این افتخار نایل شدید !
تقاضا دارم از تمام دوستان که اگه میخواین میکرو یاد بگیرید بیخیال کدویزارد بشید !!!
حتی بعضی مواقع هم بیخیال استفاده از کتابخانه های آماده بشید.(در این حد ...)
استفاده از کدویزارد تنها برای افرادی کاربرد داره که به رجیسترهای میکرو و حالات مختلف اون تسلط کامل دارند و مشغول کدنویسی یه نرم افزار حرفه ای و حجم بالا هستند و میخوان از وقتشون استفاده کامل رو ببرند.
اما شخصی که در حال حاضر در حال یادگیریه،به هیچ عنوان نباید دغدغه کمبود وقت داشته باشه و اینو بدونه که هروقت کارهایی که باید خودش انجام بده رو یکی دیگه (منظورم کدویزارده !) انجام بده،فقط جفا در حق خودش کرده و لا غیر ...
اگر بخوایم یه راست بریم سراغ کدویزارد پس چرا باید خودمون رو درگیر این همه رجیستر کنیم ؟!

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

لطفا برای راهنمایی بیشتر و بهتر،در انجمن سوال خودتون رو مطرح کنید.
عاااااالی بود ولی اگر فایلpdfرو برای دانلود میزاشتید خیلی بهتر میشد
پاسخ:
حاجی صفاش به اینه که بیاین تو وبلاگ مطالبو بخونید ! مگه نه ؟!
تو ستاره شب های منی :)
دمت گرم بخدا
پاسخ:
یعنی در این حد !!! ؟؟؟

ممنون.
سلام
اول از همه ممنون از توضیحات خوبتون
می خواستم بدونم میشه یه برنامه  بدون استفاده از وقفه نوشت که تو250ms  با4بار نمونه برداری در فواصل یکسان مقدار adc رو با یه ولتاژ مقایسه کنه
پاسخ:
lمیشه بپرسم چرا نمیخواین از وقفه استفاده کنید ؟!

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

پاسخ:
ممنون
چشم،فرصت بشه ادامه میدم مطالبو...
شما دعا کن این ترم به خوبی و خوشی تموم بشه ...
خیلی سرم این ترم شلوغ شده !!!
سلام.عالی بود ولی یه سول برام پیش اومد:
توی مبدلadcچه وقت باید از وقفه استفاده کرد چه وقت ازPolling یا بدونه وقفه.اصلا فرق این دو حالت چیه؟من توی هیچ کتابی توضیح این رو پیدا نکردم.ممنون
پاسخ:
سلام
وقفه ADC : با انجام عملیات تبدیل واحد ADC این وقفه رخ می دهد.
در مورد فرق polling و وقفه در بخش 15 آموزش در این آدرس توضیحاتی داده شده.

موفق باشید.
بوس بوس
ماهی شما.
خیلی عالی بود.
سلام امیدوارم حالت خوب باشه احسان عزیز - من دانشجوی مهندسی مکانیک هستم و بابت پایان نامه ام مشغول یادگیری avr . جدا و انصافا مطالبی که گذاشتی بسیار عالی بود بخصوص برای من که آشنایی چندانی با میکرو نداشتم و البته برای یادگیری اونم کلاس نرفتم و صرفا خود آموز پیش میبرمش و اینجا بود که وقتی این بلاگت دیدم خیلی لذت بردم جوری که مجبورم کردی حتما پیام بذارم بابت این کار جدا ممنونم ازت و امیدوارم همونطور که گره از کار خلقی چون من باز میکنی خدا هم توی زندگیت گره از کارت باز کنه - خدا صد در نیا و یک در آخرت نسیبت کنه - آقا راجب این پست مبدل آنالوگ به دیجیتال هم یک سوال داشتم :
 ببین گفتی که مقدار 10 بیتی هرچی بیشتر بشه خب قطعا دقت هم بیشتر میشه  حالا من میخام بدونم آیا تغییری در اونطرف قضیه هم صادقه یعنی مثلا اگر ولتاژ مرجع بجای 5 ولت بکنیم 3 میشه گفت دقت کم میشه یا بیشتر؟ یکم بیشتر راجب دقت بیشتر توضیح میدی -----------------> ممنونات پتاسیم
پاسخ:
سلام
ممنون از نظر لطفت.

قطعا با کاهش ولتاژ مرجع،دقت هم بالاتر میرود.
اما در اینجا باید به یه نکته اشاره کرد و اون هم اینکه باید دید که خروجی سنسور مورد نظر چند ولت است ؟
چون خروجی سنسور (ورودی ADC) باید در رنج ولتاژ مرجع باشد.

برای مثال وقتی که خروجی سنسور در حدود 0-5 ولت است نمیتونیم از ولتاژ مرجع 3 ولت استفاده کنیم !

موفق باشید.
سلام
ممنونم ازتون خیلی خوب و جذاب توضیح دادین!
پاسخ:
خواهش میکنم.
موفق باشید.
سلام.
عالی بود مثل همیشه.
یه سوال داشتم از خدمتت: اون جایی که گفتی حالت سوم در مورد انتخاب ولتاژ مرجع رزرو شده است، منظور این هست که اون حالت غیرقابل دسترس هست؟
یعنی نمی‎تونیم حالت 10 رو برای بیت‎های REFS0 و REFS1 داشته باشیم؟
بازم ممنونم بخاطر توضیحات بسیار عالی‎تون.
پاسخ:
سلام
ممنون

بله منظور اینه که امکان انتخاب 3 حالت بیشتر وجود نداره که به ناچار حالت 10 غیر قابل انتخابه !

موفق باشید.
سلام
ایول خسته نباشی
ازت ممنونم خیلی عالی بود.
نحوه بیانت حرف نداره و همچنین قدرت بیانت عالیه
thanks alot
نحوه استفاده از همه adc atmega128
سلام ! اقا خیلی ممنون از زخماتت
من یک سوال داشتم ، می خواستم ببینم اگه ولتاژ بین 0 تا 40 ولت رو بخوایم اندازه بگیریم باید چیکار کنیم؟
من یک جا خوندم که باید از مقسم ولتاژ استفاده کنیم ، اما این مقسم ولتاژ اسمش چیه و چطور کار میکنه ؟

پاسخ:
سلام

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

موفق باشید.
۳۱ مرداد ۹۳ ، ۲۳:۳۶ خادم الکترونیک
با عرض سلام و خسته نباشید
مهندس عزیز من سوالم در رابطه با وضعیت های مختلف برای ولتاژ مرجع مبدل آنالوگ به دیجیتال در میکروهای atmega هستش
1.ولتاژ مرجع داخلی این حالت وضعیت پایه های AVCC , AREF چی میشه؟
2.ولتاژ AVCC اینجا برام مبهمه در این حالت پایه AREF به VCC وصل میشه اگه نه هست جواب پس این پایه به کجا وصل میشه؟
3. ولتاژ مرجع این پایه AREF به ی مقداری وصل میشه وضعیت AVCC چی میشه؟
مقدار خازن ها رو هم برام سواله/


ممنون میشم راهنماییم بفرمایید/
پاسخ:
سلام
تمامی موارد فوق بصورت کامل در بخش ADC دیتاشیت میکروتون موجوده.

پیشنهاد میکنم اول اونجا رو بخونید.

موفق باشید.
توپی توپ
thats what i call it my joy of life
thanks for your f***ing great kind of talking
Best regards
پاسخ:
مـــــــخــــــــــــلــــــــــــــصــــــــــــــــیـــــــــــــــم !
سلام.
من میخوام خروجی لودسل که تفاضلی هست رو بدم به میکرو (بدون استفاده از adc خارجی).
حالا اگه میشه اون بخشی که گفتین بحث رو پیچیده میکنه توضیح بدین.
البته اگه وقت دارین.

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

ممنون از توضیحات عالیتون

من تازه کارم.دانشجوی مخابرات وهمچنین علاقه مند به الکترونیک.میخواستم ببینم AVRتو مخابرات کاربردی نداره؟

پاسخ:
ممنونم
میکروکنترلرها در همه گرایشهای برق کاربرد دارند.
در ضمن میکرو رو به خاطر درس و دانشگاه دنبال نکنید (این برای بار هزارم !)
۱۵ شهریور ۹۳ ، ۱۸:۳۵ مهدی رجبیان
سلام 
آقا واقعا کار شما ایول داره ، انصافا معلومه حسابی وقت گذاشتی و عاشق الکترونیک هستی . دمت گرم 
همین که تو مطلبت شوخی هم داری خودش به آدم انرژی و حس خوندن میده

واقعا خدا قوت ، خدا خیرت بده
۱۵ شهریور ۹۳ ، ۱۸:۵۶ مهدی رجبیان
سلام دوباره 

آقا همه ی این تشکراتی که متین تو کامنتش نوشته بود رو من هم دارم . طولانیه نمینویسم برو همونو دوباره بخون.

فقط چند تا سوال دارم با اجازت .
1- برای خوندن سنسور مادون قرمز ربات مسیر یاب استفاده از adc میکرو دقت بیشتری داری و یا آپ امپ و ای سی های خارجی ؟
2- خروجی ولتاژ مادون قرمزم هرچی باشه باید ولتاژ مرجع رو همون تنظیم کنم؟
3- مادون قرمز با چند ولت تغذیه میشه؟

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

با تشکر
پاسخ:
سلام

خیلی ممنون

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

اما خب،این دلیلی نمیشه که بقیه هم همین نظرو داشته باشن.

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

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

موفق باشید.
15 سالمه و الکترونیک ربات امداد گر بر عهده دارم.میشه یه کتاب جامع و کامل به من معرفی کنین درباره ی میکروکنترلرها با تشکر
پاسخ:
کتاب میخواین چیکار ؟!
وبلاگ که هست !!!

;)
خدا خیرت بده. واقعا عالی بود خیلی خوب توضیح دادید

پاسخ:
تشکر :)
کادر وبلاگ به طوری است که کلمات اول هر خط معلوم نیست
پاسخ:
ممکن است مشکل از مرورگر شما باشد.
چون تا حالا کسی چنین چیزی رو مطرح نکرده !

ممنون
بنده با ذکر منبع از مطلبتون کپی برداشتم کمی تا قسمتی!
مچکرم
سلام و با تشکر از شما
میشه در مورد آنالوگ به دیجیتال 5 . 6 خط فقط توضیح بدید؟
سلام و با تشکر از شما
میشه در مورد آنالوگ به دیجیتال 5 .6 فقط خط توضیح بدید؟
مثلا آنالوگ به دیجیتال چیست؟
کجا کاربرد داره؟

پاسخ:
شما مثل اینکه کامل مطالبو نخوندید.
یه بار دیگه بخونید.
دستت درد نکنه ممنووووووووووووووووووووووووووووووووووووووووووون
پاسخ:
خواهش ...
سلام
الهم صلی علی محمد و ال محمد
برا سلامتیت...
پاسخ:
تشکر
تشکر می کنم از وقتی که گذاشتید
پاسخ:
;)
عزیز واقعا خدا قوت ، 
پسفردا امتحان میکرو دارم، خدایی قشنگتر از کتاب گفتی! 
دمت گرم
پاسخ:
;)
از عالی هم عالی تر بود ... ممنون
پاسخ:
:)
واقعا در حق این بچه ها لطف میکنی داداش
سپاس فراوان

پاسخ:
شما لطف دارین !
درود برشما....
بازدید از وبلاگ شما باعث افتخار بود.

پاسخ:
خیلی ممنون
مرررررررررررسی عالی بودخداقوت
پاسخ:
ممنون
فوق العاده ای.نمی دونی چقد خوش حالم که این جا رو پیدا کردم
پاسخ:
تشکر
خیلی عالی بود. ممنون
پاسخ:
مرسی
۲۵ بهمن ۹۳ ، ۱۹:۵۳ علی اکبر صالحه
عالی
پاسخ:
سپاس...
این رجیستر ها رو چجوری میه تو کد نویسی ازشون استفاده کرد؟
پاسخ:
:(
عاقبت بخییییر شی ننه...
فوق العاده بود.
مرسیییی
پاسخ:
:)
سلام عالی بود ممنون

پاسخ:
ممنون
فوق العاده بود ((:
مثل همیشه
پاسخ:
سپاس
سلام
عیدتون مبارک

من تازه مبحث میکرو کنترلر رو شروع کردم از دیروز تو گیر این متغییر ها بوودم که چی هستن تا به وبلاگ شما رسیدم .. دمت گرم خیلی خوب توضیح دادی حال کردم کارت درسته
پاسخ:
ممنون
۱۸ فروردين ۹۴ ، ۱۵:۴۲ نرم افزارهای کم حجم و کاربردی اندروید
سلام
خدا خیرت بده برادر
به زبون خودمونی آموزش دادی،خیلی عالی بود!
313
پاسخ:
ممنون
سلام داداش ممنون در کل خیلی خوب توضیح می دی ولی یه مشکل کوچیک هست 

من کلاس هشتم ابتدایی هنستم و دارم کلاس رباتیک میرم و اون قدری شاید بقیه بفهمند من نمی فهمم ( نه که نفهم باشما تازه 13 سالمه )
شما از توضیح بعضی مساعل صرفه نظر می کنید و می گید این که راحته خودتون میفهمید ممنون میشم کمی توضیح دهید ممنون داداش :-)
پاسخ:
مطمئن باشید که ساده تر از این برای من مقدور نیست.
شما هم سخت نگیر
کسی از شما تو این سن انتظار نداره.
خیلی چیز ها هست که باید بدونین.
از ساده ترین قواعد فیزیک و مدار گرفته تا الکترونیک و طراحی مدار !
که اینها همه به مرور زمان در اواخر دوران دبیرستان و دانشگاه(رشته برق) به شما آموزش داده میشه.

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

پاسخ:
ممنون
سلام
میشه به جای کریستال از همون 1MHZ داخلی استفاده کرد؟
سلام
ممنون از مطلب بسیار عالیه شما
من مبتدی هستم و برای من بسیار قابل فهم بود...
پاسخ:
خواهش
۲۱ تیر ۹۴ ، ۱۳:۱۵ محمدرضا فهرجی
با سلام    
در مورد Vin  مثلا در مورد LM35   اونو چند باید در نظر بگیریم  همان 10mv  که با هر 10mv  یک درجه دما افزایش پیدا میکند یا نه 
سلام
از مطالب مفیدی که توی سایت گذاشتید خیلی ممنون
من یه سوالی درباره فرکانس نمونه برداری ADC داشتم:
شما گفتید برای تعیین فرکانس از بیتهای ADPS2:0 استفاده می کنیم که میشه مضاربی از فرکانس کریستال AVR رو به عنوان فرکانس ADC انتخاب کنیم. من میخواستم بدونم میشه فرکانس ADC رو برابر با مقدار فرکانس یک پالس ورودی به میکرو که فرکانسش از طریف واحد capture بدست میاد قرار داد؟ اگه میشه چجوری باید این کارو انجام داد؟
خیلی خیلی ممنون میشم اگه راهنماییم کنید این موضوع پروژم هستش..
سلام دوست عزیز
از خوندن این مطلب نه تنها کلی چیز یاد گرفتم، بلکه هر چی میخوندم انرژی بیشتری میگرفتم. طرز بیانت عالی بود.
سلام
من تازه شروع کردم و تقریبا تموم شده اما جاهایی رو ایراد دارم.خیلی توو سایت ها گشتم اما به جرات میشه گفت کامل تر از اینجا جایی نیس.
خدا پدر مادرت بیامرزه و هرچی هم خودت میخوای بت بده که رایگان و به این خووبی به مردم یاد میدی !
فقط عزیز میگی فرق AREF VA AVVC چیه؟
دمت گرم
در دو کلمه:حرف نداشت.
من دانشجوی ترم دوم برقم و دو سه ترم دیگه مبحث تبدبل آنالوگ به دیجیتال رو میخونیم،اما از اونجایی که علاقه دارم،خیلی پیگیر شدم تا یاد بگیرم.تو چند تا سایت دیگه رفتم هیچ توضیحی نداده بودن،تا اینکه رسیدم به وبلاگ شما،واقعا ممنونم،چون قشنگ فهمیدم قضیه چیه
Merci
 سلام و تشکر از بیان جالب و رسای شما.
موفق باشید.
سلام
بسیار عالی و قابل درک بود مرسی

یه سوال : 
یه میکرو داشتم که از ولتاژ انالوگم نمونه برداری میکنه ، این ولتاژ انالوگ خروجی میکروفنمه
بعد توسط pwm این صدا رو میده به یه Rc برا تبدیل به انالوگ ، بعدشم به بلندگو داده میشه و صدا پخش میشه

به علت ریت نمونه برداری بالایی که احتیاج داشتم کلاک خارجی ۱۶ مگاهرتز استفاده کردم ولی در عمل نویز بالایی میگیره و صدا اون کیفیت لازم رو نداره

در ضمن کی پد و ال سی دی هم به میکرو وصله که بازم به خاطر همین مشکل درست کار نمی کنند .
سلام 
میشه توضیح بدید که این مبدل چجوری میتونه کمک کنه ک ارتفاع رو اندازه بگیریم.
تشکر.تنها مبحث درسی که بهش علاقه دارم همینه.جالب و کاربردی
سلام فوق العاده بود 
با زبان بسیار شیرین و جذاب بود جدی استفاده کردیم خدا خیرتون بده
سلام
دمت گرم عالی بود
سلام.
واقعا ممنون.این مطلب جای خالی یه جزوه ی درست حسابی از استاد رو پر کرد;)
سلام. داداش خسته نباشی. خیییییلی عالی بود.
دمت گرم
دمت گرم داش.عالی بود.
احسنت 

سلام

ی سؤال داشتم ، اگه بخوایم از ی سیگنال با فرکانس زیاد مثلاً 1 مگاهرتز نمونه برداری کنیم مثلاً 100 تا نمونه

به دست بیاریم ، باید چی کار کنیم؟ آخه بیشترین فرکانس نمونه برداری داخل کد ویژن 500 کیلو هرتز نوشته .

aawwlii !!!

سلام. اول از همه کلی تشکر به خاطر این همه وقتی که برای ارائه مطلب گذاشتین.
دوم تبربک به خاطر طرز بیان فو العاده اتون.انگاری معلم خصوصی گرفتم از بس خوب توضیح دادین و این نشون می ده خودتون عالی متوجه شدین. کاش اساتید کشور ما ادمایی بودن مثل شما.
بازم تبریک و تشکر و خدا قوت.زکات علمت رو قشنگ پرداخت کردی.
یه دونه ای مهندس. دو ماهه دارم تو اینترنت دنبال adc میگردم. به این قشنگی ندیدم کسی توضیح داده باشه. واسه پروژم خیلی کمکم کرد. منم با سارا موافقم دقیقا مث معلم خصوصی توضیح دادی  مو به مو و بی ابهام. خدا حفظت کنه رفیق. تنت سالم.
داداش خواهشا رسیدگی کن..هیچ عکسی بالا نمیاد.اصلا نمیشه برخی مطالب رو فهمید.خواهشا یه رسیدگی بکن تا عکس ها بالا بیاد اگرم نمیشه و رسیدگی نمیکنی حتما بگو که من منتظر نمونم.....لطفا جواب بده دوست عزیز
فقط میتونم بگم ممنونم ازت بابت پیگیری و رسیدگیت.....ممنونتم.. :)
عالی بود...ولی یه سوال.اون قسمت تقسیم بر 128 رو درست متوجه نشدم....امیدوارم تو بخش های بعد توضیح کامل تری از این ارایه کرده باشی.....مرسیاحسان جان
ممنون
۱۰ تیر ۹۵ ، ۱۹:۲۴ سید هادی قرشی سروستانی
سلام خدمت شما. وقت شما بخیر
جسارتا میشه ولتاژ رفرنس atmega32 رو به یک ولت وصل کرد که بشه باش مقادیر کم رو خوند؟
حداقل ولتاژی که میشه ولتاژ رفرنس رو وصل کرد چنده؟
ممنون
عالی

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

سلام.دوست عزیز من توی پروژم از سنسور دما و نور استفاده میکنم.نمیدونم چرا سنسور نور بازی در میاره و وقتی از پایه میکرو مقدار سنسور رو فراخوانی میکنم عدد 1200 فراخوانی میشه.و وقتی توی تابعadc*2.56/1023 میگزارم عدد 32 رو میده بهم.ولتاژ مرجعم 2.56 هستش.ممنونت میشم جوابمو بدب یک دنیا تشکر
آقا احسان خواهش میکنم جواب بدین،اگه بخوایم مثلا در یک برنامه ولت متر از چند پورت adc استفاده کنیم مثلا در برنامه بگیم اگه ولتاژ بین 0تا5 بود از    adc0  و اگه از 5 بیشتر شد از adc1 ولتاژ خوانده شود.من با if نوشتم جواب نداد چیکار کنم لطفا جواب بدین
جواب آقا مهدی رو هم بدید ، سوال من هم هست D:

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">