?>

Hard Copy World

HCW

Sensor

Home > Info >

Sensor

근전도 EMG(Electromyogram) sensor

페이지 정보

작성자 하드카피 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일15-07-12 23:38 조회3,861회 댓글1건

본문

 

EMG 센서는 근육의 움직임으로 인한 미세한 전기신호를 감지하는 센서입니다.

EMG 센서는 근육의 미세한 전기 신호를 감지한 뒤 이를 증폭하고 필터로 처리해줍니다. 이렇게 처리된 신호는 아두이노 등에서 받아서 사용할 수 있습니다.

EMG 센서도 테스트용 장비부터 의학용까지 스펙트럼이 다양합니다. 아래 링크를 보시면 테스트 용으로 사용할만한 센서킷을 보실 수 있습니다.(의학용 아님!!)

http://www.seeedstudio.com/depot/Grove-EMG-Detector-p-1737.html

 

 

많은 다른 센서와 유사하게 측정값을 Analog 핀으로 읽을 수 있습니다. VOUT 핀을 아두이노의 아날로그 핀으로 연결해 준 뒤 전압값을 읽으면 됩니다.

아두이노 --> EMG 센서

  • 5V --> VCC
  • GND --> GND
  • A0 --> VOUT

101020058 1_02

 

아래 예제코드를 원하는 형태로 응용해서 사용하세요.

// Grove - EMG Sensor demo code
// Grove - EMG Sensor connect to A0
// note: it'll take about serval seconds to detect static analog value
// when you should hold your muscle static. You will see led bar from level 10 turn to 
// level 0, it means static analog value get ok

int max_analog_dta      = 300;              // max analog data
int min_analog_dta      = 100;              // min analog data
int static_analog_dta   = 0;                // static analog data

// get analog value
int getAnalog(int pin)
{
    long sum = 0;
    
    for(int i=0; i<32; i++)
    {
        sum += analogRead(pin);
    }
    
    int dta = sum>>5;
    
    max_analog_dta = dta>max_analog_dta ? dta : max_analog_dta;         // if max data
    min_analog_dta = min_analog_dta>dta ? dta : min_analog_dta;         // if min data
    
    return sum>>5;
}

void setup()
{
    Serial.begin(9600);
    
    long sum = 0;

	// Calibration. Do not move your arm.
    for(int i=0; i<=10; i++)
    {
        for(int j=0; j<100; j++)
        {
            sum += getAnalog(A0);
            delay(1);
        }
        
        Serial.println(10-i);
    }
    
    sum /= 1100;
    
    static_analog_dta = sum;

    Serial.print("static_analog_dta = ");
    Serial.println(static_analog_dta);
}

int level       = 5;
int level_buf   = 5;

void loop()
{

    int val = getAnalog(A0);                    // get Analog value
    
    int level2;
    
    if(val>static_analog_dta)                   // larger than static_analog_dta
    {
        level2 = 5 + map(val, static_analog_dta, max_analog_dta, 0, 5);
    }
    else 
    {
        level2 = 5 - map(val, min_analog_dta, static_analog_dta, 0, 5);
    }
    
    // to smooth the change of led bar
    if(level2 > level)
    {
        level++;
    }
    else if(level2 < level)
    {
        level--;
    }

    if(level != level_buf)
    {
        level_buf = level;
        Serial.println(level);
    }
    
    delay(10);
}

 

참고자료 :

 


하드카피 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물

모든 전통이 한 때는 오해를 면치 못했다. 마찬가지로 모든 아이디어는 한 때는 비웃음을 면치 못했다. -홀브룩 잭슨 ::::: 느닷없이 떠오르는 생각이 가장 귀중한 것이며, 보관해야할 가치가 있는 것이다. -베이컨 ::::: 미리 숙고하면 힘든 일도 그저 실행에 옮기는 순간 쉬워진다. - 로버트 M. 피어식

추천 0
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글목록

최고관리자님의 댓글

최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일

Adafruit 에서 새로 판매하는 제품도 쓸만해 보이네요 :
https://www.adafruit.com/products/2699
http://www.adafruit.com/images/product-files/2699/2699datasheet.pdf