Home 

История разработок. Часть 4

22 апреля 2014

img

Доделал алоритм записи данных во внутренюю память remtetectora_v4. Пока будет 10 сегментов данных. Длинна произвольная, при больших сегментах будет перезаписывать начало. Синусоида в нижнем графике просто для наглядности присутствия данных. В приборе вместо синусоиды данные с датчика глаза и акселерометра.

 

 

16 июля 2014

img

Приклеил на двусторонний скотч REMDETECTOR к маске, отлично держится, вес вместе с маской 45грамм, маска отдельно 25грамм, REMDETECTOR отдельно 20гр. Прибор работал полностью автономно, все данные записывались во внутренюю память, т.е. никаких проводов в этот раз не было. Была непривычность спать с маской, т.е. она ощущалась в пробуждениях. Но в целом спать прибор не мешал в отличии от предыдущих проводных версий. Аккамулятор за ночь сел примерно на 15%, так что возможно с энергоэкономией, а конкретно с использованием FERAM вместо FLASH я и перестарался, но посмотрим как BLUETOOTH версия будет хавать.В комп сливаю данные по USB СDC (виртуальный COM порт), USB HID пока не получается до конца сделать, под C++ Builder не могу данные в него читать и писать, но как устройство обнаруживается и имя производителя и название прибора могу и на C++ Builder прочитать.

img

img

Это эксперименты с HID под Windows, пока еще не доделал.

 

Далее разбор ночной записи с REMDETECTOR:

img

Ночная запись, на красном графике движений глаз четко видно 3 зоны активных движений глаз. Период между ними примерно 1час 45 мин.

 

img

Это первая фаза быстрых движений глаз в увеличенном масштабе, в конце ее видно микро пробуждение, а именно движение головы - синий график (акселерометр).

img

Вторая фаза быстрых движений глаз, уже видно два пробуждения с движением головы.

 

img

Третья фаза быстрых движений глаз в увеличенном масштабе, пробуждений с движением головы уже значительно больше.

 

 

На следующих анимированных GIFах показанно, как работает фильтрация движений головы. Она удаляет из данных от глаза, те сегменты, где двигалась голова. Алгоритм простейший: при обнаружении от акселерометра уровня сигнала превосходящий заданный порог, игнорировать текущие данные от глаза и 19 последующих, всего 20, т.е. в сумме около 3 секунд.

img

Вся ночь 8 часов 20мин

 

img

Первая фаза 20мин

 

img

Вторая фаза 20мин

 

img

Третья Фаза 27мин

 

 

18 июля 2014

Подряд 3 ночи записей с REMDETECTOR. Както неоднозначно ведут себя глаза. Почумуто фазы с каждым днем обнаружить все сложнее.

img

img

img

 

 

01 сентября 2014

Новые фильтры, и новые алгоритмы. Столкнулся с тем, что сильно лезли помехи 50Гц если ИК датчик прикасается или очень близко к веку или глазу. Поменял частоту АЦП с 24Гц до 25Гц помех стало меньше, за счет того что период их стал значительно выше. Самые большие помехи были у частот оцифровки отличных от 25Гц или 50Гц, это например при 35Гц. Это было какое-то биение. Например, для частоты АЦП 26Гц(24) помеха была 2Гц, для 26 -2, 27-4, 28-6,29-8, 30-10, ... 40-10, 41-9, 42-8, 43 -7, 44-6, 45-5, 46-4, 47-3, 48-2,49-1. В общем от помехи 50Гц и ее гармоник можно было бы избавиться более высокой частотой дискретизации и последующим применением цифрового фильтра, но я так не стал делать из-за того что при оцифровке не на 25Гц, а на пример на 100-200Гц значительно бы выросло потребление подсветки. Напоминаю, подсветка импульсная синхронно с АЦП работает на частоте 25Гц, потребляет 0.17mA в максимальной засветке 500мкс, ток измерял мультиметром. Такое большое время стало из-за того что я выкинул из схемы полевой транзистор для запитывания ИК подсветки и поставил резистор 100 Ом это на светодиоде 17mA при напряжении питания 3в. С полевым транзистором и резистором 39-62 Ома, максимальная подсветка длилась 150мкс. Общий ток потребления не замерял, но думаю, он был такой же, выкинул полевик для упрощения схемы, раньше я хотел подсвечивать короткими импульсами 1-30мкс по 100mA но на практике получился короткий интервал регулирования, 30мкс, и ступеньки от регулятора были сильно заметны, теперь у регулятора интервал подсветки от 1 до 500мкс, и ступеньки регулирования практически не видны. Регулировать яркость нужно из-за того что голова на подушке двигается и меняется положение маски и датчика относительно глаза. Вот на картинке ниже, третий график сверху и есть время подсветки.

img

на этой картинке видно 4 фазы быстрых движений глаз, фильтр пропускающий 0.7-10Гц.

Так что можно пробовать включать подбуживание, отключение мигания и вибрации сделал от легкого движения головы или постукивания по маске. Алгоритм отключения подбуживания движением глаз пока не дописал. Мало памяти оказалось в выбранном микроконтроллере, пишу на границе 80% приходится постоянно все алгоритмы оптимизировать, чтобы все влезло, ну и лишнее не добавлять. хотя 30 цифровых фильтров не помешали бы внутри микроконтроллера и выбирать какой нужно, пока внутри только 2 цифровых фильтра. Остальные 30 во внешней программе по ней подбираю какой лучше. И потом его заливаю в микроконтроллер. Данные на картинке записывал по USB кабелю именно для того чтобы подобрать потом нужный фильтр. Потому что во внутреннюю память все что выше на графиках просто бы не влезло. Внутренняя память хранит данные глаза и акселерометра от частоты 5Гц, а по USB кабелю 25Гц. Но кабель не простой, а без линии 5В, и еще с гальванической развязкой (EL200-4). Иначе светят светодиоды зарядного устройства, что является дополнительной защитой от того чтобы не спали с кабелем USB, потому что я против того чтобы кто-то заряжал литиевый аккумулятор находящийся поблизости от глаза во время сна, защитный терморезистор я конечно поставил, но все равно отношусь к литиевым аккумуляторам подозрительно.

img

Это устройство гальванической развязки USB (EL200-4), и кабель от него до Ремдетектора на содержит линии питания +5В. Все это для безопастности человека. Такое подключение мне было нужно для того чтобы записать сырой сигнал с АЦП и потом подобрать оптимальные цифровые фильтры нижних и высоких частот.

Энергопотребление: ВЫКЛ: 30-31мкА; ВКЛ без USB, подсветка 1мкс: 2.36мА; ВКЛ без USB, подсветка 500мкс: 2.52мА; ВКЛ c USB, подсветка 1мкс: 9.21мА; ВКЛ c USB, подсветка 500мкс: 9.36мА;

 

 

19 сентября 2014

Все-таки я переделал протокол передачи данных. Теперь пакеты могут иметь разную форму и хранить данные разной длинны: 1бит, 4 бита, 8бит, 16бит или 24бит, да хоть 128бит, в любых комбинациях. Сейчас сделал два вида пакета: для отладки и для чтения флэшки. Теперь флэшка считывается примерно за 20секунд, раньше, со старым протоколом это было около 4минут, из-за того, что куча не нужного по нему шла. Длину пакета оставил такой же 22байта. Первый байт 0xFE это признак начала пакета, а вот второй байт системный в нем как раз и задается тип пакета, чтобы на стороне компьютера его правильно принять. Так же в этом пакете старшая тетрада используется для дополнительного контроля четности, в ней значения меняются от 0 до 15, для всех отправляемых пакетов. Сделал на всякий случай, бывало, что пакеты выпадали, когда программа на компе сильно загружалась. Сделал эту четность для подстраховки, чтобы увидеть такие моменты и подправить тормоза в проге для компа.

img

img

 

 

 

 

9 октября 2014

 

Получилось все таки переделать весь проект из CDC(виртуальный COM порт) в HID (Human Interface Device). Благодаря чудному компоненту для C++ Builder 6 под названием JEDI JCL 2.2.1 и JEDI JVCL 3.40 (были и более новые версии, но они на C++ Builder 6 не стали), в палитре JvSystem под названием JvHidDeviceController. Плюс его в том, что он умеет работать с HIDом через getReport и setReport в отличии от других компонентов в которых были реализованы только getFeature setFeature. Но мой пример на микроконтроллере ну никак не хотел работать через getFeature и setFeature. Ну теперь все работает, больше не нужно выбирать COM порт и нажимать Connect, достаточно просто подключить в USB и Remdetector подключен. Еще попутно выяснилось что прошивка с виртуальным ком портом занимала больше чем с HID. (CDC Used:12760 Free: 3450)(HID Used:12080 Free:4130) По энергопотреблению изменений практически нет: в выключенном состоянии 31-32мка, включенное 2.33мА(1мкс), включенное 2.49мА(500мкс), включенное USB 8.15мА(1мкс), включенное USB 8.30мА(500мкс).

img

img

img

img

 

 

информация

К рекламе которая отображается на моих страничках я не имею никакого отношения, хостинг narod.ru бесплатный, поэтому они вставляют рекламу какую хотят, куда хотят и как хотят.