ساخت خازن سنج در پروتئوس

در این پست قصد دارم ساخت خازن سنج در محیط پروتئوس به کمک program کردن میکروکنترلر AVR ATmega را شرح بدهم.به این منظور لازم است آشنایی حداقلی با کد basic که در نرم افزار Bascom AVR به کار می رود را داشته باشیم.در نهایت خازن سنجی ساخته شده که زمانی که آن را روشن میکنیم ابتدا یک پیام خوش آمد گویی ظاهر شده، پس از یک تاخیر کوچک پیامی روی LCD نمایش داده می شود که از ما می خواهد خازن سنج را در مدار قرار دهیم سپس در پیام بعدی درخواست می کند دکمه را فشار دهیم تا ظرفیت خازن محاسبه شود.برای شروع باید ابتدا نوع ریزپردازنده را انتخاب کنیمبدین منظور میتوان از یکی از دو روش زیر استفاده کرد:1. از پنجره ی OPTION گزینه COMPILER و سپس CHIP را انتخاب کرده و از آنجا میکروکنترلر مورد نظر خود را انتخاب می کنیم.2. از طریق نوشتن کد زیر می توانیم میکروکنترلر مورد نظر خود را انتخاب نماییم :$regfile =“m8def.dat”لازم به ذکر است که اولویت انتخاب نوع میکروکنترلر توسط BASCOM AVR با روش دوم (یعنی کد نوشته شده) می باشد.از طریق کد زیر فرکانس کریستال را تعیین میکنیم :$crystal = 16000000در کد فوق فرکانس کریستال 16 مگاهرتز در نظر گرفته شده است.در گام بعد با استفاده از کد config ، تمام پیکربندی های لازم را انجام می دهیم.بدین منظور ابتدا لازم است تا با پایه های LCD آشنا شویم:در این پروژه من از یک 2×LED 16 استفاده کرده ام که پایه های آن به شرح زیر می باشد :GND: منبع تغذیه منفی یا زمین VCC : منبع تغذیه مثبتVEE : LCD تنظیم کنتراست RS : LED تعیین مد کاری R/W : (0) خواندن(1) و نوشتنEN : LCD برای استفاده ازDB0تاDB7: پایه های اطلاعاتLED+,LED- : نور پس زمینهدر مرحله بعد اتصالات هر پورت به میکروکنترلر را به وسیله کد BASIC مشخص می کنیم:Config Lcd = 16 * 2Config Lcdpin = Pin , Rs = Portb.5 , E = Portb.4 , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0سپس برای اتصال مدار rc را به یکی از پایه های میکروکنترلر از کد زیر استفاده می کنیم:Config Portd.0 = Output حال با کد زیر دکمه ی start را به یکی از پایه های میکروکنترلر وصل می نماییم:Config Portc.0 = Input حال نوبت به تعریف متغیرهای مورد نیازمان می رسد که به وسیله کد DIM x AS y این کار را انجام می دهیم:1.یک متغیر برای ذخیره ی مقدار ثابت زمانی می خواهیم.2.یک متغیر برای ذخیره سازی ظرفیت خازن می خواهیم.3.یک متغیر برای نمایش واحد خازن می خواهیم.4.پس از تعریف متغیرهای فوق می خواهیم تا 2 رقم اعشار ظرفیت خازن برای ما نمایش داده شود.5.در نهایت با دستور cls می خواهیم تا صفحه ی LCD پاک شود.Dim T As WordDim C As SingleDim Unit As String * 3Config Single = Scientific , Digits = 2Clsنمایش پیام خوش آمد گویی و درخواست قراردادن خازن در مدار:ابتدا مکان متن مورد نظر را با دستور زیر مشخص می کنیم: ستون , سطر Locateمتن خود را با دستور زیر وارد می کنیم:Lcd “Welcome”با استفاده از یکی از دستورات تاخیر، مدت زمان نمایش متن خود را انتخاب می کنیم(لازم به ذکر است که از دستورdelay به منظور تاخیر به اندازه 1میکروثانیه،wait به اندازه ی چند ثانیه، waitms چند میلی ثانیه و waitus چند میکروثانیه استفاده می شود).برای نمایش پیام درخواست قراردادن خازن در مدار نیز به صورتی که گفته شد عمل می کنیم.Locate 1 , 5Lcd "welcome"Wait 1ClsHomeLcd "insert capacitor"Wait 1استفاده از دستورات do و loop برای ایجاد حلقه:در این مرحله می خواهیم نمایشگر تا زمانی که دکمه ی start توسط کاربر زده نشده ، عبارت press start را نمایش دهد.برای این کار از دستور until استفاده می کنیم.باید به خاطر داشته باشیم که دکمه ی start را به کدام پورت میکروکنترلر وصل کردیم در این پروژه من دکمه را به PORTC.0 میکروکنترلر وصل کردم بنابراین کد من به صورت زیر می باشد:DoClsLcd "Press Start"Waitms 100Loop Until Portc.0 = 1محاسبه ثابت زمانی:برای محاسبه ی ثابت زمانه از دستور getrc استفاده می کنیم که دارای دو آرگومان (یکی برای تعیین پورتی که مدار rc را به آن وصل کردیم و دیگری برای شماره ی پورت) می باشد و سپس آن را در متغیر T که از نوع word تعریف کردیم، می ریزیم.همانطور که میدانیم باگذشت 1 ثابت زمانی (T)، سطح ولتاژ خازن به 63% شارژ یا دشارژ خود می رسد اما ما در این پروژه شارژ و دشارژ خازن را به صورت 100% میخواهیم بنابراین از فرمول t=rc استفاده می کنیم.به این دلیل که ما 100% شارژ یا دشارژ را می خواهیم لذا در فرمول فوق به جای t، 5t و به جای r که مقاومت دلخواه ما در مدار می باشد مقدار 10 را قرار می دهیم.بنابراین به c=t/2 می رسیم.ظرفیت خازن به طور پیش فرض به صورت نانوفاراد محاسبه می شود اما من برای زیبایی در پروژه برای ظرفیت های بالای 1000 نانوفاراد ، آن ها را به میکروفاراد تبدیل کرده ام.در مرحله ی بعدی با استفاده از دستوراتی که در سطرهای قبل گفته شد،دستور نمایش ظرفیت خازن روی LCD را نوشته و می خواهیم که یک پیام اتمام نیز برای ما نمایش داده شود.DoT = Getrc(pind , 0)C = T / 2If C > 1000 ThenUnit = "uf"C = C / 1000ClsHomeLcd "c:" ; C ; UnitLocate 2 , 1Lcd "Finish"Wait 4End IfIf C < 1000 ThenUnit = "nf"ClsHomeLcd "c:" ; C ; UnitLocate 2 , 1Lcd "Finish"Wait 4End IfLoopEndپس از انجام مراحل فوق کدنویسی ما در محیط Bascom AVR به پایان رسیده و حال در محیط پروتئوس مدار مورد نظر را شبیه سازی کرده و عملکرد میکروکنترلر پروگرم شده را مشاهده می کنیم.برای این کار ابتدا میکروکنترلر ATMEGA8 را مطابق تصویر زیر اضافه می کنیم-دکمه ی START را نیز اضافه می نماییم.-به دو پتانسیومتر از نوع HG نیز نیاز داریم چراکه می خواهیم مقدار آن را برای کالیبره کردن مدار تغییر دهیم همچنین رنج دقیق تری از مقاومت را برای نمایش دقیق تر نتیجه بدست آوریم.-در نهایت LCD 16×2 و خازن برای تست مدار را نیز اضافه می کنیم.-پس از اضافه کردن ابزار مورد نیاز ، آن ها را روی صفحه قرار می دهیم.وصل کردن پایه های LCD به مدار در پروتئوس:همان طور که در برنامه ی خود در محیط BASCOM AVR تعیین کردیم ، RS را به PB5 ، E به PB4 ، DB4 به PB3 ، DB5 به PB2 ، DB6 به PB1 و درنهایت DB7 را به PB0 وصل می نماییم.در بخش Terminals mode در برنامه ی پروتئوس ، Ground و power را در مدار قرار داده و به پتانسیومتر متصل می کنیم.همان طور که در برنامه نوشتیم VEE را برای تنظیم کنتراست LCD به پتانسیومتر ، VDD را به منبع تغذیه ی مثبت(power) ، Vss و R/W را به منبع تغذیه ی منفی (زمین)متصل می کنیم.رسم مدار RC در پروتئوس:از یک پتانسیومتر به جای مقاومت 10 اهمی برای کالیبره کردن مدار استفاده می کنیم تا نتیجه ی دقیق تری را داشته باشیم.یک سر خازن را به پتانسیومتر و سر دیگر آن را به زمین وصل می کنیم.پورت صفر پتانسیومتر را طبق تعریف در برنامه به PORTD.0 متصل می نماییم.یک سر کلید start را مطابق تعریف در برنامه به PORTC.0 و سر دیگر آن را به زمین متصل می کنیم.کامپایل کردن و پروگرم کردن میکروکنترلر:پس از شبیه سازی مدار در برنامه ی پروتئوس حال مجددا به سراغ برنامه ی BASCOM AVR رفته و کد خود را کامپایل می کنیم.پس از کامپایل کردن کد برای پروگرم کردن میکروکنترلر به پروتئوس بازمی گردیم.برای این کار ابتدا روی میکروکنترلر کلیک کرده سپس به بخش program file می رویم و برنامه ی خود را از جایی که ذخیره کرده بودیم انتخاب می کنیم.حال نوبت به run کردن برنامه می رسد.لازم به ذکر است که دقت خازن سنجی که ساخته ایم به شرح زیر می باشد:ظرفیت2/3 تا 6/4 ---------------------------- 0/1ظرفیت 6/4 تا 10------------------------------ 0/2و هرچه ظرفیت خازن بالاتر برود دقت خازن سنج کمتر می شود چرا که جریان کمی از پایه های میکروکنترلر عبور می کند و همچنین ما مدار rc را مستقیما به میکروکنترلر وصل کرده ایم.راه حل برای بالا بردن دقت خازن سنج استفاده از تقویت کننده می باشد.*امیدوارم مطالب ارائه شده مورد قبول و توجه شما عزیزان قرار گرفته باشد*