
TL;DR: здесь ноль медицины и нейробиологии, только инженерный разбор прототипа DIY tRNS: архитектура, генерация сигнала (100–640 Гц hf-tRNS), VCCS, код и выводы.
Зачем?
Есть немалая вероятность, что человеческий мозг - самый сложный объект во Вселенной. Но для транскраниальных стимуляторов tDCS/tACS/tRNS все живые ткани между электродами (включая мозг) успешно моделируются активным сопротивлением (правда, заранее неизвестным и дрейфующим за время сеанса).
В этом тексте я рассматриваю исключительно инженерную сторону задачи, т.е. генерацию и контроль токов заданной формы. Медицинские аспекты, показания и интерпретации эффектов остаются за рамками поста и подробно обсуждаются в научных публикациях, на PubMed актуальной информации достаточно.
У меня уже было несколько итераций самодельных tDCS, которые я собирал в формате хобби. Коллега по опасным биокекерским практикам закинул идею, что tRNS перспективнее и эффективнее, чем tDCS. Заинтересовал, в общем.
Близкое к совершенству устройство DIY tDCS включает стабилизатор тока, потенциометр плавного пуска и миллиамерметр. А даже базовый вариант tRNS сделать в разы сложнее, потому что токи биполярные, да ещё и сложной формы, по началу было вообще непонятно, с какой стороны подступаться.
Другими словами, биокекерский азарт объединился с азартом чисто инженерного вызова.
Почему я?
Не я придумал, что мозг для tRNS можно моделировать как резистор, так придумали нейробиологи-исследователи. Как программист с бэкграундом в DSP (цифровой обработке сигналов) я понимаю, как генерировать сигналы на контроллере с заданными свойствами (спектром и распределением). Как связист по образованию я достаточно знаком со схемотехникой, чтобы при необходимости через боль разбираться со схемами на операционных усилителях.
В какой-то момент удалось разжиться достаточной мотивацией, осциллографом Hantek 6022BE, необходимыми компонентами и достаточным количеством свободного времени.
Постановка задачи
Пусть сопротивление полезной нагрузки варьируется от единиц до десятка кОм, а задача устройства сводится к пропусканию через нагрузку тока определенной формы, например, 1 мА постоянного тока для tDCS, гармонику 140 Гц с амплитудой 1 мА для tACS или полосу 100-640 Гц из белого гауссовского шума с амплитудой 1 мА для tRNS.
В разных протоколах параметры могут отличаться, но в целом параметры в примере часто встречаются в публикациях, а для tACS и tRNS сигнал как правило биполярный без постоянной составляющей. Задача сделать именно tRNS, но если получится объединить tRNS+tACS+tDCS в одном устройстве, то это будет плюсом.
Требования к точности тут весьма размытые, но интуитивно я убеждён, что грубость самого метода допускает отклонения токов в единицы процентов, это не прецизионное устройство. Постоянные погрешности и усиления мы доводим калибровкой. Частоты довольно низкие, нижний диапазон аудиоспектра, потому импульсными помехами от цифровых контуров можем пренебречь на прототипе, а ближе к финальной версии найти способ замерить все наводки от контроллера, OLED и энкодера-кнопки по факту на готовом устройстве.
Так же я не представляю себе настоящего стимулятора мозга малыми токами без встроенного индикатора с отображением параметров этих токов, я убеждён, что пользователь должен их видеть в реальном времени. Для меня это один из базовых принципов обеспечения безопасности и эффективности устройства.
Что касается оверинжиниринга, современные контроллеры и готовые модули стоят настолько дёшево, что инженерные компромиссы перевернулись с ног на голову. Если микроскоп внезапно оказался доступнее и удобнее молотка, то я разрешу себе забивать гвозди микроскопом, по крайней мере на этапе прототипирования.
Схема устройства
Сначала я с некоторой неохотой прорабатывал схему, где ток стабилизируется прямо на контроллере по обратной связи по напряжению на шунте с известным сопротивлением (которое пропорционально току на полезной нагрузке). Это была бы схема с массой компромиссов, высокими требованиями к АЦП для обратной связи, сомнительной надёжностью и необходимостью проведения экспериментов для адекватной настройки.
Управляемый источник тока
Потом к великой радости я открыл для себя VCCS (voltage-controlled current source, управляемый напряжением источник тока) в виде одной из реализаций Howland Current Pump. По сути, этот затык с управлением током был тем самым инженерным "супербоссом", без победы над которым двигаться дальше было просто несерьёзно. VCCS – это надёжный краеугольный камень устройства, на основе которого можно собирать не только tRNS, но и универсальный tES (tRNS+tACS+tDCS).

Так выглядит испытательный стенд в симуляторе. VCCS на кадый 1 В на входе выдает 1 мА на выходе и состоит из:
2-х операционных усилителей OPA134 (или двух в одном OPA2134);
4-х R2 номиналом 10 кОм, 1-го R1 (1 кОм), и 1-го R3 (9 кОм).
Генератор сигналов DCA_OUT тут выдает пилообразный сигнал, на таком сигнале легко увидеть нелинейные искажения. Потенциометр плавного пуска 100 кОм и шунт 100 Oм (на стенде напряжение на нём будем использовать для мониторинга тока через линию "B" осциллографа, в реальном устройстве - через АЦП контроллера) включены последовательно с полезной нагрузкой Rload. В симуляторе этот VCCS показал себя отлично, я менял в широком диапазоне Rload и ток через полезную нагрузку вёл себя стабильно, как раз то что нужно, и это успех!
Функциональная схема

Генератор сигнала формирует сигнал с требуемыми для протокола стимуляции характеристиками. Для прототипа это только один сигнал hf-tRNS, шумоподобный с нормальным распределением, равномерный в полосе 100-640 Гц. ESP32-S2 mini выбран за компактность, возможность подключать к смартфону через OTG (не пригодилось), доступность и неплохую вычислительную мощность, сомневаюсь, что это окончательное решение, кроме того, можно сделать несколько вариантов прошивок для разных контроллеров.
По I2S контроллер загружает сигнал в буфер Аудио ЦАП на готовом модуле c PCM5102A. Доступное и компактное решение, выдающее качественный биполярный сигнал, я решил что для выполения требований достаточно 8000 Гц (для частоты среза 640 Гц хватило бы частоты дискретизации 1280 Гц по теореме Котельникова) и 16 бит разрядности (хотя модуль способен аж на 32 бит).
Аналоговый сигнал (синие стрелки – аналоговый) с Аудио ЦАП поступает на VCCS, где сигнал из +/–1 В преобразуется в сигнал +/–1 мА той же формы.
Потенциометр выступает в роли ручного плавного пуска и стопа и может служить аварийным токоограничителем. Для того, чтобы он работал как токоограничитель, достаточно при старте крутить его не на максимум (не до 0 кОм), а до тех пор, пока монитор не покажет требуемую для сеанса амплитуду, плюс небольшой запас на случай колебания сопротивления полезной нагрузку (там может оставаться, например, 2 кОм запаса). Пусть максимальное напряжение, которое может в аварийной ституации попасть в нагрузку 12 В, тогда при минимальном сопротивлении полезной нагрузки те же 2 кОм, получим 4.1 кОм вместе с шунтом и потенциометром, даже если сопротивление источника питания равна нулю, через Полезную нагрузку нагрузку пойдет менее 3 мА. Вообще, конечно, стоит дополнительно залить часть схемы с большими напряжениями (питание операционных усилителей +12 В и –12 В) теплопроводным компаундом, чтобы гарантировать, что там ничего не коротнёт, например, от случайного попадания солевого раствора.
Блок Полезной нагрузки включает в себя коннекторы для электродов, электроды с губками и солевым раствором и собственно те живые ткани, через которые течет ток заданной формы и амплитуды.
Роль Шунта в том, что ток через него течет такой же как через полезную нагрузку, т.к. он соединяет с ней последовательно и уходит на землю, а значит напряжение на нем будет пропорционально току. Напряжение на нём для случая tRNS будет биполярным.
Чтобы биполярное напряжение снова стало униполярным и могло быть считано контроллером применяется Дифференциальный усилитель сдвигающий сигнал с Шунта в область положительных напряжений.
Униполярный сигнал считывается в контроллере через встроенный АЦП на 12 бит с заведомо избыточной частотой дискретизации, чтобы его можно было эффективнее почистить от шумов, в том числе квантовых.
Для Расчета метрик сигнала с АЦП сигнал фильтруется от шумов рассчитываются максимумы, минимумы и формируется гистограмма для оценки распределения.
На дисплее покажем гистограмму, среднее, минимум и максимум сигнала, чтобы пользователь знал, что на Полезную нагрузку подается безопасный ток, что устройство исправно, что контакт в порядке, что мощности питания достаточно и что требования по эффективности стимуляции соблюдаются.
Схема дифференциального усилителя

Как видно из иллюстрации симуляции, дифференциальный усилитель решает проблему преобразования биполярного сигнала в униполярный для последующей оцифровки на АЦП контроллера. Кстати, –0.5В удобно брать с PCM5102A, он же стерео, R-канал для управления током через нагрузку, L – для смещения в дифф. усилителе.
Идеи дальнейших доработок схемы
Можно использовать в дифф. усилителе OPA2134 (2-а OPA134 в одном корпусе), первый усилитель в роли буфера для повышения входного сопротивления, второй всё так же в роли дифференциального. Получится что-то вроде инструментального усилителя. Не то чтобы это было значимое улучшение, но это практически бесплатно.
Добавить энкодер с кнопкой в качестве ввода для пользовательского интерфейса. Для универсального устройства tES (tRNS+tACS+tDCS) это в той или иной форме станет необходимостью.
Поразмышлять над комфортом и безопасностью устройства, поизучать коммерческие аналоги, какой функционал там нужен только для медицинских исследований (sham-режим, например), а что может быть полезно в DIY для биокек-энтузиастов.
Разработать "материнскую плату", на которую будут сажаться модули и компоненты для повышения качества и скорости сборки. Схема сложновата для паечных макеток.
Код
Исходники
Исходники прошивки доступны в репозитории . По большей части я вайбкодил на ИИшках, а потом где-то упрощал и вычищал лишнее, потому комментарии в коде подробные.
файл ардуино проекта в
/ESP32tRNS/ESP32tRNS.ino;adc_control.cpp,dac_control.cppиdisplay_control.cppв той же папке – функции работы с буферами АЦП (через I2S), буферами ЦАП и отрисовки на дисплее соответственно;presets_embedded.cpp– пока единственный пресетtRNS 100-640Hz normal, грубо захардкоженный в виде вектора на 16384 элементов. Это временно, пока я не одолел SPIFFS или не придумал более изящное решение;/py_experiments/generator.ipynb– способ, которым я создавал тот самый пресетtRNS 100-640Hz normal, о чем подробнее расписано в следующем разделе.
Концепция генерации пресетов
Я решил, что сигнал tRNS проще будет не генерировать на контроллере, а в любом виде загрузить в виде файла или захардкодить в переменную в виде двухсекундного лупа (2,048 c, подгонял по старой привычке число отсчетов 16384 под степень числа двойки для более быстрого FFT). Да, это периодический сигнал, он будет повторяться каждые две секунды, но по всем прочим характеристикам это будет честный псевдослучайный сигнал и по спектру правильный, и по распределению.

Распределение у сигнала нормальное, спектр – квазибелый в полосе 100–640 Гц, за пределами этой полосы – нулевая мощность. Это нормально, что у шума даже сглаженный Уэлчем спектр всё равно лохматый, а не выглядит ровной прямоугольной полочкой.
Другие пресеты tRNS (0.1-100 Гц и 0.1-640 Гц) я генерировал в тем же файлом, но в прототипе решил их не добавлять, т.к. на данный момент согласно исследованиям они не представляют интереса.
Работа с буферами ЦАП и АЦП
Главное назначение прошивки устройства – качественное проигрывание пресетов через внешний АЦП через I2S.
Мы заранее готовим стереобуфер на основе пресета в правый канал и константы смещения дифференциального усилитея в левый канал и в процессе работы следим, чтобы буфер ЦАП всегда был заполнен. Далее код из dac_control.cpp.
// Записать подготовленный фрагмент во внутренний DMA буфер I2S
// timeout_ticks = 0 → неблокирующий; больше 0 → ждём указанное время
static bool writeFragmentToDMA(TickType_t timeout_ticks) {
const uint32_t start_pos = stereo_buffer_pos;
copyFragmentFromStereoBuffer(start_pos);
size_t bytes_written = 0;
const size_t bytes_to_write = FRAGMENT_SAMPLES * sizeof(int16_t);
esp_err_t result = i2s_write(I2S_NUM,
stereo_buffer_fragment,
bytes_to_write,
&bytes_written,
timeout_ticks);
if (result == ESP_OK && bytes_written > 0) {
uint32_t samples_written = bytes_written / sizeof(int16_t);
stereo_buffer_pos = (start_pos + samples_written) % STEREO_BUFFER_SIZE;
return true;
}
if (result == ESP_ERR_TIMEOUT || bytes_written == 0) {
// DMA заполнен - ничего страшного, позицию не меняем
return false;
}
return false;
}
Если буфер всегда поддерживается заполненным, то время контроллера освобождается для того, чтобы прочитать АЦП, рассчитать метрики и показать их на дисплее (ещё буду энкодер и кнопку опрашивать в следующих версиях) без риска, что проигрывание пресета прервётся.
Заполнение буфера АЦП (код в adc_control.cpp) происходит через DMA в continuous mode, т.е. буфер заполнятеся автоматически аппаратно с нужной частотой асинхронно и без блокировок. Когда в основном loop в ESP32tRNS.ino приходит время показать метрики на дисплей, мы берем самые свежие N сэмплов из этого буфера и по ним высчитываем всё, что хотим показать, матожидание, минимум, максимум и гистограмму. Это чисто пользовательский "показометр".
Идеи дальнейших доработок кода
Изначально я хотел реализовать заливку новых пресетов прямо через USB без перепрошивки, чтобы устройство сохраняло бинари в SPIFFS. Сделать возможность залить вообще произвольный сигнал в виде файла с лупом и метаданными, но ничего не вышло по загадочным причинам. Можно либо придумать, как забороть эту проблему, либо поступить проще и для tRNS ограничиться пресетом rf-tRNS, а tACS и tDCS ноль проблем генерировать на лету параметрически, или вообще все сигналы собирать параметрически, чуть больше кода, зато без менеджмента бинарей.
Совершенно точно нужна "пресетошная", т.е. возможность выбирать режимы и настройки tRNS (амплитуда), tACS (частота+амплитуда), tDCS (сила тока), думаю, которая немыслима без кнопочек или сенсорного экрана или энкодера с кнопкой. Склоняюсь к энкодеру с кнопкой, крутилка выбирает вариант, нажатие применяет выбор, в коде это надо будет отрисовывать интерфейс и отслеживать события энкодера. Кроме того, смещения, усиления и прочие константы тоже следует разрешить редактировать и обеспечить персистентное сохранение в EEPROM.
Можно переделать расчет гистограммы с O(N) в O(1), в теории это возможно, вычитаем влияние выбывающего из окна отсчёта и учитываем новый.
Было бы совсем отлично показывать фактический частотный спектр с АЦП на дисплее, а не только гистограмму, наверное, стоит поглядеть в сторону двухъядерных и более мощных ESP32, пока не тестировал реалистичность этой идеи.
Сборка

Прототип я собрал в прозрачной баночке. Винтовые крепления потенциометра и клемм для электродов радикально упростили монтаж на крышечке. Угловой адаптер USB-C потребовал прямоугольного отверстия, но тоже много сил и времени не отнял. Думаю, следующая версия будет требовать от USB только питания и можно будет заменить адаптер на винтовое гнездо. Кстати, феноменально удобное решение для прототипирования, открутил банку от крыши и вот всё перед глазами с лёгким доступом, кнопочки BOOT и RST нажал – обновил прошивку, никаких 4-х винтов не надо откручивать, никаких проводов от одной половинки корпуса к другой при вскрытии не тянется.
Компоненты смонтировал на дырчатой паечной макетной плате, пришлось тянуть "дорожки" одножильными разноцветными проводками в изоляции, что долго и муторно. Знал, что это займёт почти два дня, сделал бы лазерно-утюжный вариант "материнской платы" устройства, заодно и герберы были бы уже готовы.
Вывод
Сейчас у меня на руках прототип, который выдает правильный сигнал hf-tRNS, удалось реализовать не все хотелки, но в итоге ставка оказалась скорее выигрышной, чем нет. Остался гигантский простор для улучшений. Изначально делал устройство для себя, но пройдя весь путь, хочу познакомить сообщество с моими подходами и получить ценную обратную связь. Код и материалы доступны в открытом репозитории под permissive-лицензией, чтобы любой мог использовать и развивать решения дальше.
P.S.
В коментариях настоятельно рекомендовали проработать вопросы электробезопасности, в частности вот цитаты из предложенной статьи:
Наличие постоянного электрического контакта с телом человека или возможность появления такого контакта, от которого человек не сможет избавиться — к первому относятся, например, все медицинские приборы с нательными электродами...
Наличие вблизи других заземлённых устройств...
Хотя в самой статье я эти темы обходил, сам для себя я этого риска не осознавал. Если стимулятор запитан от компа, и если облокотиться на батарею центрального отопления, то электроды прихвачены к голове эластичной повязкой в формате постоянного электрического контакта, что создаёт опасную ситуацию. Какая там земля на батарее, какой «ноль» на USB и какая между ними разница никто не знает, у меня мультиметр показывал 75 вольт переменного, а в другой момент было около нуля. Это реалистичный риск. Благо, что рабочий стол у меня далеко от батареи отопления.
Тут надо ещё раз подчеркнуть, что устройство не претендует на медицинское применение. Чтобы доводить его до такого уровня безопасности, нужно работать с профессионалами и проходить сертификацию.
Так что запитываться действительно стоит от батареи, аккумулятора или, в случае моего прототипа, от пауэрбанка. Благодарен комментаторам за замечания.
Комментарии (23)

d3d11
27.12.2025 08:16Такие устройства должны иметь батарейное питание. Чтобы при выходе из строя БП голова не простимулировалась синусоидой 220 В.
У меня валяется такой девайс, покупной, с батарейкой.

e-kolkhoz Автор
27.12.2025 08:16Cинусоида - это уже tACS)
Там поднимаем до 12В с помощью DC-DC c 5В от USB. Кстати, батарейка в 9В может убить, по возможности старайтесь этого избегать)

e-kolkhoz Автор
27.12.2025 08:16Хм. Задумался насчёт батарейки. Так-то можно в USB подключить powerbank. На мой взгляд, батарейку 9В в покупных устройствах используют для радикального упрощения схемы, а даже не из соображений безопасности. Там совсем просто, LM334Z + резистор и готов токоограничитель для tDCS, который из 9В тянет только требуемые 1мА, я так и делал себе tDCS, только миллиамперметр в схему добавлял.

KivApple
27.12.2025 08:16Нужно питание от батарейки или аккумулятора. Риски подачи на голову неограниченных 12В - ничто (с учётом солевого раствора ощущения будут скорее всего неприятными, но летальный исход крайне маловероятен, особенно с учётом того, что человек не будет терпеть, а снимет с себя девайс) по сравнению с рисками подачи на голову 220В (летальный исход ожидаем, вероятен и времени на реакцию скорее всего не будет). То есть несмотря на все нагороженные схемы защиты девайс на самом деле опасен.

e-kolkhoz Автор
27.12.2025 08:16Согласен, безопасность - самый тонкий момент в таких устройствах.
В прототипе питание берётся от USB (5 В) с повышением до ±12 В через DC-DC. Ключевой фактор безопасности здесь именно жёсткое ограничение и мониторинг тока, а не уровень напряжения как таковой.
Читал стенфордскую статью про DIY tDCS, врезалась в память фраза вроде "батарейка 9В может тебя убить". Т.е. она может создать опасный ток. Там говорится, мол, не экономьте на миллиамерметрах, они должны быть частью схемы.
Что касается ощущений, tRNS обычно субъективно мягче tDCS именно потому, что биполярный сигнал не приводит к накоплению электрохимических эффектов и локальных сдвигов pH на электродах. Т.е. можно даже не почувтствовать опасный ток по жжению при работе с tRNS, так что риск, я думаю, даже выше и требования к контролю и мониторингу тока тоже выше.
KivApple
27.12.2025 08:16Ну вообще, как я понимаю, истории про убивающую батарейку они в основном про ситуации, когда ток течёт через сердце (в случае tDCS/tRNS сердца на пути нет, электроды так расположены, что кратчайший путь через мозг). Мозг как ни странно устойчивее сердца, при той же электросудорожной терапии токи вообще в сотни миллиампер, массовой смертности не наблюдалось.
Суть в том, что отказ защитных схем при 5В USB на входе подопытного с правильно установленными электродами скорее всего не убьёт, во всяком случае быстро (но будут неприятны и не полезны для здоровья).
А вот отказ самого блока питания и пропуск сетевых 220В на электроды будет фатален с большей вероятностью (там и чистого термического эффекта хватит, чтобы убить, и того кто рядом кинется снимать электроды тоже долбанёт).
Так что обеспечить надёжную гальваническую развязку (питание от аккумулятора или от батарейки) важнее, чем обеспечить низковольтные защиты (хотя, конечно, нужны и те и другие). В статье много внимания уделено последним, но вопросы первых вообще не раскрыт, используется неизвестный бытовой USB блок питания.

e-kolkhoz Автор
27.12.2025 08:16А вопрос только про 220В?
Можно свести риск 220В на USB в ноль пауэрбанком.
Можно взять эту самую батарейку 9V, с нее сделать на DC-DC на 5V для питания контроллера и бустера для усилителей (иногда на всякие ардуинки вешают 9V напрямую и на встроенном в плату стабилизаторе получают нужные 5V, то там в тепло много уходит, некрасиво)
А на себе я разрешаю использовать БП 220V (но заводской, сертифицированный), потому что в заряднике или в БП компа уже есть трансформаторы, т.е. гальваническая развязка, там 220 на выход чтобы получить, должен случиться крайне маловероятный сценарий такого замыкания, чтобы переменный ток мог как-то попасть мимо всех трансформаторов, защит и выпрямителей на контакты USB.

S1eger
27.12.2025 08:16А на себе я разрешаю использовать БП 220V (но заводской, сертифицированный),
Извините, этого совершенно не достаточно для медицинского прибора.
Прочитайте, хотя бы, эту статью. Просмотрите стандарты оттуда.
Просто, из статьи и комментариев кажется, что вы не понимаете опасных факторов, возникающих при сетевом питании устройства, подключенного к голове.

e-kolkhoz Автор
27.12.2025 08:16Благодарю, я упустил фактор, который обозначил комментатор ниже. Ушёл читать статью.

LinkToOS
27.12.2025 08:16А на себе я разрешаю использовать БП 220V (но заводской, сертифицированный)
Только для начала надо взять мультиметр, и измерить напряжение между выходом источника и шиной заземления (нормального заземления). В некоторых случаях может быть больше 100 вольт. Конечно ток там будет очень маленький, но проблемы создать может.
(но заводской, сертифицированный)
Нужен сертифицированный для медицинских применений. БП для компьютера точно не такой.

e-kolkhoz Автор
27.12.2025 08:16Благодарю. Да, вы правы, а я это явно упустил. Если в процессе стимуляции приобнять батарею центрального отопления, что-то может пойти не по плану, если запитываться от компа.

patyupin
27.12.2025 08:16Покупал что то подобное лет 10 назад. Потом каждом использовании тупел на пару часов. Хватило десятка попыток чтобы понять что идёт отупление. Выкинул

e-kolkhoz Автор
27.12.2025 08:16Благодарю! Спасибо, очень ценный коментарий.
Риски получить подобный результат важно проговаривать. Ну, раз уж тема зашла.
Мозг очень сложный. А эффект таких практик стимуляции очень сильный и зависит от огромного количества факторов. Агрессивный маркетинг устройств может легко вводить в заблуждение.
На себе за много лет я пробовал только один протокол (нашёл на PubMed, там проверяли на детях в контролируемых условиях), и то никому не рекомендую повторять. И всё это время я сознательно избегал других протоколов и монтажей, чтобы не утратить ключевых для меня навыков.

Guestishe
27.12.2025 08:16Может в этом и смысл, тренировать мозг в состоянии отупления, чтоб когда отпустит резко поумнеть. Это как утяжелители при тренировке мышц.

e-kolkhoz Автор
27.12.2025 08:16Думаю, мозг - высококонкурентная среда и там усиления одних зон могут угнетать другие. Или перестимуляция может вызвать обратный эффект. Он же и так много энергии потребляет и производит много продуктов обмена. Так что решение отказаться от практик, которые вызывают нежелательные эффекты - выглядит как разумный ход.
Но это не тема поста) Просто разумные предостережения тут не помешают, наверное.

kkuznetzov
27.12.2025 08:16Стать таким же умным как Стивен Хокинг. И таким же подвижным.

e-kolkhoz Автор
27.12.2025 08:16Точно! Конечно, это сильное преувеличение, но, по-моему, даже оно ближе к реальности, чем миф про "используем мозг только на 10%". Хорошая новость, что ещё есть обучение, дискомфортный и энергоемкий для мозга процесс, который зато может создавать высокоэффективные компактные нейронки внутри мозга.
Осталость только заставить себя учиться/работать)

VT100
27.12.2025 08:16Смоделируйте разброс номиналов в Хауленде. Он не лучший выбор из-за неустойчивости выходного сопротивления, которое может даже стать отрицательным.
Дифференциальный усилитель - лучше взять в готовом виде. Разброс резисторов сильно роняет подавление синфазной составляющей.
Параметры аудиокодеков, ЕМНИП, не нормируются на постоянном токе (0,5 В для смещения). Проверьте.
e-kolkhoz Автор
27.12.2025 08:16Спасибо!
Да, номиналы резисторов пробовал крутить туда-сюда на пару процентов в VCCS и это закономерно портило картинку, решал втыканием вместо 9кОм подстороечника, он помогал выправить ситуацию частично с перекосами, смотрел, чтобы усиление в целевых диапазонах нагрузки не менялось. А то, что ещё и усиление уползало от номинального потом компенсировал калибровкой цифрового усиления. Лишняя работа, но результат в целом приемлемый, по моим представлениям, тут прецизионности особой и не надо. Думаю, надо резюки более прецизионные брать и снова проверять, там цена вроде не особо меняется, зато может не потребуется подстройка и хватит калибровки.
Про дифференциальный усилитель тоже подумаю, да, он не являюется суперкритичной частью, но если есть варианты, как это удобнее и качественнее сделать, то стоит поисследовать. Я сначала смотрел на ADC биполярные (тогда бы и дифф. услилтель не пригодился) и сначала смотрел на аудио, но то, что с приятным ценником там постоянную составляющую давят, а это уже не то.
А по поводу постоянных токов, мне сразу мощно повезло, PCM5102A на модуле не имеет ВЧ фильтров и постоянную составляющую не давит, так что -0.5 он да, выдает постоянными очень аккуратно.
Я уже в прототипе всё перепроверял, насколько это можно с простеньким осциллографом. Я гонял на синусоидах, чтобы видеть всякие искажения. Думаю, надо ещё с постоянными токами в духе tDCS поиграться, чтобы ещё все помехи получше разглядеть

SystemSoft
27.12.2025 08:16До конца не дочитал, потому что не разбираюсь именно в этом, но вы - молодцы, мне нравятся такие hardware проекты.

poruchuk_Rzevski
27.12.2025 08:16Как инженер, конструктор и преподаватель в области мед. електроники могу посоветовать:
По поводу источника питания - обезательно берите батарейное, ни в коем случае несвязанное с сети 220В. Акумуляторное тоже лучше избегать - всегда найдется умник, которой попробует поставить одновременно на заряд и на пациента. Тем более, что ток у вас небольшой. С человеческой точки спокойнее будет, а даже если устройство поставить на серию и производить официалльно, будет намного легче сертифицировать что касается електробезопасности.
Схему ГТУН (VCCS) я бы поменял на "стандартную" - ОУ + транзистор с шунтовым резистором. Так при помощи еще двух компараторов следящих напряжения на выходе ОУ и на шунтовом резисторе можно сделать защиты соответствено от плохого контакта електродов и по максимальному току через тело пациента. Последняя в принципе должна срабатывать один раз, тоесть, желательно чтоб срабатывание защиты приводило к выгоранию плавкого предохранителя в блоке питания.
Биполярные импульсы лучше сделать с помощью транзисторного моста, используя монополярное питание. Мост подключается между питанием и коллектором транзистора ГТУН, а пациент соответствено в диагональ.
LinkToOS
Но ведь голова это не простая цепь, эквивалентная одиночному резистору. Ток пойдет разными путями. И неизвестно каким будет сигнал в нужной части цепи.
Нужно рассмотреть эквивалентную электрическую схему головы. Потребуются дополнительные электроды в обратной связи.
К тому же одноканальные стимуляторы это бесперспективно. А в многоканальных стимуляторах алгоритм генерации сигнала сложнее.
e-kolkhoz Автор
Да, есть такая проблема. Работаем с той моделью, которой пользуются исследователи.