[아두이노 중급] 4. EMG(Myoware 2.0, Grove-EMG Detctor)

EMG(Electromyography) 센서는 흔히 근전도 센서라고 하며 근육이 수축할 때 발생하는 미세한 전기 신호를 측정하는 센서를 말한다.

근육은 수축할 때 신경 자극에 의해 근섬유가 활성화되고 이 과정에서 발생하는 전위 변화는 피부 표면까지 전달되게 된다.

EMG 센서는 이 전기적 변화를 전극을 통해 감지하는 방식으로 동작한다.

그리고 이 감지하는 방식에 의해 센서의 종류가 나뉘게 되는데 크게 표면 전극 측정 방식과 침 전극 방식이 있다.

표면 전극 방식은 전극을 피부에 부착하여 비교적 넓은 영역의 근육 활동을 측정하는 방식으로 우리가 TV에서 운동선수들이 연습할 때 몸에 붙이고 있는 패드들이 이 방식이다.

이처럼 표면 전극 방식은 운동, 재활과 같은 바이오 피드백 상황에서 많이 사용되고 있다.

다음으로 침 전극 방식은 전극을 근육 내부에 삽입하여 보다 정밀한 전기 생리학적 파형을 분석하는 방법이다.

근육 내부의 변화를 측정하는만큼 정밀한 값을 확인할 수 있기 때문에 병원과 같은 의료기관에서 많이 사용한다.

이렇게 두 가지 방식으로 EMG 센서는 근육의 미세한 전기 신호를 측정하게 되는데 문제는 이 미세한 전기 신호가 말 그대로 아주 작은 크기의 신호라는 것이다.

얼마나 작냐면 전압으로 표현했을 때 수십 마이크로 볼트에서 수 밀리 볼트 수준의 매우 작은 값이라고 할 수 있다.

그래서 이 값을 측정하게 되면 값이 너무 작아 변화를 제대로 파악하기 힘든데, 우리가 사용하는 EMG 센서들은 이 측정 값들을 증폭해서 우리에게 보여주게 된다.

이때 증폭하는 증폭률을 보면 작게는 100배, 많게는 1,000배 정도의 수준의 증폭을 하게 된다.

하지만 이렇게 크기 증폭을 하게 되었을 때 한 가지 문제가 발생하게 되는데 바로 기존의 측정 값들이 순수한 근육 신호의 값이 아니라는 점이다.

워낙 근육 신호의 값이 작다보니 여러 요인에 의해 근육 신호에 잡음(Noise)이라고 불리는 의미 없는 값들이 섞여 들어가게 된다.

그래서 만약 측정된 값을 그대로 증폭하게 된다면 당연히 근육의 전기 신호만이 아닌 이 잡음까지 같이 커지게 되는 것이다.

그렇기 때문에 문제가 바로 이 잡음을 제거하는 것이다.

잡음을 제거하기 위해 많은 것들이 있겠지만 일반적으로 사용하는 것은 필터다.

필터는 신호에서 일정 부분의 값을 걸러주거나 아니면 내가 원하는 부분의 값만 통과시키는 동작을 하게 된다.

필터에 대해서 자세히 이야기하면 사실 아주 많이 내용이 필요하니 지금은 이정도만 알고 있자.

아무튼 이 필터가 근육 신호를 제외한 다른 잡음들을 제거해주게 되는데 이 잡음을 얼마나 잘 제거해주냐가 바로 EMG 센서의 성능이라고도 할 수 있다.

그럼 이렇게 생각할 수 있다.

애초에 측정할 때 잘 측정해서 잡음이 안 섞이게 하면 되지 않나 라고 말이다.

뭐 이론적으로 생각은 할 수 있겠지만 현실적으로는 사실상 불가능하다.

여기서 말하는 잡음은 다양한 요소로 발생하게 되는데 간단한 예를 들어보면 센서가 동작하는 전원에 의한 잡음, 피부-전극 사이에 발생하는 저항에 의한 잡음, 주변 전자장치들에 의한 간섭에 의한 잡음 등 그 종류가 정말 다양하다.

그리고 보통 이러한 잡음들은 크기가 작기 때문에 고려하지 않는 경우가 많지만 지금처럼 아주 작은 값의 신호를 측정할 때는 이 잡음들이 걸리적 거리게 되는 것이다.

아무튼 잡음을 완벽히 제거하는 것은 불가능하다고 보면 된다.

자, 그럼 다시 정리해보면 EMG 센서는 전극을 통해 값을 측정하는 센서이고 이때 측정되는 전기 신호가 매우 작기 때문에 이를 증폭해주는 회로와 잡음을 제거하는 필터를 모두 가지고 있는 모듈과 함께 사용되는 센서인 것이다.

실제로 뒤에서 EMG 센서의 값을 측정하게 되면 완벽하게 제거되지 않은 잡음 값이 표현되는 것을 볼 수 있다.

참고로 우리가 직접 EMG 값을 측정했을 때 볼 수 있는 값은 아래의 그림과 같다.

가장 위의 그림은 전체 신호에 해당하고 중간이 초기 2초 신호, 마지막이 최후반 2초 신호를 확대해 둔 그림이다.

여기서 값이 표현된 것 처럼 EMG로 측정되는 값은 마이크로 볼트(uV)로 아주 작아서 사실 그냥 보는 것만으론 파악이 힘들다.

다만 지금처럼 확대해서 일부들을 본다면 초기 2초에선 ±200~300 uV 정도의 신호로 근육이 이완된 상태이거나 약하게 수축한 상태인 것으로 볼 수 있다.

그리고 이 신호에도 마찬가지로 잡음이 함께 포함되어 있는 것을 볼 수 있다.

마지막 그림의 최후반 2초의 데이터는 근육이 강하게 수축하면서 신호의 크기가 활성화 되고 일정한 패턴을 보여주는 것을 볼 수 있다.

하지만 여기도 마찬가지로 어느정도의 잡음이 같이 포함되어 있다.

그림에는 Raw Signal 이라고 되어 있는데 이것을 다르게 표현하면 원시 신호라고도 말한다.

일반적으로 별도의 처리를 하지 않은 신호를 뜻하긴 하는데 요즘엔 측정 회로 자체의 아날로그 필터를 통과한 것도 Raw Signal이라고 부르는 경향이 있기 때문에 위의 자료도 아마 간단한 자체 필터를 통과한 신호라고 할 수 있겠다.

자, 이렇게 간단하게 EMG 센서들에 대해 알아 보았으니 이제 직접 사용해보자.

앞서 설명한 것처럼 EMG를 측정하려면 표면 전극 형태와 침 전극 형태가 있는데 우리가 접할 수 있는 EMG 센서는 대부분 표면 전극 형태의 센서들이다.

그리고 센서들 역시 저렴한 센서부터 가격이 높은 센서까지 천차만별로 있는 것을 볼 수 있다.

꼭 가격과 비례해서 성능이 좋은 것은 아니지만 보통 성능이 신뢰가 있다라고 보는 센서들은 가격 대가 좀 있는 편이다.

거기에 가격이 낮은 센서의 경우 음 전압을 요구하는 경우가 꽤 많아서 전자회로에 익숙하지 않은 사람이라면 회로 구성이 쉽지 않은 문제도 있다.

그래서 여기서는 필자가 직접 다뤄본 센서 중에서 가장 괜찮았던 두 가지 센서에 대해 이야기해보고자 한다.
(꼭 이 센서들이 최고다라는 것은 아니다. 필자가 사용해보지 못한 센서 중에는 더 좋은 센서들도 있을 것이다. 참고로 가격대가 일반 센서에 비해 좀 있는 편이다.)

첫 번째 센서는 MyoWare Muscle Sensor다.

MyoWare라는 회사에서 만든 센서로 형태가 직관적이고 다른 EMG 센서에 비해 몸에 부착하는 것이 좀 더 편리하게 만들어져 있다.

실제로 EMG를 사용해야 하는 논문들을 찾아보면 가장 많이 사용하는 센서 중 하나로 그것만으로도 그 신뢰도가 입증된 센서라고도 할 수 있다.

센서의 형태는 위와 같은 형태인데 그림에 보이는 것처럼 부착하는 전극이 3개로 이루어져 있다.

전극은 각각 모듈의 둥근 은색 원 부분에 하나씩 있고 거기에 추가로 부착된 검은 전극이 존재한다.

이 전극들은 각각의 역할이 있는데 먼저 모듈에 있는 2개의 전극부터 살펴보자.

이 두 전극은 그림을 기준으로 아래쪽을 Mid Muscle Electrode Snap이라고 하고 위쪽을 End Muscle Electrode Snap 이라고 하는데 여기서는 간단하게 아래쪽 전극, 위쪽 전극이라고 부르겠다.

ENG 센서들은 일반적으로 하나의 절대적인 전압 값을 측정하지 않고 두 지점 사이의 전압 차이를 측정하게 된다.

하나의 지점에서 값을 측정하지 않는 것은 그 한 점에서 측정되는 전압에 앞서 이야기한 수많은 잡음들이 섞여 있기 때문이다.

그래서 이 잡음들을 줄이기 위해 전극을 두 군데에 부착해서 그 차이를 표현하게 된다.

간단하게 각 전극에서 측정되는 것을 표현하면 이렇게 된다.

아래쪽 전극 위쪽 전극
(근육 신호 + 공통 잡음) – (근육 신호 + 공통 잡음)

이렇게 각 전극에서 측정되는 신호의 차이를 표현하면 공통 잡음이 상쇄되어 사라지고 근육 신호만 남게 되는 것이다.

그럼 단순히 수식만 보면 어? 근육 신호도 같이 상쇄되는 것 아니야?라고 할 수 있는데 만약 그렇게 되려면 두 근육의 신호가 완전히 동일할 때만 성립되는 것이라 그건 아니다라고 할 수 있다.

전극의 이름을 보면 쉽게 알 수 있는데 전극의 이름에 ‘Mid’라고 적혀 있는 전극은 근육의 중간에 위치시켜 달라는 뜻이고 ‘End’라고 되어 있는 전극은 근육의 끝부분에 위치 시켜 달라는 의미다.

그래서 두 전극에서 측정되는 값의 크기가 다를 것이고 위와 같은 수식을 적용했을 때 근육 신호가 남게 되는 것이다.
(이런 이유로 EMG 센서를 붙이는 위치가 중요하다. 근육의 위치를 잘 확인해야 한다.)

그리고 사실 잡음도 전원 잡음이라던가 주변 전자기 간섭, 인체 공통 전위 변화 같이 공간적으로 거의 동일한 것들은 대부분 상쇄되겠지만 그 외의 잡음들은 완벽하게 사라지지는 않는다.

그래서 앞에서 잡음을 완벽하게 제거하는 것은 힘들다라는 것이다.

그리고 이러한 방식을 차등 측정이라고 한다.

마지막으로 설명을 하지 않은 검은색 전극이 남았는데 이 전극은 앞서 본 모듈에 있는 두 전극과 다르게 신호를 얻기 위한 전극은 아니고 신호가 제대로 측정되도록 돕는 보조 전극이라고 할 수 있다.

이름은 Reference Electrode라고 하고 일명 레퍼런스 전극이라고 한다.

이 전극은 근육에 위치 시키지 않고 근육의 움직임이 적은 위치, 보통은 관절 뼈와 같은 곳에 위치시켜 측정된 근육 신호가 무슨 값을 기준으로 변화하는지 알 수 있게 해주는 기준점을 제공하는 전극이라고 볼 수 있다.

참고로 저가형 센서들의 경우 레퍼런스 전극이 없는 경우가 있는데 그런 경우엔 일명 신호가 떠다닌다는 현상이 발생한다.

근육을 쓰지 않아도 값이 변하는 경우도 생기고 잡음의 영향을 크게 받기도 한다.

그래서 만약 저가형 센서를 사용하더라도 레퍼런스 전극이 없다면 다시 생각해보는 것이 좋을 것이다.

아니면 별도로 레퍼런스 전극을 납땜해서 붙여야 되는 경우도 있으니 잘 살펴보자.

그리고 실제로 부착할 때는 그대로 부착하지 않고 전극이 피부에 더 잘 접촉할 수 있도록 패드를 이용해서 부착하게 된다.

보통 이 전극 패드는 Biomedical Sensor Pad라고 하는데 일회용이라고 보면 된다.

필자도 아까워서 여러번 써보려고 했는데 이게 한 번 땠다 붙이면 점점 접착력이 약해지는 것이 체감될 정도로 느껴진다.

그래서 별도로 사두는 것을 추천한다.

전극 패드까지 붙이면 이런 형태가 된다.

참고로 공식 사이트에서 제공해주는 사진이다.

이게 MyoWare 센서인데 지금은 사실 좀 다르다.

여기서 업그레이드 되서 이젠 MyoWare 2.0 이란 제품이 판매된다.

MyoWare 2.0은 기존의 센서를 좀 더 편리하게 개량한 형태로 위의 사진에서 보이는 것처럼 별도의 레퍼런스 전극을 부착하지 않고 모듈에 그대로 탑재된 형태로 만들어져 있다.

그리고 모듈에 회로가 추가되어 실제로 측정된 값들을 여러 형태로 보여주는데 위의 표기된 핀 중에서 RECT, RAW, ENV가 데이터 출력 핀이다.

RAW는 원시 신호가 출력되는 곳으로 여기서는 +와 -값이 혼재되어 파형의 형태로 나오게 된다.

RECT는 RAW 값에서 음수 값을 절대값 처리(정류)해서 표현한 신호로 음수 성분이 제건된 신호로 정류 신호라고도 한다.

그리고 이렇게 나온 정류 신호를 평활화(Smooth)하여 표현한곳이 ENV 신호 즉, 엔벨로프 신호라고도 한다.

이때 평활화라는 것은 영어로 Smooth라고 되어 있는 것처럼 신호의 급격한 변화를 완만하게 만들어 전체적인 흐름을 쉽게 확인 할 수 있도록 하는 것을 말한다.

일반적으로 출력이다 하면 이 센서에선 ENV 신호를 보게 되는데 앞서 말한 것과 같이 원시신호에서 잡음과 빠른 진동이 줄어들어 가장 보기 쉬운 출력이기 때문이다.

이어서 전극은 각 전극 옆에 MID, END, REF라고 역할이 표시되어 있고 굳이 마련된 전극이 아니더라도 전극을 추가할 수 있도록 되어 있다.

참고로 현재 MyoWare ENG Sensor라고 하면 모두 이 센서를 말한다.

앞서 설명한 길쭉한 타원형의 이전 버전은 지금 단종된 모델이다.

그래도 설명한 이유는 많은 논문이나 사용법들이 이전 버전을 기준으로 설명하고 있고 2.0 버전의 경우 출시된지 2년 정도 됬는데 이런 말을 하긴 좀 그렇지만 이전 모델이 더 좋지 않았나? 라는 말이 조금씩 나오기 때문에 설명했다.

참고로 MyoWare는 Sparkfun의 공식 협력사로 네트워크가 잘 구성되어 있다.

센서의 문제점이나 의문점은 Sparfun에 문의하면 빠르게 답변을 받아 볼 수 있고 더 빠른 답변을 원한다면 Redit에서도 공식 커뮤니티가 운영되고 있어 많은 정보를 주고 받을 수 있다.
(실제로 필자도 두 군데서 직접 문의와 정보를 주고 받았다.)

MyoWare 2.0도 위의 전극 패드를 부착해서 연결할 수 있고 필요하다면 모듈에 있는 전극 말고 별도의 레퍼런스 전극(이전 버전에서 사용했던 선이 있는 전극)을 부착할 수도 있다.

여기까지가 MyoWare 센서에 대한 내용이었다.

그럼 이번에는 두 번째 센서를 살펴보자.

두 번재 센서는 Seeed Studio의 Grobe – EMG Detector다.

이 EMG 센서도 앞서 MyoWare 센서와 마찬가지로 전극을 이용해서 EMG 측정하고 표현해주는 모듈이다.

그런데 그림만 보면 전극이 없어서 어떻게 연결하냐 싶다.

이 센서는 MyoWare와 달리 구성품이 존재한다.

위의 그림과 같이 모듈과 전극, 전극에 붙이는 패드가 같이 한 세트다.

그래서 이 센서를 사용한다면 저렴하다고 무턱대고 모듈만 구입하면 아무 것도 할 수 없는 것이다.

전극은 모듈의 오디오 잭 부분에 연결하여 사용하게 된다.

그리고 그림에는 노란색 전선이 하나 있는데 이것은 모듈의 J2 연결박스에 꽂는 선으로 이 선을 통해 아두이노 보드와 통신을 할 수 있다.

이때 전극은 색상이 나뉘어 있는데 이 색상에 따라서 각 전극의 역할이 정해진다.

앞서 MyoWare 센서를 통해 3개의 전극으로 차등 측정 방식을 통해 값을 측정한다고 했었다.

이 센서도 마찬가지다.

그래서 전극의 색상을 다르게 해서 각 전극의 역할을 표현해두었다.

빨간색과 파란색 전극은 근육의 신호를 수집하는 역할을 하는 전극이고 검은색 전극은 레퍼런스 전극으로 보면 된다.

여기서 빨간색 전극을 +극, 파란색 전극을 -극 이라고도 부르는데 이게 전기의 +극, -극이라는 의미보단 MyoWare의 MID END의 두극의 차이를 표현한 것과 같다라고 생각하면 좋을 것이다.

요약하자면 MyoWare와 기본 개념은 동일하다.

차이점은 출력 방식에 있는데 Grove EMG Detector는 다른 센서와 달리 아주 작은 ENG 신호를 2차 증폭 회로로 증폭하고 이렇게 증폭한 신호의 잡음을 제거하고 있다.

앞서 설명한 것과 같이 EMG 센서는 이 증폭과 필터가 핵심이기 때문에 각 모듈마다 이 부분을 처리하는 방식이 핵심 기술이라고도 볼 수 있다.

추가로 Grove ENG Detector는 일반적인 대기 상태일 때 출력되는 전압(1.5V)과 근육이 활성화 되었을 때의 최대 전압(3.3V)를 제공해줘서 센서 출력 신호를 보다 안정적으로 사용할 수 있게 해준다.

두 센서의 각각의 장단점이 있지만 간단히 추천하듯이 설명하자면 EMG의 RAW 데이터를 다루거나 좀 더 확장이 필요하다면 MyoWare를 EMG의 안정적인 값을 바로 사용하고 싶다면 Grove ENG Detector가 낫지 않나 라고 조심스럽게 생각해본다.

뭐 두 센서 모두 좋은 센서인 것은 맞으니 어떤 것을 써도 좋다.

자, 그럼 이번에는 직접 센서를 사용해보자.

센서를 사용하는 방법은 아주 쉽다.

아니 사용하기 쉽게 만들어져 있다.

두 센서를 보면 알겠지만 아두이노와 같은 마이크로컨트롤러에 연결하는 부분을 보면 핀 맵이 세 개만 존재한다.

MyoWare는 VIN GND ENV이고 Grove는 GND VCC VOUT 이렇게 적혀있다.
(NC는 Non Connect의 줄임말로 아무것도 연결되어 있지 않다는 뜻이다.)

여기서 보면 VIN과 VCC가 같은 것이고 GND와 GND가 같고 ENV와 VOUT이 출력 값이 나오는 곳으로 동일하다.
(참고로 MyoWare는 왼쪽 위의 RECT와 RAW에 선을 연결하면 해당 출력 값을 볼 수 있다. 여기서는 아래쪽 기본에 ENV가 있어서 ENV로 설명한다.)

그럼 간단하게 연결해보자.

EMG 센서 아두이노
VIN(VCC) 5V
GND GND
ENV(VOUT) A0

그리고 전극을 연결해보자.

전극은 측정하고 싶은 근육에 빨간색 전극(MID)과 파란색 전극(END)를 부착하고 레퍼런스 전극을 뼈나 측정할 근육과 관계없는 곳(센서의 설명에 딱딱한 곳이 좋다고 한다.)에 부착하자.

(테스트를 위해서 간단하게 부착했지만 실제론 측정할 근육의 위치를 찾아서 부착하는 것이 좋다.)

나오는 출력 값이 전압 값이니 코드도 간단하다.

코드 1 EMG Sensor
int EMG = A0;
int EMG_value;

void setup() {
  Serial.begin(9600);
  pinMode(EMG, INPUT);
}

void loop() {
  EMG_value = analogRead(EMG);

  Serial.print("EMG_value: ");
  Serial.println(EMG_value);
}

코드를 업로드하고 시리얼 모니터대신 시리얼 플로터를 보면 좀 더 값을 실감나게 볼 수 있다.
(참고로 당연하겠지만 전극을 팔에 붙인 상태로 값을 봐야한다.)

시리얼 플로터를 열고 주먹을 쥐었다가 펴면 값이 변화하는 것을 볼 수 있다.

근육을 움직이면 위의 그림과 같이 그래프가 표현되어야 하는데 사실 저렇게 나오지 않는 경우도 있다.

그런 경우엔 보통 컴퓨터의 잡음으로 인해 데이터의 혼선이 생기는 이유가 크다.

실제 값이 이상한 경우 문의를 넣게 되면 전원을 어떻게 처리하고 있는지 되물어보는 경우가 많다.

우리가 다루는 EMG 신호는 앞서도 말했지만 아주 작은 값을 가지고 있다.

그래서 주변 환경에 영향을 많이 받는데 지금처럼 아두이노와 같은 마이크로컨트롤러에 연결하여 사용할 때는 특히 PC에 의한 영향을 많이 받게 된다.

마이크로컨트롤러의 동작을 위해 컴퓨터에 USB로 연결하게 되면 PC 접지, MCU 접지, 인체 전위 등 다양한 요인들에 의해 신호의 기준이 흔들리게 된다.

그래서 실제 마우스나 키보드를 누르는 행위로 인해 기준 전압이 출렁이는 경우도 많이 있다.
(이런 현상들을 접지 루프(Ground loop)라고도 한다.)

아마 위와 같이 EMG 센서를 연결해서 사용하는 사람들 중에는 시리얼 플로터로 값을 보다가 키보드를 잘 못 눌렀을 때 근육이 움직이는 것과 같이 파형이 출렁이는 것을 본 사람들도 많을 것이다.

그렇기 때문에 이러한 작은 신호를 다루는 센서들은 전원 분리가 아주 중요하다.

특히 콘센트에서 전기를 받고 있는 상황이라면 말이다.

이 두 센서의 제조사의 튜토리얼을 방문해 보면 알겠지만 모두 최우선 상황 중 하나로 전원 분리를 이야기하고 있다.

가장 권장 사항은 건전지를 이용해서 별도 전원으로 동작하는 것이다.

하지만 지금 상황에서 건전지를 전원으로 한다면 시링러 플로터와 같은 파형을 보기 힘들다.

두 번째 추천 사항은 충전선을 연결하지 않은 노트북을 사용하라는 말이 있다.

하지만 이것도 실제로 사용해보면 키보드와 같은 입력 장치의 영향이 아예 없는 것은 아니라는 것을 볼 수 있다.

그럼 어떻게 해야 할까.

두 회사 모두가 가장 권장하는 것은 USB isolator를 사용하는 것이다.

위의 그림이 USB isolator 중 하나인데 이것도 나름 브랜드 제품으로 들고와봤다.

Adafruit의 제품으로 그림에서 보이는 것처럼 한쪽은 마이크로컨트롤러에서 오는 USB 장치를 연결하고 반대쪽은 컴퓨터에 연결할 연결부가 있다.

이 장치를 이용해서 테스트를 해보면 그림고 같이 연결되는 것을 볼 수 있다.

참고로 이 장치가 없어도 근육을 움직일 때의 파형은 확실히 차이가 나게 볼 수 있긴 하다.

다만 USB isolator를 사용하면 주변 환경과 어느정도 차단이 되니 잡음이 줄어드는 것도 확인할 수 있다.

밑의 영상은 두 센서를 사용해서 파형을 보는 영상이니 참고하자.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
error: Content is protected !!