سلام به همگی وسپاسگذارم از جناب مهندس mee که خودشون همیشه توضیحاتشون کامل و با بار دانش بالایی هستند واقای parse gade که منتظر بودن, ببخشید adsl ام قطع شده بود وگرنه زودتر میفرستادم
از بچه ها در مورد نمونه گیری در miner سئوالی کردند که میخوام یه توضیحی در موردش بدم به علاوه توضیحی در مورد ای سی ads7816 انالوگ به دیجیتال 12 بیتی
خوب ما طبق شکل a که با اسکوپ پرتئوس گرفتیم میبینیم 15 نمونه بعد از پالس راه انداز گرفته شده اون نمونه هایی که با رنگ ابی گرفته شده در اصل نمونه های اصلی هستش , اما سئوالی که پرسیده بودن
که به اشتباه اون 15 کلاک در پایین نمونه ها که در بین هر نمونه اصلی (رنگ ابی) هست وبا رنگ صورتی هستش در اصل نمونه نیست این ها کلاک لازم برای ای سی انالوگ به دیجیتال ads7816 هست ,
و فقط اون 15 نمونه با رنگ ابی , نمونه های ما یعنی از سمپل 1 تا سپمل 15 هستش
اگر شما دیتاشیت ads7816 رو خونده باشید , برای راه اندازی وخوندن دیتا از ads7816 باید از 15 تا 16 کلاک به ads7816 بدید که 12 تاش برای خواندن بیت ها و1 رو برای nullbit وبقیه هم زمان sample هستش , اما اون 10 میکرو ثانیه وقفه برای پردازش روی داده های ads7816 میباشد که با دستوراتی مثل شیفت به چپ یا راست وغیره درگیر است که دقیقا وخالص دیتای 12 بیتی تبدیل شده رو نتیجه میدهد
در شکل a تایمدیویژن یا تنظیم زمان بندی اسکوپ در 50 میکرو ثانیه میباشد( یا هر خانه مربع 50 میکرو ثانیه میباشد) , اما در شکل b این زمان 5 میکرو ثانیه می باشد , فکر کنم تا اینجا همه چی رو فهمیده باشید
در شکل C زمانبدی برای راه اندازی ADS7816 که در دیتاشیت اومده رو با با شکل B که با اسکوپ گرفتم رو مقایسه کنید , پس نتیجه این است که برای هر تبدیل نیاز به 15 کلاک میباشد وفقط بین هر سمپل یا نمونه که 15 بار نمونه گرفته شده فقط عملیات تبدیل سیگنال انالوگ به دیجیتال انجام میشه نه چیزه دیگه ای
ام در مورد CS یا کاملتر CHIP SELECT تا زمانی که این پایه به حالت LOW یا صفر تغییر نکنه ADS7816 اصلا روشن یا ON نمیشه تا عملیات تبدیل رو انجام بده , برای تبدیل باید CS به حالت صفر یا LOW بره وبعد عملیات کلاک زنی وشیفت رجیستر یا انتقال داده تبدیل به میکرو وذخیره شدن در متغیر که در SRAM هستش وبعد از اتمام تبدیل باید CS به حالت 1 یا HIGH بره تا تبدیل بعدی انجام بگیره, پایه CS در حکم مثلا پایه نمونه گیر یا سمپل گیری مثل پایه 8 ای سی LF398 یا همون پایه های 10 و11 ایسی 4051 یا 4053 عمل میکنه
اما یه نکته ای رو بگم که یکی از تجربیاتم در این زمینه هست, ایسی ADS7816 هیچگاه به صورتی واقعی 12 بیت داده رو نمیده , و با زور یا بقولی در حالت خوبش 11 بیت بیشتر نمیده شما اگه بیایید از ایسی های 12 بیتی کمپانی میکروچیپ یا لاینر تکنولوژی رو استفاده کنید بهتره و12 بیت رو کاملا دریافت میکنید , این حرف رو بر سر تجربه میگم اگه شما در مدارات پالس دتکتور به مدارات فروشیش که از یک PIU A4L استفاده کرده دقت کنید میبینید از پخش کویل تا میکرو ATMEGA8 رو حذف کردن وبجاش ازین PIU استفاده میکنند من خودم تو یه قسمتی از سایتشون که طراحش توضیح داده گفته بجای ATMEGA 8 در PIU از ATMEGA16 استفاده شده , که من خودم شک ندارم بخاطر این از ATMEGA176 استفاده شده که 1 : نیاز به فضای زیاد برنامه نویسی 2: نیاز به پایه های I/O بیشتر هستش و مطمئن هستم از ADS7816 هم استفاده نمیکنن چون یک انالوگ به دیجیتال واقعی که 12 بیت رو بدون بیت خطا و بدون بیت MISSING نمیده بیرون اینو من با دقت زیاد وبا تجربیات وازمایشاتی که انجام دادم بهش رسیدم اون هم با 3 نوع حداقل زبون برنامه نویسی از BASIC بگیر تا C و زبون حرفه ای ماشین کد و دست باز تر وسرعتی تر ASSEMBLY وبا کامپایلر ها وتوابع وروتین های متفاوت در برنامه نویسی , مطمئن باشید ایسی های A/D مثل MCP3201 و LTC1286 بهتر و واقعی تر 12 بیت رو در خروحی ارائه میدن , اگه از A/D های انالوگ دوایس (ANALIG DEVICE) استفاده کنید که حرف نداره ولی قیمتشون گرونتره , خیلی هم دنبال A/D های که سرعت تبدیلشون بالاست هم نرید چون هم دقتشون پایین تر میاد وهم یه نکاتی در مورد تفکیک هستش که بهش مربوط میشه ولی نکته مهم دقتش هست (البته همشون رو نمیگم چون a/d هایی هستند که در حد نانوثانیه با دقت بسیار بالا تبدیل میکنند ولی قیمتشون گرونه و نکته دیگه بستگی به نوع برنامه نویسی ونوع مدار برای تفکیک هم داره , چون تو بعضی از برنامه نویسی ها برای تفکیکو غیره نیاز به سرعت هایی بالا تر در عمل تبدیل نیازه مثلا حداقل 1 میکرو ثانیه حالا نمیخوام بگم در حد 40msps سرعتش باشه که خیلی دیگه خفنه), یه مثال بزنم بفهمید ,درسته که وضوح یا RESOLUTION بالاتر باشه دقت اندازه گیری بالاست ولی یسئوالی دارم خودشما تو کارای روزمره تون با عجله یا باسرعت کارتون رو انجام بدید بهتره یا خوب نتیجه میگیرید یا با ارامی ؟
شما A/D خود میکرو رو ببینید که براش تقسیم پرسکالر گذاشتن که سرعت فرکانس اصلی رو تقسیم (نسبت به انتخاب پرسکالر ADC ) و به ADC میکرو منبع کلاک میدن شما با تغییر این تنظیمات میبینید که
سرعت تبدیل بالاتر یا پایینتر میره با تست های دقیق میتوانید ببینید که تبدیل adc در پرسکالر های مختلف چه تاثیری خواهد گذاشت هر چه سرعت تبدیل پایین تر و زمان تبدیل طولانیتر باشد داده adc با دقتتر و کم نویز تر است و اگر زمان تبدیل کمتر باشد سرعت تبدیل بالا بلعکس هست
اما در مورد این که در ماینر چرا تحریک از پایه های مخصوص کپچر و یا کانتر و وقفه خارجی انجام نمیشود به این دلیل است که حجم برنامه و نوع استفاده از پایه های i/o و استفاده از دستورالعمل های بالا وپردازشی که سنگین میباشد و از همه مهمتر استفاده از انالوگ به دیجیتال خارجی که خودش به تنهایی نیاز به 3mhz دارد . از به کار گیری چند تایمر همزمان که باعث پایین امدن سرعت میکرو واختلال در زمانهای نمونه برداری میشود صرف نظر شده است, چون میدانید گام ها یا استپ های هر بار حلقه برای ایجاد تاخییر بین پالسها و یا برای دامنه پالس ها استفاده میشود نباید طولانی باشد چون دقت پایین امده واختلالاتی پیش میاید ,پس از کپچر تایمر استفاده نمیشود و با دستورات assembly که داخل بسکام میشه نوشت استفاده میکنند (در اسمبلی با چند دستور میتوان تحریک بوسیله پالس هارو مثل کپچر راه اندازی کرد) چرا گفتم بسکام؟ چون ماینر المانی هستش و کامپایلر bascom هم المانی هستش مطمئنا از فناوری خودشون استفاده میکنند ( البته این دلیل نمیشه که از زبونه دیگه ای استفاده نکرده باشن)
از اونجایی که سرعت میکرو به خاطر استفاده از تایمر برای تولید پالس راه انداز و نمونه برداری ها استفاده میشه اونهم با 15 نمونه با ads7816 که بعدش دستورات مربوط به گراند نرمافزاری و زرو یا صفر کردنش ومحاسبات تفکیک و معدل گیری ها و سرچ ها و گین هایی که نرم افزاری هستند (در ماینر میدونید که این امکانات نرم افزاری هستش , نه سخت افزاری) و چیزای دیگه , پس امکان استفاده از capture timer اون هم با پرسکال 1 یه خورده غیره ممکنه(بدلیل سرعت پایین وهنگ کردن)
اما تنظیم زمان با اون ترانزیستور در پرتئوس شدنی نیست , در بردبورد امتحان کنید