問題由來:
兩個板子之間要通過開關量通信,比如,我這個板子發現你那個板子是高電平,我就怎么樣;我給你輸出一個高電平,你那邊的板子就怎么樣。就是這么一個開關量通信的問題。
主要問題是:低電平肯定都是0,高電平就有可能是3.3V或者5V,甚至是12V。(這是由不同的廠家自己規定的,也沒有一個統一的標准)
解決方案:
接收對方電平的電路設計:
分析:假設我現在用的單片機是3.3V的,所以我的單片機引腳接了一個10K的上拉電阻到3.3V。
如果對方電平輸入是0V,由於肖特基二極管導通壓降很小,我的單片機就會檢測為低電平。
如果對方電平輸入3.3V,5V,12V,總之只要是大於3.3V的電壓,我的單片機測到的電壓永遠是3.3V,這樣就不會由於輸入單片機引腳的電平過高燒壞單片機。同時,由於BAT54C可以承受30V的反向電壓,所以只要小於30V的電平都不會損壞BAT54C。
給對方高低電平的電路:
分析:CON3的1腳接對方板子的高電平VCC,3腳接對方板子的地,2腳是輸出的高低電平。
我的單片機引腳輸出低電平,光耦導通,S8050基極接收低電平,不導通,對方接收到高電平,它接收到的高電平就是它要求的高電平,從而不會損壞對方的電路板。
我的單片機引腳輸出高電平,光耦不導通,S8050基極接收高電平,導通,對方接收到低電平。
總結:電路雖然簡單,但是可以解決大問題。