Съдържание:
- Стъпка 1: Saiba Mais
- Стъпка 2: Monte O Circuito Abaixo
- Стъпка 3: Инсталирайте O Código No Seu Arduino
- Стъпка 4: Персонализиране на потребителския интерфейс на Uma
- Стъпка 5: Дувидас?
Видео: Arduino TDCS Super Simples. Транскраниален стимулатор на постоянен ток (tDCS) DIY: 5 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
Para fazer este tDCS você precisará apenas de um arduino, резистор, кондензатор и alguns cabos
-
Arduino
- Pino D13 е съвместим с ШИМ (поддръжка на алтернатива).
- Pino A0 като аналогова ентрада (за обратна връзка от корена).
- Pino GND apenas para GND.
- Резистор (~ 470 Ω)
- Кондензатор (220 μF). Сервирайте para estabilizar os pulsos до PWM.
- Eletrodos de Esponja (Използвайте água salina para molhá-lo).
Como funciona
O Arduino Calcula a corrente padrão (pode ser alterado) que passará pelo seu cérebro apenas por mudar a voltagem de saída. Отидете там, за да промените или доблестта до target_mA пело сериен CLI (конзола).
Стъпка 1: Saiba Mais
Você deve ler mais sobre tDCS primeiro. Não é aprovado pelo FDA и pode ser prejudicial a sua saúde, principalmente se você não sabe nada sobre os efeitos colaterais, precauções e dentre outros…
Стъпка 2: Monte O Circuito Abaixo
Não se esqueça das esponjas com água salina!
Стъпка 3: Инсталирайте O Código No Seu Arduino
Lembre-se de alterar as configurações and parametros na área de HARDWARE PARAMS e CONFIGURABLE PARAMS.
Очаквайте да промените промяната на скоростта на предаване до сериен номер: 115200 за под или до резултата.
Командос за изпълнение на изпълнител, троя o Без завършване на ред за връщане на карета.
O código fonte + tutorial também podem ser encontrados no repositório:
Кодиго:
const String ver = "2.0m"; // ХАРАКТЕРНИ ПАРАМЕТИ const int analogInPin = A0; // Entrada do Analógico const int analogOutPin = 13; // Saida D13 padrão float maxOutV = 5.0; // Напрежение от детайл PWM padrão do Arduino [V] поплавък maxRefInV = 1,1; // Referencia à voltagem analógica [V] поплавък R = 470,0; // Resistencia da corrente [Ом]
// КОНФИГУРАЦИРАНИ ПАРАМЕТИ
bool плотер = невярно; // Определя: true, caso esteja usando o Сериен плотер bool putty = false; // Определя: true, caso esteja usando o PuTTT (pode ser alterado no CLI) int maxmin = 30; // Темпо (em minutos) необходимо за описание [Min] float target_mA = 2.73; // Essa é a corrente que passará pelo seu cérebro !!! [mA] поплавък 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á fazindo!)
// INIT GLOBALS
int състояние = 1; /* -1 - Cérebro não identificado 0 - Voltagem sendo alterada para definir a corrente padrão 1 - Tudo certo. Você esta na corrente definida -10 - Делигадация на напрежение */ float outV = maxOutV; // Voltagem int debounced_state = 0; int нули_лен = 0; float smoothed_mA = 0;
String commandString = ""; // за CLI
// ПОМОЩНИЦИ ЗА ОБРАТНА ВРЪЗКА
float computeOutVoltage (float V, float new_mA) {if (abs (new_mA -target_mA) maxOutV) {state = -1; // резистенция muito alta -> cérebro não encontrado? връщане maxOutV; // връща maxOutV/5.0; // para segurança} състояние = 0; връщане 0,1*new_V+0,9*V; // връща new_V; }
int convertVtoOutputValue (float V) {
връщане ограничение (int (V/maxOutV*255), 0, 255); }
float sensorValue2mA (int sensorValue) {
датчик за поплавък Напрежение = сензорна стойност/1023.0*maxRefInV; float sensor_mA = sensorVoltage/R*1000.0; сензор за връщане_mA; }
int debounced_state_compute (int state) {
if (състояние 5) връща 0; } връщане 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 (V, new_mA); analogWrite (analogOutPin, convertVtoOutputValue (outV)); debounced_state = debounced_state_compute (състояние); // Exibir informações без CLI endc = (millis ()-начало)/1000; Низ tv = "[", ttm = "mA/", tsm = "V,", ts = "mA] | Estado:", h = "| Tempo:", s = ":", leadM = "", leadS = "", plotT = "Цел:", plotmA = "\ tSmoothed MA:", plotMin = "\ tMin:", темпо; без знак дълго tmin = endc/60-((endc/60)%1); // Форматиране if (endc%60 <10) leadS = "0"; ако (tmin = 0) ts = ts + " +"; // Parar automaticamente if (tmin> maxmin) stop_device (); Низ txt; ако (плотер) txt = plotT + target_mA + plotMin + "0" + plotmA + smoothed_mA; else txt = tv + V + tsm + smoothed_mA + ttm + target_mA + ts + debounced_state + h + tempo; if (замазка) Serial.print ("\ r / e [? 25l" + txt); else 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"); // limpa a tela Serial.write (27); // ESC Serial.print ("[H"); // / r if (! kitty) за (int i = 0; i <= 30; i ++) Serial.println (""); }
void help () {
Serial.println ("tDSC arduino, ver"+ver); Serial.println ("'?' - ajuda"); Serial.println ("'max_time' - актуализиране на темпото на максимум (em minutos)"); Serial.println ("'target_mA' - настройка на цел (mA)"); Serial.println ("'epsilon_mA' - atualiza o epsilon_mA (mA)"); Serial.println ("'R' - настройка на устойчивост на хардуер (Ом)"); Serial.println ("'шпакловка" - трябва да създава информация за PuTTY "); Serial.println ("'stop' - para a estimulação"); Serial.println ("'restart' - inicia/reinicia a estimulação & o timer"); Serial.println ("'continue' - continua a estimulação"); Serial.print ("\ n / rEstado: / n / r * max_time:"); Serial.print (maxmin); Serial.print ("minutos / n / r * target_mA:"); Serial.print (target_mA); Serial.print ("mA / n / r * epsilon_mA:"); Serial.print (epsilon_mA); Serial.print ("mA / n / r * R:"); Serial.print (R); Serial.println ("Ohms"); }
bool parse_param (String & cmdString) {
int spacePos = cmdString.indexOf (''); if (spacePos <= 0) връща false; Команда за низ = cmdString.substring (0, spacePos); Низ fval = cmdString.substring (spacePos+1); if (команда == "kitty") if (fval == "true") {putty = true; връщане true; } else if (fval == "false") {putty = false; връщане true; } float val = fval.toFloat (); if (команда == "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 (команда == "R") {R = val; clearAndHome (); помогне(); } else if (command == "max_time") {maxmin = val; clearAndHome (); помогне(); } else {return false; } return true; }
// НАСТРОЙКА И ОСНОВЕН КЪМ
void setup () {Serial.begin (115200); analogReference (ВНУТРЕННИ); //1.1 V Serial.print ("Sessão iniciada!"); start = millis (); } void loop () {if (state! =-10) {process_feedback (); } if (Serial.available ()> 0) {char v = Serial.read (); if (byte (v) == 13) {// Bool за връщане на каретка приет = true; if (commandString == "?" || commandString == "stop") {stop_device (); } else if (commandString == "restart") {clearAndHome (); състояние = -1; outV = maxOutV/5.0; start = millis (); приет = невярно; } else if (commandString == "continue") {clearAndHome (); състояние = -1; outV = maxOutV/5.0; приет = невярно; } else {bool ok = parse_param (commandString); if (! ok) {clearAndHome (); помогне(); приет = невярно; Serial.println ("Comando desconhecido: '" + commandString + "'"); }} commandString = ""; ако (прието) {clearAndHome (); помогне(); Serial.println ("Добре!"); }} else {commandString+= v; if (състояние ==-10) {Serial.print (v); }}}}
Стъпка 4: Персонализиране на потребителския интерфейс на Uma
Para melhor acompanhamento e segurança, use a ferramenta PuTTY, e defina no código fonte:
замазка = вярно
Препоръки за определяне:
-
Прозорец
- 61 Colunas e 20 Linhas
- Показване на лентата за превъртане desativado
-
Прозорец> Външен вид
Фон: Lucida Console, 28 пиксела
Стъпка 5: Дувидас?
Para abrir a guia de ajuda, дигитално:
?
натиснете [ENTER]
OBS: Caso o Estado seja:
-1 -> Cérebro não identificado (corrente aberta) +0 -> Ajustando напрежение m+1 -> Tudo certo, tDCS funcionando
Препоръчано:
Разликата между (алтернативен ток и постоянен ток): 13 стъпки
Разликата между (алтернативен ток и постоянен ток): Всеки знае, че електричеството е предимно DC, но какво ще кажете за друг вид електричество? Познаваш ли Ак? Какво означава AC? Може ли да се използва тогава DC? В това проучване ще знаем разликата между видовете електричество, източници, приложение
97% ефективен преобразувател на постоянен ток в постоянен ток [3A, регулируем]: 12 стъпки
97% ефективен преобразувател на постоянен ток в постоянен ток [3А, регулируем]: Малка платка с преобразувател на постоянен ток в постоянен ток е полезна за много приложения, особено ако може да достави токове до 3 А (2 А непрекъснато без радиатор). В тази статия ще се научим да изграждаме малка, ефективна и евтина верига за преобразуване на долари. [
1A до 40A преобразувател на ток BOOST за двигател с постоянен ток до 1000 W: 3 стъпки
1A до 40A преобразувател на ток BOOST за двигатели с постоянен ток до 1000 W: Здравейте! В това видео ще научите как да направите усилвателна верига за вас с високо амперни DC двигатели до 1000 W и 40 ампера с транзистори и трансформатор с централен кран. токът на изхода е много висок, но напрежението ще бъде r
Управление на изходящия вентилатор с постоянен ток на сензора за движение без Arduino: 4 стъпки
Управление на DC изпускателния вентилатор, базиран на сензор за движение, без Arduino: Здравейте, братя и сестри на света, направих малък проект за управление на вашия DC изпускателен вентилатор (Ако добавите едно реле, можете да контролирате и вентилатора за променлив ток). Това може да се използва в покой стая за изсушаване на мокрите ви ръце. и също използва други приложения
НАПРАВЛЕНИЕ И КОРПУЛИРАНЕ НА СКОРОСТТА НА ДВИГАТЕЛИ с постоянен ток, използвайки LABVIEW (PWM) И ARDUINO: 5 стъпки
НАПРАВЛЕНИЕ И КОНТРОЛ НА СКОРОСТТА НА ДВИГАТЕЛЯ НА ЕЛЕКТРИЧЕСКИ ДВИГАТЕЛ, ИЗПОЛЗВАЩИ LABVIEW (PWM) И ARDUINO: Здравейте момчета преди всичко съжалявам за смешния ми английски. В тази инструкция ще ви покажа как да контролирате скоростта на постоянен двигател с помощта на labview Нека започнем