PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : چگونه با استفاده از PIC16c71 يک ولتمتر سريال بسازيم



nafise sadeghi
18th October 2008, 12:53 AM
ولتمتر سريال:
ساختن يک ولتمتر سريال ساده که بتواند از 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.


http://www.fadack.com/Archive/Electronic/learn/Image/Archive_0003.gif

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


http://www.fadack.com/Archive/Electronic/learn/Image/Archive_0003_1.gifhttp://www.rentron.com/images/voltmeter.gif
شماتيک مدار PIC16C71


http://www.rentron.com/Files/voltmeter2.gif




◄ کد 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) را مي فرستد.

◄ کد ويژوال بيسيک :


http://www.fadack.com/Archive/Electronic/learn/Image/Archive_0003_2.gifhttp://www.rentron.com/Files/vmetervb.gif


http://www.fadack.com/Archive/Electronic/learn/Image/Archive_0003_3.gif

Form1


http://www.rentron.com/Files/vmeter2vb.gif

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

نويسنده: سام الدين شافعيان(دانشجوي کارشناسي برق و الکترونيک دانشگاه مازندران)
منبع اطلاعاتي: hessameddin.persianblog.com ايميل: shafeiyan@yahoo.com
http://www.fadack.com/Archive/Electronic/learn/Archive_0003.htm (http://njavan.com/forum/redirector.php?url=http%3A%2F%2Fwww.fadack.com%2FA rchive%2FElectronic%2Flearn%2FArchive_0003.htm)

hengameh
14th April 2010, 06:28 PM
آیا مایلید نسخه مخصوص به خود را طراحی کنید؟ یا تنها کد VB را جهت اجرا دارید؟ این یک نسخه متفاوت و بدون تایمر است که توسط "باب کاتر" فرستاده شده است.این نسخه , شامل کد VB کامل برای ولتمتر سریال است.اینجا (http://www.rentron.com/Files/Voltmeter.zip) را کلیک کنید تا نسخه باب را داونلود کنید.

استفاده از تمامی مطالب سایت تنها با ذکر منبع آن به نام سایت علمی نخبگان جوان و ذکر آدرس سایت مجاز است

استفاده از نام و برند نخبگان جوان به هر نحو توسط سایر سایت ها ممنوع بوده و پیگرد قانونی دارد