Analog EMG Sensor by OYMotion
SKU:SEN0240
Introduction
This EMG sensor is launched by DFRobot and OYMotion cooperation, which can reflect muscle and
neural activities of human by detecting sEMG.
This sensor integrates filtering circuit and amplified circuit. It amplifies minimal sEMG within ±1.5mV
1000 times and depresses noises (especially power frequency interference) by differential input and
analog filter circuit. The output signal is analog,which takes 1.5V as the reference voltage. The
output voltage range is 0~3.0V. The signal strength is depends on muscle activities. The output
signal waveform indicates the muscle activity and helps to analyse and research the sEMG.
Specifically, we can use Arduino as a controller to detect muscle activities, e.g. check whether the
muscle is tense; the muscle strength;etc.
This is an active induction sensor can provide high quality signal collection and it is easy to use.
Simple preparations are needed to apply the module to whether static or dynamic areas. Dry
electrode is applied to the module and good quality signal are available even without conductive gel.
Compared with disposable conductive gel needed by medical electrodes, it is more convenient to
use and has longer service life. Therefore, it is more suited to common users.
Measurements with an analog EMG sensor are noninvasive, convenient and this can be applied to
human-computer interactions. With the development of microcontrollers and integrated electric
circuits, EMG circuits and sensors have not just been applied to traditional medical muscle detection
researches but control systems.
The supply voltage range is 3.3~5.5V; The supply current should not be less than 20mA; The
ripple current and disturbance current should be as low as possible. Stabilized DC voltage is
recommended.
The effective spectrum range is 20Hz½500Hz, and the ADC converter which has higher
than 8-bit resolution and 1 KHz frequency are recommended to take samples and digitized to
keep original information.
Placing the metal dry electrode should consistent with the direction of muscle.
The product is not a professional medical device and cannot diagnose and cure disease as
an assistant device.
Specification
Signal Transmitter Board
Supply Voltage: +3.3V½5.5V
Operating Voltage: +3.0V
Detection Range: +/-1.5mV
Electrode Connector: PJ-342
Module Connector: PH2.0-3P
Output Voltage: 0½3.0V
Operating Temperature: 0½50
Size: 22mm*35mm (0.87inch*1.38inch)
Dry Electrode Board
Electrode Connector: PJ-342
Wire Length: 50cm(19.69inch)
Plate Size: 22 * 35 mm(0.87inch*1.38inch )
weight: 36g
Board Overview
Analog EMG Sensor by OYMotion
Num
1
2
3
4
Label
A
+
-
PJ-342
Description
Analog Signal Output(0~3.0V)
Power Supply Anode(3.3~5.5V)
Power Supply Cathode(0V)
Probe Wiring Connector
Tutorial
The tutorial will show you how to use the analog EMG sensor by printing electromyogram waveform
with Serial Plotter of Arduino IDE.
Requirements
Hardware
DFRduino UNO R3 (or similar) x 1
Signal Transmitter Board x1
Dry Electrode Plate x1
Dry Electrode Cable x1
Gravity Analog Cable 3Pin(or Dupont Wires) x1
Software
Arduino IDE (Version requirements: V1.0.x or V1.8.x), Click to Download Arduino IDE from Arduino®
https://www.arduino.cc/en/Main/Software%7C
Connection Diagram
Sample Code
This sample code needs EMGFilters library file, please download and install the EMGFilters Library
file.
How to install Libraries in Arduino IDE https://www.arduino.cc/en/Main/Software%7C
/*
* Copyright 2017, OYMotion Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
*
*
* 2. Redistributions in binary form must reproduce the above copyright
*
*
*
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
* THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
*/
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
notice, this list of conditions and the following disclaimer.
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif
#include "EMGFilters.h"
#define TIMING_DEBUG 1
#define SensorInputPin A0 // input pin number
EMGFilters myFilter;
// discrete filters must works with fixed sample frequence
// our emg filter only support "SAMPLE_FREQ_500HZ" or "SAMPLE_FREQ_1000HZ"
// other sampleRate inputs will bypass all the EMG_FILTER
int sampleRate = SAMPLE_FREQ_1000HZ;
// For countries where power transmission is at 50 Hz
// For countries where power transmission is at 60 Hz, need to change to
// "NOTCH_FREQ_60HZ"
// our emg filter only support 50Hz and 60Hz input
// other inputs will bypass all the EMG_FILTER
int humFreq = NOTCH_FREQ_50HZ;
// Calibration:
// put on the sensors, and release your muscles;
// wait a few seconds, and select the max value as the threshold;
// any value under threshold will be set to zero
static int Threshold = 0;
unsigned long timeStamp;
unsigned long timeBudget;
void setup() {
/* add setup code here */
myFilter.init(sampleRate, humFreq, true, true, true);