من میخوام 100 تا میکرو AVR رو به فاصله 20-30 متری از هم شبکه کنم. میکرو ها اتمگا 8 هستن.
بهترین راه از لحاظ هزینه و راحتی چیست ؟
RS485 ? وایرلس ؟ یا .....
اگر اشتباه نکنم RS485 بیشتر از 32 تا وسیله جواب نمیده
از وایر لس استفاده کنی به صرفه تره
چون 20 متر سیم 3 رشته ای برای هر کدوم از میکروها هزینش بیشتر از یک عدد فرستنده معمولی حداقل 100 متری میشه.
اولا توی یک مسیر 20 متری یعنی فقط 20 متر کابل میخواییم. ولی اگر از 75176 استفاده میکنی محدودیت 32 تا رو داری و باید بین هر دو گروه 30 عددی یک repeater بذاری. البته اگر امنیت همه میکرو ها رو بتونی گارانتی کنی از rs232 هم میشه استفاده کرد ولی باید به هم اصطلاحا زنجیرشون کنی. اینجوری هم باز 20 متر کابل سه رشته بیشتر نمیخوای.
اگر مجبوری از 75176 استفاده کنی میتونی rs422 ببندی که دردسر ساخت repeater یخده کمتر بشه.
البته انواعی مثل st485 هم هست که 64 یا بیشتر هم جواب میده ولی فکر نکنم توی ایران گیر بیاد.
با RS485 چند تا میکرو رو میشه شبکه کرد ؟ آیا آخرین میکرو که فاصله 1 یا 2 کیلومتری داره دیتا بهش سالم میرسه ؟
از کدام چیپ برای 485 استفاده کنم که هم ارزون باشه و هم مطمئن .
ad485 یا max485
فقط دقت کن این پروتکل هالف هستش
یعنی در یک زمان فقط یل ارسال داری یا دریفت
دوستان راستی یه سوال
اون 2سیمی که در 485 استفاده میشه باید رشته دور هم تابونده بشه
هرچه سعی کنیم لایه های نرم افزاری زیاد کرده و از سخت افزار دور کنیم مشکلات(باگ ها) کمتر خواهد شد(امنیت بیشتری خواهید داشت)
بهترین جواب دهنده برای سوال شما، خود شما هستید البته بعد تلاش،پشتکار و مطالعه بیشتر
میدونی مشکل ما کجاست؟سرمایه و مغز ها رو نمیتونیم یکجا جمع کنیم...
تعدادی ماژول GPS GP5MX1513F1 با بالاتریت حساسیت -170db به قیمت خرید بفروش میرسد
طبق مدارک شرکت زیمنس rs485 و rs422 در محیط های با نویز کم تا متوسط بین 500 تا 1200 متر روی سرعت 9600 برد داره. اگر فاصله بیشتر از این بخواد بشه دیگه روش های معمول جواب نمیده. معمولا در محیط های صنعتی مودم نصب میکنن یا اینکه پروتکل خاصی مثل TRL2 رو استفاده میکنن که حتی با وجود خرابی سیگنال اطلاعات بصورت امن ارسال بشه.
مرسوم ترین چیپ توی بازار 75176 شرکت تکزاس هست ولی همونطور که n340 گفتن فعلا این دو تا چیپ هم بطور عمومی استفاده میشه. البته نوع ها خاص تری مثل ST485 هم هست که میتونه 64 تا وسیله رو به هم وصل کنه و ایضا یک مدل جدید توسط شرکت تکزاس سال پیش تولید شد که تا 128 وسیله رو هم جواب میده. ولی من داخل ایران بیشتر 75176 رو دیدم.
آی سی SN65LBC184 تا 128 وسیله رو هم به هم اتصال میده که مثل اینکه تا 384 NODE اش هم روی سایت تکزاس هست.
یه آی سی 485 بهم معرفی کنید که تو ایران باشه و بشه حداقل 60-70 تا میکرو رو تو فاصله 20 متری از هم شبکه کرد.
چون قراره 100 تا از این دیوایس ها ساخته بشه قیمت آی سی مهمه که خیلی گرون نباشه.
اگر قراره که کد این آی سی ها رو خودت بنویسی و فاصله بین دو آی سی متوالی از 20 متر بیشتر نشه نویز هم کم باشه میتونی max232 یا مدار معادل ترانزیستوریشو ببندی و txd میکروی اولی رو به rxd میکروی دومی وصل کنی و همینطور تا آخر. اما آخرش بایستی ارتباط بین txd برد آخری با rxd برد اولی رو با استفاده از یک 75176 برقرار کنی.
بر خلاف تصور میزان تاخیر ارسال و دریافت بین میکروی اول و آخر در یک مسیر فقط به اندازه ارسال یک بایت هست. به عنوان مثال روی 9600 حدود 1.2 میلی ثانیه. ولی آخرش اگه اطلاعات جزئی تری بگی شاید بشه بهتر راهنمایی کرد. چون این روش ها خیلی به چگونگی نیاز بستن این تعداد آی سی به هم و پروتکل ارتباطی اش بستگی داره. توی این فاصله میشه با سرعت 9600 براحتی کار کرد. که میشه چیزی حدود 870 بایت در ثانیه سرعت کار سریال. ولی الزاما بایستی از طریق وقفه و ماشین وضعیت کار انجام بشه تا هم سرعت بالایی داشته باشه هم سر بار کمی روی اجرای کل برنامه بذاره.
برنامه میکرو کاملا با خودم هستش. پروتکل ارتباطی RS485 باید باشه چون با RS232 نمیشه شبکه کرد و تو فاصله بیشتر از 20 متر مطمئن نیست.
تمام میکرو ها با یک کابل 4 الی 6 رشته ای باید به هم وصل بشن . 2 تا سیم برای تغذیه همه بردها و 2 تا سیم هم برای 485 و اگر نیاز به 2 رشته دیگه نباشه که دیگه بهتر. سرعت ارتباط مهم نیست چون دیتای زیادی قرار نیست ارسال بشه فقط از کامپیوتر میخوام به تمام میکروها کامند ارسال کنم و پاسخ رو از هر میکرو بگیرم.
برای شبکه احتیاجی به پروتکل rs485 نیست. همونطور که در پست قبلی گفتم میشه از rs232 هم استفاده کرد. در حقیقت شما منظورت از شبکه استفاده از توپولوژی bus هستش اما اون چیزی که من توضیح دادم توپولوژی ring هست. تنها مسیر برگشت بخاطر مسافت زیاد بایستی rs485 باشه. طبق شکل زیر:
در شکل میکروی صدم با یک کوپل rs485 اقدام به ارسال اطلاعات از طریق rs485 میکند.
من برای اطمینان کار و عدم ایجاد نویز کل میکروها رو میخوام با 485 بهم وصل کنم. چندتا سوال ؟
1- تغذیه تمام میکروها با دو رشته سیم 12 ولت ارسال میشه و با 7805 به هر میکرو میرسه . حالا 2 تا موضوع اینجا مطرحه الف ) طول کل کابل ممکنه 1 کیلومتر بشه آیا تغذیه تو طول مسیر کمتر از 9 ولت میشه ؟ ب) کابل تغذیه و دیتای 485 در یک کابل هستند روی هم تاثیر نمی زارند ؟
2- برای اینکه به هر میکرویی که خواستم فرمان بدم باید برای هر میکرو یه ID یا آدرس تعریف کنم ؟ چجوری میتونم این کارو انجام بدم ؟
3- تمام میکروها باید هر 5 دقیقه یکبار دمای محیط رو برای کامپیوتر ارسال کنند آیا این باعث تداخل نمی شه ؟
چند تا جواب!!
1- از 7805 استفاده نکن چون تلفات بالایی پیدا میکنی. از dc2dc استفاده کن. گرچه گرونتره.
2- 485 تا 1200 متر روی محیط با نویز متوسط هم جواب میده بنابراین از یک کابل استفاده کردن مشکل چندانی پیش نمیاره. اگرچه بهتره مسایل power saving رو رعایت کنی.
3- یک مقدار یک بایتی به عنوان آدرس یا در زمان پروگرام کردن میکرو در اون قرار بده یا از dipswitch استفاده کن یا یک مکانیسم کمکی برای ست کردن آدرس با استفاده از خط rs485 در بردت ایجاد کن.
4- اگر همه با هم و بدون هماهنگی بخوان اینکارو ارسال کنن چرا. میشه عین حموم زنونه هیچ کس چیزی نمیفهمه. PC درخواست رو میفرسته تا دمای هر کدوم رو تک به تک بگیره. حالا میشه این ارسال درخواست رو یکبار انجام داد یا به ازای هر میکرو یک درخواست. ولی من باشم به ازای هر کدوم یک درخواست مجزا میفرستم.
5- (گر چه سئوال مطرح نشد!) بهتره بردهایت امکانی برای repeat کردن هم داشته باشن ولی اختیاری باشه تا در هر محلی که قرار بود تعداد میکروها به 30 عدد برسه اطلاعات تکرار بشه. وگرنه با آی سی های معمول بیشتر از 32 میکرو رو نمیتونی بهم وصل کنی. (البته وصل میشه اما خوب ..... کار نمیکنه!) یعنی بعضی از بردهات با بقیه فرق کنن (2 تا نوع برد) یا بعضی ها کامل مونتاژ نشده باشن.
راستی یادت رفت بازم سئوال کنی ولی من جواباشو میدونم!!
1- استفاده از rs232 نویز ایجاد نمیکنه. بلکه به نویز حساستره.
2- تمامی این مسائل بدون پیاده سازی یک پروتکل ارتباطی مطمئن مبتنی بر زمانبندی و روالهای کشف خطا کشکه. یعنی با بروز اولین مسئله ممکنه کل خط از کار بیفته.
3- اگر دیدی این موارد هم مشکلتو حل نمیکنه تنها راه حلی که بنظر میرسه استفاده از پروتکل TRL/2 هستش که با وجود نویز بالا هم براحتی جواب میده. البته یک مدار کوپل آنالوگ میخواد که یه کمی هزینه رو بالا میبره.
4- اگر این میکروها مستقیما به برق شهر دسترسی داشته باشن میشه با انجام احتیاط های لازم مستقیما با یک کوپل خازنی تغذیه مورد نیاز رو مستقیما و بدون ترانس از برق شهر تامین کرد. چون یک مصرف 100 میلی آمپری برای 100 میکرو میشه جریانی برابر با 10 آمپر. (یخده زیاد نیست؟)
75176A در زمان بیکاری چیزی حدود 40 میلی آمپر جریان میکشه. اگر فرض کنیم میکرو ات 10 میلی آمپر مصرف کنه و بقیه قطعاتت هم فی سبیل الله کار کنن تازه میشه 5 آمپر!
دیدگاه