دوست عزیز، به سایت علمی نخبگان جوان خوش آمدید

مشاهده این پیام به این معنی است که شما در سایت عضو نیستید، لطفا در صورت تمایل جهت عضویت در سایت علمی نخبگان جوان اینجا کلیک کنید.

توجه داشته باشید، در صورتی که عضو سایت نباشید نمی توانید از تمامی امکانات و خدمات سایت استفاده کنید.
نمایش نتایج: از شماره 1 تا 4 , از مجموع 4

موضوع: راه اندازی سنسور آلتراسونیک با استفاده از ارتباط i2c

  1. #1
    دوست آشنا
    رشته تحصیلی
    برق قدرت
    نوشته ها
    623
    ارسال تشکر
    1,532
    دریافت تشکر: 2,189
    قدرت امتیاز دهی
    40
    Array

    Post راه اندازی سنسور آلتراسونیک با استفاده از ارتباط i2c

    RE: راه اندازی سنسور آلتراسونیک با استفاده از ارتباط I2C


    ارتباط سريال i2c يا 2-wire


    ويژگي هاي اين ارتباط به شرح زير است:

    1-
    در اين ارتباط از دوسيم همرا با گراند و VCC ، که درمجموع چهار سيم مي شود ، براي انتقال ديتا استفاده مي شود

    2-
    بالا ترين فرکانس کلاک 400 کيلو هرتز است

    3-
    در اين ارتباط ميتوان تعداد نامحدود وسيله جانبي با آدرس سخت افزاري مختلف را به هم متصل کرد

    4-
    حداکثر طول کابل ارتباطي باسيم شيلد 80 سانتي متر است

    5-
    کلاک ارتباط I2C به شدت به کلاک سيستم (فرکانس کريستال ) وابسته است

    براي ارتباط I2C از دو پايه SCL و SDA (PORTC.0 و PORTC.1 ميگرو مگا 16) استفاده مي شود که پايه SDA پايه داده و پايه SCL پايه کلاک ميباشد.( دو پايه مزکور پايه هاي پيش فرض ميباشند ، شما ميتوانيد با دستوراتي که گفته مي شود آنها را به پايهاي دلخواه خود تغيير دهيد)

    دستورات مربوط به راه اندازي I2C :


    تعيين کلاک I2C :

    کد PHP:

    Config I2cdelay = X




    X ميتواند از 1 تا 255 باشد ، رابطه اي بين کلاک و عدد وجود ندارد ، مثلا براي عدد 10 کلاک 100 کيلو وبراي عدد 5 کلاک 200 کيلو و براي عدد 1 کلاک 400 کيلو هرتز است ( کلاک I2C به فرکانس کريستال وابسته است ، در اين ارتباط بايد کريستال نوشته شده در برنامه با کريستال استفاده شده يکي باشد ، همچنين کلاک هر دو دستگاه بايد مساوي باشد)

    تعيين پايه هاي داده و کلاک I2C :

    با دستور زير پايه SCL (پايه کلاک) تعيين مي شود :

    کد PHP:

    CONFIG SCL = pin




    Pin نام يکي از پايه هاي دلخواه ميکرو ميباشد .
    با دستور زير پايه SDA (پايه داده) تعيين مي شود :

    کد PHP:

    CONFIG SDA = pin




    Pin نام يکي از پايه هاي دلخواه ميکرو ميباشد
    بعد از انکه I2C پيکر بندي شد با استفاده از دستور زير ميتوان ارتباط را اغاز کرد

    کد PHP:

    I2CSTART




    با اين دستور ارسال ودريافت داده شروع مي شودشما همچنين ميتوانيد با دستور زير به ارسال ودريافت داده خاتمه دهيد:

    کد PHP:

    I2CSTOP




    با استفاده از دستور زير ميتوان داده اي را به باس I2C فرستاد:

    کد PHP:

    I2CSEND slave, var
    I2CSEND slave, var , bytes




    Slave :آدرس گيرنده اطلاعات است که ميتواند به فرم يک عدد ثابت يا متغيير باشد
    Var : عدد ثابت يا متغييري است که ميخواهيسم آن را ارسال کنيم
    : bytesبا اين گزينه شما ميتوانيد تعداد بايت دلخواه را به باس ارسال کنيد (اين گزينه اختياري است)

    فرم خلاصه شده اين دستور به شکل زير است:

    کد PHP:

    I2CWBYTE val




    Val : عدد ثابت يا متغييري است که کد دريافت شده در آن قرار ميگيرد .

    مثال:
    برنامه فرستنده:

    کد PHP:

    $regfile = "m32def.dat"
    $crystal = 1000000
    Config Lcd
    = 16 * 2
    Config Lcdpin
    = Pin , Db4 = Pinb.2 , Db5 = Pinb.3 , Db6 = Pinb.4 , Db7 = Pinb.5 , Rs = Pinb.0 , E = Pinb.1
    Config Kbd
    = Porta
    Config I2cdelay
    = 5
    Config Sda
    = Portc.1
    Config Scl
    = Portc.0
    Dim A
    As Byte
    I2cstart
    W
    :
    A = Getkbd()
    If
    A > 15 Then
    Goto W
    End
    If
    I2csend &H40 , A
    Locate 2
    , 1
    Lcd A
    Goto W
    End




    در مثال با کلاک I2C ، 200کيلو هرتز انتخاب شده است همچنين پايهSCL (پايه کلاک)به پورت c.0 ( پايه22 مگا16)و پايه SDA (پايه داده) به پين c.1 (پايه 23 مگا 16) متصل شده است.

    با دستور I2cstartپروتکل i2c شروع به کار کرده وعدد گرفته شده از کيپد را بخ باس i2c ميفرستد ، براي گيرنده آدرس &h40 در نظر گرفته شده است ، براي درک بيشتر موضوع متغير ارسالي بر روي يک lcd به نمايش در ميايد.

    با استفاده از دستور زير ميتوان داده اي را از باس I2C دريافت کرد:

    کد PHP:

    I2CRECEIVE slave, var
    I2CRECEIVE slave, var , b2W, b2R




    Slave :آدرس فرستنده اطلاعات است که ميتواند به فرم يک عدد ثابت يا متغيير باشد.
    Var : عدد ثابت يا متغييري است که کد دريافت شده در آن قرار ميگيرد
    : bytesبا اين گزينه شما ميتوانيد تعداد بايت دلخواه را از باس دريافت کنيد (اين گزينه اختياري است).(توجه داشته باشيد که تعداد بايت دريافتي و ارسالي بايد با هم برابر باشند در غير اينصورت اطلاعات دريافتي ناقص خواهد بود.)

    فرم خلاصه شده اين دستور به شکل زير است:

    کد PHP:

    I2CRBYTE var, ack/nack




    Var : عدد ثابت يا متغييري است که کد دريافت شده در آن قرار ميگيرد
    ack/nack :زماني که بخواهيم بيشتر از يک بايت را از باس بخوانيم بايد از ack استفاده کنيم و زماني که ميخواهيم اخرين بايت را از باس بخوانيم از nack استفاده ميکنيم.




    مثال:
    اين برنامه مربوط به گيرنده مداري است که برنامه آن را در بالا مشاهده فرموديد:

    کد PHP:

    $regfile = "m32def.dat" : $crystal = 1000000
    Config Lcd
    = 16 * 2
    Config Lcdpin
    = Pin , Db4 = Pina.0 , Db5 = Pina.1 , Db6 = Pina.2 , Db7 = Pina.3 , Rs = Pina.4 , E = Pina.5
    Config I2cdelay
    = 5
    Config Sda
    = Portc.1
    Config Scl
    = Portc.0
    Dim A
    As Byte
    I2cstart
    W
    :
    I2creceive &H40 , A
    If A < 16 Then : Locate 1 , 1 : Lcd A : End If
    Goto W
    End




    در مثال بالا کلاک I2C ، 200 کيلو هرتز(Config I2cdelay = 5) انتخاب شده است همچنين پايهSCL (پايه کلاک)به پورت c.0 ( پايه22 مگا16)و پايه SDA (پايه داده) به پين c.1 (پايه 23 مگا 16) متصل شده است.

    با دستور I2cstartپروتکل i2c شروع به کار کرده وعدد گرفته شده از باس را بر روي lcd نمايش ميدهد ، براي فرستنده آدرس &h40 در نظر گرفته شده است
    روزگاریست شیطان فریاد می زند: آدم پیدا کنید سجده خواهم کرد.
    "دکتر شریعتی"


  2. 10 کاربر از پست مفید e.einitabar سپاس کرده اند .


  3. #2
    دوست جدید
    نوشته ها
    190
    ارسال تشکر
    421
    دریافت تشکر: 839
    قدرت امتیاز دهی
    2518
    Array

    پیش فرض پاسخ : راه اندازی سنسور آلتراسونیک با استفاده از ارتباط i2c

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

    نقل قول نوشته اصلی توسط e.einitabar نمایش پست ها
    در اين ارتباط از دوسيم همرا با گراند و VCC ، که درمجموع چهار سيم مي شود ، براي انتقال ديتا استفاده مي شود
    همون دو سیم درسته و اون دو مقاومت pullup رو جزو کانال های ارتباطی در نظر نمیگیرن به طوری که اسم دیگه این ارتباط TWI یا Two Wire Interface هست یعنی رابط دو سیمه! حتی جالبه بدونید که در نگارش 4 این استاندارد دیگه نیازی به این مقاومت ها نیست!

    نقل قول نوشته اصلی توسط e.einitabar نمایش پست ها
    بالا ترين فرکانس کلاک 400 کيلو هرتز است
    این استاندارد 6 بار مورد بازبینی (Revision) قرار گرفته که سال به سال استاندارد پایه رو بروز کردن. در ورژن 1.0 که دومین نگارش این استاندارد هست، بالاترین سرعت 400 کیلوهرتز تعیین شده ولی بالاترین سرعت در نگارش آخر حدود 5 مگاهرتز!!! تعیین شده. ولی خب AVR از 400 کیلوهرتز به با بالا ساپورت نمیکنه و باید از میکروکنترلرهای پیشرفته تر مثل ARM استفاده کرد!

    نقل قول نوشته اصلی توسط e.einitabar نمایش پست ها
    حداکثر طول کابل ارتباطي باسيم شيلد 80 سانتي متر است
    در استاندارد از طول سیم بحثی نشده ولی گفته شده که ظرفیت خازنی سیم و تجهیزات متصل نباید از 400 پیکوفاراد بیشتر باشه!

    نقل قول نوشته اصلی توسط e.einitabar نمایش پست ها
    در اين ارتباط ميتوان تعداد نامحدود وسيله جانبي با آدرس سخت افزاري مختلف را به هم متصل کرد
    اصلا و ابدا اینطور نیست. سیستم آدرس دهی در نسخه اول تا 128 و در نسخه 2 تا 1008 و در بالاترین استاندارد 65536 وسیله رو به شرط اینکه ظرفیت خازنی بیشتر از 400 پیکو فاراد نشه به هم وصل میکنه!

    نقل قول نوشته اصلی توسط e.einitabar نمایش پست ها
    براي ارتباط I2C از دو پايه SCL و SDA (PORTC.0 و PORTC.1 ميگرو مگا 16) استفاده مي شود که پايه SDA پايه داده و پايه SCL پايه کلاک ميباشد.( دو پايه مزکور پايه هاي پيش فرض ميباشند ، شما ميتوانيد با دستوراتي که گفته مي شود آنها را به پايهاي دلخواه خود تغيير دهيد)
    دقیقا همینطوره ولی باید در نظر داشته باشید که اگه از پایه های پیش فرض استفاده نکنید، از مد سخت افزاری خارج شدید و دارید به صورت نرم افزاری این ارتباط رو شبیه سازی میکنید!! این یعنی اینکه حجم برنامه افزایش چشمگیر پیدا میکنه و پردازشگر باید پردازش بیهوده هم انجام بده که در برنامه های پیچیده که دارای وقفه ها و تایمرها هستن زیاد کار منطقی نیست. در ضمن باید stack ها رو خیلی دقیق تعیین کنید.

    نقل قول نوشته اصلی توسط e.einitabar نمایش پست ها
    Val : عدد ثابت يا متغييري است که کد دريافت شده در آن قرار ميگيرد .
    پسر!!! این چه حرفیه میزنی؟ آخه ثابت که تغییر نمیکنه!! فقط یک متغیر از نوع byte یا integer یا word میتونه باشه وگرنه خطای شماره 13 با عنوان CONST already specified بوجود میاد


    هدف اینه که دور همدیگه به کاملتر شدن اطلاعاتمون کمک کنیم، مگه نه؟

  4. 5 کاربر از پست مفید emer62304 سپاس کرده اند .


  5. #3
    کاربر جدید
    رشته تحصیلی
    الکترونیک
    نوشته ها
    1
    ارسال تشکر
    0
    دریافت تشکر: 0
    قدرت امتیاز دهی
    0
    Array

    پیش فرض پاسخ : راه اندازی سنسور آلتراسونیک با استفاده از ارتباط i2c

    آموزش ساخت یک ماشین کنترلی بیسیم از راه دور ؟ اگه ممکنه

  6. #4
    همکار تالار مهندسی برق
    رشته تحصیلی
    کنترل ابزار دقیق
    نوشته ها
    39
    ارسال تشکر
    1
    دریافت تشکر: 90
    قدرت امتیاز دهی
    142
    Array

    پیش فرض پاسخ : راه اندازی سنسور آلتراسونیک با استفاده از ارتباط i2c

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

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. مقاله: چراحجاب باید داشت ؟
    توسط Admin در انجمن مقالات مذهبی
    پاسخ ها: 22
    آخرين نوشته: 9th November 2012, 03:15 PM
  2. مفهوم‌شناسی پلیس و وظایف آن
    توسط MR_Jentelman در انجمن حقوق
    پاسخ ها: 0
    آخرين نوشته: 14th January 2011, 09:02 PM
  3. مقاله: روشهاي بهينه سازي
    توسط sarina_ در انجمن سایر موضوعات مهندسی عمران
    پاسخ ها: 0
    آخرين نوشته: 27th October 2010, 03:05 PM
  4. حقوق تجارت
    توسط MR_Jentelman در انجمن حقوق بین الملل
    پاسخ ها: 7
    آخرين نوشته: 16th September 2010, 09:20 PM

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •