امروز برابر است با :9 فروردین 1403

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

عنوان اصلی مقاله:  How to build a Serial Voltmeter using the PIC16C71


ساختن یک ولتمتر سریال ساده که بتواند از 0 تا 5 ولت را اندازه بگیرد واقعا ساده است.این کار به کمک Microsoft Visual Basic نسخه 5 به بالا و نرم افزارهای  Melabs وPicBasic  انجام پذیر است.شما به این دلیل به Microsoft Visual Basic Pro نیاز دارید که بتوانید از مولفه MsComm Control آن استفاده کنید.این Control در نسخه “آموزشی”  Visual Basic 5 موجود نیست(*).PIC 16c71 با داشتن یک مبدل A/D داخلی این کار را ساده ساخته است.پین های 17 و18و1و2 ورودی های آنالوگ هستند,یعنی به ترتیب AIN0 وAIN1 وAIN2 و AIN3.


نرم افزار ولتمتر سریال , جهت دریافت اطلاعات فرستاده شده از طرف میکروکنترلر PIC ,بر پورت سریال نظاره می کند و پس از دریافت داده ,نتیجه نمایش داده شده از طریق ضرب نمودن آن در 0.02 بدست می آید.مبدل A/D موجود در PIC16C71 از نوع تقریب متوالی(Successive Approximation) بوده ونتایج هشت بیتی تولید می کند.با وجود نتیجه هشت بیتی به رنج 0 تا 255(به نمایندگی از 0 تا 5 ولت) محدود می شویم.

voltmeter


ولتمتر سریال


شماتیک مدار PIC16C71


PIC Microcontroller Voltmeter


 


  کد PicBasic


  ‘ Access PIC16C71 A/D using Peek and Poke

  Symbol ADCON0 = 8   ‘ A/D Configuration Register 0

  Symbol ADRES = 9   ‘ A/D Result
  Symbol ADCON1 = $88   ‘ A/D Configuration Register 1
  Symbol SO = 0   ‘ Serial Output on port B0

  poke ADCON1, 0   ‘ Set PortA 0-3 to analog inputs
  poke ADCON0, $41   ‘ Set A/D to Fosc/8, Channel 0, On

  Loop:

  poke ADCON0, $45   ‘ Start Conversion
  pause 1   ‘ Wait 1ms for conversion
  peek ADRES, B0   ‘ Get Result to variable B0

  serout SO,N2400,(#B0,10)   ‘ Send variable to serial out

  goto Loop    ‘ Start over again


 


کد بالا که بسیار ساده است,با استفاده از Micro Engineering’s PicBasic نوشته شد.با استفاده از دستورات PEEK و POKE در PicBasic  قادر خواهیم بود به  رجیستر های A/D داخلی PIC16C71  و پین های پورت A دست پیدا کنیم.بعد از آمادهسازی رجیسترهای A/D برای استفاده از AN0 -به خاطر پذیرش سیگنال های آنالوگ- برنامه در یک حلقه ساده باقی می ماند و به طور پیوسته مقادیر آنالوگ نمونه برداری شده در پین(پایه)  17 (موسوم به RA0/AN0) را می فرستد.


  کد ویژوال بیسیک:


vmetervb.gif (9137 bytes)


  Form1


 


vmeter2vb.gif (3833 bytes)


 


با ایجاد یکForm ساده , MSComm Control , یک تایمر, یک Text Box و یک دکمه جهت خارج شدن از برنامه می توانید مانند آنچه در پنجره کد بالا و Form1 می بینید برنامه Visual Basic  خود را بسازید. 


اگر ترجیح می دهید از پورت Com دیگری استفاده کنید, به سادگی در جاییکه ما CommPort1 را انتخاب کردیم پورت مورد نظرتان را وارد کنید.به کد خط  Text1.Text = Asc(DataIn) * 0.02 & ”  Volts DC”توجه کنید.این خط از کد , داده دریافتی از PIC  را به مقداری که بتوان آن را در Text Box یعنی ناحیه سیاه رنگ نشان داد  تبدیل می کند. از آنجا که مبدل A/D  موجود در PIC16C71 وضوح هشت بیتی دارد , پس  تنها 256 ترکیب ممکن از 0 تا 255 داریم.چون 5 ولت تقسیم بر 256 برابر با 0.0195 است,مقدار برگردانده از 250 بایستی معادل 4.87 باشد,چون 4.87=250*0.0195.مقدار 255 نزدیک به 5 ولت (4.9725 ولت) را نشان می دهد و52  ,1.04 ولت را نشان می دهد.


وضوح هشت بیت: برای اکثر کاربردها,وضوح هشت بیت کفایت می کند.با وضوح هشت بیتی ما قادر خواهیم بود ورودی های آنالوگ را با گام صعودی 0.0195 ولت اندازه بگیریم.ما 0 را به نمایندگی از صفر ولت و 255 را به نمایندگی از پنج ولت داریم.بنابراین وضوح واقعی ما 0.0195 یا 19.5 میلی ولت است.256 حالت مختلف -شروع از صفر و گام افزایش 19.6 میلی ولتی می تواند برای اکثر کاربردها کافی باشد.


بسیار خوب,پس چرا من از مقدار 0.02 برای انجام محاسباتم استفاده کردم؟ من آن را به 0.02 گرد کردم چون بعد از اینکه در حین عملکرد مدارم ,از ولت متر خود برای قرائت مقدار دقیق استفاده کردم , متوجه شدم با استفاده از 0.02 نتایج من دقیق تر می شود.این احتمال وجود دارد که مدار شما اندکی با این متفاوت باشد زیرا تاکنون دیده نشده  هیچ دو وسیله ای کاملا یکسان باشند.این ایده خوبیست که کمی آزمایش کنید و از یک ولتمتر دقیق برای تنظیم نمودن برنامه استفاده کنید تا به نتایج دقیق تری برسید.


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


نکته:نرم افزار ویژوال بیسیک تهیه شده در این پروژه , 32 بیتی بوده  و با بهره گیری از Com1 , تحت ویندز های 95 و98 وبالاتر اجرا می شود.


این فایل Hex برای نوشتن در PIC169C71 آماده می باشد.


این کد VB5 است ویک برنامه Installation/Setup کامل برنامه پروژه بالاست.


آیا مایلید نسخه مخصوص به خود را طراحی کنید؟ یا تنها کد VB را جهت اجرا دارید؟ این یک نسخه متفاوت و بدون تایمر است که توسط “باب کاتر” فرستاده شده است.این نسخه , شامل کد VB کامل برای ولتمتر سریال است.اینجا را کلیک کنید تا نسخه باب را داونلود کنید.

www.hessameddin.persianblog.com

اشتراک گذاری