Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Определение частоты пульса с помощью фоторезистора

Компоненты и расходные материалы

Digilent OpenScope MZ
× 1
Arduino UNO
× 1
Четырехъядерный операционный усилитель общего назначения Texas Instruments
× 1
Высокоскоростной одиночный компаратор Texas Instruments
× 1
Многооборотный прецизионный потенциометр - 10 кОм (25 витков)
× 2
Однооборотный потенциометр - 100 кОм
Если у вас есть многооборотный потенциометр, его будет легче отрегулировать.
× 1
Однооборотный потенциометр - 10 кОм
× 1
Конденсатор 100 мкФ
× 1
Конденсатор 100 нФ
× 1
Резистор 10 кОм
Или один 20 КБ
× 2
Резистор 4,75 кОм
× 1
Резистор 82 кОм
Вы также можете получить два потенциометра из 100k и установить один на 82k.
× 1

Приложения и онлайн-сервисы

IDE Arduino
Digilent WaveForms Live

Об этом проекте

Введение

На создание этого проекта вдохновило видео YouTube, опубликованное CapitanoRed . , где автор сделал пульсометр на основе фоторезистора для отображения на осциллографе. Увидев их видео, я хотел воспроизвести проект и добавить Arduino для расчета и отображения частоты пульса. Таким образом, вы могли смотреть на осциллограмму на осциллографе и одновременно считывать частоту сердечных сокращений.

Когда сердце сокращается и толкает кровь по телу, можно обнаружить мгновенные колебания артериального давления. Это причина того, что мы можем прощупать свой пульс. В тех областях тела, где кожа и плоть достаточно тонкие, эти импульсы можно обнаружить в небольших изменениях проходящего через них света. Хотя наши глаза недостаточно чувствительны, чтобы даже видеть свет, проходящий через наше тело, не говоря уже о колебаниях, фоторезисторы обладают таким уровнем чувствительности.

Фоторезистор меняет свое сопротивление в зависимости от интенсивности падающего на него света. Хотя колебания сопротивления могут быть довольно небольшими для незначительных изменений интенсивности освещения, их можно усилить с помощью пары микросхем операционных усилителей.

Принципы работы

На схемах ниже показана схема схемы, а также макетная плата, использованная в этом проекте.

Фоторезистор находится в делителе напряжения с резистором 20 кОм, что означает, что по мере увеличения количества света на резисторе напряжение на делителе также увеличивается. Первый операционный усилитель («Amp1» на изображении выше) служит фильтром для делителя напряжения, удаляя высокочастотный шум из сигнала. Второй операционный усилитель («Amp2») служит инвертирующим усилителем, настроенным на максимальное усиление сигнала, проходящего через фильтр. Третий операционный усилитель («Amp3») устанавливает виртуальную землю, которая центрирует сигнал на 2,5 В. Это гарантирует, что операционные усилители способны обеспечить максимальный размах сигнала от 0 В до 5 В. После фильтрации и усиления сигнал выглядит примерно так.

Чтобы позволить Arduino измерить вашу частоту сердечных сокращений, сигнал должен пройти через компаратор («Cmp» на схеме). Компаратор - это специализированный операционный усилитель, который предназначен для вывода либо высокого, либо низкого сигнала. Когда напряжение на положительном входе больше, чем на отрицательном входе, компаратор выдает высокий уровень, а когда напряжение на положительном входе меньше отрицательного входа, компаратор выдает низкий уровень. В своей самой базовой конфигурации компаратор служит пороговым детектором, сигнализирующим, когда измеренное напряжение выше или ниже этого порога. Поскольку на выходе компаратора либо высокий (5 В), либо низкий (0 В), он идеально подходит для взаимодействия с цифровыми выводами Arduino.

При более внимательном рассмотрении изображения сигнала, поступающего от операционного усилителя, становится ясно, что есть вторичный импульс до того, как напряжение упадет (это называется дикротической выемкой). Кроме того, в сигнале присутствует значительный шум. Эти два факта означают, что базовая конфигурация компаратора не сможет должным образом обнаруживать импульсы. Вместо одного прямоугольного импульса для каждого биения компаратор будет генерировать несколько импульсов. Это происходит потому, что шум заставит сигнал несколько раз пересекать пороговое значение при подъеме и падении, и, в зависимости от того, где установлены пороговые значения, возможно, во время дикротической вырезки. Это приведет к тому, что Arduino будет считать намного больше импульсов, чем было на самом деле.

С шумным сигналом можно справиться с помощью гистерезиса. Этот документ by Texas Instruments представляет прекрасную дискуссию на тему преобразования сигнала с гистерезисом, показывает, как шум сигнала влияет на производительность компаратора и как решать эти проблемы. Я использовал их схемы и производные уравнения (страницы 5 и 7 документа, соответственно), чтобы разработать асимметричный компаратор для этого проекта. Общая идея состоит в том, что контур обратной связи на выходе изменит напряжение на положительном входе, что будет означать, что порог перехода от низкого к высокому уровню будет отличаться от порога перехода от высокого к низкому уровню. В контексте сердечных импульсов это означает, что компаратор может быть настроен на запуск в одной точке на восходящем махе, а затем в другой точке при нисходящем махе, предпочтительно после дикротической метки. Таким образом, Arduino будет видеть один квадратный импульс для каждого такта, как показано ниже.

Подготовка фоторезистора

Я настоятельно рекомендую использовать какую-нибудь прозрачную крышку на фоторезисторе, например, прозрачную термоусадочную пленку. По крайней мере, убедитесь, что провода полностью закрыты, чтобы не прикасаться ими к коже. Напряжение, генерируемое вашим телом, находится в пределах диапазона, создаваемого фоторезистором, когда он определяет ваш пульс, поэтому контакт с вашей кожей может исказить результаты.

Настройка монитора частоты пульса

Для потенциометра на схеме (R7) используйте однооборотный потенциометр и отрегулируйте его, чтобы максимизировать усиление операционного усилителя без перехода в насыщение. Начните с установки одной стороны потенциометра приблизительно на 375 Ом и подключения фильтра («Amp1») к этой стороне. Эта величина усиления должна генерировать достаточно импульса, чтобы вы могли увидеть его в WaveForms Live. Выполнив действия, описанные в следующем разделе («Просмотр импульсов в WaveForms Live») и успешно просмотрев свой пульс, вы можете при необходимости изменить усиление. Увеличьте амплитуду импульса, поворачивая потенциометр, чтобы уменьшить сопротивление со стороны фильтра. Если амплитуда уже слишком велика и вызывает ограничение, увеличьте сопротивление на стороне фильтра. Прочтите подписи к изображениям, которые следуют, чтобы определить, как выглядит желательный сигнал.

Я рекомендую использовать многооборотные потенциометры для резисторов R3 и R4, чтобы точно установить пороги для компаратора. Резистором R5 может быть любой резистор в диапазоне 10–100 кОм, если он точно измерен. Вы можете использовать электронную таблицу в разделе приложений, чтобы определить, какие значения установить R3 и R4 на основе измеренного значения R5 и пороговых напряжений. Пороги «Vl» и «Vh» необходимо будет изменить в зависимости от импульса, который вы увидите через осциллограф (см. Раздел «Установка пороговых значений компаратора»).

Резисторы R8 и R9 можно заменить одним потенциометром, при этом средний контакт подключается к положительному входу операционного усилителя. Таким образом, виртуальное заземление может быть легко отрегулировано без необходимости поиска подходящих резисторов. С помощью вольтметра или OpenScope установите выходной сигнал на 2,5 В.

Просмотр импульсов в WaveForms Live

Чтобы просмотреть свое сердцебиение через WaveForms Live, вам необходимо изменить некоторые настройки в меню. По умолчанию выходной сигнал будет либо растянутым и его будет трудно интерпретировать, либо скорость обновления будет очень низкой, и будет сложно отрегулировать захват фоторезистора для генерации четких импульсов.

Подключите канал 2 осциллографа OpenScope (синий провод) к выходу «Amp2» и убедитесь, что провод заземления подключен к заземлению на макетной плате. В WaveForms Live измените Время до "1 с" и в триггере меню нажмите ВЫКЛ кнопка. Для обоих Osc Ch 1 и Osc Ch2 набор меню Смещение до 2,5 В и рядом с Образцами щелкните значок замка и введите «1000» в поле, которое станет доступным. Это заставит сигнал появляться в шкале времени, которую легко интерпретировать, но заставит обновления происходить чаще, чем они были бы по умолчанию. Экран должен обновляться каждые 4 секунды или около того. Если это все еще слишком медленно, вы можете увеличить Образцы значение, но за счет более короткого фрагмента сигнала («2000» будет фиксировать около одного тактового сигнала за раз).

Нажмите кнопку RUN кнопку и измерить пульс пальцем на фоторезисторе. Вам нужно будет найти лучший способ добиться стабильных результатов. Система очень чувствительна к изменениям давления, поэтому вам нужно найти способ держать палец неподвижным. Я обнаружил, что лучше всего измерять пульс в первом суставе указательного пальца. На тренировку уходит немного времени, но в конце концов вы найдете лучший метод. Если пульс кажется слишком маленьким, отрегулируйте потенциометр, как указано в первом абзаце предыдущего раздела («Настройка монитора сердечного ритма»).

Установка пороговых значений компаратора

Как только сигнал станет видимым на осциллографе, вам нужно будет установить пороговые значения, при которых компаратор сработает и подаст сигнал на Arduino. Получите репрезентативную форму сигнала и остановите захват, чтобы форма сигнала оставалась на дисплее. Внизу экрана нажмите КУРСОРЫ . кнопка. В разделе Тип выберите "Voltage" и установите оба CursorChannels в «Оск 2». На дисплее появятся две горизонтальные пунктирные линии. Перетащите треугольники с левой стороны, чтобы переместить их. Установите одну из линий в точке около пика импульса, а другую - в точке ниже дикротической метки. Посмотрите на нижнюю часть экрана и запишите два напряжения, указанные в скобках. Введите эти значения в качестве пороговых напряжений «Vl» и «Vh» в таблице, прилагаемой в конце. Меньшее значение будет «Vl», а большее - «Vh». Основываясь на этих значениях и выбранном вами значении резистора R5, установите значения потенциометра R3 и R4, которые рассчитываются в электронной таблице.

После того, как компаратор настроен, он должен начать выдавать сигнал, подобный тому, который был перед разделом «Подготовка фоторезистора».

Код Arduino

Код Arduino состоит из частотомера и метода расчета частоты пульса в ударах в минуту. Частотомер учитывает ширину импульса, исходящего от компаратора, и отклоняет все, что меньше 200 миллисекунд или больше 800 миллисекунд. Это предотвратит отображение ложных данных, когда фоторезистор не используется для измерений, а компаратор может иметь высокий или низкий уровень или быстро переключаться между двумя состояниями. Код сохраняет текущее среднее значение частоты пульса за предыдущие 15 секунд, чтобы отфильтровать пропущенные импульсы из-за шума сигнала, вызванного случайными движениями.

Будущие улучшения

Основным недостатком этого проекта является то, что фоторезистор трудно удерживать таким образом, чтобы импульсы имели одинаковую амплитуду между применениями. Так как датчик зависит от окружающего освещения для обнаружения пульса, изменение уровня освещенности в течение дня может привести к различным результатам. Я заметил, что в пасмурные дни пороги моего компаратора были слишком широкими, а в ярко освещенные дни дикротическая выемка была очень выраженной и могла вызвать ложное обнаружение пульса. Кроме того, фоторезистор обнаруживает даже незначительные изменения света, вызванные движением в комнате. Проблема согласованности может быть решена несколькими способами.

В сенсорную систему может входить светодиод, обеспечивающий постоянный свет. Это будет напоминать клипсы для мониторинга сердечного ритма, используемые в кабинетах врачей, или мониторы сердечного ритма, которые можно увидеть в сотовых телефонах. Я попытался поднести красный светодиод к верхней части пальца с фоторезистором с другой стороны. Результаты были обнадеживающими, так что это, вероятно, жизнеспособный вариант, если удастся сделать хорошее ограждение.

Что касается программного обеспечения, то потенциальным решением было бы использование алгоритма автоматического выбора диапазона в Arduino. Он обнаружит импульсы и найдет их пики и впадины. Однако этого недостаточно для измерения пульса. Для правильного частотомера требуются прерывания. Без прерываний процессор Arduino мог бы делать что-то еще, кроме проверки входных контактов и пропуска импульса. Поскольку прерывания доступны только на цифровых выводах, наилучшим способом реализации автоматического выбора диапазона было бы использование цифровых потенциометров. Arduino будет использовать аналоговый вывод, чтобы найти диапазон, в котором появляется импульс, определить, какими должны быть пороги компаратора, применить их через цифровые потенциометры, а затем использовать цифровой сигнал от компаратора для выполнения подсчета частоты. P>

Код

  • компаратор calcs.xlsx
  • Счетчик пульса Arduino
компаратор calcs.xlsx Arduino
Эта электронная таблица Excel вычислит значения R3 и R4 для установки асимметричных пороговых значений для компаратора. Вы можете изменить столбец R5 на измеренное значение резистора. Vl и Vh необходимо изменить на любые пороговые значения, необходимые для получения чистого пульса по частоте сердечных сокращений.
 Предварительный просмотр отсутствует (только загрузка). 
Счетчик пульса Arduino Arduino
Этот код рассчитает вашу частоту сердечных сокращений на основе импульсов, отправленных ему компаратором.
 #define INT0 3float frequency; long timeCount; int counter; long pulseStart; int inputPin =3; boolean low; float freqAvg; float total; void setup () {attachInterrupt (digitalPinToInterrupt (INT0), прерывание, ИЗМЕНЕНИЕ); счетчик =0; timeCount =0; частота =0; низкий =ложь; Serial.begin (9600); всего =15;} пустая петля () {timeCount =миллис (); while (millis () - timeCount <5000) {частота =счетчик; } если (частота> 3) {всего + =частота; всего - =freqAvg; freqAvg =всего / 3; } showHR (); счетчик =0;} void intrruption () {если (digitalRead (3) ==0) {fallDetect (); низкий =истина; } иначе, если (digitalRead (3) ==1) {widthCheck (); }} void fallDetect () {pulseStart =millis ();} void widthCheck () {long pulseEnd =millis (); if ((pulseEnd - pulseStart> 200) &&(pulseEnd - pulseStart <800) &&low) {counter ++; низкий =ложь; }} void showHR () {Serial.print ("Heart rate ="); Serial.println (freqAvg * 12); } 

Схема

hr_monitor_tnffXlVQQV.fzz

Производственный процесс

  1. Внешний дефибриллятор
  2. Искусственное сердце
  3. Искусственный клапан сердца
  4. Аппарат ЭКГ
  5. Обнаружение молний с помощью Raspberry Pi
  6. Windows 10 IoT Core - считывание пульса
  7. Удаленный монитор сердечного ритма
  8. Обнаружение магнетизма ядра одиночного атома
  9. Датчики, встроенные в одежду, монитор сердечного ритма
  10. Здоровье сердца начинается с безмасляного сжатого воздуха