Щелчки раз в секунду, при опросе датчика EMG.
- Войдите на сайт для отправки комментариев
Есть у меня один проект на ESP32: https://github.com/zenbooster/RPD
В нём я опрашиваю китайский датчик EMG с частотой SAMPLE_RATE раз в секунду, упаковываю и сжимаю данные, и отправляю их telnet клиенту, если такой имеется.
Датчик EMG - китайский модуль, состоящих из 3-х сухих контактов прижимаемых к нужной мышце, и 3-х проводов: красный - "+", зелёный - земля, синий - сигнал. Питание у него 4 вольт. Сигнал выдаёт от 0 до 5 вольт, нулевой сигнал 2.5 вольта. Если сигнальный провод отключить, telnet клиент после распаковки получит нулевой сигнал, с редкими непериодичными шумовыми значениями. Если подключить сигнальный провод и записать активность расслабленной мышцы, а потом прослушать / посмотреть на графике в audacity, то будут заметны щелчки, раз в секунду. Пробовал ставить конденсатор от ноги к которой подключён через делитель датчик к земле, ёмкостью 0.1 мкф. Щелчки, можно сказать, что исчезли, но есть одно неприятное "НО". Теперь не видны изменения интенсивности сигнала. Дело в том, что я записываю активность некоторой мышцы с момента засыпания и до пробуждения. В начале видно плавное падение тонуса в момент засыпания, потом есть участки, когда тонус падает ещё ниже (фаза быстрого сна) на несколько минут / десятков минут, затем возвращается к предыдущему значению. Все эти переходы как правило разделены кратковременными всплесками мышечной активности (вздрагивания). Так вот, с конденсатором, всего этого не видно.
Пробовал писать с заводского беспроводного датчика, там щелчков нет.
Помогите советом.
Что то не понял, как тут редактировать. Питание датчика 5 вольт. Я там не на ту клавишу попал...
Убери всю проводку подальше от антенны. Сократи до минимума.
Если дело в этом, можно попробовать отключить сигнальный провод датчика, а вместо него воткнуть просто отрезок провода. Если дело в наводках от антенны, помеха воспроизведётся.
Я проверю вечером, но что то мне подсказывает, что дело не в этом. Где то натыкался на тему, что в АЦП ESP32 перезаряжается семплирующий конденсатор (как то так), который производит эти щелчки. Лечилось это конденсатором 0.1 мкф с ноги на землю. Но это не мой вариант, т.к. данные невозможно будет классифицировать. Возможно надо как то согласовать датчик с остальной схемой, знать его выходное сопротивление. Но как бы его ещё узнать...
Flac файл с щелчками:
https://soundcloud.com/n-a-n-a-199619766/2021-09-27-21-57-17rpd?si=097b5ae8f7e64d81abffbf43017a98ca
Я бы для начала всякие моторы из схемы убрал и запитал от батареи. Потом запытал внешний ADC типа 1115... Ну и т.п.
Я бы для начала всякие моторы из схемы убрал и запитал от батареи. Потом запытал внешний ADC типа 1115... Ну и т.п.
Попробую при случае. А от батареи (powerbank) запитывал, помеха есть.
Что ещё делал:
Понизил SAMPLE_RATE с 2000 до 1000, частота щелчков осталась прежней
Подал от powerbank-а 5 вольт вместо сигнала, принял массив максимальных значений 0x0fff ..., просто не подумал, что на таком фоне помехи не будут заметны ... Попробую при случае с батарейки cr2032 подать напряжение.
Китайским карманным осцилом смотрел до этого ещё, вроде нет помехи этой, хотя может стоит посмотреть по тщательней...
По поводу согласования, у меня закралась мысль, что стоит собрать делитель напряжения сигнала на других резисторах. Возможно надо поднять их сопротивление, что бы делитель стал более высокоомной нагрузкой для датчика... Или снизить сопротивление, что бы через АЦП шел ток побольше? Надо попробовать схему набросать...
Да, ещё вместо сигнального провода ставил просто отрезок провода, что бы исключить влияние наводок. Помехи в этом случае нет.
Да, ещё вместо сигнального провода ставил просто отрезок провода, что бы исключить влияние наводок. Помехи в этом случае нет.
Каким образом это должно помочь? Сделай как положено.
Я тут плату подпалил, только вчера новые пришли )
Это помогло исключить влияние наводок, когда провод выступает в роли антенны.
Сделал - развернул плату ESP32 на 180 градусов. Не помогло.
Ещё пробовал уменьшать размер буфера вдвое, чтобы в него помещалось только пол секунды вместо секунды. Частота щелчков при этом увеличивалась вдвое. Я уж было подумал, что накосячил в коде, попробовал вместо чтения значения из АЦП подставлять константу, например 0x0777. Щелчки при этом исчезали.
Пробовал вместо источника сигнала (EMG датчика) подключать слегка разряженную батарейку 1.5 в. После нормализации сигнал получался с шумами, видимо потому, что заряд батарейки постоянно флуктуировал в небольших пределах, но периодических щелчков я не услышал.
Пробовал ещё раз подключать осциллограф параллельно датчику. Когда подключаюсь по телнету, действительно появляются всплески. Если подключения по телнету нет, то нет и передачи. Всплесков при этом то же практически нет.
Пробовал ждать завершения отправки данных телнет-клиенту, прежде чем наполнять новый буфер - никак не влияет.
Вибромотор из схемы тоже убрал.
Пробовал поставить параллельно питанию датчика (а запитан он от 5 вольт с платы ESP32) конденсатор 1000 мкф. Щелчки исчезли!
На соседнем форуме подсказали, что то, что при уменьшении размера буфера увеличивается частота щелчков, как и частота отправки по wifi, означает, что датчик ловит помеху от wifi по питанию. По этому и помог конденсатор 1000 мкф параллельно питанию датчика. Сейчас даже слабая активность от мышечного тонуса, после нормализации свободна от щелчков.
Это помогло исключить влияние наводок, когда провод выступает в роли антенны.
Ты понятия не имеешь о физике электричества, если думаешь, что это что-то исключило.
Возможно, но я попытался ))) Я программист а не электронщик.