EMGセンサー(筋電センサー)完全ガイド:原理・種類・Arduino実装・ロボット義手制御への応用
EMGセンサー (筋電図センサー) とは?
EMG (Electromyography: 筋電図) センサーは、筋肉収縮時に生じる微弱な電気活動 (数 μV 〜 数 mV) を検出・増幅・デジタル化するデバイス です。医療診断 (神経筋疾患、運動障害) から、義手・ロボットアーム・ゲームコントローラー・VR/ARインターフェースまで、用途は急拡大しています。
主な用途
- 医療・リハビリ:神経伝導検査、筋疾患診断、リハビリ評価、義肢装具制御
- ロボティクス/プロステティクス:筋電義手 (私の電義手)、外骨格ロボット、アシストスーツ制御信号
- ヒューマンインターフェース:ジェスチャー認識、ゲーム/VR操作、ハンズフリー入力
- スポーツ科学:筋活動モニタリング、フォーム解析、疲労度評価
- 産業/安全:作業者負荷監視、転倒検知、アラートシステム
筋電義手アーム応用例
EMGセンサーの動作原理
筋線維が収縮すると、細胞膜を脱分極波 (活動電位) が伝播し、体表面に微弱な電位変化 (表面筋電位) として現れます。電極でこれを拾い、以下の処理で信号化します:
- 増幅:微弱信号 (μVオーダー) を 1000〜10000倍増幅 (計装アンプ)
- フィルタリング:10〜500Hz 帯域通過 (運動アーチファクト/電源ノイズ除去)
- 整流・平滑 (エンベロープ検出):全波整流 + 低域通過フィルタで「筋活動の大きさ」を電圧レベル化
- ADC変換・閾値判定:マイコンでデジタル化、ジェスチャー分類・比例制御等へ
重要:電極配置 (筋繊維方向に沿わせる、モーターポイント近傍)、皮膚準備 (洗浄・研磨・ジェル)、アース/リファレンス電極配置が信号品質を左右します。
EMGセンサーの分類
1. 侵襲型 (Inserted/Needle EMG)
医療診断専用。医師/技師のみ操作可能。
- 針電極:絶縁被覆針先端に露出部、単一運動単位 (MUAP) 記録可能。疾患診断のゴールドスタンダード
- 細線電極:極細ワイヤ (25〜50μm) を筋内留置。動的収縮時の深部筋記録に優れ、針より低侵襲
針電極 EMG センサー
2. 非侵襲型 (Surface EMG, sEMG) - ホビー/工学/一部医療で主流
皮膚表面に貼付する電極 (Ag/AgCl ジェル電極、乾式電極、導電布等) で計測。
メリット: 非侵襲・痛みなし・繰り返し可・自己装着可・低コスト
デメリット: 深部筋検出困難、皮膚インピーダンス影響大、クロストーク (隣接筋混入)、動作アーチファクト大
表面 EMG センサー (ジェル電極タイプ)
代表的なホビー/教育向け EMG モジュール比較
| 製品名 | 価格目安 | 特徴 | 対応プラットフォーム |
|---|---|---|---|
| MyoWare Muscle Sensor (Advancer Technologies) | 約 $39.95 (¥6,000〜) | 高品質、エンベロープ出力、スナップ電極対応、豊富なドキュメント | Arduino, Raspberry Pi, ESP32, STM32 等 |
| Grove - EMG Detector (Seeed Studio) | 約 $3.50 (¥500〜) | 超低価格、Groveコネクタ、簡易増幅・整流、電極ケーブル付属 | Arduino, Raspberry Pi (Grove Base Shield経由) |
| BITalino (Plux) | 約 €150〜 | 多チャネル、研究グレード、Bluetooth/Wi-Fi、OpenSignals ソフト付属 | PC, Android, Raspberry Pi, API公開 |
| 自作 (INA126 + オペアンプ + 電極) | 約 ¥500〜1,000 | 完全カスタマイズ可、回路設計知識必要、学習効果大 | 任意 |
Grove EMG Detector + Arduino 実装チュートリアル
Arduino + EMG セットアップ
必要な部品
- Arduino Uno (または互換)
- Grove Base Shield
- Grove LED Bar (可視化用)
- Grove EMG Detector (電極ケーブル・ジェル電極6枚付属)
Arduino Uno 3Dイラスト
ハードウェア接続
- Grove Base Shield を Arduino に装着
- Grove LED Bar を Base Shield の D8 ポートに接続
- Grove EMG Detector を Base Shield の A0 ポート (アナログ入力) に接続
- 電極ケーブルを EMG Detector の 3.5mm ジャックに接続
- ジェル電極を電極ケーブル先端に装着し、前腕 (前腕伸筋群/屈筋群) または上腕二頭筋 に貼付 (電極間 2〜3cm 離す)
ソフトウェア・スケッチ
Arduino IDE で以下のコードを書き込み:
// Grove EMG Detector + LED Bar デモ
#include
Grove_LED_Bar bar(9, 8, 0); // CLK, DATA, オプション
const int emgPin = A0;
void setup() {
Serial.begin(115200);
bar.begin();
// 初期化シーケンス (LEDバー 10→0)
for (int i = 10; i >= 0; i--) {
bar.setLevel(i);
delay(500);
}
}
void loop() {
int val = analogRead(emgPin); // 0-1023
int level = map(val, 0, 1023, 0, 10);
bar.setLevel(level);
Serial.println(val);
delay(20);
}
動作テスト
- 書き込み後、初期化で LEDバーが 10→0 に消灯 (約5秒)
- 消灯後、電極貼付部の筋肉を動かす (握る、腕曲げる、力こぶ等)
- 筋力に応じて LEDバーが上下動 (レベル 0〜10) すれば成功
- シリアルプロッタで波形観察・閾値調整
生体電位センサーの使い分け:ECG / EEG / EMG / EOG
| 略称 | 正式名称 | 測定対象 | 電極位置例 | 典型振幅 |
|---|---|---|---|---|
| ECG | Electrocardiogram (心電図) | 心臓電気活動 | 四肢・胸部 | 1〜2 mV |
| EEG | Electroencephalogram (脳波) | 脳皮質電気活動 | 頭皮 (国際10-20法) | 10〜100 μV |
| EMG | Electromyogram (筋電図) | 骨格筋電気活動 | 対象筋表面/筋内 | 50 μV 〜 5 mV |
| EOG | Electrooculogram (眼電図) | 眼球運動 (角膜-網膜電位) | 眼周囲 | 100〜3000 μV |
コスト比較・導入のヒント
- MyoWare: 高信頼・サポート充実・製品化見据えるならベスト
- Grove EMG: 学習・プロトタイプ・コスト最優先なら最適 (精度・S/N比は劣る)
- 自作: INA126/AD8226 (計装アンプ) + MCP6002 (フィルタ/整流) + 電極で ¥1,000 以下も可能。アナログ設計力が試される
- 電極: 使い捨て Ag/AgCl ジェル電極 (¥10〜30/枚) が信頼性高い。乾式/導電布電極は洗濯可だがインピーダンス高め
発展: 筋電義手・ロボットアーム制御へ
ロボットアーム制御デモ
複数チャネル EMG (前腕複数部位) + 機械学習 (LDA, SVM, CNN等) で多クラスジェスチャー分類 (グー/チョキ/パー/つまみ/手首回転等) を実現し、サーボ/ステッピング駆動の義手・ロボットアームを直感操作可能。オープンソースプロジェクト (OpenBionics, MyoWare例, NinjaBlocks等) も参考になります。
まとめ
EMGセンサーは、「筋肉の意思を電気信号として読み取る」革新的インターフェース技術です。医療グレードからホビー向けまで選択肢が広がり、Arduino/ESP32 等で誰でも筋電制御プロトタイピングが可能になりました。電極貼付・ノイズ対策・信号処理 (フィルタ/整流/特徴抽出) の基本を押さえ、ご自身のプロジェクト (義手、ゲーム、リハビリ、産業支援) に最適な構成を選んでください。技術相談・カスタム開発支援も承っております。
産業技術
- P-F曲線解説:信頼性中心保全(RCM)をマスターする
- 6G徹底解説:超高速接続を実現する次世代通信技術の全貌
- ポンプキャビテーションを防ぐ:原因、症状、回避方法
- ホール効果の原理とホール効果センサの動作を理解する
- 銅ブレージング完全解説:強力で信頼性の高い接続のための技術とヒント
- 産業オートメーションにおけるMQTT:製造業者のための実践ガイド
- PIC18マイクロコントローラ:特徴、性能、使い方
- リファレンスデシグネータの理解:PCBアセンブリ接続をラベル付けする方法
- 適切なコンパクター選定:効率的廃棄物管理のための包括的ガイド
- 適切なIoTプラットフォームの選び方:実践ガイド
- C# Queue完全ガイド:Enqueue、Dequeue、FIFO操作の実例解説