Мазмұны:

Arduino TDCS Super Simples. Транскраниальды тұрақты ток стимуляторы (tDCS) DIY: 5 қадам
Arduino TDCS Super Simples. Транскраниальды тұрақты ток стимуляторы (tDCS) DIY: 5 қадам

Бейне: Arduino TDCS Super Simples. Транскраниальды тұрақты ток стимуляторы (tDCS) DIY: 5 қадам

Бейне: Arduino TDCS Super Simples. Транскраниальды тұрақты ток стимуляторы (tDCS) DIY: 5 қадам
Бейне: Simple DIY TENS and TDCS Example 2024, Қараша
Anonim
Arduino TDCS Super Simples. Транскраниальды тұрақты ток стимуляторы (tDCS) DIY
Arduino TDCS Super Simples. Транскраниальды тұрақты ток стимуляторы (tDCS) DIY

TDCS параметрлері алдын -ала анықталады, резистор, конденсатор және электронды компоненттер

  1. Ардуино

    • PWM D13 комбинациясы PWM (pode ser alterado).
    • P0 A0 como entrada analógica (кері байланыс бойынша пікір).
    • GND үшін GND көрсеткіштері.
  2. Резистор (~ 470 Ω, 300-1000 Ω функциялары, функционалдылық, алфавитке ешқандай айырмашылық жоқ)
  3. Конденсатор (220 мкФ). PWM жасайтын пульсацияларды орнатыңыз.
  4. Eletrodos de Esponja (Use água salina para molhá-lo).

Комо фунциона

O Arduino калькуляторы сіздің есептік жазбаңызды жаңартуға мүмкіндік береді. CLI (Console) сериялы target_mA мәнін өзгертуге болады.

1 -қадам: Сайба Маис

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

TDCS Primeiro бағдарламасын шығарыңыз. FDA электрондық поштаға зиян келтіретіні белгілі бір уақытқа созылады, бұл сіздің жеке меншігіңізде, сонымен қатар алдын -ала …

2 -қадам: Monte O Circuito Abaixo

Monte O Circuito Abaixo
Monte O Circuito Abaixo

Еске алу қажет емес!

3 -қадам: O Codigo No Seu Arduino орнатыңыз

Параметрлерді конфигурациялау параметрлері ретінде HARDWARE PARAMS e CONFIGURABLE PARAMS.

Дауыс беру жылдамдығының сериялық мәні: 115200 үшін нәтиже.

Командалар мен командирлер, «Тасымалдауды қайтару» жолында шектеу жоқ.

Қарап шығу + репозиторийлері жоқ оқулықтар:

Кодиго:

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 үшін PWM -ді орнату [V] maxRefInV = 1.1; // Referencia à voltagem analógica [V] float R = 470.0; // Resistencia da Corente [Ом]

// конфигурацияланатын парам

bool плоттер = жалған; // Дефинация: шындық, сериялық плоттер боль замаска = жалған; // Анықтама: рас, PuTTT (CLI жоқ альтернативті код) int maxmin = 30; // Tempo (em minutos) міндеттері [Min] float target_mA = 2.73; // Есептік жазбаңызды жасаңыз !!! [mA] қалқыма epsilon_mA = 0,03; // Diferença máxima to add a corente a e e target_mA (Não altere caso não saiba o que está fazendo!)

// INL GLOBALS

ішкі күй = 1; /* -1 - сәйкестендіру нөмірі 0 - Түсініктеме 1 - Тіл сертификаты. Түзетудің анықтамасы -10 - Voltagem desligada */ float outV = maxOutV; // Voltagem int debounced_state = 0; int zeros_len = 0; float 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 қайтару; // параграфтық} күй = 0; қайтару 0,1*жаңа_В+0,9*В; // new_V қайтару; }

int convertVtoOutputValue (өзгермелі V) {

қайтару шектеуі (int (V/maxOutV*255), 0, 255); }

өзгермелі сенсорValue2mA (int sensorValue) {

өзгермелі сенсорVoltage = sensorValue/1023.0*maxRefInV; float sensor_mA = sensorVoltage/R*1000.0; sensor_mA қайтару; }

int debounced_state_compute (күй күйі) {

егер (5 -күй) 0 қайтарады; } қайтару 1; }

қол қойылмаған ұзақ бастау, аяқтау;

void process_feedback () {int sensorValue = analogRead (analogInPin); float new_mA = sensorValue2mA (sensorValue); тегістелген_мА = 0,2*жаңа_мА+0,8*тегістелген_мА; өзгермелі V = шығысV; outV = computeOutVoltage (V, new_mA); analogWrite (analogOutPin, convertVtoOutputValue (outV)); debounced_state = debounced_state_cute (күй); // ExII ақпарат жоқ CLI endc = (millis ()-бастау)/1000; Тізім tv = «[», ttm = «mA/», tsm = «V,», ts = «mA] | Эстадо:», h = «| Tempo:», s = «:», leadM = «», leadS = «», plotT = «Мақсат:», plotmA = «\ tТегістелген MA:», plotMin = «\ tMin:», темп; белгісіз ұзын tmin = endc/60-((endc/60)%1); // Форматтау if (endc%60 <10) leadS = «0»; егер (tmin = 0) ts = ts + « +»; // Параметрлер автоматты түрде if (tmin> maxmin) stop_device (); Жол мәтіні; егер (плоттер) txt = plotT + target_mA + plotMin + «0» + plotmA + тегістелген_mA; else txt = tv + V + tsm + тегістелген_мА + ttm + target_mA + ts + күйден шығарылған_стат + h + temp; if (macun) Serial.print («\ r / e [? 25l» + txt); else Serial.println (txt);

// келесі цикл алдында 2 миллисекунд күтіңіз

// аналогты-цифрлық түрлендіргіш үшін // соңғы оқудан кейін: кешігу (5); }

void stop_device () {

күй = -10; analogWrite (analogOutPin, 0); clearAndHome (); Serial.println («Sessão tDCS interrompida»); Serial.println («------------------------»); Көмектесіңдер(); }

// CLI HELPERS

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 («»); }

жарамсыз көмек () {

Serial.println («tDSC arduino, ver»+ver); Serial.println («'?' - ajuda»); Serial.println («'max_time' - жылдамдық немесе жылдамдық (минут)»); Serial.println («'target_mA' - мақсатты пайдалану (mA)»); Serial.println («'epsilon_mA' - atualiza o epsilon_mA (mA)»); Serial.println («'R' - аппараттық құралдардың төзімділігі (Ом)»); Serial.println («'macun' - PuTTY форматындағы файлдарды өңдеу)»; Serial.println («тоқтату» - бағалау үшін «); Serial.println («'restart' - inicia/reinicia & a timulação & o timer»); Serial.println («'жалғастыру' - continua a smesulaçã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 («Ом»); }

bool parse_param (String & cmdString) {

int spacePos = cmdString.indexOf (''); if (spacePos <= 0) false қайтарады; Жол командасы = cmdString.substring (0, spacePos); Жол fval = cmdString.substring (spacePos+1); if (command == «putty») if (fval == «true») {putty = true; шындықты қайтару; } if if (fval == «false») {putty = false; шындықты қайтару; } float val = fval.toFloat (); if (command == «target_mA») {if (val100.0) {false false; } target_mA = val; clearAndHome (); Көмектесіңдер(); } if if (command == «epsilon_mA») {if (val0.3) {return false; } epsilon_mA = вал; clearAndHome (); Көмектесіңдер(); } if if (command == «R») {R = val; clearAndHome (); Көмектесіңдер(); } if if (command == «max_time») {maxmin = val; clearAndHome (); Көмектесіңдер(); } else {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) {// Carriage return bool қабылданды = true; if (commandString == «?» || commandString == «stop») {stop_device (); } else if (commandString == «restart») {clearAndHome (); күй = -1; outV = maxOutV/5.0; бастау = millis (); қабылданды = жалған; } else if (commandString == «жалғастыру») {clearAndHome (); күй = -1; outV = maxOutV/5.0; қабылданды = жалған; } else {bool ok = parse_param (commandString); if (! жарайды) {clearAndHome (); Көмектесіңдер(); қабылданды = жалған; Serial.println («Comando desconhecido: '» + commandString + «'»); }} commandString = «»; if (қабылданған) {clearAndHome (); Көмектесіңдер(); Serial.println («Жарайды!»); }} басқа {commandString+= v; if (state ==-10) {Serial.print (v); }}}}

4 -қадам: Uma UI Personalizada

UI UI Personalizada
UI UI Personalizada

Портативті байланыс үшін PuTTY ферраментасын қолданыңыз, сандар жоқ:

замазка = ақиқат

Анықтамалар:

  • Терезе

    • 61 Colunas e 20 Linhas
    • Айналдыру жолағын көрсетіңіз
  • Терезе> Сыртқы түрі

    Қаріп: Lucida Console, 28 пиксель

5 -қадам: Дувидас?

Абру -джуа -аудада, цифр:

?

басу [ENTER]

OBS: Caso немесе Estado сайты:

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

Ұсынылған: