首页 > 其他分享 >肌电传感器 SEN0240

肌电传感器 SEN0240

时间:2023-08-14 23:55:53浏览次数:115  
标签:timeBudget int timeStamp 肌电 envlope 传感器 Serial SEN0240 FREQ

传感器购买连接

传感器相关信息这个也是

传感器驱动示例代码:

    /*
    * 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 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);

        // open serial
        Serial.begin(115200);

        // setup for time cost measure
        // using micros()
        timeBudget = 1e6 / sampleRate;
        // micros will overflow and auto return to zero every 70 minutes
    }

    void loop() {
        /* add main program code here */
        // In order to make sure the ADC sample frequence on arduino,
        // the time cost should be measured each loop
        /*------------start here-------------------*/
        timeStamp = micros();

        int Value = analogRead(SensorInputPin);

        // filter processing
        int DataAfterFilter = myFilter.update(Value);

        int envlope = sq(DataAfterFilter);
        // any value under threshold will be set to zero
        envlope = (envlope > Threshold) ? envlope : 0;

        timeStamp = micros() - timeStamp;
        if (TIMING_DEBUG) {
            // Serial.print("Read Data: "); Serial.println(Value);
            // Serial.print("Filtered Data: ");Serial.println(DataAfterFilter);
            Serial.print("Squared Data: ");
            Serial.println(envlope);
            // Serial.print("Filters cost time: "); Serial.println(timeStamp);
            // the filter cost average around 520 us
        }

        /*------------end here---------------------*/
        // if less than timeBudget, then you still have (timeBudget - timeStamp) to
        // do your work
        delayMicroseconds(500);
        // if more than timeBudget, the sample rate need to reduce to
        // SAMPLE_FREQ_500HZ
    }

驱动代码需要用到 EMGFilters 库,下载地址

推荐每次使用时都校准一次,因为即使是同一个人,不同位置的肌电信号也是不同的。

校准流程:

  • 将样例代码中的 Threshold 变量改成 0,即:static int Threshold = 0;
  • 上传样例代码至 Arduino 控制板中,然后打开 Arduino IDE 的串口监视器,观察打印的数值;
  • 放松手臂上的肌肉,观察串口打印的数值。身心平静,让肌肉放松一会,观察串口监视器打印的最大数值,并记录之。如果数值太大,比如 1000 以上,可尝试微调干电极的放置位置;
  • 将样例代码中的 Threshold 变量改成刚才记录的最大数值,重新上传样例代码至 Arduino 主控板。

需要注意的是:

  • 使用时必须要把笔记本电脑电源断开才能出正确的波形,不然会有噪音;
  • 传感器必须「紧贴」皮肤(肌肉处),否则会出现 0-40000 的规律读值。这是 Arduino 模拟输入引脚的信号。就算不接入传感器,引脚也会有读值。而驱动代码会将该读值放大。

标签:timeBudget,int,timeStamp,肌电,envlope,传感器,Serial,SEN0240,FREQ
From: https://www.cnblogs.com/wonderhoi/p/17630107.html

相关文章

  • 智慧工地平台的技术应用:无线传感器、人脸识别和云计算
    智慧工地云平台源码 智慧工地源码智慧工地是指通过信息化技术、物联网、人工智能技术等手段,对建筑工地进行数字化、智能化、网络化升级,实现对施工全过程的实时监控、数据分析、智能管理和优化调控。智慧工地的建设可以提高工地的安全性、效率性和质量,降低施工成本,是建筑行业数字化......
  • 水位传感器在热水器的应用
    光电水位传感器是一种常用于测量液体水位的传感器,它通过使用光电传感器来检测液体的水位,并将其转化为电信号。在热水器中,光电水位传感器被广泛应用于检测水箱中的水位。热水器是我们日常生活中常用的家电之一,而水位的控制是热水器正常运行的重要因素之一。光电水位传感器在热水器中......
  • RCC & GPIO库函数&传感器输入
    RCC: ResetandClockControl,即复位和时钟控制。  一般在.h文件的末尾都是一些函数声明,RCC常用的三个函数(外设时钟控制,没有时钟外设不工作):voidRCC_AHBPeriphClockCmd(uint32_tRCC_AHBPeriph,FunctionalStateNewState);voidRCC_APB2PeriphClockCmd(uint32_tRCC_AP......
  • MATLAB用深度学习长短期记忆 (LSTM) 神经网络对智能手机传感器时间序列数据进行分类|
    最近我们被客户要求撰写关于长短期记忆(LSTM)神经网络的研究报告,包括一些图形和统计输出。此示例说明如何使用长短期记忆(LSTM)网络对序列数据的每个时间步长进行分类。要训练深度神经网络对序列数据的每个时间步进行分类,可以使用 序列对序列LSTM网络。序列对序列LSTM网络......
  • 分离式液位传感器优势
    分离式液位传感器相比于传统的光学传感器具有以下优势:分离式液位传感器采用菱镜部分直接设计到用户水箱上,光学组件分离出来置于水箱外部感应。这种设计使得传感器能够更加准确地感应水位的变化,提供更精准的液位检测结果。传统的光学传感器需要将整个传感器安装在水箱内部,可能会与......
  • MATLAB用深度学习长短期记忆 (LSTM) 神经网络对智能手机传感器时间序列数据进行分类|
    原文链接:http://tecdat.cn/?p=26318原文出处:拓端数据部落公众号 最近我们被客户要求撰写关于长短期记忆(LSTM)神经网络的研究报告,包括一些图形和统计输出。此示例说明如何使用长短期记忆(LSTM)网络对序列数据的每个时间步长进行分类。要训​​练深度神经网络对序列数据......
  • 岩土工程仪器多通道振弦传感器信号转换器应用于桥梁安全监测
    岩土工程仪器多通道振弦传感器信号转换器应用于桥梁安全监测桥梁作为交通运输的重要节点,其安全性一直备受关注。不同于其他建筑物,桥梁所处的环境复杂多变,同时,其所需承受的负荷也相对较大,这就需要对桥梁的安全进行高效、准确的监测与评估。随着传感器技术的不断发展,多通道振弦传感......
  • 基于机器视觉和倾角传感器的位姿检测系统及验证
    悬臂式掘进机位姿检测是综掘工作面自动化的基础和前提。只有获取稳定可靠的掘进机实时位姿,才能够在此基础上进行综掘工作面自动化、智能化改造工作。为了提高井下综掘工作面的生产效率,西安电子科技大学机电工程学院的研究团队提出一种基于机器视觉和倾角传感器的悬臂式掘进机位姿......
  • 岩土工程监测仪器多通道振弦传感器信号转换器应用于铁路监测
    岩土工程监测仪器多通道振弦传感器信号转换器应用于铁路监测岩土工程监测是工程建设和运营过程中必不可少的环节,它主要是通过对地下水位、土体应力、变形、固结沉降等参数进行实时监测,以保证工程施工和运营的安全性和稳定性。而多通道振弦传感器信号转换器正是岩土工程监测中的重......
  • 岩土工程仪器多通道振弦传感器信号转换器应用于隧道安全监测
    岩土工程仪器多通道振弦传感器信号转换器应用于隧道安全监测多通道振弦传感器信号转换器VTI104_DIN是轨道安装式振弦传感器信号转换器,可将振弦、温度传感器信号转换为RS485数字信号和模拟信号输出,方便的接入已有监测系统。传感器状态专用指示灯方便现场安装调试。VTI104_DIN......