وبلاگ همه برو بچ رشته برق
 

پروگرمر ارزان قیمت F84

عنوان اصلی مقاله:F84 Programmer

منبع:chaokun.kmitl.ac.th

 

یک پروگرمر ارزان قیمت و بسیار ساده سریال برای میکروکنترلر فلش  PIC16F84 ساخت  شرکت MICROCHIP بسازید.تصویر زیر پروگرمر شخصی من برای تراشه F84 است که به کمک برنامه WPicProgV1.20 K نوشته شده توسط "نایجل" به خوبی کار کند.

 

 

مقدمه:

من سرانجام یک برنامه تحت ویندوز خوب پیدا کردم که برای  کار با هر نوع پروگرمر سریال برای PIC16F84 و ... طراحی شده است.WPicProg16v1.20 بوسیله "نایجل گودوین" نوشته شده است.قبل از اینکه پروژه های جالب F84 را تجربه کنید,این پروگرمر را بسازید.برخی از پروگرمرهای PIC می توانند میکروکنترلر را "در مدار" (In Circuit) پروگرم کنند-یعنی در میکروکنترلر بنویسند.به عنوان مثال خیلی از تراشه های PIC که شامل EEPROM هستند از این دسته اند.در هر حال ,پروگرمر F84 برای مبتدیان مناسب می باشد,ضمن اینکه خیلی ارزان و ساده است.

چکیده:

شکل 1 دیاگرام مدار پروگرمر F84 را نشان می دهد.برخی  از پین های میکرو از طریق پروگرمر به پورت موازی مثل LPT1 متصل شده اند.Vdd از طریق D2 و با منطق منفی کنترل شده است.صفر منطقی  در این پین , ترانزیستور 2N2907 را روشن کرده و 5 ولت را به پین شماره 14 اعمال می کند.به طور مشابه برای Vpp , با یک منطق  منفی D3  ترانزیستور 2N2907 را کنترل نموده و ولتاژ نزدیک به 14 ولت را به پایه MCLR اعمال می کند.همان طور که می بینید , ولتاژ برنامه ریزی Vpp از بالا رفتن ولتاژ پایه GND رگولاتور 78L09 تا 5 ولت به دست می آید."خواندن" و "نوشتن" داده ,از پین RD7 استفاده می کند.D0 بسته های سریال را می فرستد در حالی که ACK در حین عمل برنامه ریزی آن را بازخوانی می کند.D1 کلاک خروجی روند برنامه ریزی همزمان است و ورودی DC بایستی حدود 17 ولت باشد.

شکل1-دیاگرام مدار پروگرمر F84

نرم افزار:

WPIC16.ZIP نسخه به روز شده و تحت ویندوز نرم افزار پروگرمر F84 است که توسط "نایجل گودوین" نوشته شده است.ممکن است بتوانید آخرین نسخه این برنامه را مستقیما از سایت اینترنتی او تهیه کنید.

مانند آنچه در شکل زیر می بینید, پنجره "Hardware Settings" -یعنی تنظیمات سخت افزاری- را تطبیق دهید.

دکمه های موجود در شکل فوق می توانند برای انطباق سخت افزاری بیت دلخواه را "بنشانند" یا "پاک" کند.در ضمن,این برنامه به وسیله کمپایلر PIC C قابل فراخوانی بوده و فایل  Hex تولید شده بعد از عمل کمپایل کردن , در حافظه بافر(Buffer Memory) بار گذاشته می شود.با فشردن دکمه WRITE PIC می توانید کد Hex را در بافر تراشه بنویسید.بعدشم حالشو ببرید!

شکل2-مثالی از استفاده از دستور READ PIC

سخت افزار پروگرمر F84 می تواند به خوبی و بدون هیچ تغییری در مدار توسط EPICWIN استفاده شود.بنابراین وقتی به برنامه ریزی PIC  های نوع دیگری  نیاز دارید ,تنها بایستی سوکت تراشه F84  را به شکلی مناسب برای PIC مورد نظرتان تغییر دهید.

سه‌شنبه ۱۳ اردیبهشت ،۱۳۸٤ - hessameddin shafeiyan | لینک دائم | پيام هاي ديگران () | Add to Del.icio.us  digg this post  add to google bookmarks  add to technorati   add to shadows  

 
پنجشنبه ۸ اردیبهشت ،۱۳۸٤ - hessameddin shafeiyan | لینک دائم | پيام هاي ديگران () | Add to Del.icio.us  digg this post  add to google bookmarks  add to technorati   add to shadows  

 

چگونه با استفاده از 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 برنامه ریزی کنید.

 

در نسخه های معمول در ایران موجود می باشد.از این بابت نگرانی نداشته باشید-(*) 

پنجشنبه ۸ اردیبهشت ،۱۳۸٤ - hessameddin shafeiyan | لینک دائم | پيام هاي ديگران () | Add to Del.icio.us  digg this post  add to google bookmarks  add to technorati   add to shadows