前言
這個(gè)文章的題目有點(diǎn)騙眼球的感覺,其實(shí)是自己踩過大坑,很是痛恨這個(gè)電路,希望大家以后不要踩了。工程師要畫這個(gè)電路時(shí),網(wǎng)上一搜,不經(jīng)深入分析就拿來用,給項(xiàng)目埋了炸彈。
RS485自動(dòng)收發(fā)電路
因?yàn)?a href="http://wenjunhu.com/tags/rs/" target="_blank">RS485采用叉分信號,只支持半雙工。正常的RS485芯片驅(qū)動(dòng)電路是需要GPIO來切換發(fā)送和接收模式。如下圖所示,一般的RS485電平轉(zhuǎn)換芯片都有RE/DE腳,用來切換收發(fā)模式。
RS485標(biāo)準(zhǔn)電路參考
嵌入式行業(yè),特別是MCU相關(guān)的都比較愛摳成本,便宜的MCU往往就是GPIO數(shù)量不夠。如果是上Linux系統(tǒng)的方案,一般串口支持RS485就還得改GPIO驅(qū)動(dòng),會(huì)有軟件工作量。于是有大聰明發(fā)明了自動(dòng)切換的電路,省掉了那個(gè)GPIO。下圖是網(wǎng)上找的一個(gè)自動(dòng)收發(fā)電路圖,收發(fā)原理直接看圖中文字描述。
1. 不發(fā)送數(shù)據(jù)時(shí),接收模式,沒問題。
2. 發(fā)送數(shù)據(jù)0時(shí),發(fā)送模式,輸出0,沒問題。
3. 發(fā)送數(shù)據(jù)1時(shí),接收模式,外圍A,B由上下拉電路控制,輸出1,問題出在這里。
RS485自動(dòng)收發(fā)電路
由于自己示波器測量的圖片丟失,網(wǎng)上找別的測試圖來說明,引用文章鏈接:
https://zhuanlan.zhihu.com/p/48018717
三極管的關(guān)斷時(shí)間較長(主要是由于三極管關(guān)斷時(shí)的存儲時(shí)間較長),因此若TXD發(fā)送低電平,DE&RE引腳較長時(shí)間后才會(huì)升至高電平,才會(huì)切到發(fā)送模式,發(fā)送低電平的延時(shí)時(shí)間較長,如下圖所示為1.204 μs。
關(guān)斷延時(shí)
二是自動(dòng)收發(fā)電路發(fā)送高電平是通過外部上下拉電阻驅(qū)動(dòng)的,上升沿較緩慢,波形如下圖所示,可以看出,發(fā)送高電平的上升沿較為緩慢,限制了高速通信的應(yīng)用。
上下拉驅(qū)動(dòng)上升沿緩慢
RS485自動(dòng)收發(fā)電路風(fēng)險(xiǎn)
如下圖所示,TXD變?yōu)楦唠娖?,DE&RE引腳降為低電平,AB差分電壓緩慢上升,由于此時(shí)RS-485收發(fā)器已經(jīng)處于接收狀態(tài),在AB差分電壓上升至RS-485收發(fā)器門限電平前RXD引腳會(huì)出現(xiàn)到一段時(shí)間的低電平信號,例如門限電平為-200mV~-50mV的收發(fā)器,AB差分電壓上升至-50mV前RS-485收發(fā)器均可輸出低電平,此低電平信號的時(shí)間與AB差分電壓上升時(shí)間和RS-485收發(fā)器的接收延時(shí)有關(guān)。由于串口一般是將每個(gè)位分成16份,檢測中間的3份的電平信號從而確定此位的信號高低,因此若此低電平信號保持至每個(gè)位的信號檢測時(shí),則會(huì)使MCU接收到一個(gè)起始位,從而接收到錯(cuò)誤的數(shù)據(jù),因此這個(gè)問題同樣限制了高速通信的應(yīng)用并且降低了通信的可靠性。
rxd接收到低電平
我們在實(shí)際應(yīng)用中就是遇到這個(gè)問題,概率收到錯(cuò)誤數(shù)據(jù),導(dǎo)致丟包(數(shù)據(jù)校驗(yàn)不通過而丟棄)。在研發(fā)的環(huán)境中,連接的終端設(shè)備少,距離近,這個(gè)丟包概率比較低,不容易發(fā)現(xiàn)。在Modbus應(yīng)用中,概率丟包只會(huì)影響數(shù)值更新速度慢,影響不大。但是我們在現(xiàn)場做升級操作時(shí),幾乎很難成功,因?yàn)樵谘邪l(fā)環(huán)境沒問題,我們優(yōu)先排查現(xiàn)場環(huán)境信號干擾等問題,浪費(fèi)了很多時(shí)間。這個(gè)電路有兩個(gè)缺點(diǎn):
1. 通信速度慢:
三極管有電容效應(yīng),導(dǎo)致關(guān)斷時(shí)間較長,導(dǎo)致RE/DE從低到高電平變化出現(xiàn)比較大的斜坡.同時(shí)485輸出高電平,是依靠上下拉來完成的,會(huì)導(dǎo)致上升沿不夠迅速,因此上下拉的阻值選擇也是影響速度的關(guān)鍵。
2. 驅(qū)動(dòng)能力弱:
由于當(dāng)tx為高,485電平是由其上拉電阻完成的,因此弱提高驅(qū)動(dòng)能力,就要減小電阻,由于485芯片驅(qū)動(dòng)能力有限,電阻太小會(huì)導(dǎo)致tx為低的時(shí)候,485芯片無法將485總線拉低,因此總線上所有上拉電阻的并聯(lián)值不應(yīng)該小于375歐。還用當(dāng)接入120歐的終端電阻的時(shí)候,AB兩相的電壓差由終端電阻和上下拉分壓得到,會(huì)導(dǎo)致AB兩相的電壓差變小,因此自動(dòng)收發(fā)串口轉(zhuǎn)RS485設(shè)計(jì)不太適合添加終端電阻。
終端電阻的問題
終端電阻主要是為了匹配通信線的特性阻抗,防止信號反射,提高信號質(zhì)量。在組建RS-485總線網(wǎng)絡(luò)時(shí),通常使用特性阻抗為120Ω的屏蔽雙絞線,由于RS-485收發(fā)器輸入阻抗一般較高(例如RSM485ECHT輸入阻抗為96kΩ,最多可連接256個(gè)節(jié)點(diǎn)),在信號傳輸?shù)娇偩€末端時(shí)會(huì)由于受到的瞬時(shí)阻抗發(fā)生突變(以RSM485ECHT為例,阻抗由120Ω變?yōu)?6kΩ),導(dǎo)致信號發(fā)生反射,影響信號的質(zhì)量。
實(shí)際上只有距離+高速率的環(huán)境需要添加終端電阻,例如長度>500米 + 波特率超過500kbps。
總結(jié)和建議
RS485總線和電路看似簡單,但是要看應(yīng)用場景,對穩(wěn)定性有要求的不建議使用自動(dòng)收發(fā)驅(qū)動(dòng)電路。
在沒有遇到信號反射問題時(shí),盡量不要使用終端電阻;硬件設(shè)計(jì)時(shí),可以預(yù)留外掛或焊接120Ω電阻的位置。
要查看RS485驅(qū)動(dòng)芯片的輸入阻抗參數(shù),和支持外掛設(shè)備數(shù)。上、下拉電阻與收發(fā)器輸入阻抗的并聯(lián)值應(yīng)大于375Ω;
如果是現(xiàn)場做工程項(xiàng)目,建議帶上萬用表和示波器,測一下空閑狀態(tài)下的電壓值,收發(fā)的信號質(zhì)量,這樣才安心。
-
RS485
+關(guān)注
關(guān)注
39文章
1159瀏覽量
82324 -
收發(fā)電路
+關(guān)注
關(guān)注
0文章
23瀏覽量
2018
原文標(biāo)題:踩坑又給項(xiàng)目埋雷,這RS485自動(dòng)收發(fā)電路設(shè)計(jì)
文章出處:【微信號:zfdzszy,微信公眾號:張飛電子實(shí)戰(zhàn)營】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論