اطلاعیه

Collapse
No announcement yet.

شبکه کردن 3تا میکروی mega32 با پروتکل rs485

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    شبکه کردن 3تا میکروی mega32 با پروتکل rs485

    سلام من می خواستم چندتا میکروی avr رو با هم شبکه کنم (برای فاصله در حدود 30 تا 100 متر)
    اول می خواستم میکرو ها رو به روش i2c باهم شبکه کنم و در ورودی هر میکرو یک مبدل i2c به rs485 بزارم که هرکاری کردم مبدل کار نکرد
    (البته این پست رو زده بودم و به جواب نرسیدم: http://www.eca.ir/forum2/index.php?topic=36788.0)
    یکی از میکرو ها فقط اطلاعات میفرسته و دوتاشون فقط بگیرن کافیه
    می خواستم ببینم برای شبکه کردن با استفاده از rs485 باید چکار کنم مدارش چیه نحوه برنامه نویسیش به چه شکله، آیا مستقیم میشه این کار رو کرد یا باید از یکی از روش ها ارتباطی میکرو استفاده کنم و بعد از مبدل برای rs485 استفاده کنم

    راستی فعلا اگه بتونم با این روش فقط یک بایت اطلاعات در هر ثانیه رو بین میکرو ها جابجا کنم کافیه

    #2
    پاسخ : شبکه کردن 3تا میکروی mega32 با پروتکل rs485

    این مقاله ای که من دارم زبان انگلیسی و فقط در مورد شبکه کردن RS485 هستش(از سری مقالات مجله CIRCUIT CELLAR ) . دیتایی هم که بهش میدی سریال هست . من خودم اون آخرین مدارشو بستم و جواب گرفتم . شما هم یه نگاهی بنداز شاید به دردت خورد.


    http://iossd.org/forum/topic/rs485-42
    A-Hosseini

    دیدگاه


      #3
      پاسخ : شبکه کردن 3تا میکروی mega32 با پروتکل rs485

      سلام عزیز،سال نو مبارک،من 3تا میکرو به هم وصل کردم باadm485 یه نکته هست اونم پایه انتخاب send یا recieve که باید اونو فعال کنی سوالی داری در خدمتم

      دیدگاه


        #4
        پاسخ : شبکه کردن 3تا میکروی mega32 با پروتکل rs485

        نوشته اصلی توسط electronet_ir
        این مقاله ای که من دارم زبان انگلیسی و فقط در مورد شبکه کردن RS485 هستش(از سری مقالات مجله CIRCUIT CELLAR ) . دیتایی هم که بهش میدی سریال هست . من خودم اون آخرین مدارشو بستم و جواب گرفتم . شما هم یه نگاهی بنداز شاید به دردت خورد.


        http://iossd.org/forum/topic/rs485-42
        سلام ممنون که پاسخ دادید راستش من می خواستم i2c رو به rs485 تبدیل کنم. اما هر کاری که کردم نشد از مداری که توی این تاپیک گفتم استفاده کردم:
        http://www.eca.ir/forum2/index.php?topic=36788.msg184641#msg184641
        البته اون مدار رو که بستم روی خطوط rs485 و روی خروجی گیت های Nor مقاومت 1k به صورت Pullup قرار دادم، اما مدار کار نکرد
        الان این مداری که شما دادید رو نگاه کردم به نظر میاد که از روش خوبی استفاده کرده جهت ورود و خروج رو به دیتای خروجی ربط داده و باید کار کنه، فقط من الان خونه ic555 و 751768 رو ندارم، البته rs485 دارم که فکر کنم بشه جایگزین 751768 کرد، به نظر شما میشه این مدار رو توی پروتئوس تست کرد

        راستی یه سوال هم داشتم اصلا روتین ترین روش برای ارتباط میان میکرو ها با استفاده از rs485 چیه؟(منظورم تنظیمات میکرو و روش استفاده شده در میکرو برای انتقال یکی بایت اطلاعاته)

        دیدگاه


          #5
          پاسخ : شبکه کردن 3تا میکروی mega32 با پروتکل rs485

          راستش من از اون مدار جواب گرفتم و برای جای صنعتی هم ازش استفاده کردم (7 گره ارسال و دریافت فاصله هر گره تقریبا 20متر بود ( البته بشتر هم جواب میده ولی من همین قد لازمم بود )).
          اون دوتا آی سی هم دقیقا مثل هم هستن حتی پین هاشون با این فرق که75176 یک ششم 485 قیمت داره و به صرفه تره .

          A-Hosseini

          دیدگاه


            #6
            پاسخ : شبکه کردن 3تا میکروی mega32 با پروتکل rs485

            این روش برای i2c جواب نداد، فکر کنم به این خاطر باشه که در i2c دو کانال data in و data out به هم وصلند، و زمانی هم که data in فعال بشه پایه Trig یه سیگنال میگیره و باعث قطع شدن data in میشه،
            چیزی که به فکرم رسید پایه شماره یک xx485 رو به یه بافر وصل کنیم و خروجی بافر رو که همون data in است به data out وصل کنیم و بعد به پایه i2c میکرو وصل بشه بعد خروجی بافر و not ورودی بافر رو باهم and کنیم و به تریگ بدیم

            دیدگاه


              #7
              پاسخ : شبکه کردن 3تا میکروی mega32 با پروتکل rs485

              من زیاد آشنایی با I2C ندارم. شرمنده که نمیتونم کمکت کنم
              A-Hosseini

              دیدگاه


                #8
                پاسخ : شبکه کردن 3تا میکروی mega32 با پروتکل rs485

                من خودمم فعلا بیخیال i2c شدم، اما شما می تونی برام توضیح بدی که برای ارتباط دوتا ic باهم از این روش چکار باید بکنم، فرض کنید به پایه های پورت a میکروی یک، سوییچ وصل کردم و به پایه های پورت a میکروی 2، led وصل کردم و می خوام led ها نشان دهنده وضع سوییچ ها باشند

                دیدگاه


                  #9
                  پاسخ : شبکه کردن 3تا میکروی mega32 با پروتکل rs485

                  نوشته اصلی توسط arashonline
                  من خودمم فعلا بیخیال i2c شدم، اما شما می تونی برام توضیح بدی که برای ارتباط دوتا ic باهم از این روش چکار باید بکنم، فرض کنید به پایه های پورت a میکروی یک، سوییچ وصل کردم و به پایه های پورت a میکروی 2، led وصل کردم و می خوام led ها نشان دهنده وضع سوییچ ها باشند
                  چرا با سریال این کارو نمیکنی ( به چه زبونی کد مینویسی ، انشااله که C باشه )
                  A-Hosseini

                  دیدگاه


                    #10
                    پاسخ : شبکه کردن 3تا میکروی mega32 با پروتکل rs485

                    من هم c بلدم هم بیسیک اما برای شبکه کردن با i2c از زبان c استفاده می کردم، اولش می خواستم برم سراغ spi ولی نمی دونم چرا از i2c بیشتر خوشم آمد
                    حال هر کاری شما بگید می کنم

                    دیدگاه


                      #11
                      پاسخ : شبکه کردن 3تا میکروی mega32 با پروتکل rs485

                      سلام
                      من می خواستم چند تا میکرو رو شبکه کنم با 485 بعد از کلی نقشه های جور واجور بالاخره ازش جواب گرفتم ... اول طول سیم من 20 سانتیمتر بود و با نرخ 9600 ارسال می کردم اما یه مشکل وجود داشت اونم اینکه اگر دستور ارسال رو به این صورت می نوشتم ، هیچ چیزی به سمت مقابل نمی رسید printf("hello&quot اما اگر هر حرف رو جدا می فرستادم و بعدش چند میلی ثانیه فاصله می ذاشتم اطلاعات ارسال می شد . طول سیم رو بیشتر کردم تقریبا 20 متر اما دیگه اطلاعات من غلط ارسال می شد مثلا اگز 1001 رو می فرستادم اون طرف همه می شد p و q یعنی pqqp ...
                      نرخ ارسال رو تا حد 300 پایین آوردم مشکل دومم حل شد یعنی 0 و 1 ها درست می رسید ولی مشکل اولم یعنی ارسال پشت سر هم اطلاعات باز هم سر جای خودش بود
                      (از کریستال 11.0592 استفاده کردم تا ارسالها دقیق باشند میکرو هم atmega8l بود سیم مورد استفاده هم کابل شبکه cat5 که هم برق هم دیتا رو بفرسته )
                      کسی نظری نداره؟
                      Don't hesitate to ask any question ..

                      دیدگاه


                        #12
                        پاسخ : شبکه کردن 3تا میکروی mega32 با پروتکل rs485

                        برای شبکه کردن دو یا چند میکرو با استفاده از rs485 چند تا مسئله مهم رو باید رعایت کنین.

                        1- همیشه دو تا میکرو اول و آخر مسیر هستن و بقیه در میانه مسیر. بین دو خط A و B آی سی مورد استفاده (پین های 6 و 7) برای دو میکروی اول و آخر بایستی یک مقاومت 120 اهمی به عنوان Terminator قرار داده بشه ولی برای میکرو نباید.

                        2- اگر قراره لحظاتی پیش بیاد که سیگنالی روی خط نباشه باید میکروی فرمانده دو با دو مقاومت یکی از خطوط رو pull-up کنه و دیگری رو push-pull یا اونجوری که مرسومه میگن pull-down. این برای اینه که وقتی کسی دیتایی نمیفرسته خط در وضعیت "رها شده" نباشه.

                        3- با استفاده از آی سی های موجود در بازار بطور عام شما مجاز نیستین بیش از 32 میکرو رو روی یک باس وصل کنین. اگه تعداد میکرو ها بیش از این باشه باید این میکرو ها به گروههای 30 تایی شکسته بشه و توسط repeater سیگنالهای بین تکه باس های 32 تایی انتقال داده بشه. البته آی سی هایی هم در بازار (خارج) هست که بشه تا حتی 384 آی سی رو روی یک باس قرار داد ولی با 75176 و MAX485 فقط 32 تا میشه. گروهها هم 30 تایی هست چون اول و آخرش دو کانال تکرار کننده اضافه میشه و اینا خودشون عنصر شبکه هستن.

                        4- در زمان استارت میکروی فرمانده خط خودش رو در حالت ارسال قرار میده و بقیه در حالت دریافت. در این فرم فرض بر اینه که فرمانده دستور میده (ارسال درخواست) بقیه در صورت نیاز جواب میدن. اما در این حالت باید توجه کنین که چون هر وقت فقط یکی مجازه ارسال اطلاعات داشته باشه هر فرمانبری که باید جواب بده باید اقدام به ارسال اطلاعات روی خط کنه. بنا براین درخواستهای ارسالی از فرمانده به فرمانبر ها میتونه شامل 2 دسته درخواست باشه. درخواست های عمومی که برای اطلاع عام ارسال میشه و فرمانبر نباید به اونها جواب بده (اعلان عمومی یا broadcast یا اعلان گروهی یا multicast) و ارسال های خاص که برای یک فرمانبر ارسال میشه و در صورت نیاز باید فرمانبر بهش جواب بده.

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

                        آی دی فرضی مستر فراموش نشه!

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

                        مهم:
                        اگر خواستین این کار رو در روال وقفه انجام بدین باید برای شناسایی انتهای ارسال بایت آخر از وقفه ای استفاده کنین که پس از ارسال آخرین بیت های سریال و نه خالی شدن رجیستر ارسال کننده فعال میشه.

                        بسیار مهمتر:
                        در هر صورت بایستی از مکانیسم های زمانی برای اطمینان از شکست ارسال کننده داده ها به میکروی شما و پرهیز از حلقه بینهایت برای دریافت جواب از میکروی مقابل استفاده بشه.

                        ضمنا:
                        سرعت شما در محیط های با نویز متوسط میتونه تا نزدیک 100 کیلو بیت در ثانیه (حدودا؛ یا حتی 115200) به ازای 100 متر مسافت هم برسه. شما احتمالا مشکل مقاومتی داشتین که مجبور شدین سرعتتون رو پایین بیارین. توی این مسافت سرعت رو میشه تا نزدیک 1 مگا بیت هم بالا یرد.

                        ضمنا 2:!!!
                        اینشو دیگه یادم نمیاد. تا همینجاشم فکر کنم کلی چیز تایپ کردم!!!

                        دیدگاه


                          #13
                          پاسخ : شبکه کردن 3تا میکروی mega32 با پروتکل rs485

                          از اینکه این همه توضیح دادید ممنون
                          من مقاومت 120 اهمی رو استفاده کردم و تو میکرو مستر هم با دو تا مقاومت 560 اهم یکی از خط هارو pull up و دیگری رو pull down کردم (مطابق نقشه )
                          اما ...
                          Don't hesitate to ask any question ..

                          دیدگاه


                            #14
                            پاسخ : شبکه کردن 3تا میکروی mega32 با پروتکل rs485

                            شماتیکتون رو بذارین تا با هم یه چکش کنیم. اما برای اطلاعتون یک app note روی سایت ماکسیم (اگه اشتباه نکنم) هست که کل مورد رو توضیح داده:
                            AN763
                            این فایل هم از سایت تکزاس هست:
                            TIA-EIA-485

                            لینک هاشو متاسفانه ندارم. ولی خودم از گوگل پیدا کردم.

                            دیدگاه

                            لطفا صبر کنید...
                            X