Главная » Медицина
Призовой фонд
на июль 2017 г.
1. Осциллограф DSO138
Паяльник
2. Регулируемый паяльник 60 Вт
Паяльник
3. 200 руб.
От пользователей

Карманный кардиограф на SD-карте

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

Устройство разрабатывалось для изучения поведения человека во сне, но может быть также полезно спортсменам и медикам. Начинающих радиолюбителей заинтересует схема регистрации биотоков (когда источником сигнала становится человеческое тело) и пример применения широко распространенных карт памяти SD для сохранения разнородной информации.

Принципиальная схема кардиографа приведена на рис. 1.

Принципиальная схема кардиографа
Рис 1 - Принципиальная схема простого кардиографа

На элементах DA1, DA2, DA3 собран усилитель кардиосигнала. Это обычный УНЧ с дифференциальным входом и высоким входным сопротивлением [1]. К входам усилителя E+ и E- подключается пара электродов, закрепленных на теле в области сердца для съема исходного кардиосигнала. Элементы DA1.1 и DA1.2 работают как повторители, обеспечивающие высокое входное сопротивление. Инструментальный усилитель [2] DA3 усиливает сигнал примерно в 6 раз (коэффициент задается резистором  R4) перед подачей на АЦП микроконтроллера DD1. 

Помимо полезного сигнала биологического происхождения на электродах E+ и E- присутствуют синфазные помехи (прежде всего 50 Гц от осветительной сети), амплитуда которых в тысячи раз превышает полезный сигнал. Для их подавления используется «активная земля» [3]: на теле закрепляется третий электрод E0, на который с выхода DA2.1 в противофазе подаётся синфазная составляющая входного сигнала. Её выделение выполняет сумматор на R1 и R2, а DA2.1 – усиление и инверсию. Благодаря такой своеобразной отрицательной обратной связи величина синфазных помех резко снижается, и далее они эффективно подавляются DA3. Для формирования опорного напряжения (средней точки) для ОУ DA2.1 и DA3 используются элементы R6, R7, С1, С2, DA2.2.

Для измерения температуры и положения тела к микроконтроллеру DD1 по двухпроводному интерфейсу I2C подключены интегральные датчики температуры ВК1 и ускорения ВК2. Спецификация шины I2C реализуется программно. Резисторы R8 и R10 служат нагрузками линий интерфейса. Резисторы R9, R11, также как R5, R12, R14, R15 защищают выводы микроконтроллера и периферии от перегрузок при сбоях МК (в отлаженное устройство их можно не устанавливать).

Питание акселерометра BK2 осуществляется через диод VD1, который снижает напряжение питания BK2 на 0.7 в, чтобы напряжение "свежезаряженного" Ni-MH аккумулятора GB1 (4.2 в) не превышало паспортного значения для BK2 MMA7455LT (3.6 в). Положение тела определяется по проекции силы тяжести на оси чувствительности BK2, что например позволяет четко различить следующие положения тела: стоя, лежа на спине, на животе, на левом или на правом боку. По изменению ускорения фиксируется двигательная активность.

Функционирование устройства как единого целого осуществляется под управлением микроконтроллера DD1. Сразу после подачи питания устройство работает в режиме записи: DD1 выполняет периодический опрос датчиков BK1 и BK2, измерение частоты на входе CCP1 и оцифровку кардиосигнала. Объединенный информационный поток записывается в файл на карту памяти micro SD (разъем X1),  а также выдаётся в ПК по интерфейсу RS-232 (разъем X2) для контроля и визуализации. Командой с компьютера можно остановить запись и перевести устройство в режим скачивания сохраненных файлов.

Сохранение  информации осуществляется на карте памяти micro SD [4, 5], которая подключается через разъем X1. В процессе работы карта может потреблять до 100 мА (в импульсе), создавая мощные помехи по питанию, поэтому она запитана от источника GB1 напрямую, а остальная схема через RC - фильтр R16 C5.

От использования стандартной файловой системы FAT на карте SD пришлось отказаться: она не устойчива к внезапному исчезновению питания, а памяти МК не достаточно для буферизации поступающих в реальном времени данных. Разработан альтернативный формат хранения информации.  Запись на карту осуществляется последовательно, сектор за сектором. Четырехбайтный номер первого свободного сектора EmptyPos, в который должна осуществляться запись новых данных, хранится в EEPROM микроконтроллера. После записи очередного сектора номер EmptyPos инкрементируется.

В каждом секторе SD-карты (размером 512 байт) наряду с полезными данными сохраняется сигнатура и 4-байтный номер первого сектора файла. Таким образом, хотя данные на карту пишутся строго последовательно, они структурированы в виде файлов, рис. 2. Логика получения списка всех файлов реализуется программой на персональном компьютере; при этом предпринимаются дополнительные меры по контролю и коррекции ошибок.

Механизм последовательной записи файлов на SD-карту
Рис 2 - Механизм последовательной записи файлов на SD-карту

Вместо привычных операций форматирования (при установке новой SD-карты) и удаления файлов (при исчерпании объема карты) пользователем выполняется операция установки EmptyPos на начальный сектор с номером 65536. Первые 65536 секторов карты не используются ради сохранения существующей на карте «настоящей» файловой системы. 

Устройство соединяется с компьютером по интерфейсу RS-232 через разъем X2. Резистор R13 ограничивает ток через вывод RX МК в условиях, когда напряжение входного сигнала выше напряжения питания МК. Сигналы на разъёме X2 имеют уровни TTL, поэтому непосредственно подключать компьютер к разъему X2 нельзя! Следует использовать готовый переходник USB-COM от сотового телефона (обычно такие переходники имеют уровни TTL) или изготовить такой переходник самостоятельно на базе микросхемы FT232R по типовой схеме [6]. В крайнем случаем можно собрать преобразователь уровней в TTL на микросхеме MAX232 или по схеме на рис. 3. Через разъем X2 (контакты 5 и 8) может также осуществляться зарядка аккумулятора GB1.

Скорость обмена устройства с компьютером фиксированная: 57600 бод. Только для ускорения переписывания файлов с SD - карты в ПК скорость может быть повышена до 460800, 806400 или 921600 бод (если компьютер их поддерживает). Выдача данных при этом осуществляется МК программно на вывод RC0 (а выход TX отключается).

Простой преобразователь ТТЛ – RS-232
Рис. 3 - Простой преобразователь ТТЛ – RS-232

Для работы с устройством разработана специальная программа для ПК (файл программы EKG_SD_2010.exe прилагается), которая позволяет визуализировать кардиограмму и показания датчиков во время записи, считывать с SD-карты список файлов и копировать нужные на компьютер, сохранять кардиосигнал в стандартном формате WAVE PCM, обрабатывать записи с целью выделения R-зубцов [1] и расчета частоты пульса, визуализировать и сохранять в унифицированном формате полученные временные зависимости. Более подробно работа с программой описана в прилагаемом «руководстве оператора» EKG_SD_2010.doc.

МК DD1 измеряется частоту сигнала на выводе 13, что можно использовать для подключения к устройству дополнительных датчиков. Частота сигнала не должна превышать 8 КГц (относительная погрешность измерения не хуже 10-6, период измерения ~ 0.25 сек).

Детали и конструкция. В качестве DA1 и DA2 можно применять любые ОУ широкого применения, работоспособные в диапазоне питающих напряжений от 2.7 до 4.2 в. Инструментальный усилитель DA3 заменим обычным ОУ, включенным по схеме на рис. 4. Однако при этом желательно подобрать близкими сопротивления резисторов R18 и R19, R20 и R21 (а также R1 и R2).

Для микроконтроллера DD1 должна быть предусмотрена панелька. В него следует занести программу из прилагаемого файла EKG_SD_Pic.hex ("фьюзы" хранятся внутри прошивки).

Функциональная замена DA3 AD623
Рис. 4 - Функциональная замена DA3 AD623

Устройство может работать без SD - карты или датчиков BK1 и BK2 с соответствующим снижением функциональности. Это позволяет начинающим радиолюбителям упрощать устройство по своему усмотрению без необходимости изменения прошивки DD1 или программ для компьютера. Например, если надо только наблюдать биотоки в реальном времени, а запись на SD-карту не требуется, то карту (как и дополнительные датчики) можно не устанавливать.

В качестве разъема X1 для подключения micro SD-карты используется переходник micro SD ® SD (они продаются вместе с micro SD картами). Контакты переходника аккуратно лудят, после чего подсоединяют к схеме короткими проводками МГТФ-0.05. На рис. 5 показана нумерация и обозначения контрактов для макро SD - карты (т.е. переходника). Желательно применять карты SD class 4 и выше (из-за малого объема памяти МК максимальная задержка записи одного сектора должна быть меньше 40 мс). Поддерживаются карты HC (ёмкостью ³ 4 Гб).

Нумерация контактов обычной SD-карты (переходника)
Рис. 5 - Нумерация контактов обычной SD-карты (переходника)

Разъем X2 – типа DB9F или более миниатюрный (подходящий к применяемому переходнику COM-USB).

Датчик температуры BK1 фиксируется на теле пластырем, а к основной схеме подключается 4-мя свитыми в жгут проводами МГТФ-0.05 длиной до 50 см.

Монтаж акселерометра BK2 MMA7455LT (размерами 3´5´1 мм) требует определенной ловкости. Проше всего приклеить датчик к плате контактами вверх и подпаять к схеме проволочками 0.1 мм. Конденсаторы С3, С4 должны стоять в непосредственной близости от ВК2. По задумке датчик должен сохранять достаточно постоянное положение относительно торса (или другой выбранной части тела). Чтобы достичь этого, BK2 можно расположить либо в корпусе кардиографа, либо сделать выносным, подключив к основной схеме проводами также как BK1.

Электроды E+, E-, E0 – металлические кружки Æ 10 мм из титана, которые закрепляются в области сердца пластырем. Для экспериментов можно использовать мелкие монеты – но от длительного контакта с телом они начинают ржаветь! Подключаются электроды неэкранированными проводами МГТФ-0.05 (по возможности провода к E+ и E- следует скрутить, а вокруг обвить провод к E0).

Электрод E0 крепится в любом месте (например, приблизительно между E+ и E-). В медицине используют специальные схемы расположения  электродов на теле и соответствующие методики анализа кардиограмм [1, 7]. Однако для определения частоты пульса электроды E+ и E- можно располагать в области сердца достаточно произвольно, лишь бы наблюдались достаточно четкие импульсы положительной полярности (как на рис. 6). Кардиосигнал также можно снимать с рук, но импульсы при этом слабее (и их автоматическое выделение затруднительно).  

Пример исходного кардиосигнала
Рис. 6 - Пример исходного кардиосигнала

Питается устройство от аккумулятора на 3.6 в. Потребляемый ток зависит от SD-карты и в среднем составляет 20-30 мА. Емкость GB1 более 400 мА/час выбирается исходя из требуемого времени записи (8 - 12 часов). Следует отметить, что напряжение свежего аккумулятора доходит до 4.2 в, превышая установленный предел для SD-карты (3.6 в). Однако практика показала, что они повышенное напряжение выдерживают.

Налаживание. Цифровая часть схемы в налаживании не нуждается. После инициализации SD-карты через 1-2 сек от включения SA1 на выходе TX DD1 должен появиться сигнал передачи потока данных в ПК. Если теперь соединить ПК к устройством и выбрать в программе EKG_SD_2010.exe правильный COM-порт, на экране должны отображаться состояние записи, номер сектора EmptyPos, показания датчиков BK1, BK2 и график оцифрованного кардиосигнала. Далее следует нажать кнопку «СТОП» и выполнить «форматирование». Успех выполнения этих операции свидетельствует о корректной связи устройства с ПК. Нажатием кнопки «Инициализация» проверяется, правильно ли устройство опознаёт SD-карту.

Пока электроды E+, E-, E0 никуда не подключены, исправный усилитель кардиосигнала должен «ловить» (а компьютер отображать) сигнал помехи 50 Гц от сети. При замыкании между собой E+, E-, E0, амплитуда помехи должна резко уменьшаться, причем на выводе 6 DA3 должна быть примерно половина питающего напряжения.

Далее электроды E+, E-, E0 крепят к телу и пытаются засечь импульсы, коррелированные с ударами сердца. При проблемах следует обеспечить увлажнение кожи в месте контакта с электродом и варьировать их положение в поисках лучшего сигнала. Можно также увеличить усиление DA3, уменьшив сопротивление R4.

Фотография собранного кардиографа без акселерометра

Фотография собранного кардиографа

Рекомендуемая литература

1. Барановский А.Л. Аппаратура непрерывного контроля ЭКГ. М.: Радио и связь, 1993. – 248 с.
2. Авербух В. Инструментальные усилители. Схемотехника, 2001. – № 1. – С. 26.
3. Гордейчук А.П. Система "активной земли" в электрокардиографах. – Петербургский журнал электроники, 2005. – №2. – C. 37.
4. http://www.sdcard.org/developers/tech/sdcard/pls/Simplified_Physical_Layer_Spec.pdf
5. Терехин Ю. Музыкальный звонок с картой MMC. Радио, 2009. ­– №9. – С. 24-27.
6. http://www.ftdichip.com/Documents/DataSheets/DS_FT232R.pdf
7. Сизенцева Г.П. - Методическое пособие по электрокардиографии (в помощь медицинской сестре). – М.: Издательство НЦССХ им. Бакулева РАМН, 1998. – 68 с.

Скачать исходники, прошивки, ПО и др. файлы к проекту вы можете ниже

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
Рис. 1
DD1 МК PIC 8-бит
PIC16F873
1 Поиск в FivelВ блокнот
DA1, DA2 ОУКР1446УД12 Поиск в FivelВ блокнот
DA3 Инструментальный усилительAD6231 Поиск в FivelВ блокнот
BK1 Датчик температуры
DS1621
1 Поиск в FivelВ блокнот
BK2 АкселерометрMMA7455LT1 Поиск в FivelВ блокнот
VD1 Диод
КД522А
1 Поиск в FivelВ блокнот
С1, С2 Конденсатор0.22 мкФ2 Поиск в FivelВ блокнот
С3 Конденсатор2.2 мкФ1 Поиск в FivelВ блокнот
С4, С6, С8 Конденсатор0.1 мкФ3 Поиск в FivelВ блокнот
С5, С7 Электролитический конденсатор1000 мкФ2 Поиск в FivelВ блокнот
R1, R2, R4 Резистор
20 кОм
3 Поиск в FivelВ блокнот
R3 Резистор
720 кОм
1 Поиск в FivelВ блокнот
R5, R9, R11, R13-R15 Резистор
300 Ом
6 Поиск в FivelВ блокнот
R6, R7 Резистор
150 кОм
2 Поиск в FivelВ блокнот
R8, R10 Резистор
4.7 кОм
2 Поиск в FivelВ блокнот
R12 Резистор
150 Ом
1 Поиск в FivelВ блокнот
R16 Резистор
10 Ом
1 Поиск в FivelВ блокнот
ZQ1 Кварц10 МГц1 Поиск в FivelВ блокнот
SA1 Выключатель1 Поиск в FivelВ блокнот
GB1 Батарея3.6 В1 Поиск в FivelВ блокнот
E+, E-, E0 Электрод3 Поиск в FivelВ блокнот
X1 Разъем1 Поиск в FivelВ блокнот
X2 Разъем1 Поиск в FivelВ блокнот
Рис. 3
DD2 МикросхемаК516ЛА71 Поиск в FivelВ блокнот
R17 Резистор
10 кОм
1 Поиск в FivelВ блокнот
Рис. 4
ОУ1 Поиск в FivelВ блокнот
R18, R19 Резистор
15 кОм
2 Поиск в FivelВ блокнот
R20, R21 Резистор
150 кОм
2 Поиск в FivelВ блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

Егошкин Николай Опубликована: 2011 г. 0 2
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (51) | Я собрал (0) | Подписаться

0
Алексей #
Автору респект. Хотелось бы задать автору несколько вопросов.
Ответить
0
Автор #
Задавайте вопросы, постараюсь ответить...
Ответить
0
Андрей #
Господин Автор помогите пожалуйста с такими характеристиками вашего устройства для многокритериального анализа:
Вес, размеры, температура роботы, цена, частотный диапазон, мощность потребления.
Ответить
0
Flip #
Хорошая статья, спасибо.
Ответить
0
Евгений #
А можно к этому прибору прибавить экранчик, к примеру от калькулятора, и снимать показания в реальном времени? Если да, то не могли бы вы объяснить как это можно сделать?
Ответить
0
Андрей #
Да, но придётся переделывать схему/прошивку...
Ответить
0
Автор #
Смотреть кардиограмму в реальном времени удобнее на компьютере, в прошивке это уже предусмотрено.
Ответить
0
Алексей #
Какой размер файла будет при записи ЭКГ через 1 час или сутки?
Ответить
0
Автор #
Выборки из кардиосигнала берутся равномерно с частотой 976.5625 Гц. В одном секторе SD карты хранится 234 выборки. Информационный поток 2137 байт в сек, или 7.3 Мбайта в час.
Ответить
0
Олег #
Спасибо за отличную идею, хочу повторить. Возник вопрос, подходит ли микроконтроллер с названием PIC16F873A-I/SO? В журнале Радиохобби №4 за 2012 г, где я впервые ознакомился с Вашей конструкцией, там название PIC16F873. А ведь в конце ещё какие - то буквы должны быть или они не критичны?
Ответить
0
Автор #
Желательно использовать Pic16F873А (другие буквы не существенны), но и без А скорее всего может работать
Ответить
0
Oleg #
При программировании микроконтроллера PIC16F873A с помощью программатора ponyprog, никакая ошибка не выдается, но посмотреть код не могу (программатор его не видит).
Ответить
0
Антон #
Здравствуйте! Напишите пожалуйста какие конденсаторы использовали и вольтаж?
Ответить
0
Александр #
Не подскажите какой маркировки конденсатор С5?
Ответить
0
Чингис #
Извините за вопрос (т.к. скорее всего он глупый т.к. в схемотехнике я полный ноль), но как МК питается от аккумулятора 3.6В (даже если бы и новый 4.2) вместо необходимых 5В?
Ответить
0
Автор #
Контроллер Pic16F873A будет работать от 2В до 5В, только SD-карта меньше чем при 2.7В отвалится.
Ответить
0
александр #
А как вы поймете рабочие у вас датчики или нет? Или они работают с какими-то ненормальными отклонениями, какие параметры с них считать эталонными?
Ответить
0
Inikon #
Зря в делитель 2 конденсатора, если смоделировать в любом симуляторе, то будет видно, что значительно меньше пульсаций влезет в среднюю точку при использовании одного конденсатора и делителя на резисторах. Применимо к любым маломощным смещениям.
Одного - означает от средней точки на минус.
Ответить
0
Автор #
Теоретически правильно, а практически для этого устройства всё по другому.
Дело в том, что опорное напряжение АЦП совпадает с напряжением питания МК. Поэтому у автора и стоят два кондера - чтобы при пульсациях напряжения питания пропорционально пульсировала средняя точка и код АЦП не менялся (если на входах-выходах ОУ примерно пол-питания, как это в среднем и должно быть). Кстати, второй кондер был добавлен в результате именно натурных испытаний.
Ответить
0
виктор #
На экране монитора сплошные помехи. Такого сигнала как на рисунке 6 "пример исходного кардиосигнала" нет. SD карта инициализируется правильно, но при записи пишет "ошибка записи на SD 0x05". При замыкании электродов между собой, помехи не уходят. Отключаешь вывод 2 MCU, те же помехи. Контроллер pic16f876a, ОУ LM358N (3 шт). Датчики температуры и положения не используются. Подскажите что не так?
Ответить
0
Автор #
Прошивка все таки для pic16f873A и на ассемблере написана, поэтому переносимость на другие МК не гарантируется. Например, в качестве буфера в прошивке используются 96 байт второго банка.
А у pic16f876a последние 8 байт этой области мэпнуты на первый банк.
Т.е. под pic16f876a программа даже скомпиляется без изменений, но работоспособности не ждите.
Ответить
0
Inikon #
Собрал нечто похожее, только усиливал буферными каскадами, а не дифференциальным. Прочитал кучу всего, особенно полезна статья 3 в списке литературы т.к. только там есть модель входного сигнала, а без моделирования в симуляторе очень сложно что-либо паять.

В общем результаты эксперимента:
Собирал на ОУ tl072 с двухполярным питанием +-9 вольт от 2х крон, судя по даташиту и по тому что получилось, они отлично для этого подходят. Минус только в высоком напряжении.
Цифровую часть не собирал, смотрел осциллографом. Для удобства ставил полосовой фильтр на 1-16 герц, осциллограф то не покрутишь в таких диапазонах как в программе.
Усиление задал 20, исходя из того что напряжение питания высокое, а гальванический контакт всего до 300 милливольт ожидается, т.е. 6 вольт из возможных 9. При этом удалось словить на диапазоне 50мВ/кл 1 клетку полезного сигнала и 1 клетку шума, впринципе отфильтровать уже можно обычными средствами.
Порядок сборки (той что рабочая, а до этого 2 дня тупил): Сначала собирается дифференциальный каскад, тот что на схеме замещения. После сборки подключается выход к осциллографу, входы замыкаются меду собой и подается между ними и землей прямоугольные импульсы низкой частоты, или запоминается нулевая линия и дается постоянное напряжение. Задача - добиться минимальной амплитуды импульсов или сравнять выходное напряжение с нулем изменяя любой из 4х резисторов. При этом естественно будут помехи, можно использовать функцию усреднения, так же рекомендую на выход сразу поставить ФНЧ. Калибровку делал покуда не получил результат - помехи без касания не более 1.5мВ амплитудой, при касании не более 3мВ. Подача 2 вольт синфазно смещает не более чем на 0.2мВ, если так то каскад не хуже чем AD623, максимум для tl072 Косф=90дБ далее никакая калибровка не поможет.
Снять этим делом еще ничего невозможно, строим схему дальше - добавляются буферные каскады, особой настройки им не нужно, даже резисторы с разбросом можно брать и пофиг.
После их установки, можно будущий индифферентный электрод просто кинуть на общий провод, так можно оценить результат на данный момент. Землю кидаем на язык т.к. сейчас ей нужно очень малое контактное сопротивление, электроды размещаем на груди. При хреновых электродах без проводящей жидкости придется регулировать силой прижима уровень помех. Если все ок, то сигнал уже будет заметен в виде треугольных пиков над ровным шумом в 50 герц, осциллограф по амплитуде 50мв/кл, по времени 500мс на клетку.

Кабель изготовлен 1.5 метров длины. Провод МГТФ свит в пару, а поверх пары навит еще индифферентный, который впринципе может быть и экраном. (предположение, что подойдет обычный акустический стерео). Контакты медные, спиральки из толстых проводов.

Добавляем формирование активной земли, перепаиваем на его выход индифферентный электрод. Теперь его не нужно вешать на язык, он теперь очень чувствительный и проблем с сопротивлением возникнуть не должно.
В результате уровень шума снизится, сигнал станет намного четче, в общем красота.
Ответить
0
viktor #
Популярно и подробно описание настройки аналоговой части. А вот как настроить цифровую часть нет ли ошибки в программе? У меня инициализация проходит, дальше не выполняется команда CMD25 ну и все что за ней, то ли карта нужна какая-то особая, пробовал карту на 2гб и на 4 гб не работает.
Ответить
0
viktor #
Уважаемый автор. а можно поподробней про 96 байт. Почему после декодирования EmptyPos, адрес с которого начинается запись 0xaaaaaaa8 как его сделать 0x00010000? Какие изменения нужно сделать, чтобы использовать pic16f876? Схема и функциональность
очень понравились.
Ответить
0
viktor #
После подсказки автора все заработало. Программа работает только с контроллером pic16f873a. А если ставишь pic16f876, нужны изменения в программе, что я и сделал. Спасибо автору за интересную программу
Ответить
0
Олрг #
А можно выложить переделанную прошивку под 876 пик?
Ответить
0
Автор #
Чтобы установить указатель EmptyPos на начало, необходимо выполнить операцию "форматирования" карты. Или можно записать произвольное значение EmptyPos (кнопка "установить"). Вы можете проверить, правильно ли установлен EmptyPos, нажав кнопку "прочесть".
Виктор, Вы наверное уже сами поняли, что CMD25 у Вас отвергается, потому что начальный адрес (EmptyPos) не корректный.
Скорее всего у вас ничего не работает, потому что вместо pic16f873 установлен pic16f876. Эти МК программно совместимы, но у них несколько различная архитектура памяти. Когда Вы на pic16f876a обращаетесь по адресам [f0-ff] (а по адресам a0-ff сейчас расположен буфер АЦП, который постоянно обновляется по IRQ), идет фактическое обращение по адресам [70-7f], а в текущей прошивке этой области памяти находятся переменные EmptyPosCode и File_StartAdr (см. файл EKG_SD_2010_MK.lst). Это кстати сразу объясняет, почему EmptyPosCode и как следствие EmptyPos у Вас постоянно искаженный. Проще всего это исправить, если вам не нужно измерение частоты на входе CCP, изменив декларацию в прграмме
NewLockRes_T0: 4
NewLockRes_S: 4
NewLockRes_N: 4
на
NewLockRes_T0: 0
NewLockRes_S: 0
NewLockRes_N: 4
При этом как раз освободятся 8 байт и проблема решена.
Но сейчас невозможно гаратировать, что этого будет достаточно, поскольку программа затачивалась и отлаживалась именно под pic16f873a.
Ответить
0
Олег #
Собрал кардиограф ещё пол - года назад, прошивку скачал, попросил на работе товарища, он её зашил. Входную микросхему КР1446 заменил на другую, так как она очень дефицитна, по крайней мере у нас в Украине. Всё заработало с первого включения! Но, к сожалению, схема нуждается в доработке. А именно, две вещи.
1. Не записываются мелкие подробности сигнала, сигнал разбивается на крупные "ступеньки", надо повысить частоту дискретизации.
2. Ну очень долго идёт сбрасывание информации с карты памяти в компьютер (если писать кардиограмму целые сутки)
И не удиветельно, ведь RS - 232 очень медленный в отличие от USB. А нельзя ли пойти обходным путём? Вставляем записанную карту в картридер компьютера, считываем и преобразуем в нужный вид. Реально?
Очень хочется, чтобы Вы доработали схему, мне не жаль Вам помочь и материально. Дело в том, что у моей мамы уже лет 5 аритмия и поэтому эта тема для меня актуальна. Ведь те холтеровские мониторы (вроде так называются карманные пишущие кардиографы), что есть на официальных разных сайтах, они стоят от 5 зарплат простого рабочего - ну разве не грабительство? Жаль, я не могу доработать цифровую часть, прошивку - в этом я ноль. Вся надежда на вас, автор!
Ответить
0
Автор #
1. Вы наверное имеете в виду, что шаг дискретизации сигнала по амплитуде слишком большой (ибо частота дискретизации по времени ~1000 Гц, что в несколько раз лучше обычных 100 Гц). Действительно, АЦП в МК всего 10 бит, это НУ ОЧЕНЬ мало для кардиграфа...
Поэтому либо ставить внешний АЦП (и менять схему и прошивку), либо Вам следует попробовать уменьшить сопротивление R4 в 2 - 5 раз, повысив усиление кардиосигнала. Это эквивалентно соответствующему уменьшению шага дискретизации и улучшению качества записи. Однако это одновременно уменьшает динамический диапазон устройства.
Т.е. когда электроды хорошо сбалансированы (одинаковые и только что хорошенько закреплены), то проблем нет никаких, одни плюсы.
Но когда электроды начинают отваливаться (а за сутки все может случиться), то начнётся разбаланс, усилитель перегрузится и можно вообще ничего не увидить.
Но я всё равно рекомендую Вам сначала попробовать этот простой вариант.

2. Если вы включите скорость 921600 бод (которая поддерживается устройством),
то 12 часов записи можно слить всего за 17 минут. Много?
Можно было бы и через карт-ридер, только это мне надо подумать, как получить к флешке прямой по-секторный доступ под windows, а остальное легко сделать.

3. Не болейте
Ответить
0
Олег #
Спасибо за ответ. Скорость 921000, хотя и поддерживается Вашим устройством, но не поддерживается моим компом. В настойках у меня максимум - 128 килобит в секунду и это при том, что материнка не слишком старая - 2008 года выпуска.
Вы пишите
"Действительно, АЦП в МК всего 10 бит, это НУ ОЧЕНЬ мало для кардиграфа... "
То есть с иронией :-) А теперь посмотрите на скриншоты экрана, на первой картинке кардиоимпульсы в общем плане, так сказать, а на второй - более подробно.
http://hkar.ru/njIQ
http://hkar.ru/njIR
Видите, главный кардиоимпульс имеет длину около 1/25 секунды и я насчитал в нём около 40 "ступенек" в длину. В высоту не считал - возможно вы правы, надо добавить усиления. Главный кардиоимпульс разбит всего на 40 кусочков - я считаю, маловато. Особенно если учесть, что возле главного импульса сердце даёт несколько маленьких импульсов которые увидеть в таком случае проблематично - приходится не видеть, а угадывать, что ты видишь.
Как я писал, микросхемы КР1446 я заменил на одну импортную LMC6484 IM. Она содержит 4 операционных усилителя КМОП. Для контроля сигнала в моём варианте есть ещё один ОУ с выходом только на наушники. Так вот, при слуховом контроле сигнала, я обнаружил, что кардиосигнал, подаваемый на вход контроллера, сильно зашумлён. Вы советуете уменьшить сопротивление R4. Пробовал, усиление возрастает, но и шумы тоже. Возможно, я выбрал неудачную (шумную) замену КР1446? А что вы можете посоветовать в качестве замены этой российской микросхемы? Да, чувствительный малошумящий усилок с высокоомным входом, это конечно, проблема...
Ответить
0
Автор #
1. Ну да, скорости выше 120 кбод это не для встроенного порта, а для переходников USB-COM. Если не хотите паять такой сами, можно купить такой готовый, например, http://www.nix.ru/autocatalog/adapters_switches/Orient_USS111_USB_AM_COM9M_113489.html, всего 200 рублей. Правда, я сам их на скорость не проверял, к тому же в них делают конвертацию уровней ТТЛ в RS-232, а МК нужны ТТЛ, т.е. понадобится схема обратного преобразования с рис.3 статьи (которая, как я понимаю, у вас уже собрана).

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

3. Ну да, все правильно, за время 25мс имеем 40 отчетов, итого частота дискретизации ~1 КГц как и заложено. Вообще-то для кардиографа такого уровня это очень даже не плохо!
Даже у промышленных столько бывает: http://all-ecg.ru/schiller-at2.html, а Американская Ассоциация Электрокардиологов вообще рекомендует 500Гц.
В данном устройстве, думаю, реально можно без существенных переделок удвоить частоту дискретизации (довести до 1953.125 Гц).
Для этого в программе для МК надо:
строка 472: значение FILE_GRANULA увеличить с 4 до 8
строки 2335: заменить movlw -10 на movlw -5
Но возможно придется отказаться от опроса датчиков, закомментировав строку 1079: call Termo_Read
И в программе для компа надо в файле EKG_Pic_Define.h описание EKGSampleRate заменить на
#define EKGSampleRate (EKG_Device_FM/256/5)
При ещё большем увеличении частоты мы упремся в пропускную способность COM-порта.

4. Без всякой иронии, 10 бит это очень и очень мало! Норма это бит 18.
Прошивка и так пытается повысить "битность" за счет усреднения каждых десяти соседних выборок (которые берутся с частотой 9765.625 Гц), но судя по вашим картинкам, это мало помогает. Увеличьте усиление раз 5, посмотрим, что получится.

5. Не думаю, что виноват ОУ. МК при работе создаёт не слабые помехи по питанию,
а SD-карта, потребляя ток короткими импульсами в моменты внутренней физической записи, вообще может генерировать ложные импульсы до 10% от полезного сигнала
(сам видел, правда, до введения RC - фильтра по питанию). А может и синфазная помеха не полностью подавляется, вообще, что на входе, то и на выходе.

6. Вы пишите, что "кардиосигнал на входе контроллера сильно зашумлён".
Не знаю...
Судя по вашим графикам, шумы в несколько раз меньше шага дискретизации,
и намного меньше размаха полезного сигнала. Так что увеличивать усиление кардиосигнала смысл точно есть.
Есть на графике что-то вроде синусоиды, возможно это не полностью подавленная синфазная помеха 50 Гц. Впрочем, когда устройство находится на батарейном питании и не подключено к компу (даже через развязывающие устройства!), влияние синфазных помех сильно снижается. Ещё есть подозрение, что схема "активной земли" может вносить неустойчивость, может ей не помешали бы цепи частотной коррекции или подбор коэффициента усиления.

7. По поводу возможности рассмотреть "несколько маленьких импульсов" "возле главного импульса" - не знаю. Боюсь, у этого прибора не тот класс точности. Даже если сильно уменьшить роль ошибок дискретизации АЦП и использовать строго батарейное питание,
боюсь помехи от МК и особенно SD-карты будут сильно мешать. К тому же нужны электроды хорошие, неподвижность относительно тела (а грудная клетка не неподвижна) и в конце концов надо ещё знать, куда эти электроды крепить...
Ответить
0
Иван #
Очень понравилась статья, попытаюсь повторить, заинтересовала в основном оцифровка кардиосигнала так как собираюсь писать дипломную работу по компьютерному анализу ЭКГ, и будет очень полезно проверять свои выводы на сигнале в реальном времени. В некоторых случаях для ЭКГ используется частота дискретизации даже 250 Гц, рекомендуют 500 (но это из учебника 90-х годов, и да - не смотря на эти рекомендации на рисунках в основном приводятся ЭКГ с дискретизацией 1кГц. Возможно это необходимо, так как наиболее эффективно производить фильтрацию в частотной области, а при этом дискретизация падает в двое, то есть и получится 500.
Ответить
0
Стас #
Очень понравилась схема. Собрал на PIC16F873 без индекса А.
Запускаю программу, в ней нет картинки, а вспомогательное DOS-окно пишет "пропускаю" и некий код. Смотрел анализатором СОМ-порта -данные сыпятся как из рога изобилия. В чем может быть дело? Есть ли для данной схемы разница в версии контроллера?
Прикрепленный файл: ЭКГ.JPG
Ответить
0
Автор #
Контроллеры Pic16f873 и Pic16f873a почти идентичны с точки зрения программиста, существующая прошивка должна работать без изменений! Только при программировании надо указывать точный тип МК (протоколы программирования отличаются). Подробнее см. http://ww1.microchip.com/downloads/en/DeviceDoc/39591a.pdf.
Что касается вашей проблемы: похоже МК и прошивка работают нормально, ибо данные на com явно выдаются. Или скорость выдачи неправильная (кварц перепутали или он не так возбуждается, проверьте, должно быть 10МГц) или скорее всего, у вас имеется инверсия по линии данных. Как реализовано подключение к компу? Если обычный (натуральный) com с 12-вольтовыми уровнями, необходима инверсия. Если переходник usb-com, возможны варианты. Бывают переходники с дополнительной микросхемой вроде max232, которые полностью эмулируют обычный 12-вольтовый com, т.е. опять же нужна инверсия. Если же переходник с уровнями TTL, то инверсия не нужна. Проверить можно так: подключите переходник, запустите программу и померьте напряжение на выходе TX переходника (не кардиографа!). Если там примерно +3.3в, то инверсия не нужна. Если там отрицательное напряжение, необходима инверсия (можно также заскурочить переходник и выкинуть встроенный инвертор на max).
Ответить
0
Стас #
Спасибо! Оказалось проблема в инверсии сигналов СОМ-порта.
Ответить
0
Bartolin #
Да простит меня автор, но тот результат, который виден на картинке - действительно, не более, чем просто для самообразовательных и развлекательных целей. Любые попытки интерпретировать такую "кардиограмму" закончатся очень плохо для испытуемого, если это действительно больной человек. Ведь разница в регистрации частоты сердечных сокращений и регистрации кардиограммы - это все равно что разница между регистрациями температурных максимумов и регистрациями погоды в целом. Просто сравните полученный Вами график с реальными кардиограммами, которых полно в интернете. Поверьте, тут каждый зубец и каждое отклонение важно. Причем в нескольких отведениях.
И да, кстати. Методика суточной записи ЭКГ так же уже давно придумана Норманом Холтером, носит его имя, и многократно модернизировалась.. Может, есть возможность улучшить качество получаемой ЭКГ? Тогда это было бы очень здорово, потому что заводские приборы для Холтеровского мониторирования ЭКГ очень дороги.
Ответить
0
Олег #
У меня прибор получился, заработал с первого раза. Но не устраивает качество отображения маленьких импульсов, которые сердце дает перед и после основного желудочкового сокращения. Если напряжение желудочковых импульсов на съёмных электродах около 1 милливольта, то эти маленькие импульсы, о которых я говорил, имеют амплитуду примерно 0,1 мв. Они отображаются вообще некачественно, заметно хуже обычной кардиограммы из поликлиники. Вот так...
Ответить
0
Автор #
Увы, как я уже писал, это принципиальная проблема недостаточной битности встроенного в МК АЦП, всего 10 бит. А в поликлинике у АЦП бит 20-24. Так что либо городить внешний АЦП, либо как я уже писал, попробуйте повысить усиление кардиосигнала, уменьшив сопротивление R4 раз в 5.
Ответить
0
Олег #
Трудно сказать... Ведь 10 бит - это не много и не мало, 1024 уровня сигнала. Если кардиограмма высотой в 10 см, то каждый бит соответствует 0,1 мм, что есть предел человеческого зрения. Так что не понятно в чём проблема, но качество картинки плохое...
Ответить
0
Автор #
К сожалению, на входе устройства имеется не только кардиосигнал, но и помехи, которые могут в сотни раз (!) превышать полезный кардиосигнал [1]. АЦП должен адекватно оцифрововать смесь сигнала и помехи, поэтому из этих 10 бит на реальный кардиосигнал остаётся очень мало бит.
Простой расчет: в данной схеме при напряжении питания МК в 3.6в шаг дискретизации АЦП составляет 3.5 мВ, при R4=20КОм кардиосигнал усиливается AD623 в 6 раз, т.е. в пересчете на вход устройства шаг дискретизации смеси кардиосигнал-помеха составляет 0.6 мВ. Максимальная амплитуда кардиосигнала порядка 5мВ, т.е. на кардиосигнал уходит всего 8 градаций (если не учитывать программное накопление сигнала)! Поэтому наивно ожидать от схемы разрешения 0.1 мм. Но зато устройство нормально работает при помехах уровнем до 0.3в. Это сделано специально: устройство изначально делалось для длительных наблюдений, при этом очень сложно обеспечить качество наложения электродов.
Читаем [1]: "Между электродом и телом человека образуется электрохимический элемент с напряжением 0.3 - 1в. Так как съём ЭКГ осуществляется двумя одинаковыми электродами, разность потенциалов между ними могла бы быть скомпенсирована. Но практически достичь полной компенсации не удаётся, оставшаяся разность потенциалов может достигать 0.1-0.4в и изменяет своё значение во времени".
Данное устройство изначально делалось для длительных наблюдений, и сознательно по результатам натурных испытаний пришлось пойти на снижение качества оцифровки полезной составляющей кардиосигнала, зато обеспечить работоспособность устройства при высоких помехах (прежде всего от плохо сбалансированных электродов).
Если качество дискретизации сигнала для Вас более критично, можно попробовать понизить R4: усиление AD623 соответственно возрастет и разрешение повысится. Но ценой соответствующего возрастания требований к балансировке электродов - иначе АЦП уйдет в зашкал и вообще ничего не будет видно.
Ответить
0
Андрей #
Добрый день! Пытаюсь собрать вашу схему, но возникли проблемы на стадии прошивки мк, проживаю с помощью программатор к150 просто заливаю хекс файл без каких либо настроек, прошивка проходит успешно, но дальше при подключении мк к компу через рс 232 и выборе в программе чтение а затем проверку прошивка не совпадает с хекс файлом. Мк подключаю без каких либо датчиков только порт резисторы и выход на сд карту, её форматировать тоже не удается (карта после форматииования на компе пустая, fat32). В чем может быть проблема?
Ответить
0
Виктор #
Куда подключён 13 вывод DD1.
Нарисовал две платы, с SD и без, кому нужно на мыло
Прикрепленный файл: кардио минимум.lay6
Ответить
0
Леонид Мукосеев #
Доброго здравия! Если возможно файл платы с SD.С уважением Леонид.
Ответить
0
Автор #
Если Ваш программатор прошил МК успешно (включая регистр конфигурации, проверьте!) и верифицикация средствами программатора проходит успешно (проверяли?), значит всё правильно прошито и проблем здесь быть не должно. Убедитесь только на всякий случай, что прошивка скачана правильно и марка МК в программаторе указывана верно. Какой у Вас МК, Pic16F873A (для которого разрабатывалась прошивка) или другой?
При проверке прошивки средствами самой прошивки (через ком-порт) вполне может выдаваться "несовпадение", потому что программатор не обязан прошивать байты за пределами реального файла прошивки, а в программе верификация делается для всей памяти МК. Но Вы можете посмотреть, какие байты отличаются (они подсвечиваются синим) - если различия только в конце, то можно не обращать внимания.
На счет "форматирования" - имейте в виду, что оно не оказывает влияния на содержимое SD-карты. При "форматировании" всего лишь номер "текущего сектора" должен записываться во flash-память МК. Т.е. для выполнения этой операции требуется лишь работоспособный обмен по ком-порту. Похоже все-таки на проблемы с обменом по ком-порту... И вот тут не понятно: чтение прошивки у Вас вроде работает (а это вообще так?), а "форматирование" нет. Отображается ли программа кардиоданные, которые выдаются потоком сразу после включения устройства?
Ответить
0
Эйприл #
Разработал дополнительный датчик эрекции для данного кардиографа. Для подключения как раз используется 13 вывод DD1.
Прикрепленный файл: Датчик эрекции.rar
Ответить
0
Никита #
Подскажите, а MCP-601/602 подходит в качестве замены для КР1446УД1?
Ответить
0
Автор #
Функционально скорее всего подходит, а распиновку сами проверьте.
Вообще тут любой ОУ подходит, лишь бы работал при напряжении питания 2.7 - 5 в, желательно CMOS, чтобы входное сопротивление было побольше. Ну и выход не самый маломощный для активной земли, чтобы пару мА можно было драть.
Ответить
0
Михаил #
Спасибо автору за схему, заработало с первого раза. Один раз я получил ОЧЕНЬ ИДЕАЛЬНЫЙ СИГНАЛ ЭКГ на мониторе ПК, а в последующие разы, сплошной шум. На замыкание электродов Е+ и Е- пата и программа реагирует, на перемещение электродов по телу тоже, а вот вывести на экран "реальный" сигнал похожий на сигнал ЭКГ так более и не получилось. Правда на ПК программа иногда глючит специфическим образом. В плату я не впаивал датчик температуры и акселерометр, так вот программа иногда (через некоторое время после начала работы) начинает выводит с них данные, хотя их физически НЕТ... Вопрос к автору как правильно задействовать 13 вывод DD1 ?
Прикрепленный файл: кардио 2.png
Прикрепленный файл: кардио.png
Ответить
0
Автор #
Попробуйте увлажнить (послюнявить) электроды и поискать их оптимальное расположение на груди. E0 должен располагаться примерно посередине между Е+ и Е-. Провода к Е+ и Е- лучше сплести между собой и вокруг обвить провод к E0. Не используйте алюминиевые электроды! Сигнал может быть несколько зашумлен помехой 50 Гц от осветительной сети (при переходе на батарейное питание в отсутствие подключения к компу помеха снизится).
При отладке опцию "Фильтровать сигнал" лучше не ставить.
Для отладки можно попытаться уменьшить R3 раз в 10, это уменьшит качество работы активной земли, но и вероятность самовозбуждения уменьшится.
Ещё для отладки можно подать на вход медленно меняющийся сигнал ( потенциометр покрутить), чтобы убедить, что прошивка оцифровывает его и передаёт в комп без пропусков (если есть пропуски, на графике будут скачки).

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

Прошивка МК измеряет частоту цифрового сигнала на входе 13 DD1. Частота должна быть в диапазоне примерно 8КГц - 8 Гц, при необходимости следует применять делители частоты. Таким образом, к входу 13 DD1 можно подключить любой измеритель, который преобразует измеряемую величину в частоту. Период измерения частоты примерно 0.25 сек, т.е. можно наблюдать только медленно меняющиеся процессы, однако относительная точность измерения частоты весьма высокая.
Ответить
0
Юрий #
Вот вроде смотришь, человек вроде неплохую работу проделал, а элементращины не знает. ГДЕ ФИЛЬТР ПЕРЕД АЦП? Вы вообще вкурсах что ЭМС у вашего девайса никакая просто. Зачем такой большой АКБ, здесь же одной банки с DC/DC хватит. И да, электрокардиограмма - это не измерение частоты пульса. Как работа бакалавра - неплохо. Но в мед. целях такое использовать однозначно нельзя
Ответить
0
Автор #
Плохая ЭМС важна только при наличии помех. А их уровень - как повезет. В больнице можно легко представить себе кардиограф по соседству с аппаратом УВЧ, хотя правила запрещают так делать. А для обычного человека проблема преувеличена. В течение суток электромагнитная обстановка меняется, ну испортится 1% записи и что? Из-за движения пациента испортится куда больше.

Для ЭМС фильтры перед АЦП ставить уже поздно, надо ставить по входам (надеюсь понятно почему). Но это всегда вносит лишний разбаланс. Т.е. от ЭМС защитились, а 50Гц и другие синфазные станут сильнее. Это всегда дилема. Оптимального выбора без учета конкретной электромагнитной обстановки тут нет. Меня лично покоробило спера добиваться огромного вх сопротивления и хорошего подавления синфазной составляющей, а потом своими руками внести разбаланс.

Фильтр перед АЦП нужен, чтобы выполнить условия теоремы Котельникова, и снизить влияние внеполосных шумов. Но во-первых, тут и так сильная передискретизация, АЦП молотит 9765 Гц с последующей цифровой фильтрацией.
А на счет внеполосных шумов - в данном случая рабочая полоса начинается с 0.1Гц и фликер-шум превалирует над белым шумом. А выше 1МГц ОУ всё равно ничего не пропустят. Формально да, RC фильтр перед АЦП со срезом килогерца 4 не помешал бы, всего две лишних детали. Но на практике улучшений никаких - погрешности другой природы превалируют.

На счет аккумулятора - да, Ni-Mh не современно. Но никто их уже и не использует, ставят литиевые на 3.7в. И тут никакой DC/DC не нужен, линейный LDO стабилизатор на 3.3в, КПД будет то же. И опять же в кардиограф я бы импульсный DC/DC не ставил из-за ЭМС.

На счет использования в медицинских целях - при проблемах надо однозначно идти к профи. Любой самоделке не стоит доверять жизнь.
Но что-то может и этот прибор! Даже если на кардиограме нормально видны только R-зубцы, можно мерить RR-интервалы, ловить аритмии, экстрасистолы, исследовать вариации сердечного ритма (модное перспективное направление). Фактически устройство уже обеспечивает на порядок больше возможностей, чем дорогой спортивный пульсомер.
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется напряжение?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Солнечная панель 10Вт 12В поликристаллическая
Солнечная панель 10Вт 12В поликристаллическая
Печатная плата для усилителя "LM3886 + AD825" Конструктор - темброблок на LM1036
вверх