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