با سلام کسی آموزش و برنامه نمونه ای برای ارتباط 2 میکرو به هم با آیسی max485 داره ؟؟؟
اطلاعیه
Collapse
No announcement yet.
آموزش و نمونه برنامه پروتکل rs485
Collapse
X
-
پاسخ : آموزش و نمونه برنامه پروتکل rs485
نوشته اصلی توسط kaveh.sبرای اتصال دو میکرو نیازی به تبدیل ttl با rs485 نداری
rs485 تا جایی که من میدونم برای اتصال به com کامپیوتر استفاده میشه
واسه ارتباط بین دو میکرو میتونی txd و rxd میکرو ها رو برعکس به همدیگه وصل کنی و تمام .
rs485 برای ارتباط دو میکرو تو فاصله های زیاده . از rs232 برای ارتباط با کامپیوتر استفاده می کنند . :eek:دنیا بر پایه برنامه هایی هست که خدا با زبان برنامه نویسی خودش مینویسد . کامپایل شده آن این جهان و قوانین آن است . start آن تولد است و end آن مرگ . پر از گزینه های شرطی و دستورات حلقه و تکرار ...
دیدگاه
-
پاسخ : آموزش و نمونه برنامه پروتکل rs485
سلام دوست عزیز
سوالی که فرمودید اشکال بنده هم بود و در این انجمن مطرح کردم و خوشبختانه هیچ کس کمکی نکرد(اصلا نمی دونم چرا وقتی یک نفر در مورد rs485 سوالی می پرسه جدی گرفته نمی شه و پاسخ خوبی داده نمی شه) و بنده شخصا آستینا رو بالا زدم.
rs485 معرکه هست البته اگر چند نکته رو رعایت کنی
این rs485 ما یک ارتباط نیمه دوطرفه ایجاد میکنه که تا حدود 1200 متر میتونه دیتا رو ارسال کنه.
اگر بخوای 2 میکرو رو از طریق rs485 با هم ارتباط بدی باید از 2 تا rs485 استفاده کنی.
فرض کن یکی از میکروها mega 8 و یکی دیگه mega128 هست.(برای این مثال دلیل دارم .چون mega 128 دو تا کانال rx tx داره و دستورات فرق میکنه.
حالا شما باید تصمیم بگیری که ارتباط یک جهته باشه یعنی اینکه یکی فقط ارسال کنه و یکی دیگه فقط دریافت کنه یا اینکه هر دو هم ارسال کنن هم دریافت
پایه ی 2 و 3 rs485 رو باید به هم وصل کنی و بعد بزنی به یکی از I/o ها ی میکرو (برای انتخاب جهت ارسال) پایه ی 1 باید وصل بشه به rx و پایه ی 4 باید وصل بشه به tx پایه ی 6 هردو rs485 باید به هم و پایه ی 7 هر دو rs485 باید به هم وصل شن (یعنی a<===a و b<====b) خب سخت افزار تمومه
توی برنامه ی mega 8 این طور می نویسی
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 1200
Config Portd.7 = Output
Portd.7 = 1
Dim Temp As String * 10
Dim Temp2 As String * 10
Temp = "1234"
Temp2 = "85"
''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' ''''
Do
Print Temp
Wait 1
Print Temp2
Wait 1
Loop
End
Portd.7 = 1 (پایه ی 2و3 rs485 برای تعیین جهت ارسال.وقتی 1 باشه یعنی تو مد ارسال هست)
وقتی یکی تو مد ارسال هست یکی دیگه باید تو مد دریافت باشه) پس توی mega128 داریم
$regfile = "m128def.dat"
$crystal = 8000000
$baud = 1200
$baud1 = 1200
Config Portd.7 = Output
Portd.7 = 0
Dim Temp As String * 10
Dim Temp2 As String * 10
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Com2 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Open "com2:" For Binary As #1
''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' ''''
Do
input #1,temp
Waitms 100
input #1, Temp2
Waitms 200
Loop
خب پردازیم به توضیح
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Com2 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
برای mega128 همین دو خط رو کپی پیست کن. اینجا ما com1 و com2 رو کانفیگ کردیم
Open "com2:" For Binary As #1 تو این خط ما می آیم com2 رو open می کنیم. اگر از rx0 و tx0 استفاده کردی باید com1 رو open کنی ولی اگر rx1 و tx1 رو استفاده کردی باید com2 رو open کنی.
input #1,temp با این خط ما دیتایی که به com2 میرسه رو تو متغیر temp می ریزیم.
خیلی نکته ها دیگه می مونه اگه خواستی بگو تا اونجایی که بلد باشم راهنمایی می کنم.
زکات علم رو باید داد.
مهندسای عزیز
من می دونم شما زکات خمس فطریه عیدی و همه و همه رو دادید ولی ما بی سوادا رو لطفا کمک کنید
به امید ظهور مولامون که صد البته نزدیک است
- تشکرها 3
دیدگاه
-
پاسخ : پاسخ : آموزش و نمونه برنامه پروتکل rs485
نوشته اصلی توسط majidrt27سلام دوست عزیز
سوالی که فرمودید اشکال بنده هم بود و در این انجمن مطرح کردم و خوشبختانه هیچ کس کمکی نکرد(اصلا نمی دونم چرا وقتی یک نفر در مورد rs485 سوالی می پرسه جدی گرفته نمی شه و پاسخ خوبی داده نمی شه) و بنده شخصا آستینا رو بالا زدم.
rs485 معرکه هست البته اگر چند نکته رو رعایت کنی
این rs485 ما یک ارتباط نیمه دوطرفه ایجاد میکنه که تا حدود 1200 متر میتونه دیتا رو ارسال کنه.
اگر بخوای 2 میکرو رو از طریق rs485 با هم ارتباط بدی باید از 2 تا rs485 استفاده کنی.
فرض کن یکی از میکروها mega 8 و یکی دیگه mega128 هست.(برای این مثال دلیل دارم .چون mega 128 دو تا کانال rx tx داره و دستورات فرق میکنه.
حالا شما باید تصمیم بگیری که ارتباط یک جهته باشه یعنی اینکه یکی فقط ارسال کنه و یکی دیگه فقط دریافت کنه یا اینکه هر دو هم ارسال کنن هم دریافت
پایه ی 2 و 3 rs485 رو باید به هم وصل کنی و بعد بزنی به یکی از I/o ها ی میکرو (برای انتخاب جهت ارسال) پایه ی 1 باید وصل بشه به rx و پایه ی 4 باید وصل بشه به tx پایه ی 6 هردو rs485 باید به هم و پایه ی 7 هر دو rs485 باید به هم وصل شن (یعنی a<===a و b<====b) خب سخت افزار تمومه
توی برنامه ی mega 8 این طور می نویسی
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 1200
Config Portd.7 = Output
Portd.7 = 1
Dim Temp As String * 10
Dim Temp2 As String * 10
Temp = "1234"
Temp2 = "85"
''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' ''''
Do
Print Temp
Wait 1
Print Temp2
Wait 1
Loop
End
Portd.7 = 1 (پایه ی 2و3 rs485 برای تعیین جهت ارسال.وقتی 1 باشه یعنی تو مد ارسال هست)
وقتی یکی تو مد ارسال هست یکی دیگه باید تو مد دریافت باشه) پس توی mega128 داریم
$regfile = "m128def.dat"
$crystal = 8000000
$baud = 1200
$baud1 = 1200
Config Portd.7 = Output
Portd.7 = 0
Dim Temp As String * 10
Dim Temp2 As String * 10
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Com2 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Open "com2:" For Binary As #1
''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' ''''
Do
input #1,temp
Waitms 100
input #1, Temp2
Waitms 200
Loop
خب پردازیم به توضیح
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Com2 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
برای mega128 همین دو خط رو کپی پیست کن. اینجا ما com1 و com2 رو کانفیگ کردیم
Open "com2:" For Binary As #1 تو این خط ما می آیم com2 رو open می کنیم. اگر از rx0 و tx0 استفاده کردی باید com1 رو open کنی ولی اگر rx1 و tx1 رو استفاده کردی باید com2 رو open کنی.
input #1,temp با این خط ما دیتایی که به com2 میرسه رو تو متغیر temp می ریزیم.
خیلی نکته ها دیگه می مونه اگه خواستی بگو تا اونجایی که بلد باشم راهنمایی می کنم.
زکات علم رو باید داد.
مهندسای عزیز
من می دونم شما زکات خمس فطریه عیدی و همه و همه رو دادید ولی ما بی سوادا رو لطفا کمک کنید
فقط سه تا سوال :
1- شما زمین های رو یکی کردید ؟؟؟
2- دومی اینکه در اصل من می خوام یک آرایه 190 کراکتری از نوع string را بفرستم .بهتره جدا جدا (کاراکتر کاراکتر) بفرستم یا یکباره ؟؟؟؟
3 - تو شماتیک از یک مقاومت حرف زده بین پل های ارتباطی دوتا آیسی ؟؟ این چیه حتما لازم ؟؟؟دنیا بر پایه برنامه هایی هست که خدا با زبان برنامه نویسی خودش مینویسد . کامپایل شده آن این جهان و قوانین آن است . start آن تولد است و end آن مرگ . پر از گزینه های شرطی و دستورات حلقه و تکرار ...
دیدگاه
-
پاسخ : آموزش و نمونه برنامه پروتکل rs485
توی پروتکل rs485 نیازی نیست که زمین ها یکی بشه فقط کافیه a به a و b به b وصل بشه
در مورد کارکتر که حتما جدا جدا بفرست زیر 32 بیت
در مورد مقاومت ها هم باید خدمتت عرض کنم اگه از max485 استفاده می کنی نیازی به مقاومت نیست.در کل این مقاومت برای حذف دیتاهای گم شده در خط باس هست .اگه خواستی تست بگیر.برای مسافت بالا ازش استفاده کنی بهتر هست.من که تا الان حدود 150 تا مدار باهاش ساختم فقط توی 3-4 تای اول بین a و b مقاومت 120 اهمو گذاشتم ولی بقیه رو اصلا مقاومت نزدمبه امید ظهور مولامون که صد البته نزدیک است
دیدگاه
-
پاسخ : آموزش و نمونه برنامه پروتکل rs485
با سلام
میشه این پروتکل را تو پروتئوس شبیه سازی کرد ؟؟؟
من با MAX478 که شبیه همون 485 هست نتونستم شبیه سازی کنم .دنیا بر پایه برنامه هایی هست که خدا با زبان برنامه نویسی خودش مینویسد . کامپایل شده آن این جهان و قوانین آن است . start آن تولد است و end آن مرگ . پر از گزینه های شرطی و دستورات حلقه و تکرار ...
دیدگاه
-
پاسخ : آموزش و نمونه برنامه پروتکل rs485
نوشته اصلی توسط majidrt27آره خیلی راحت هست .من واست شبیه سازی می کنم.بگو چی می خوای؟
اگه دوتا دیگه مثل شما تو الکترونیک بودن الان دیگه ما تازه کارا غمی نداشتیم .
من فقط می خخوام دوتا MEGA32 به هم وصل شن . این یکی بفرسته مثلا ACTION=3
گیرنده هم بگیره و بگه اگه ACTION=3 بود مثلا SET PORTD,.7
من شبیه سازی کردن . تو گیرنده این ارورا میده
RX FRAME ERRORدنیا بر پایه برنامه هایی هست که خدا با زبان برنامه نویسی خودش مینویسد . کامپایل شده آن این جهان و قوانین آن است . start آن تولد است و end آن مرگ . پر از گزینه های شرطی و دستورات حلقه و تکرار ...
دیدگاه
-
پاسخ : آموزش و نمونه برنامه پروتکل rs485
سلام. ممنون از موارد مفید تجربی که ذکر میکنید . منم دارم با RS485 کار میکنم. منتها با یک میکرویی که حداکثر ولتاژ قابل قبول اون 3.3 ولت هستش . اگه ولتاژ پایه Tx مربوط به rs485 مستقیم بهش وصل بشه ، احتمال داره بسوزه یا سطح سیگنال رو درست تشخیص نده . خود آی سی RS485 هم که نمیتونه با ولتاژ 3.3 ولت درست کار کنه (طبق گفته دیتاشیت ) من گفتم بیام پایه Tx رو که به میکرو میره رو با یک تقسیم مقاومتی به سطح 0 و 3.3 ولت تبدیل کنم . یا با یه ترانزیستور که بیسش با یه مقاومت 10 کیلو به پایه Tx از آی سی rs485 وصل شده و کلکتور اون به 3.3 ولت وصل شده و امیتر اون به پایه Rx میکرو میره ، درست کنم. به نظر شما این روش خوبیه ؟ توی سرعت های پایین یا بالا مشکل نداره ؟
دیدم پایا یک آی سی داره به نام MAX3490 که با 3.3 ولت هم کار میکنه ولی گرونه . میخواستم ببینم روشی که گفتم مشکلی نداره ؟
ممنون میشم راهنمایی بفرمایید
"در عجبم از مردمی که خود زیر شلاق ظلم و ستم زندگی می کنند و بر حسینی می گریند که آزادنه زیست" شریعتی
در جهان روشنایی هایی وجوددارد که در عمیق ترین ظلمات نهانند.
دیدگاه
-
پاسخ : آموزش و نمونه برنامه پروتکل rs485
شما لطف دارید . وظیفه ی منه اگر بتونم کمکی کرده باشم.ولی از مهندسای سایت انتظار کمک بیشتر میشه
این هم فایل شبیه سازی شده به همراه برنامه ی مستر و اسلیو در بسکام
http://www.4shared.com/rar/CSS0wmUR/Majidrt27-rs485test.html?
فقط اگر کسی بلده بگه چه طور میشه یه جا در همین سایت upload کرد تا لینک مستقیم بشه
فقط یک نکته
اولین دیتایی که فرستاده میشه عادی هست ولی از دومی به بعد بهدیتای شما یک کارکتر به نام کارکتر نویز اضافه میشه که در lcd slave کاملا مشخص هست
بعضی وقت ها به صورت space هست و بعضی وقت ها به صورت ... .به امید ظهور مولامون که صد البته نزدیک است
دیدگاه
-
پاسخ : آموزش و نمونه برنامه پروتکل rs485
نوشته اصلی توسط majidrt27شما لطف دارید . وظیفه ی منه اگر بتونم کمکی کرده باشم.ولی از مهندسای سایت انتظار کمک بیشتر میشه
این هم فایل شبیه سازی شده به همراه برنامه ی مستر و اسلیو در بسکام
http://www.4shared.com/rar/CSS0wmUR/Majidrt27-rs485test.html?
فقط اگر کسی بلده بگه چه طور میشه یه جا در همین سایت upload کرد تا لینک مستقیم بشه
فقط یک نکته
اولین دیتایی که فرستاده میشه عادی هست ولی از دومی به بعد بهدیتای شما یک کارکتر به نام کارکتر نویز اضافه میشه که در lcd slave کاملا مشخص هست
بعضی وقت ها به صورت space هست و بعضی وقت ها به صورت ... .دنیا بر پایه برنامه هایی هست که خدا با زبان برنامه نویسی خودش مینویسد . کامپایل شده آن این جهان و قوانین آن است . start آن تولد است و end آن مرگ . پر از گزینه های شرطی و دستورات حلقه و تکرار ...
دیدگاه
-
پاسخ : آموزش و نمونه برنامه پروتکل rs485
نوشته اصلی توسط tictactoeسلام. ممنون از موارد مفید تجربی که ذکر میکنید . منم دارم با RS485 کار میکنم. منتها با یک میکرویی که حداکثر ولتاژ قابل قبول اون 3.3 ولت هستش . اگه ولتاژ پایه Tx مربوط به rs485 مستقیم بهش وصل بشه ، احتمال داره بسوزه یا سطح سیگنال رو درست تشخیص نده . خود آی سی RS485 هم که نمیتونه با ولتاژ 3.3 ولت درست کار کنه (طبق گفته دیتاشیت ) من گفتم بیام پایه Tx رو که به میکرو میره رو با یک تقسیم مقاومتی به سطح 0 و 3.3 ولت تبدیل کنم . یا با یه ترانزیستور که بیسش با یه مقاومت 10 کیلو به پایه Tx از آی سی rs485 وصل شده و کلکتور اون به 3.3 ولت وصل شده و امیتر اون به پایه Rx میکرو میره ، درست کنم. به نظر شما این روش خوبیه ؟ توی سرعت های پایین یا بالا مشکل نداره ؟
دیدم پایا یک آی سی داره به نام MAX3490 که با 3.3 ولت هم کار میکنه ولی گرونه . میخواستم ببینم روشی که گفتم مشکلی نداره ؟
ممنون میشم راهنمایی بفرمایید
"در عجبم از مردمی که خود زیر شلاق ظلم و ستم زندگی می کنند و بر حسینی می گریند که آزادنه زیست" شریعتی
در جهان روشنایی هایی وجوددارد که در عمیق ترین ظلمات نهانند.
دیدگاه
دیدگاه