INFORMACIÓN
El Sensor EMG Analógico SEN0240 es un dispositivo diseñado para detectar y medir la actividad eléctrica de los músculos. Esta actividad eléctrica se genera cuando los músculos se contraen o se relajan, lo que permite al sensor capturar señales musculares.
El Sensor EMG Analógico SEN0240 puede ser utilizado en diversas aplicaciones, desde la investigación médica hasta el control robótico y los dispositivos de interfaz hombre-máquina (HMI). En el control robótico, por ejemplo, los sensores EMG pueden utilizarse para permitir que una persona controle el movimiento de un brazo robótico o una prótesis utilizando solo la actividad muscular, sin necesidad de utilizar dispositivos de entrada física como joysticks o teclados.
ESPECIFICACIONES Y CARACTERÍSTICAS
- Marca: DFROBOT
- Matrícula: SEN0240
- Incluye:
- Placa de electrodo seco EMG x1
- Cinturón de muñeca x1
- Cable de electrodo x1
- Placa transmisora de señal EMG x1
- Cable analógico de gravedad de 3 pines x1
- Peso: 35g
|
|
|
DOCUMENTACIÓN Y RECURSOS
INFORMACIÓN ADICIONAL
Para utilizar el Sensor EMG Analógico SEN0240 se necesita instalar la librería EMGFilters Library
Como instalar la librería en Arduino IDE
Descomprime el contenido del archivo EMG_Filter-master.zip, copia y pega la carpeta EMGFilters en la ubicación: Documentos>Arduino>libraries
Nota: para que la librería funcione, reinicia el IDE de Arduino.
Conexión
Programa contador de movimiento:
Con este programa tomaremos lecturas de las actividades musculares y neuronales del ser humano mediante la detección de EMG(electromiografía) y contar cuantas veces realizamos una actividad o movimiento con nuestra mano.
/* 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 notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 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. */ #if defined(ARDUINO) && ARDUINO >= 100 #include "Arduino.h" #else #include "WProgram.h" #endif #include "EMGFilters.h" #define SensorInputPin A0 //sensor input pin number /* Defina la variable "threshold" como 0 para calibrar primero el valor de referencia de las señales EMG de entrada. Después de cablear los sensores EMG a la placa Arduino, colóquelos. Relaja tus músculos durante unos segundos, Podrá ver una serie de valores de señales EMG impresos en su terminal serial. Elija el máximo como línea de base estableciendo la variable "threshold". Luego sube otra vez este proyecto. El "envelope", que son los datos de la señal EMG, que se imprimirá en serial. El desarrollador puede trazarlo utilizando Arduino SerialPlotter. Nota: Después de la calibración, Cualquier valor de la señal EMG por debajo de la línea de base se tratará como cero. Se recomienda realizar la calibración cada vez que use el sensor EMG. */ unsigned long threshold = 0; // (threshold=0:0: en el proceso de calibración) unsigned long EMG_num = 0; // EMG_num: El número de señales EMGFilters myFilter; SAMPLE_FREQUENCY sampleRate = SAMPLE_FREQ_500HZ; NOTCH_FREQUENCY humFreq = NOTCH_FREQ_50HZ; void setup() { myFilter.init(sampleRate, humFreq, true, true, true); Serial.begin(115200); } void loop() { int data = analogRead(SensorInputPin); int dataAfterFilter = myFilter.update(data); int envelope = sq(dataAfterFilter); envelope = (envelope > threshold) ? envelope : 0; /* Si threshold = 0, explica el estado en el que se encuentra en el proceso de calibración, el código no se ejecuta. si obtiene EMG singal, número ++ e imprime */ if (threshold > 0) { if (getEMGCount(envelope)) { EMG_num++; Serial.print("EMG_num: "); Serial.println(EMG_num); } } else { Serial.println(envelope); } delayMicroseconds(500); } int getEMGCount(int gforce_envelope) { static long integralData = 0; static long integralDataEve = 0; static bool remainFlag = false; static unsigned long timeMillis = 0; static unsigned long timeBeginzero = 0; static long fistNum = 0; static int TimeStandard = 200; /* La integral se procesa para sumar continuamente el valor de la señal. y compare el valor integral del muestreo anterior para determinar si la señal es continua */ integralDataEve = integralData; integralData += gforce_envelope; /* Si la integral es constante y no es igual a 0, entonces se registra el tiempo; */ if ((integralDataEve == integralData) && (integralDataEve != 0)) { timeMillis = millis(); if (remainFlag) { timeBeginzero = timeMillis; remainFlag = false; return 0; } /* Si el valor integral excede los 200 ms, el valor integral es 0, regresa para obtener la señal EMG */ if ((timeMillis - timeBeginzero) > TimeStandard) { integralDataEve = integralData = 0; return 1; } return 0; } else { remainFlag = true; return 0; } }
Calibración
- Después de cablear los sensores EMG a la placa Arduino.
- Relaja tus músculos durante unos segundos, Podrá ver una serie de valores de señales EMG impresos en su terminal serial.
- Elija el máximo como línea de base, cambia el valor de la variable «threshold» por la línea base elegida. Luego sube otra vez este proyecto.
Se carga el programa nuevamente con el valor obtenido de la calibración y se abrirá el Serial par observar cuando las actividades musculares de la mano cambian
Atención:
- El rango de tensión de alimentación es de 3.3 ~ 5.5 V; La corriente de suministro no debe ser inferior a 20 mA; La corriente de ondulación y la corriente perturbadora deben ser lo más bajas posible. Se recomienda voltaje CC estabilizado.
- El rango de espectro efectivo es de 20 Hz a 500 Hz, y se recomienda tomar muestras y digitalizar el convertidor ADC que tiene una resolución superior a 8 bits y una frecuencia de 1 kHz para conservar la información original.
- La colocación del electrodo seco de metal debe ser coherente con la dirección del músculo.
- El producto no es un dispositivo médico profesional y no puede diagnosticar ni curar enfermedades como dispositivo auxiliar.
Valoraciones
No hay valoraciones aún.