Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 14535|回復: 7

【Arduino】如何接收or發送訊號經由 RS485傳輸線?

[複製鏈接]
發表於 2016-5-6 12:16:57 | 顯示全部樓層 |閱讀模式
請求大神教學指引一下,我現在必須藉由Arduino作控制端,接收及輸出訊號給我馬達Driver,經由Rs485的傳輸線,該如何做呢?
發表於 2016-5-6 17:34:46 | 顯示全部樓層
使用TTL轉RS-485模組兩個,一個給主控端 , 一個給受控端 , 中間用''雙絞線''連接 , 主控端寫 UART_SEND , 受控端寫 UART_RECEIVE ,寫法和 UART 一樣 , 差別在於 RS232和RS485 訊號不一樣 ,不想買現成的模組可以參考一下

MAX485 這個IC
 樓主| 發表於 2016-5-9 09:42:05 | 顯示全部樓層
謝謝您的建議喔,我會試試看得 :)
 樓主| 發表於 2016-5-10 12:43:30 | 顯示全部樓層
回復 2# alpha
請問一下如果我要藉由RS485傳送一個浮點數假如是1.23RS485只能傳輸binary 2進位還是可以傳輸 10進位數?
如果是binary是否還要寫程式將數字轉為binary呢
發表於 2016-5-10 13:44:59 | 顯示全部樓層
RS485和RS232是一樣的,將 1.23 轉成 "1.23" 就可以了 , Google 一下C語言有關 inttostr() , 或是 strtoint() 等相關函數就知道怎麼寫了
 樓主| 發表於 2016-5-11 12:52:02 | 顯示全部樓層
那麼在請問一下記憶體空間的事情
這樣傳"1.23"  總共是需要 幾個bit包含起始、結束位元的話?
是否用16進位編碼傳送可以降低記憶體空間 加快傳輸速度
因為我的系統有頻率的限制必須盡可能加快傳輸速度!

謝謝~
發表於 2016-5-12 10:29:59 | 顯示全部樓層
以 N,8,1 的設定來說一次傳送 8 個資料位元 , 可以視為 1 個 Byte , 以 Physical Layer 來說至少要有10個位元(包括一個 Start Bit 和 至少一個 Stop Bit , 詳情可參考 EIA-RS-232),不過早期的RS232傳送的是''可視字元,有些控制碼不能用,這個要確認一下現在的MCU支援狀況

理論上 1.23 佔用 4 個 Bytes , 要縮短的話可以考慮自行編碼 , 分析一下需要 "多少個'' Bits , 不要使用 BCD
發表於 2022-3-13 00:29:34 | 顯示全部樓層

谢谢大大分享
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-12-2 01:45 , Processed in 0.357056 second(s), 7 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表