Агуулгын хүснэгт:

Arduino TDCS Супер Энгийн. Transcranial шууд гүйдлийн өдөөгч (tDCS) DIY: 5 алхам
Arduino TDCS Супер Энгийн. Transcranial шууд гүйдлийн өдөөгч (tDCS) DIY: 5 алхам

Видео: Arduino TDCS Супер Энгийн. Transcranial шууд гүйдлийн өдөөгч (tDCS) DIY: 5 алхам

Видео: Arduino TDCS Супер Энгийн. Transcranial шууд гүйдлийн өдөөгч (tDCS) DIY: 5 алхам
Видео: НЕ ПОВТОРЯТЬ! СВЧ ГЛУШИЛКА. МИНИМУМ ДЕТАЛЕЙ, ГЛУШИТ ВСЮ БЫТОВУЮ ЭЛЕКТРОНИКУ WI-FI, TV, RADIO JAMMER 2024, Долдугаар сарын
Anonim
Arduino TDCS Супер Энгийн. Transcranial шууд гүйдлийн өдөөгч (tDCS) DIY
Arduino TDCS Супер Энгийн. Transcranial шууд гүйдлийн өдөөгч (tDCS) DIY

TDCS -ийн үндсэн үзүүлэлтүүд нь резистор, конденсатор, электрон төхөөрөмж юм.

  1. Ардуино

    • Pino D13 нь PWM (pode ser alterado) дээр ажилладаг.
    • Pino A0 como entrada analógica (засварын талаархи санал хүсэлт).
    • PND GND нь GND -ийн хувьд.
  2. Эсэргүүцэл (~ 470 Ω, 300-1000 Ω функц, нарийвчлалтай тохируулах, тохируулах боломжгүй)
  3. Конденсатор (220 μF). ХБХ -д зориулж pulilizas os pulsos үйлчилнэ.
  4. Eletrodos de Esponja (água salina para molhá-lo ашиглах).

Комо funciona

O Arduino тооцоолох нь хамгийн чухал зүйл юм. Target_mA цуврал CLI (Console) програмыг өөрчилж болно.

Алхам 1: Сайба Маис

Сайба Маис
Сайба Маис

TDCS анхны хувилбарыг сонгоно уу. Найдвартай шийдвэр гаргахдаа FDA цахим сүлжээний сүлжээнд хохирол учруулж болзошгүй бөгөөд энэ нь ямар ч асуудалгүй болно.

Алхам 2: Monte O Circuito Abaixo

Monte O Circuito Abaixo
Monte O Circuito Abaixo

Нэн түрүүнд хэлэхэд, энэ бол үнэхээр гайхалтай!

Алхам 3: O Codigo No Seu Arduino -ийг суулгаарай

Тохиргооны параметрүүдийг тохируулах параметрын параметрүүдийг тохируулах боломжтой болно.

Цуваа төлбөрийн хурдыг тохируулах: 115200 хураамжийн үр дүн.

Гүйцэтгэх командын үүрэг гүйцэтгэгч, Тээвэрлэлтийг буцааж өгөх шугамын төгсгөл байхгүй.

O código fonte + заавар нь ямар ч мэдээлэл агуулаагүй болно:

Кодиго:

const String ver = "2.0м"; // HARDWARE PARAMS const int analogInPin = A0; // Analoggico const int analogOutPin = 13 оруулна уу; // Saida D13 padrão float maxOutV = 5.0; // Arduino -д зориулсан ХОУХШ -ийг идэвхжүүлж болно [V] maxRefInV = 1.1; // Referencia à voltagem analógica [V] float R = 470.0; // Эсэргүүцэл даалгавар [Ohm]

// Тохируулах боломжтой парам

bool плоттер = худал; // Тодорхойлолт: үнэн, caso esteja usando o Цуваа плоттер bool putty = false; // Тодорхойлолт: үнэн, PuTTT (ямар ч CLI биш) int maxmin = 30; // Tempo (em minutos) needário para desligar [Min] float target_mA = 2.73; // Зохиогчийн эрх хуулиар хамгаалагдсан болно !!! [mA] хөвөх epsilon_mA = 0.03; // Diferença máxima entre a corente real e o target_mA (Não altere caso não saiba o que está fazendo!)

// ДЭЛХИЙН ГАЗАР

int төлөв = 1; /* -1 - Нууц тодорхойлолт 0 - Хяналтын товчлуурыг 1 -ээс илүү нарийвчлалтайгаар тодорхойлох боломжтой. Тодорхойлолт -10 - Voltagem desligada */ float outV = maxOutV; // Voltagem int debounced_state = 0; int zeros_len = 0; хөвөх smoothed_mA = 0;

String commandString = ""; // CLI -ийн хувьд

// САНАА ХЭРЭГЛЭГЧИД

float computeOutVoltage (float V, float new_mA) {if (abs (new_mA -target_mA) maxOutV) {төлөв = -1; // resistência 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); }

хөвөх мэдрэгчValue2mA (int sensorValue) {

float sensorVoltage = sensorValue/1023.0*maxRefInV; float sensor_mA = sensorVoltage/R*1000.0; буцах мэдрэгч_mA; }

int debounced_state_compute (int төлөв) {

хэрэв (муж 5) 0 буцаана; } буцах 1; }

гарын үсэг зураагүй урт эхлэл, төгсгөл;

void process_feedback () {int sensorValue = analogRead (analogInPin); float new_mA = sensorValue2mA (sensorValue); гөлгөр_мА = 0.2*шинэ_мА+0.8*гөлгөр_мА; float V = outV; outV = computeOutVoltage (V, new_mA); analogWrite (analogOutPin, convertVtoOutputValue (outV)); debounced_state = debounced_state_cute (төлөв); // Exibir мэдээлэл байхгүй CLI endc = (millis ()-эхлэх)/1000; String tv = "[", ttm = "mA/", tsm = "V,", ts = "mA] | Estado:", h = "| Tempo:", s = ":", leadM = "", leadS = "", plotT = "Зорилтот:", plotmA = "\ tЗалруулсан MA:", plotMin = "\ tMin:", хэмнэл; тэмдэггүй урт tmin = endc/60-((endc/60)%1); // Formatação if (endc%60 <10) leadS = "0"; хэрэв (tmin = 0) ts = ts + " +"; // Хэрэв (tmin> maxmin) stop_device () автоматаар тохируулагдсан бол; Txt мөр; if (plotter) txt = plotT + target_mA + plotMin + "0" + plotmA + smoothed_mA; else txt = tv + V + tsm + smoothed_mA + ttm + target_mA + ts + debuteded_state + h + temp; if (шаваас) Serial.print ("\ r / e [? 25l" + txt); else Serial.println (txt);

// дараагийн давталтаас өмнө 2 миллисекунд хүлээнэ үү

// аналог-тоон тоон хувиргагчийг шийдвэрлэхийн тулд // сүүлчийн уншсаны дараа: саатал (5); }

хүчингүй 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 (! шаваас) for (int i = 0; i <= 30; i ++) Serial.println (""); }

хүчингүй тусламж () {

Serial.println ("tDSC arduino, ver"+ver); Serial.println ("'?' - ajuda"); Serial.println ("'max_time' - цаг хугацаа эсвэл хурдны хэмжилт (min minos)"); Serial.println ("'target_mA' - atualiza o target (mA)"); Serial.println ("'epsilon_mA' - atualiza o epsilon_mA (mA)"); Serial.println ("'R' - тоног төхөөрөмжийн эсэргүүцэл (Ом)"); Serial.println ("'шаваас" - PuTTY дэмжсэн хэлбэр); Serial.println ("'stop' - para a tahmin,"); Serial.println ("'дахин эхлүүлэх" - inicia/reinicia тооцоолол ба цаг хэмжигч "); Serial.println ("'үргэлжлүүлэх" - continua a tahmin хийх "); Serial.print ("\ n / rEstado: / n / r * max_time:"); Цуваа.хэвлэх (хамгийн их); 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:"); Цуваа.хэв (R); Serial.println ("Ом"); }

bool parse_param (String & cmdString) {

int spacePos = cmdString.indexOf (''); if (spacePos <= 0) false буцаах; String тушаал = cmdString.substring (0, spacePos); String fval = cmdString.substring (spacePos+1); if (тушаал == "шаваас") if (fval == "үнэн") {шаваас = үнэн; үнэн рүү буцах; } if if (fval == "false") {шаваас = худал; үнэн рүү буцах; } float val = fval.toFloat (); if (command == "target_mA") {if (val100.0) {return false; } target_mA = val; clearAndHome (); Туслаач(); } if if (command == "epsilon_mA") {if (val0.3) {return false; } epsilon_mA = val; clearAndHome (); Туслаач(); } if if (command == "R") {R = val; clearAndHome (); Туслаач(); } if if (command == "max_time") {maxmin = val; clearAndHome (); Туслаач(); } өөр {return false; } үнэн рүү буцах; }

// Тохиргоо ба үндсэн гогцоо

void setup () {Serial.begin (115200); аналог лавлагаа (ДОТООД); //1.1 V Serial.print ("Sessão iniciada!"); эхлэх = millis (); } void loop () {if (state! =-10) {process_feedback (); } if (Serial.available ()> 0) {char v = Serial.read (); if (байт (v) == 13) {// Тээвэр буцах bool хүлээн зөвшөөрөгдсөн = үнэн; if (commandString == "?" || commandString == "stop") {stop_device (); } if if (commandString == "restart") {clearAndHome (); төлөв = -1; outV = maxOutV/5.0; эхлэх = millis (); хүлээн зөвшөөрсөн = худал; } else if (commandString == "үргэлжлүүлэх") {clearAndHome (); төлөв = -1; outV = maxOutV/5.0; хүлээн зөвшөөрсөн = худал; } өөр {bool ok = parse_param (commandString); if (! ok) {clearAndHome (); Туслаач(); хүлээн зөвшөөрсөн = худал; Serial.println ("Comando desconhecido: '" + commandString + "'"); }} commandString = ""; if (хүлээн зөвшөөрөгдсөн) {clearAndHome (); Туслаач(); Serial.println ("За!"); }} өөр {commandString+= v; if (төлөв ==-10) {Serial.print (v); }}}}

Алхам 4: Uma UI Personalizada

Uma UI Personalizada
Uma UI Personalizada

Тэмцээнийг хийхдээ PuTTY феррамент ашиглана уу, ямар ч бичиг баримт бичгээ ашигла:

шаваас = үнэн

Тодорхойлолтууд:

  • Цонх

    • 61 Колунас ба 20 Линхас
    • Гүйлгэх самбарыг харуулах
  • Цонх> Гадаад төрх

    Фонт: Люсида Консол, 28 пиксел

Алхам 5: Дувидас уу?

Товчхондоо, жишээ нь:

?

дарна уу [ENTER]

OBS: Caso or Estado seja:

-1 -> Cérebro não identificado (corente aberta) +0 -> Ajustando voltagem+1 -> Тудо сертификат, tDCS функционал

Зөвлөмж болгож буй: