之前為了 ESP8266 與 Arduino 介接問題, 探討過用 MOSFET 2N7000 製作位準轉換電路, 經我買零件實際測試可用, 而且是雙向有提升電阻, I2C 也可用的轉換方式, 參考 :
# 用 MOFFET 2N7000 做 5V 與 3.3V 位準轉換
不過對於 ESP8266 與 Arduino 介接還有其他方式, 雙向也不是必要, 因為 TX 與 RX 都是單向傳輸. 今天在下面文章中找到兩種新方法, 一個是用分壓電阻來將 Arduino 的 5V 降壓成 3.3V :
# A Simple IoT Project with the ESP8266 WiFi module
此文作者使用 3 個 1K 歐姆電阻串接, 將來自 Arduino 的 TX 接腳的 5V 電壓分壓, 得到 5*2/3=3.33 V 電壓給 ESP8266 的 RX 接腳. 由於 ESP8266 RX 內阻高, 所以電壓不會與理論差很多. 而 ESP8266 的 TX 接腳則直接與 Arduino 的 RX 連接, 不需要轉換為 5V, 因為在 TTL 邏輯而言, 大於 2.4V 即為 High 邏輯, 因此 ESP8266 的 RX 輸出的 3.3V 會被視為 High, 對於雛形板測試而言, 毋須提升到 5V 是沒問題的, 但對於產品而言, 基於穩定性, 不論 TX/RX 都做位準轉換為宜.
第二種方法是使用 3.3V 的稽納二極體, 如下列這篇 :
# ESP8266 wiring schemas
此文章列出六種介接方法, 其中第五種方法就是上面所提的電阻分壓法 (這裡用 220 歐姆), 而第三種方法就是稽那二極體法, 詳細說明參看 :
# Level Shifting Between TTL and CMOS
使用 1N5226 3.3V 稽納二極體與 10K 電阻串接, 這樣當 Arduino 的 TX 腳送出高電壓時, 稽納就會將其轉成 3.3V 輸出. 注意稽納二極體有並接一個 100uF 電容以吸納電壓突波 (例如 ESP8266 開機時). 下面這篇也是用稽納二極體 :
# First Impression on the ESP8266 Serial-to-WiFi Module
3.3V 的稽納二極體很便宜, 一顆大約 2 元左右 :
# MOTOROLA 1N5226稽納二極體 SILICON 3.3V 20 mA ZENER DIODES 30顆一標 $20
# 《icshopping_com》1W 3.3V 稽納二極體(5pcs) $16
# 《icshopping_com》1/2W 3.3V 稽納二極體(5pcs) $16
我使用 upverter 繪製接線圖如下 :
20150918 補充 :
今早上班前把上回跟 ICSHOPPING 買的 3.3V 稽納找出來實際測試, 發現事實上不到 3.3V, 量起來只有 2.38V, 雖然 TTL 2V 以上就被視為 High, 但 margin 似乎有點小. 實驗後覺得好像用 10K + 20K 純電阻的比較簡單方便. (20151012 補充, 經測試, 10k+20k 會因為時間常數太大造成信號不穩, 應該用 1k+2k, 或 1k+1k+1k 組合).
PS : 有黑色邊那側是陰極, 要接電阻, 參考 :
# 【婷婷的店】Arduino 1N4728A(3.3V/1W) 穩壓稽納基納二極體(Zener Diode)1顆
沒有留言 :
張貼留言