Mục lục:

Arduino TDCS Siêu mẫu. Bộ kích thích dòng điện trực tiếp xuyên não (tDCS) Tự làm: 5 bước
Arduino TDCS Siêu mẫu. Bộ kích thích dòng điện trực tiếp xuyên não (tDCS) Tự làm: 5 bước

Video: Arduino TDCS Siêu mẫu. Bộ kích thích dòng điện trực tiếp xuyên não (tDCS) Tự làm: 5 bước

Video: Arduino TDCS Siêu mẫu. Bộ kích thích dòng điện trực tiếp xuyên não (tDCS) Tự làm: 5 bước
Video: Thanh niên nhiều chấy nhất sau khi ăn tết 2024, Tháng mười một
Anonim
Arduino TDCS Siêu mẫu. Bộ kích thích dòng điện trực tiếp xuyên năm (tDCS) DIY
Arduino TDCS Siêu mẫu. Bộ kích thích dòng điện trực tiếp xuyên năm (tDCS) DIY

Para fazer este tDCS você Preisará apenas de um arduino, điện trở, tụ điện e alguns cabos

  1. Arduino

    • Pino D13 como saída PWM (pode ser alterado).
    • Pino A0 como entrada analógica (para feedback de Corrente).
    • Vượn cáo Pino GND para GND.
  2. Điện trở (~ 470 Ω, mas provavelmente entre 300-1000 Ω funciona, você Preisará alterar không có fonte)
  3. Tụ điện (220 μF). Cung cấp para settingilizar os pulsos do PWM.
  4. Eletrodos de Esponja (Sử dụng á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 atagem de saída. Você também pode alterar o valor do target_mA pelo serial CLI (Console).

Bước 1: Saiba Mais

Saiba Mais
Saiba Mais

Você deve ler mais sobre tDCS primeiro. Não é aprovado pelo FDA e pode ser trước tư pháp a sua saúde, majormente se você não sabe nada sobre os efeitos colaterais, đề phòng e dentre outros…

Bước 2: Monte O Circuito Abaixo

Monte O Circuito Abaixo
Monte O Circuito Abaixo

Não se esqueça das esponjas com água salina!

Bước 3: Instale O Código No Seu Arduino

Lembre-se de alterar as configurações e parametros na área de HARDWARE PARAMS e CÁC THÔNG SỐ CÓ THỂ CẤU HÌNH.

Você também deve alterar o boud rate do Serial para: 115200 para poder ver o resultado.

Para executive comandos, troque o No Line Ending para Carriage Return.

O código fonte + hướng dẫn também podem ser encontrados no repositório:

Código:

const String ver = "2.0m"; // THÔNG SỐ PHẦN CỨNG const int analogInPin = A0; // Entrada do Analógico const int analogOutPin = 13; // Saida D13 padrão float maxOutV = 5.0; // Atagem de saída PWM padrão do Arduino [V] float maxRefInV = 1.1; // Referencia àtagem analógica [V] float R = 470.0; // Resistencia da Corrente [Ohm]

// CÁC THÔNG SỐ CÓ THỂ CẤU HÌNH

bool plotter = false; // Định nghĩa: true, caso esteja usando o Trình vẽ nối tiếp bool putty = false; // Định nghĩa: true, caso esteja usando o PuTTT (pode ser alterado no CLI) int maxmin = 30; // Tempo (em minutos) needário para desligar [Min] float target_mA = 2.73; // Essa é a Corrente que passará pelo seu cérebro !!! [mA] float epsilon_mA = 0,03; // Diferença máxima yêu cầu một sự điều chỉnh thực sự ở target_mA (Não altere caso não saiba o que está fazendo!)

// INIT TOÀN CẦU

int state = 1; / * -1 - Cérebro não Idificado 0 - Voltagem sendo alterada para Defr a Corrente padrão 1 - Tudo certo. Você esta na Corrente Defda -10 - Voltagem desligada * / float outV = maxOutV; // Voltagem int debounced_state = 0; int zeros_len = 0; float smoothed_mA = 0;

Chuỗi lệnhString = ""; // cho CLI

// PHẢN HỒI TRỢ GIÚP

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? trả về maxOutV; // trả về maxOutV / 5.0; // para segurança} bang = 0; trả về 0,1 * new_V + 0,9 * V; // trả về new_V; }

int convertVtoOutputValue (float V) {

return ràng buộc (int (V / maxOutV * 255), 0, 255); }

float sensorValue2mA (int sensorValue) {

float sensorVoltage = sensorValue / 1023.0 * maxRefInV; float sensor_mA = sensorVoltage / R * 1000.0; cảm_phục hồi_mA; }

int debounced_state_compute (int state) {

if (trạng thái 5) trả về 0; } trả về 1; }

đầu dài không dấu, endc;

void process_feedback () {int sensorValue = analogRead (analogInPin); float new_mA = sensorValue2mA (sensorValue); làm mịn_mA = 0,2 * new_mA + 0,8 * làm mịn_mA; float V = outV; outV = computeOutVoltage (V, new_mA); analogWrite (analogOutPin, convertVtoOutputValue (outV)); debounced_state = debounced_state_compute (trạng thái); // Exibir Informações no CLI endc = (millis () - start) / 1000; Chuỗi tv = "[", ttm = "mA /", tsm = "V,", ts = "mA] | Estado:", h = "| Tempo:", s = ":", leadM = "", leadS = "", plotT = "Mục tiêu:", plotmA = "\ tSmoothed MA:", plotMin = "\ tMin:", tempo; không dấu dài tmin = endc / 60 - ((endc / 60)% 1); // Formatação if (endc% 60 <10) leadS = "0"; if (tmin = 0) ts = ts + "+"; // Parar automaticamente if (tmin> maxmin) stop_device (); Chuỗi txt; if (máy vẽ) 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 (putty) Serial.print ("\ r / e [? 25l" + txt); else Serial.println (txt);

// đợi 2 mili giây trước vòng lặp tiếp theo

// để bộ chuyển đổi tương tự sang kỹ thuật số giải quyết // sau lần đọc cuối cùng: delay (5); }

void stop_device () {

trạng thái = -10; analogWrite (analogOutPin, 0); clearAndHome (); Serial.println ("Sessão tDCS interrompida"); Serial.println ("------------------------"); Cứu giúp(); }

// NGƯỜI TRỢ GIÚP CỦA CLI

void clearAndHome () {Serial.write (27); Serial.print ("[2J"); // limpa a tela 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 ("'?' - ajuda"); Serial.println ("'max_time' - atualiza o tempo máximo (em minutos)"); Serial.println ("'target_mA' - atualiza o target (mA)"); Serial.println ("'epsilon_mA' - atualiza o epsilon_mA (mA)"); Serial.println ("'R' - atualiza a Resistência do Phần cứng (Ohm)"); Serial.println ("'putty' - muda a formatação de saída pro PuTTY"); Serial.println ("'dừng' - para a ước tính"); Serial.println ("'khởi động lại' - inicia / reinicia a ước tính & o bộ đếm thời gian"); Serial.println ("'tiếp tục' - liên tục một ước tính"); 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 (Chuỗi & cmdString) {

int spacePos = cmdString.indexOf (''); if (spacePos <= 0) trả về false; Lệnh chuỗi = cmdString.substring (0, spacePos); String fval = cmdString.substring (spacePos + 1); if (lệnh == "putty") if (fval == "true") {putty = true; trả về true; } else if (fval == "false") {putty = false; trả về true; } float val = fval.toFloat (); if (lệnh == "target_mA") {if (val100.0) {return false; } target_mA = val; clearAndHome (); Cứu giúp(); } else if (lệnh == "epsilon_mA") {if (val0.3) {return false; } epsilon_mA = val; clearAndHome (); Cứu giúp(); } else if (lệnh == "R") {R = val; clearAndHome (); Cứu giúp(); } else if (lệnh == "max_time") {maxmin = val; clearAndHome (); Cứu giúp(); } else {return false; } trả về true; }

// THIẾT LẬP VÀ ĐĂNG NHẬP CHÍNH

void setup () {Serial.begin (115200); analogReference (NỘI BỘ); //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) {// Vận chuyển trả về bool accept = true; if (commandString == "?" || commandString == "stop") {stop_device (); } else if (commandString == "khởi động lại") {clearAndHome (); trạng thái = -1; outV = maxOutV / 5.0; start = millis (); chấp nhận = sai; } else if (commandString == "continue") {clearAndHome (); trạng thái = -1; outV = maxOutV / 5.0; chấp nhận = sai; } else {bool ok = parse_param (commandString); if (! ok) {clearAndHome (); Cứu giúp(); chấp nhận = sai; Serial.println ("Comando desconhecido: '" + commandString + "'"); }} commandString = ""; if (được chấp nhận) {clearAndHome (); Cứu giúp(); Serial.println ("Được!"); }} else {commandString + = v; if (state == - 10) {Serial.print (v); }}}}

Bước 4: Uma UI Personalizada

Uma UI Personalizada
Uma UI Personalizada

Para melhor acompanhamento e segurança, sử dụng một PuTTY ferramenta, e định nghĩa không có fonte código:

putty = true

Recomendações de Defções:

  • Cửa sổ

    • 61 Colunas e 20 Linhas
    • Hiển thị thanh cuộn desativado
  • Window> Appearance

    Fonte: Bảng điều khiển Lucida, 28px

Bước 5: Dúvidas?

Para abrir a guia de ajuda, digite:

?

e pressione [ENTER]

OBS: Caso o Estado seja:

-1 -> Cérebro não Idificado (Corrente aberta) +0 -> Ajustando điện ápm + 1 -> Tudo certo, tDCS funcionando

Đề xuất: