Оглавление:
- Шаг 1: Сайба Майс
- Шаг 2: Монте О Чиркуито Абайшо
- Шаг 3: Установите O Código No Seu Arduino
- Шаг 4. Персонализация Uma UI
- Шаг 5: Двидас?
Видео: Arduino TDCS Super Simples. Транскраниальный стимулятор постоянного тока (tDCS) DIY: 5 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Para fazer este tDCS você Precisará apenas de um arduino, резистор, конденсатор и элементы cabos
-
Ардуино
- Pino D13 используется с ШИМ (Pode ser Alterado).
- Pino A0 como entrada analógica (для обратной связи).
- Pino GND apenas для GND.
- Резистор (~ 470 Ом, сопротивление в пределах 300-1000 Ом, точное изменение без использования фонового сигнала)
- Конденсатор (220 мкФ). Служит для создания импульсов с ШИМ.
- Eletrodos de Esponja (используйте água salina para molhá-lo).
Como funciona
О Arduino вычислить Corrente Padrão (Pode ser alterado) que passará pelo seu cérebro apenas por mudar a Voltagem de Saída. Воспользуйтесь альтернативным интерфейсом или доблестью target_mA через последовательный интерфейс командной строки (консоль).
Шаг 1: Сайба Майс
Você deve ler mais sobre tDCS primeiro. Не утверждено FDA и подано с предвзятым отношением к делу, принципам соблюдения требований по употреблению пищевых продуктов, мерам предосторожности и разрешению …
Шаг 2: Монте О Чиркуито Абайшо
Não se esqueça das esponjas com água salina!
Шаг 3: Установите O Código No Seu Arduino
Вы можете изменить настройки и параметры в области АППАРАТНЫЕ ПАРАМЕТРЫ и КОНФИГУРИРУЕМЫЕ ПАРАМЕТРЫ.
Você também deve alterar or boud rate do Serial para: 115200 для получения результата.
Для команд-исполнителей, команды или "Без окончания строки" для возврата каретки.
O código fonte + учебник também podem ser encontrados no repositório:
Кодиго:
const String ver = "2,0 м"; // АППАРАТНЫЕ ПАРАМЕТРЫ const int analogInPin = A0; // Аналоговый ввод const int analogOutPin = 13; // Saida D13 padrão float maxOutV = 5.0; // Напряжение, указанное в параметре ШИМ на Arduino [V] float maxRefInV = 1.1; // Ссылка на аналог напряжения [В] float R = 470.0; // Resistencia da corrente [Ом]
// КОНФИГУРИРУЕМЫЕ ПАРАМЕТРЫ
bool plotter = false; // Определение: true, если использовать последовательный плоттер bool putty = false; // Определено: true, если используется или используется PuTTT (при изменении интерфейса командной строки) int maxmin = 30; // Темп (в минуту), необходимый для указания [Мин] float target_mA = 2.73; // Essa é a corrente que passará pelo seu cérebro !!! [мА] float epsilon_mA = 0,03; // Diferença máxima entre a corrente real e o target_mA (Não altere caso não saiba o que está fazendo!)
// INIT GLOBALS
int state = 1; / * -1 - Идентификатор не указан 0 - Напряжение будет изменено для определения поля 1 - Подтверждено. Você esta na corrente Definida -10 - Voltagem desligada * / float outV = maxOutV; // Voltagem int debounced_state = 0; int zeros_len = 0; float smoothhed_mA = 0;
Строка commandString = ""; // для CLI
// ПОМОЩНИКИ ОБРАТНОЙ СВЯЗИ
float computeOutVoltage (float V, float new_mA) {if (abs (new_mA-target_mA) maxOutV) {state = -1; // resistência muito alta -> cérebro não encontrado? return maxOutV; // возврат maxOutV / 5.0; // para segurança} state = 0; return 0.1 * new_V + 0.9 * V; // вернуть new_V; }
int convertVtoOutputValue (float V) {
return constrain (int (V / maxOutV * 255), 0, 255); }
float sensorValue2mA (int sensorValue) {
float sensorVoltage = sensorValue / 1023.0 * maxRefInV; float sensor_mA = sensorVoltage / R * 1000.0; датчик возврата_mA; }
int debounced_state_compute (целое состояние) {
если (состояние 5) вернуть 0; } return 1; }
беззнаковый длинный старт, endc;
void process_feedback () {int sensorValue = analogRead (analogInPin); float new_mA = sensorValue2mA (sensorValue); Smoothed_mA = 0,2 * new_mA + 0,8 * Smoothed_mA; поплавок V = outV; outV = computeOutVoltage (В, новое_мА); analogWrite (analogOutPin, convertVtoOutputValue (outV)); debounced_state = debounced_state_compute (состояние); // Дополнительная информация отсутствует CLI endc = (millis () - start) / 1000; Строка tv = "[", ttm = "mA /", tsm = "V,", ts = "mA] | Estado:", h = "| Tempo:", s = ":", leadM = "", leadS = "", plotT = "Target:", plotmA = "\ tSmoothed MA:", plotMin = "\ tMin:", tempo; беззнаковое длинное время tmin = endc / 60 - ((endc / 60)% 1); // Форматирование if (endc% 60 <10) leadS = "0"; если (tmin = 0) ts = ts + "+"; // Параметр автоматического изменения if (tmin> maxmin) stop_device (); String txt; if (плоттер) txt = plotT + target_mA + plotMin + "0" + plotmA + Smoothed_mA; иначе txt = tv + V + tsm + smoothed_mA + ttm + target_mA + ts + debounced_state + h + tempo; if (замазка) Serial.print ("\ r / e [? 25l" + txt); иначе Serial.println (txt);
// ждем 2 миллисекунды перед следующим циклом
// чтобы аналого-цифровой преобразователь установился // после последнего чтения: delay (5); }
void stop_device () {
состояние = -10; analogWrite (analogOutPin, 0); clearAndHome (); Serial.println ("Sessão tDCS interrompida"); Serial.println ("------------------------"); помощь(); }
// ПОМОЩНИКИ CLI
void clearAndHome () {Serial.write (27); Serial.print ("[2J"); // нет в теле Serial.write (27); // ESC Serial.print ("[H"); // / r if (! putty) for (int i = 0; i <= 30; i ++) Serial.println (""); }
void help () {
Serial.println ("tDSC arduino, ver" + ver); Serial.println ("'?' - аджуда"); Serial.println ("'max_time' - максимальное время (в минутах)"); Serial.println ("'target_mA' - значение цели (mA)"); Serial.println ("'epsilon_mA' - значение epsilon_mA (mA)"); Serial.println ("'R' - изменение сопротивления оборудования (Ом)"); Serial.println ("замазка" - формат информации о PuTTY "); Serial.println («стоп - для оценки»); Serial.println ("перезапуск - инициализация / повторный запуск оценки и таймера"); Serial.println ("продолжить" - продолжение оценки "); Serial.print ("\ n / rEstado: / n / r * max_time:"); Серийный. Печать (макс. Мин.); Serial.print ("минуты / n / r * target_mA:"); Serial.print (target_mA); Serial.print ("mA / n / r * epsilon_mA:"); Серийный. Отпечаток (epsilon_mA); Serial.print ("mA / n / r * R:"); Серийный принт (R); Serial.println («Ом»); }
bool parse_param (String & cmdString) {
интервал spacePos = cmdString.indexOf (''); если (spacePos <= 0) вернуть false; Строковая команда = cmdString.substring (0, spacePos); Строка fval = cmdString.substring (spacePos + 1); если (команда == "шпатлевка") если (fval == "истина") {шпатлевка = истина; вернуть истину; } иначе, если (fval == "false") {putty = false; вернуть истину; } float val = fval.toFloat (); if (command == "target_mA") {if (val100.0) {return false; } target_mA = val; clearAndHome (); помощь(); } else if (command == "epsilon_mA") {if (val0.3) {return false; } epsilon_mA = val; clearAndHome (); помощь(); } else if (command == "R") {R = val; clearAndHome (); помощь(); } else if (command == "max_time") {maxmin = val; clearAndHome (); помощь(); } else {вернуть ложь; } вернуть истину; }
// НАСТРОЙКА И ГЛАВНЫЙ ЦИКЛ
void setup () {Serial.begin (115200); analogReference (ВНУТРЕННИЙ); //1.1 V Serial.print ("Sessão iniciada!"); начало = миллис (); } void loop () {если (состояние! = - 10) {process_feedback (); } если (Serial.available ()> 0) {char v = Serial.read (); if (byte (v) == 13) {// Возврат каретки bool accept = true; если (commandString == "?" || commandString == "стоп") {stop_device (); } иначе, если (commandString == "перезапуск") {clearAndHome (); состояние = -1; outV = maxOutV / 5,0; начало = миллис (); принято = ложь; } иначе, если (commandString == "продолжить") {clearAndHome (); состояние = -1; outV = maxOutV / 5,0; принято = ложь; } еще {bool ok = parse_param (commandString); если (! ОК) {clearAndHome (); помощь(); принято = ложь; Serial.println ("Comando desconhecido: '" + commandString + "'"); }} commandString = ""; если (принято) {clearAndHome (); помощь(); Serial.println («Хорошо!»); }} еще {commandString + = v; если (состояние == - 10) {Serial.print (v); }}}}
Шаг 4. Персонализация Uma UI
Para melhor acompanhamento e segurança, используйте ferramenta PuTTY, e defina no código fonte:
шпатлевка = правда
Рекомендации по определению:
-
Окно
- 61 Colunas e 20 Linhas
- Отобразить полосу прокрутки desativado
-
Окно> Внешний вид
Fonte: Lucida Console, 28 пикселей
Шаг 5: Двидас?
Para abrir a guia de ajuda, digite:
?
e нажмите [ENTER]
OBS: Caso o Estado seja:
-1 -> Cérebro não identifyado (corrente aberta) +0 -> Ajustando Voltagem + 1 -> Tudo certo, tDCS funcionando
Рекомендуемые:
Устройство плавного пуска (ограничитель пускового тока) для нагрузок переменного и постоянного тока: 10 шагов
Устройство плавного пуска (ограничитель пускового тока) для нагрузок переменного и постоянного тока: пусковой ток / выброс при включении - это максимальный мгновенный входной ток, потребляемый электрическим устройством при первом включении. Пусковой ток намного выше, чем установившийся ток нагрузки, и это источник многих проблем, таких как предохранитель bl
Преобразование 35 В постоянного тока в 9 В постоянного тока с помощью регулятора напряжения 7809: 7 шагов
Преобразование 35 В постоянного тока в 9 В постоянного тока с помощью регулятора напряжения 7809: Привет друг, сегодня я собираюсь сделать схему контроллера напряжения. С помощью этой схемы мы можем преобразовать до 35 В постоянного тока в постоянное 9 В постоянного тока. В этой схеме мы будем использовать только напряжение 7809. регулятор. Приступим
Преобразование 12 В постоянного тока в 5 В постоянного тока: 5 шагов
Преобразование 12 В постоянного тока в 5 В постоянного тока: Привет друг, сегодня я расскажу вам, как преобразовать постоянное напряжение до 24 В в постоянное 5 В. Приступим
Сделай сам понижающий преобразователь постоянного тока в постоянный -- Как легко снизить напряжение постоянного тока: 3 шага
Сделай сам понижающий преобразователь постоянного тока в постоянный || Как легко снизить напряжение постоянного тока: понижающий преобразователь (понижающий преобразователь) - это преобразователь постоянного тока в постоянный, который понижает напряжение (при повышении тока) от входа (источника питания) к выходу (нагрузки). Это класс импульсных источников питания (SMPS), обычно содержащий не менее
ШИМ-управление скоростью двигателя постоянного тока и освещением - Диммер постоянного тока: 7 ступеней
ШИМ-управление скоростью двигателя постоянного тока и освещением | Диммер постоянного тока: сегодня в этом видео я собираюсь показать вам, как приглушить свет, контролировать скорость двигателя в постоянном или постоянном токе, так что давайте начнем