در این برنامه قصد داریم روابط حاکم بر دیودهارو با نرم افزار متمتیکا بررسی کنیم .
در کلی ترین حالت رابطه ی زیر برای دیودها حاکم است :
Vi ولتاژ ورودی ، Va ولتاژ خروجی ، R مقاومت و q، T ، k و Io به ترتیب بار الکتریکی الکترون ، دمای محیط (برحسب کلوین) ، ثابت بولتزمن و جریان اولیه هستند.
همون طور که میبینید در این فرمول ما 2 تا ثابت جهانی داریم ؛ بار الکترون ، و ثابت بولتزمن . بنابراین ابتدا باید توابع ثابتهای فیزیکی رو فراخوانی کنیم . Physical Constants اسم این کتابخانه (یا تابع) در متمتیکاس که ثابتهای فیزیکی درون اون قرار دارن. به نحوه ی فراخوانی کتابخانه توجه کنید .
خب ، با این تفاسیر ثابت بولتزمن رو k و بار الکتریکی الکترون رو q تعریف میکنیم . دقت کنید که فراخوانی کتابخانه ی ثوابت فیزیکی به این معنی نیست که شما بنویسید k یا q و متمتیکا متوجه بشه که شما منظورتون ثابت بولتزمن و بار الکتریکی الکترون بوده . بلکه با این فراخوانی این کتابخانه متمتیکا متوجه میشه که اگه شما نوشتید BoltzmannConstant یعنی ثابت بولتزمن یا اگر نوشتید ElectronCharge یعنی بار الکترون .
همونطور که مشاهده میفرمایید من در ابتدای برنامه کتابخونه ی دیگه ای رو به نام Units هم فراخوانی کردم ؛ این کتابخانه همونطور که از اسمش پیداس واحدهارو به برنامه ی ما تعریف میکنه . بعنوان مثال تا قبل از فراخوانی این کتابخونه ، واحدها (متر ، لیتر ، کولن ، کیلوگرم و . . . ) برای متمتیکا ناشناخته س . میپرسید چرا این کتابخونه ی واحدهارو فراخوانی کردیم؟ چونکه وقتی شما BoltzmannConstant یاElectronCharge رو تعریف میکنید ، متمتیکا واحد این مقادیر رو هم بعدش مینویسه . برای اینکه به این ماجرا پی ببرید بعد از اجرای کتابخونه ها ، یه نوت بوک (محیط کاری) دیگه باز کنید و در اونBoltzmannConstant یا ElectronCharge رو بنویسید و اجرا کنید .
من تو برنامه ای که براتون قرار دادم خاستم که از شر واحد ها خلاص شم ؛ چرا؟ چونکه اگر بخایم این ثابتهارو هرجایی به کار ببریم ، واحد اون ثابت رو هم جلوش مینویسه و برای ما دردسر ساز میشه و برنامه واحد رو مثل یه نوشته میبینه و مثل این میمونه که شما درون یه معادله یه کلمه نامفهوم و از قبل تعریف نشده بزارید . برای همینم دستور ، جواب مورد نظر رو نمیتونه بده . بنابراین وقتی ثابت بولتزمن و بار الکتریکی رو تعریف میکنیم ، اون ثابت رو در معکوس واحدش هم ضرب میکنیم تا ثابت بدون واحد بشه .
ابتدا تغییرات جریان نسبت به ولتاژ ورودی رو بدست میاریم و ترسیم میکنیم ؛ اینکار رو ابتدا با تعریف تابعی از ولتاژ و دما ، سپس رسم اون انجام میدیم . دقت کنید که طرف چپ تابعمون همون جریان الکتریکیه ؛ به فرمول اصلی توجه کنید
دلیل اینکه دما روهم به عنوان متغییر در این تابع آوردم اینه که بتونیم این تغییرات رو در دماهای دیگه هم ببینم . بعنوان مثال برای رسم تابع ، من دمارو دمای اتاق (20 درجه سانتی گراد که برابر 293 درجه ی کلوین هست) قرار دادم .
توجه کنید ، اسم تابع رو diode گزاشتم که اسمی دلخواه هست .
اهمیت حل این معادله در بدست آوردن ولتاژ خروجی و پی بردن به ارتباط اون با ولتاژ ورودی است . اما مشکل اینجاست که این معادله بصورت عادی قابل حل نیست !
برای رفع این مشکل باید اون رو حل عددی کرد ، یعنی هی به متغییر مقدار بدیم و جواب رو محاسبه کنیم ، با تکرار این عمل و رسم زوج عددهای بدست اومده (مقدار متغیر و حاصل معادله) میشه به رفتار تابع و نقاط قطع محورها پی برد .
بنابراین من از FindRoot که دستوری برای حل عددی هست استفاده کردم .
از اونجایی که ولتاژ خروجی ثابت خواهد موند ، ما معادله رو با مقادیر دلخواه و معمول آزمایشگاه حل میکنیم ، یعنی ولتاژ ورودی رو 12 ، دمارو 20 درجه سانتی گراد (293 درجه کلوین) و مقاومت رو 100 اهم در نظر میگیرم . بنابراین در این معادله Va که تنها مجهول ماهستش به روش حل عددی بدست میاد .
خب حالا تابعی تعریف میکنیم که Va و Vi (ولتاژ خروجی و وردی) رو بهم مرتبط کنه .
با تعریف این تابع (Va(Vi_,R_,t_) ) و رسم اون متوجه میشیم که دیود از ولتاژی خاص بعنوان یکسو کننده ی جریان عمل میکنه و ولتاژهای حدود 5/0 ولت به بالارو قطع میکنه.
مواردی در این برنامه وجود داشت مثل =: یا == یا [[1]] که بارها و بارها در برنامه های قبلی توضیح دادم .