目前市面上便宜的 MAX3010x 系列血氧心律脈搏傳感器有數種款式(外觀和顏色),而 MAX30100 款(綠板)確定是電路設計有問題(註A),導致血氧濃度和心律脈搏等讀數不正確。
據我觀察,綠板的 MAX30102 款也有同樣問題,而黑板的則沒問題。
MAX30100/MAX30102 綠板電路圖如下
圖中 RCWL-9183 IC (註B)是將外部電源降壓為 3.3V,再經過一只三極管(註C)降壓為 1.8V。
接下來就是問題所在
一般的 SCL/SDA 準位是 5V 或是 3.3V,而它是 1.8 V。如果你將 SCL/SDA 直接連到 Arduino 或 ESP8266 、ESP32等開發板,讀到的數據就會不正確,詳下圖
解決之道 --- 修改電路
修改綠板的電路把電壓準位改為 3.3V,用刀片把連接 1.8V 的線切斷(黃色箭頭處,註D),再用一條導線連從電阻連到 3.3V 輸出端(紅色箭頭處)。
黑板為何不必修改電路
因為黑板的電路設計確實有依照商品說明裡寫的有 3.3V 和 1.8V 兩種電壓準位可選擇,如下圖
它預設狀態是使用 1 顆 0 歐姆電阻(黃色橢圓圈處)連接到 3.3V 電壓(黃色箭頭處)來讓 SCL/SDA達到 3.3V 電壓準位。
如果您要改為 1.8V,可以將該電阻轉180度連到綠色箭頭處。電路板後面也有預留電壓準位選擇焊板(黃色橢圓圈處),但必須先移除 0 歐姆電阻,然後再將中間焊板與1.8V焊板短路。
註A: 這款傳感器設計的 SCL/SDA 電壓準位是從 1.8V 拉過來,而一般常見的電壓準位是 5V 或 3.3V,這還是首次看到 1.8V 呢。由於我本身非電子專業背景,無法判定原設計是否錯誤,說不定這款模組原先就是專為 1.8V 的電子設備使用的,後來卻被拿來連接 5V 的 Arduino、3.3V 的 ESP8266 和 ESP32。果真如此的話,想要當一位 Maker 也不能只是傻傻地拿到模組就用,還是要多多少少了解一下手上的模組他的電路是如何設計的。
註B: 因不同製造商,編號有多款,或是 N1IF、HX-JE...等。
註C: 此圖未標出零件編號,因不同製造商,編號有多款,或是 65K5...等。
註D: 請用電錶測量切斷處確實斷開。
後記
翻看 Digi-Key 的電路圖,原始設計的電壓準位應該是有 1.8V/3.3V 這兩種選項,今天會有這個問題,可能是對岸在抄板製造時省略了部分細節,導致這個結果。
參考資訊
Electronics Innovation https://electronicsinnovation.com/solved-max30100-not-working-initializing-pulse-oximeter-failed/
Digi-Key https://www.digikey.com/en/articles/adding-heart-rate-monitoring-functionality-to-fitness-gear
購買資訊
MAX30102 綠板 https://www.ruten.com.tw/item/show?22125280142290
MAX30102 黑板 https://www.ruten.com.tw/item/show?22130046170972