সুচিপত্র:

Arduino TDCS সুপার সিম্পলস। ট্রান্সক্রানিয়াল ডাইরেক্ট কারেন্ট স্টিমুলেটর (টিডিসিএস) DIY: 5 টি ধাপ
Arduino TDCS সুপার সিম্পলস। ট্রান্সক্রানিয়াল ডাইরেক্ট কারেন্ট স্টিমুলেটর (টিডিসিএস) DIY: 5 টি ধাপ

ভিডিও: Arduino TDCS সুপার সিম্পলস। ট্রান্সক্রানিয়াল ডাইরেক্ট কারেন্ট স্টিমুলেটর (টিডিসিএস) DIY: 5 টি ধাপ

ভিডিও: Arduino TDCS সুপার সিম্পলস। ট্রান্সক্রানিয়াল ডাইরেক্ট কারেন্ট স্টিমুলেটর (টিডিসিএস) DIY: 5 টি ধাপ
ভিডিও: Simple DIY TENS and TDCS Example 2024, জুলাই
Anonim
Arduino TDCS সুপার সিম্পলস। ট্রান্সক্রানিয়াল ডাইরেক্ট কারেন্ট স্টিমুলেটর (টিডিসিএস) DIY
Arduino TDCS সুপার সিম্পলস। ট্রান্সক্রানিয়াল ডাইরেক্ট কারেন্ট স্টিমুলেটর (টিডিসিএস) DIY

Para fazer este tDCS você precisará apenas de um arduino, resistor, capacitor e alguns cabos কম্পোনেন্টস

  1. আরডুইনো

    • Pino D13 como saída PWM (pode ser alterado)।
    • Pino A0 como entrada analógica (para feedback de corrente)।
    • পিনো GND apenas para GND।
  2. প্রতিরোধক (~ 470 Ω, mas provavelmente entre 300-1000 Ω funciona, você precisará alterar no código fonte)
  3. ক্যাপাসিটর (220 μF)। PWST এর জন্য পরিবেশন করুন।
  4. 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। Você também pode alterar o valor do target_mA pelo serial CLI (Console)।

ধাপ 1: সাইবা মাইস

সাইবা মাইস
সাইবা মাইস

Você deve ler mais sobre tDCS primeiro। Não é aprovado pelo FDA e pode ser prejudicial a sua saúde, Principmente se você não sabe nada sobre os efeitos colaterais, precauções e dentre outros…

পদক্ষেপ 2: মন্টে হে সার্কিটো অ্যাবাইক্সো

Monte O Circuito Abaixo
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 e parametros na área de HARDWARE PARAMS e CONFIGURABLE PARAMS।

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

প্যারা এক্সিকিউটার কম্যান্ডোস, ট্রোক ও নো লাইন এন্ডিং প্যারা ক্যারেজ রিটার্ন।

O código fonte + tutorial também podem ser encontrados no repositório:

ক্যাডিগো:

const স্ট্রিং ver = "2.0m"; // হার্ডওয়্যার পারম কনস্ট int analogInPin = A0; // Entrada do Analógico const int analogOutPin = 13; // সাইদা ডি 13 পাদ্রিও ফ্লোট maxOutV = 5.0; // A voltagem de saída PWM padrão do Arduino [V] float maxRefInV = 1.1; // রেফারেন্সিয়া à ভোল্টেজম অ্যানালজিক [ভি] ফ্লোট R = 470.0; // রেসিস্টেন্সিয়া দা কোরেন্টে [ওহম]

// কনফিগারযোগ্য প্যারাম

বুল প্লটার = মিথ্যা; // Defina: true, caso esteja usando o সিরিয়াল প্লটার বুল পুটি = মিথ্যা; // Defina: true, caso esteja usando o PuTTT (pode ser alterado no CLI) int maxmin = 30; // Tempo (em minutos) essentialário para desligar [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á fazendo!)

// INIT গ্লোবাল

int অবস্থা = 1; /* -1 - Cbrebro não identificado 0 - Voltagem sendo alterada para definir a corrente padrão 1 - Tudo certo। Você esta na corrente definida -10 - Voltagem desligada */ float outV = maxOutV; // ভোল্টেজ int debounce_state = 0; int zeros_len = 0; ভাসমান smoothed_mA = 0;

Command 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? maxOutV ফেরত; // রিটার্ন maxOutV/5.0; // para segurança} state = 0; রিটার্ন 0.1*new_V+0.9*V; // নতুন_ভি ফিরে; }

int convertVtoOutputValue (ভাসা V) {

রিটার্ন সীমাবদ্ধতা (int (V/maxOutV*255), 0, 255); }

ভাসমান সেন্সরভ্যালু 2 এমএ (int sensorValue) {

ফ্লোট সেন্সরভোল্টেজ = সেন্সরভ্যালু/1023.0*maxRefInV; float sensor_mA = sensorVoltage/R*1000.0; রিটার্ন সেন্সর_এমএ; }

int debounce_state_compute (int state) {

যদি (রাষ্ট্র 5) 0 ফেরত; } ফেরত 1; }

স্বাক্ষরবিহীন দীর্ঘ শুরু, শেষ;

void process_feedback () {int sensorValue = analogRead (analogInPin); ভাসা 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)); debounce_state = debounce_state_compute (রাষ্ট্র); // Exibir informações no 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:", টেম্পো; স্বাক্ষরবিহীন দীর্ঘ tmin = endc/60-((endc/60)%1); // Formatação 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; অন্যথায় txt = tv + V + tsm + smoothed_mA + ttm + target_mA + ts + debounce_state + h + tempo; যদি (পুটি) Serial.print ("\ r / e [? 25l" + txt); অন্য সিরিয়াল.প্রিন্টলন (txt);

// পরবর্তী লুপের আগে 2 মিলিসেকেন্ড অপেক্ষা করুন

// এনালগ-টু-ডিজিটাল কনভার্টার স্থির করার জন্য // শেষ পড়ার পরে: বিলম্ব (5); }

অকার্যকর stop_device () {

অবস্থা = -10; analogWrite (analogOutPin, 0); clearAndHome (); Serial.println ("Sessão tDCS interrompida"); Serial.println ("------------------------"); সাহায্য (); }

// CLI সাহায্যকারী

অকার্যকর clearAndHome () {Serial.write (27); সিরিয়াল.প্রিন্ট ("[2J"); // limpa a tela Serial.write (27); // ESC Serial.print ("[H"); // / r যদি (! putty) জন্য (int i = 0; i <= 30; i ++) Serial.println (""); }

অকার্যকর সাহায্য () {

Serial.println ("tDSC arduino, ver"+ver); Serial.println ("'?' - আজুদা"); 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 hardware (Ohm)"); Serial.println ("'putty' - muda a formatação de saída pro PuTTY"); Serial.println ("'stop' - para a estimulação"); Serial.println ("'restart' - inicia/reinicia a estimulação & o timer"); Serial.println ("'continue' - continuea 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:"); সিরিয়াল.প্রিন্ট (epsilon_mA); Serial.print ("mA / n / r * R:"); সিরিয়াল.প্রিন্ট (আর); Serial.println ("Ohms"); }

bool parse_param (String & cmdString) {

int spacePos = cmdString.indexOf (''); যদি (spacePos <= 0) মিথ্যা ফেরত দেয়; স্ট্রিং কমান্ড = cmdString.substring (0, spacePos); স্ট্রিং fval = cmdString.substring (spacePos+1); if (command == "putty") if (fval == "true") {putty = true; সত্য ফিরে; } অন্যথায় যদি (fval == "মিথ্যা") {putty = false; সত্য ফিরে; } float val = fval.toFloat (); if (command == "target_mA") {if (val100.0) {return false; } target_mA = val; clearAndHome (); সাহায্য (); } অন্যথায় if (command == "epsilon_mA") {if (val0.3) {return false; } epsilon_mA = val; clearAndHome (); সাহায্য (); } অন্যথায় যদি (কমান্ড == "R") {R = val; clearAndHome (); সাহায্য (); } অন্যথায় যদি (কমান্ড == "max_time") {maxmin = val; clearAndHome (); সাহায্য (); } অন্যথায় {মিথ্যা প্রত্যাবর্তন; } সত্য ফিরে; }

// সেটআপ এবং মেইন লুপ

অকার্যকর সেটআপ () {Serial.begin (115200); analogReference (অভ্যন্তরীণ); //1.1 V Serial.print ("Sessão iniciada!"); শুরু = মিলিস (); } void loop () {if (state! =-10) {process_feedback (); } যদি (Serial.available ()> 0) {char v = Serial.read (); যদি (বাইট (v) == 13) {// ক্যারেজ রিটার্ন বুল গৃহীত = সত্য; if (commandString == "?" || commandString == "stop") {stop_device (); } অন্যথায় যদি (commandString == "restart") {clearAndHome (); অবস্থা = -1; outV = maxOutV/5.0; শুরু = মিলিস (); গৃহীত = মিথ্যা; } অন্যথায় যদি (commandString == "continue") {clearAndHome (); অবস্থা = -1; outV = maxOutV/5.0; গৃহীত = মিথ্যা; } অন্যথায় {bool ok = parse_param (commandString); যদি (! ঠিক আছে) {clearAndHome (); সাহায্য (); গৃহীত = মিথ্যা; Serial.println ("Comando desconhecido: '" + commandString + "'"); }} commandString = ""; যদি (গৃহীত) {clearAndHome (); সাহায্য (); Serial.println ("ঠিক আছে!"); }} অন্য {commandString+= v; যদি (state ==-10) {Serial.print (v); }}}}

ধাপ 4: উমা ইউআই ব্যক্তিগতকরণ

উমা ইউআই ব্যক্তিগতকরণ
উমা ইউআই ব্যক্তিগতকরণ

Para melhor acompanhamento e segurança, a ferramenta PuTTY, e defina no código fonte:

পুটি = সত্য

Recomendações de definições:

  • জানলা

    • 61 কলুনাস ই 20 লিনহাস
    • স্ক্রলবার desativado প্রদর্শন করুন
  • জানালা> চেহারা

    Fonte: Lucida Console, 28px

ধাপ 5: ডেভিডাস?

Para abrir a guia de ajuda, digite:

?

ই প্রেসিওন [ENTER]

OBS: ক্যাসো ও এস্তাদো সেজা:

-1 -> Cérebro não identificado (corrente aberta) +0 -> Ajustando voltagem+1 -> Tudo certo, tDCS funcionando

প্রস্তাবিত: