سفارش تبلیغ
صبا ویژن
blogsTemplates for your blogpersianblogpersianyahoo
[ و او را گفتند : اى امیر مؤمنان چه مى‏شد اگر موى خود را رنگین مى‏کردى ؟ ] رنگ کردن مو آرایش است و ما در سوک به سر مى‏بریم [ و از سوک رحلت رسول خدا ( ص ) را قصد دارد . ] [نهج البلاغه]
برق

  نویسنده: علی  
 

فروش چای طبیعی بدون اسانس شیمیایی کار خانه چای کتالم-رامسر

 09357378151

01925242120


 
   
سه شنبه 88 خرداد 19 ساعت 2:34 عصر

  نویسنده: علی  
   

 

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

 

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

منبع:www.rentron.comش

 

voltmeter

ولتمتر سریال

ساختن یک ولتمتر سریال ساده که بتواند از 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 ولت) محدود می شویم.

شماتیک مدار 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 کامل برای ولتمتر سریال است.اینجا را کلیک کنید تا نسخه باب را داونلود کنید.

یک مقاله مفید:PIC را به سادگی با کمپایلر PicBasic  به زبان BASIC برنامه ریزی کنید.

 

 

 
   
جمعه 86 خرداد 4 ساعت 10:7 صبح

لیست کل یادداشت های این وبلاگ
  چای طبیعی
چگونه یک ولتمتر بسازیم؟
[عناوین آرشیوشده]
 
پارسی بلاگ

خانه مدیریت شناسنامه ایمیل

19385: کل بازدید

0 :بازدید امروز

0 :بازدید دیروز

 RSS 

 
آرشیو
 
درباره خودم
 
لوگوی خودم
برق
 
رفقام
 
 
 
اشتراک