DB,FFFCDC,FFFBF9,FFFC43,FFFAC3,FFFBD2,FFFC95,FFFAFA,FFFCA3
DC,FFFCDB,FFFBF8,FFFC39,FFFAC2,FFFBDB,FFFC8E,FFFB04,FFFCA7
DD,FFFCDF,FFFBF9,FFFC3F,FFFABE,FFFBD5,FFFC96,FFFB08,FFFCA6,6220,6220,6220
DE,FFFCDF,FFFBFD,FFFC3F,FFFAB9,FFFBDB,FFFC9D,FFFB02,FFFCB0
DF,FFFCDE,FFFC00,FFFC49,FFFAC3,FFFBD0,FFFC91,FFFB03,FFFCB0
2.12.3. Внешний запуск с прошивкой 1.xx
Иногда может возникнуть ситуация, когда необходимо связать плату OpenBCI с существующей системой, генерирующей, например, аудио или видео потенциалы, связанные с событием (ERP). В этом случае наиболее желательно, чтобы начало сигнала было тесно связано во времени с данными ЭЭГ. Можно связать 32-битную плату OpenBCI с внешней системой генерации сигнала, используя несколько недорогих компонентов. Но биосенсор должен быть безопасным. Для этого внешнюю систему необходимо либо запитывать от аккумулятора, либо сделать опторазвязку.
Самый простой способ обеспечения безопасности – это изоляция схемы OpenBCI от схемы генерации триггерного сигнала. Для этой цели можно
использоавать оптоизолятор с |
изоляцией |
5000 В между входом и |
|
выходом. Семейство микросхем |
CNY17 от |
Vishay |
является отличным |
примером недорогого оптоизолятора с |
высокой |
изоляцией. На рис. |
|
2.43 показана схема включения оптоизолятора. В цепи справа, когда на анод входа (вывод 1) подается сигнал от внешнего триггера напряжением от 3,3 В до 5 В, выход (вывод 5) переходит от высокого уровня к низкому. На рис. 2.44 показана сборка оптоизолятора на макетной плате.
Рис. 2.43. Схема включения оптоизолятора
Значения установок переменных в коде программы представлены ниже:
int triggerPin = 18; |
|
// the CNY17 Collector is on pin 18 |
int triggerValue; |
// used to hold the latest trigger reading |
|
int lastTriggerValue; |
// used to remember the latest trigger state |
|
boolean addAuxToSD; |
// option to add the aux data to the SD card |
|
80
Рис. 2.44. Оптоизолятор на макетной плате
Код для чтения этого триггера представлен ниже, и он очень похож на предыдущий код кнопки. В этом случае необходимо использовать другой вывод (вывод 18) и следить за крайними байтами для определения нажатия на кнопку.
void setup(){ // stuff here...
pinMode(triggerPin, INPUT); // set the button pin direction triggerValue = lastTriggerValue = digitalRead(triggerPin); // seed startFromScratch(); // initialize OpenBCI, read device IDS
//you can set EITHER useAccel or useAux to true
//if you want both, you MUST set and clear one of the variables every sample OBCI.useAccel = false; // option to add/remove accelerometer data to stream
OBCI.useAux = true; |
// option to add/remove auxiliary data to stream |
||
// more stuff... |
|
|
|
} |
|
|
|
void loop(){ |
|
|
|
// do stuff |
|
|
|
triggerValue = digitalRead(triggerPin); |
// feel the trigger pin |
||
if (triggerValue != lastTriggerValue){ |
// if it's changed, |
||
if (triggerValue == LOW){ |
// if it's gone from HIGH to LOW |
||
// 0x6220 converts to PI in GUI |
|
||
OBCI.auxData[0] = OBCI.auxData[1] = OBCI.auxData[2] = 0x6220; |
|||
addAuxToSD = true; |
// add Aux Data to the SD card if it's there |
||
state = !state; |
// toggle the state variable |
||
digitalWrite(LED,state); |
// toggle the LED for user useability |
||
}
lastTriggerValue = triggerValue; // keep track of the changes
}
// do other stuff
}
81
2.13. USB-ключ
USB-ключ (USB-dongle) OpenBCI используется для подключения компьютера (ПК) к плате Cyton.
Основные характеристики USB-ключа:
питание осуществляется только через разъем USB;
имеется радиомодуль RFduino BLE;
имеется FTDI USB <> последовательная ИС (FT231XQ-R);
имеется восстанавливаемый предохранитель.
Контакты RFduio расположены в том же порядке и расположении, что и в радиомодуле RFduino. Это делает USB-ключ OpenBCI совместимым с радиомодулями RFduino. Светодиоды TXD (красный) и RXD (зеленый) подключены к выходам микросхемы FTDI. Синий светодиод подключен к
RFduino GPIO2.
2.13.1. Ползунковый переключатель
Ползунковый переключатель на плате имеет два положения. Когда коммутатор находится на стороне GPIO6, вывод FTDI DTR направляется на вывод 6 RFduino, и он готов передавать данные на плату Cyton. Эта конфигурация является «нормальным» режимом, а также позволяет программировать плату Cyton по радиоканалу. Когда переключатель находится на стороне RESET, вывод FTDI DTR направляется на вывод RFduino RESET. Этот режим позволяет перепрограммировать RFduino на USB-ключе.
2.13.2. Печатная плата USB-dongle
Печатная плата устройства USB-ключа имеет 2 слоя (верхний и нижний). Разводка слоев печатной платы представлена на рис. 2.45.
Верхний слой |
Нижний слой |
Рис. 2.45. Печатная плата USB-ключа
82
3. ПЛАТА DAISY
Модуль OpenBCI Daisy Module является дочерней платой для платы Cyton и расширяет число возможных каналов регистрации с 8 до 16.
Технические характеристики модуля Daisy: питание осуществляется только через плату Cyton; имеется аналоговый интерфейс и АЦП на микросхеме ADS1299.
Выводы:
выводы шины SPI для связи с платой OpenBCI: DVDD, GND, MISO, MOSI, SCK, CS, CLK, RST;
аналоговые выводы питания и BIAS: AVDD, AVSS, AGND, BIAS.
Модуль OpenBCI Daisy должен использоваться только совместно с платой Cyton. Плата Daisy требует подачи внешнего тактового сигнала (2,048 МГц) на вывод CLK.
3.1. Печатная плата Daisy
Печатная плата устройства Daisy имеет 4 слоя (верхний, нижний и два внутренних). Разводка слоев печатной платы представлена на рис. 3.1.
Верхний слой |
Нижний слой |
Внутренние слои
Рис. 3.1. Разводка слоев печатной платы Daisy
83
3.2. Исправление ошибки на плате Daisy
При проектировании печатной платы была допущена ошибка (рис. 3.2), которую придется исправить и внести изменения в файл PCB.
Плата Daisy разработана как плата расширения для базовой платы Cyton, чтобы удвоить общее количество входов датчиков до 16. Микросхема ADS1299, которая проводит аналого-цифровую обработку сигналов, имеет одну особенность: все 8 входных каналов дискретизируются одновременно. Это очень важно для DSP и корреляции между данными канала. Когда модуль Daisy подключен к базовой плате, идея состоит в том, чтобы поддерживать эту одновременность дискретизации на всех 16 входах. Texas Instruments делает это возможным с ADS1299, предоставляя возможность брать сигнал clk с одного АЦП (частота тактового сигнала равна 2,084 МГц) и вводить его в другой АЦП. Чтобы это работало, необходимо сделать следующее. В “главном” АЦП необходимо, чтобы вывод CLKSEL (вывод 52) был привязан к DVDD, а бит CLK_EN в регистре CONFIG1 установлен в значение «1». Тогда “ведомому” АЦП нужно привязать свой CLKSEL-вывод к AGND. Затем главный контакт CLK подключается к подчиненному контакту CLK, и оба АЦП работают на одном и том же тактовом сигнале, что делает возможной одновременную выборку.
Но на разработанной плате допущена ошибка, и контакт CLKSEL на модуле Daisy привязан к DVDD, а не к AGND.
Рис. 3.2. Верхний слой печатной платы с ошибкой
Вывод 52 подключен к трассе под ADS1299, а вывод 51 подключен к AGND. Поэтому целесообразно поднять вывод 52, аккуратно согнуть его над выводом 51, а затем прикрепить его припоем. Вывод 52 - 4-й от угла, считая справа.
84