| |
◄
ولتمتر سريال:
ساختن يک ولتمتر سريال ساده که بتواند از 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
◄
کد 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) را مي فرستد.
◄
کد ويژوال بيسيک :


Form1
با ايجاد يک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 وبالاتر اجرا مي شود.
|
|