ايران ويج

نسخه‌ی کامل: فاصله سنج التراسونیک با کامپیوتر
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
[تصویر:  srf02c.png]ارتباط سنسور SRF02 به کامپیوتر

برنامه تحت C#.net 2010 نوشته شده و به صورت Real time اطلاعات فاصله و شماره سنسور را نمایش می دهد .
با استفاده از ماژول USB به سریال خیلی راحت به USB وصلش کنید !!

ادامه مطلب




[تصویر:  rm2gyfbra670t92g48v.png]


تقدیم به تمام دوستان خوبم در IranLed

من سورس را در سی شارپ دات نت 2010 نوشتم .

از لحاظ توضیحات نرم افزاری این موارد قابل ذکر است:

نرم افزار کاملا به زبان ساده نوشته شده و در نرم افزار شما قادر هستید سنسور را در هر لحظه خوانده و مشاهده کنید، از طرفی قادر هستید تا آدرس سنسور را به آدرس دلخواه خودتون تغییر بدهید.

در ابتدای کار یک آرایه دو بعدی از نوع بایتی حاوی (آدرس سنسور و درخواست نوع اطلاعات که در اینجا درخواست به سانتی متر است، به صورت هگز) تعریف می شود.

سپس با دستور Write و متد Oveload دوم آن با یک بازه 1 میلی ثانیه ای درخواست ارسال شده است.(ایجاد وقفه با system.Threading.Thread.Sleep تعریف شده است.)

نهایتا چون سنسور 2 بار اطلاعات را در قالب بایت ارسال می کند، دستور Readbyte در برنامه 2 بار نوشته شده است.

برای پرهیز از هنگ کردن برنامه، من timeout خواندن اطلاعات را تعریف کردم(دستور های serialPort1.ReadTimeout = 1; و serialPort1.WriteTimeout = 20; )

این زمان را شما در ابتدای برنامه می توانید تغییر دهید.... (در صورتی که مشکلی پیش آمد زمان را که بر حسب میلی ثانیه هست تغییر دهید.)

همچنین دستور ReadByte را در دستور try قرار دادم تا مشکلی ایجاد نشود.


تمامی تنظیمات ارسال دیتا و تغییر عدد سنسور نیز به همین شکل اما در آرایه ای جدید تعریف شده است که در صورتی که PDF فارسی جناب ilgar را مطالعه بفرمایید، به راحتی متوجه می شوید.

به مثال زیر که بخشی از برنامه است دقت کنید:
کد:
byte[] Sensor1 = new byte[8];

Sensor1[0] = first_value;
Sensor1[1] = 0xA0;
Sensor1[2] = first_value;
Sensor1[3] = 0xAA;
Sensor1[4] = first_value;
Sensor1[5] = 0xA5;
Sensor1[6] = first_value;
Sensor1[7] = final_value;



if (serialPort1.IsOpen == true)
{
serialPort1.Write(Sensor1, 0, 1);
System.Threading.Thread.Sleep(1);
serialPort1.Write(Sensor1, 1, 1);
System.Threading.Thread.Sleep(1);
serialPort1.Write(Sensor1, 2, 1);
System.Threading.Thread.Sleep(1);
serialPort1.Write(Sensor1, 3, 1);
System.Threading.Thread.Sleep(1);
serialPort1.Write(Sensor1, 4, 1);
System.Threading.Thread.Sleep(1);
serialPort1.Write(Sensor1, 5, 1);
System.Threading.Thread.Sleep(1);
serialPort1.Write(Sensor1, 6, 1);
System.Threading.Thread.Sleep(1);
serialPort1.Write(Sensor1, 7, 1);
return;
}

در اینجا اگر به ابتدای سورس دقت کنید، در واقع من یک بایت را با اسم first value انتخاب کرده ام که با دستور Switch case در خطوط بالاتر سمپل، پر می شود.

این دستور switch case شماره ابتدایی سنسور را مشخص کرده است .

مقدار final value نیز از comboBox مقدار مورد نیاز را با استفاده از دستور Switch case به خود می گیرد و نهایتا در آرایه جایگزاری می شود.

هدف از این کار تغییر آدرس (شماره سنسور) از هر آدرسی به آدرس دیگر است.

دلیل موفقیت من، تسلط به ز بان c و basic بود که ترجیحا آنرا در C#.net نوشتم و شما می توانید به راحتی آنرا در VB.net نیز شبیه سازی کنید.


دقت فرمایید اجرای این برنامه فقط در C#.net نسخه سال 2010 انجام گیرد و در نسخه های قدیمی تر، با مشکل مواجه می شوید.... (در حقیقت visual Studio 2010 را باید نصب کرده باشید.)

ضمنا برای ارتباط سخت افزاری هم از ماژول آماده FT232 استفاده کنید و tx ماژول را به Rx سنسور و Rx ماژول را به TX سنسور بدهید. که به دلیل سادگی مدار آنرا دیگه قرار ندادم...

در صورتی هم که پورت کام سیستم را می خواهید استفاده کنید، از یه max232 به عنوان واسط استفاده کنید تا سطح ولتاژ پورت com را به سطح TTl بیاره.....
موفق باشید.
محمدرضا ناظم
برنامه فوق را در پیوست دریافت کنید :
با سلام خدمت دوست عزیز

راستش من برنامه نویس هستم و زیاد در الکترونیک تجربه ندارم. ولی مدت ها بود که دنبال همچین پستی بودم .

با توجه به شواهد . این سنسور اطلاعات را به سانتی متر میده! آیا سنسور دیگه ای رو میشناسید که اطلاعات رو به میکرومتر بده !

با تشکر فراوان
علی
(۱۱-آذر-۱۳۸۹, ۱۱:۵۹:۲۶)alimz نوشته است: [ -> ]با سلام خدمت دوست عزیز

راستش من برنامه نویس هستم و زیاد در الکترونیک تجربه ندارم. ولی مدت ها بود که دنبال همچین پستی بودم .

با توجه به شواهد . این سنسور اطلاعات را به سانتی متر میده! آیا سنسور دیگه ای رو میشناسید که اطلاعات رو به میکرومتر بده !

با تشکر فراوان
علی

سلام
خواهش می کنم
سنسور دقیق تر از این اطلاعات را تا میلی متر میده و دقت بیشتر از میلی متر جایی ندیدم هنوز
با سلام

ميشه يگيد اين سنسور چه طوري كار ميكنه ؟ چون منم بايد با اين سنسور پرو‍ژمو تحويل بدم .ديتاشيت فارسي نداره؟

ممنون
آموزش کامل در mechatronic-lab.com برای سنسور srf02 قبلا گذاشته بودم... دوستانی که علاقه دارند، مطالعه کنند.
موفق باشید.
نقل قول: با سلام خدمت دوست عزیز

راستش من برنامه نویس هستم و زیاد در الکترونیک تجربه ندارم. ولی مدت ها بود که دنبال همچین پستی بودم .

با توجه به شواهد . این سنسور اطلاعات را به سانتی متر میده! آیا سنسور دیگه ای رو میشناسید که اطلاعات رو به میکرومتر بده !

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

نقل قول: سلام من می خوام دو تا موتور dc رو با pwm راه اندازی کنم اما هر کاری میکنم کار نمیکنه اگه کسی بلد باشه لطفا من رو راهنمایی کنه .متشکرم.
من میتونم کمکت کنم ولی سوالتو در جای مناسبی مطرح نکردی.