Grove – 肌電圖EMG感測器

本專案利用肌電圖(Electromyography , EMG)感測器量測前臂肌肉在收縮時產生的微弱電訊號,透過三貼片配置(訊號、參考、接地)取得電位訊號。 可用於肌肉動作偵測、手勢辨識、生理回饋或人機控制等應用。

測量前準備

1. 把三電極的插頭接到感測器的插座

2. 三電極的貼片接到手部肌肉

EMG 感測器在前臂上的標準三電極貼法,用來量測肌肉在收縮時產生的微弱生物電訊號。

  • 紅色電極(Signal + / Active): 主要訊號電極,貼在目標肌肉(如前臂屈肌)上方,接收肌肉活動的電位變化。

  • 黑色電極(Signal - / Reference): 參考電極,貼在同一條肌肉、稍微遠離主要電極的位置,形成差動量測的第二點。

  • 白色電極(Ground / GND): 接地電極,通常貼在較不活躍、較少肌肉動作的位置,用來穩定整體訊號並減少雜訊。

貼片之間的距離約 2~4 公分,有助於提高訊號品質並降低干擾。

3. Grove 接公 – 母 杜邦線

氣體感測器模組電路圖

  • Raspberry Pi Pico W

  • Raspberry Pi Pico W 擴充板

  • Grove – 肌電圖EMG感測器

  • 公 – 母 杜邦線

Arduino 程式如下

// PICO W 讀取 EMG 類比訊號(A0)

const int EMG_Pin = A1;
int emgValue = 0;
int emgAvg = 0;

void setup() {
  Serial.begin(115200);

  // Pico W ADC = 12-bit (0~4095)
  analogReadResolution(12);

  Serial.println("Pico W EMG Sensor Test");
}

void loop() {
  long sum = 0;

  // 取10次平均降低雜訊
  for (int i = 0; i < 10; i++) {
    sum += analogRead(EMG_Pin);
    delay(3);
  }

  emgAvg = sum / 10;

  Serial.print("EMG: ");
  Serial.print(emgAvg);
  Serial.print("  |  Muscle: ");

  // -------- 強度判斷 --------
  if (emgAvg < 1900) { Serial.println("Relax");}     // 幾乎沒用力  
  else { Serial.println("Strong");}     // 大力收縮或握拳
  
  // --------------------------------

  delay(50);
}

程式執行結果

本專案為讀取 EMG 肌電訊號,判斷肌肉是否在瞬間用力。

當肌肉快速收縮時,EMG 數值會突然升高並顯示從「Relax 」變到「Strong」;

若只是長時間持續出力,訊號會逐漸趨於穩定,視為「Relax」。

因此,本專案主要偵測「瞬間肌肉緊繃」的變化,而非長時間維持的用力狀態。

Last updated

Was this helpful?