Satura rādītājs:
- 1. darbība: Saiba Mais
- 2. solis: Monte O Circuito Abaixo
- 3. darbība: instalējiet O Código No Seu Arduino
- 4. darbība. Uma personalizētā lietotāja saskarne
- 5. solis: Dúvidas?
Video: Arduino TDCS Super Simples. Transkraniāls līdzstrāvas stimulators (tDCS) DIY: 5 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:55
Para fazer este tDCS você precisará apenas de um arduino, rezistors, kondensators un alguns cabosComponentes
-
Arduino
- Pino D13 como saída PWM (pode ser alterado).
- Pino A0 como entrada analógica (para feedback de corrente).
- Pino GND apenas para GND.
- Rezistors (~ 470 Ω, mas provavelmente entre 300-1000 Ω funciona, você precisará alterar no código fonte)
- Kondensators (220 μF). Pasniedziet PWM, lai izveidotu impulsu.
- Eletrodos de Esponja (Izmantojiet á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. darbība: Saiba Mais
Você deve ler mais sobre tDCS primeiro. Não é aprovado pelo FDA e pode ser aizspriedums a sua saúde, principmente se você não sabe nada sobre os efeitos colaterais, piesardzības pasākumi un zobu ārējie…
2. solis: Monte O Circuito Abaixo
Não se esqueça das esponjas com água salina!
3. darbība: instalējiet O Código No Seu Arduino
Lembre-se de alterar, kā konfigurācijas un parametru zonas, kurās ietilpst Aparatūras paraugi un KONFIGURĒJAMI PARAMI.
Você também deve alterar vai boud rate do Serial para: 115200 para poder ver o resultado.
Par izpildāmām komandām, troque o No Line Ending par Carriage Return.
O código fonte + apmācība também podem ser encontrados no repositório:
Código:
const String ver = "2.0m"; // Aparatūras PARAMS const int analogInPin = A0; // Entrada do Analógico const int analogOutPin = 13; // Saida D13 padrão float maxOutV = 5.0; // A Voltagem de saída PWM padrão do Arduino [V] float maxRefInV = 1.1; // Referencia à voltagem analógica [V] pludiņš R = 470,0; // Resistencia da corrente [Ohm]
// KONFIGURĒJAMI PARAMI
bool ploteris = nepatiess; // Defina: true, caso esteja usando o Serial ploter bool putty = false; // Defina: true, caso esteja usando o PuTTT (pode ser alterado no CLI) int maxmin = 30; // Tempo (em minutos) requiredário para desligar [Min] float target_mA = 2.73; // Essa é a corrente que passará pelo seu cérebro !!! [mA] pludiņš 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 GLOBALS
int stāvoklis = 1; /* -1 - Cérebro não identifado 0 - Voltagem sendo alterada para definir a corrente padrão 1 - Tudo certo. Você esta na corrente definida -10 - Voltagem desligada */ float outV = maxOutV; // Spriegums int debounced_state = 0; int nulles_len = 0; pludiņš nogludināts_mA = 0;
String commandString = ""; // CLI
// ATBILDES PALĪGI
float computeOutVoltage (pludiņš V, pludiņš new_mA) {if (abs (new_mA -target_mA) maxOutV) {state = -1; // resistência muito alta -> cérebro não encontrado? atgriezt maxOutV; // atgriezt maxOutV/5.0; // para segurança} valsts = 0; atgriezties 0,1*new_V+0,9*V; // atgriezties new_V; }
int convertVtoOutputValue (pludiņš V) {
atgriešanās ierobežojums (int (V/maxOutV*255), 0, 255); }
float sensorValue2mA (int sensorValue) {
pludiņa sensorsVoltage = sensorValue/1023.0*maxRefInV; pludiņa sensors_mA = sensorVoltage/R*1000.0; atgriešanās sensors_mA; }
int debounced_state_compute (int stāvoklis) {
ja (5. stāvoklis) atgriežas 0; } atgriezties 1; }
neparakstīts garš sākums, beigas;
void process_feedback () {int sensorValue = analogRead (analogInPin); pludiņš new_mA = sensorValue2mA (sensorValue); izlīdzināta_mA = 0,2*jauna_mA+0,8*izlīdzināta_mA; pludiņš V = outV; outV = computeOutVoltage (V, new_mA); analogWrite (analogOutPin, convertVtoOutputValue (outV)); debounced_state = debounced_state_compute (stāvoklis); // Exibir informationções no CLI endc = (milis ()-sākums)/1000; String tv = "[", ttm = "mA/", tsm = "V", ts = "mA] | Estado:", h = "| Tempo:", s = ":", leadM = "", leadS = "", plotT = "Target:", plotmA = "\ tSmoothed MA:", plotMin = "\ tMin:", tempo; neparakstīts garš tmin = endc/60-((endc/60)%1); // Formāts, ja (endc%60 <10) leadS = "0"; ja (tmin = 0) ts = ts + " +"; // Parar automaticamente if (tmin> maxmin) stop_device (); String txt; ja (ploteris) txt = plotTT + target_mA + plotMin + "0" + plotmA + izlīdzināts_mA; cits txt = tv + V + tsm + izlīdzināts_mA + ttm + target_mA + ts + debounced_state + h + temps; if (tepe) Serial.print ("\ r / e [? 25l" + txt); cits Serial.println (txt);
// pagaidiet 2 milisekundes pirms nākamās cilpas
// lai analogo ciparu pārveidotājs nokārtotos // pēc pēdējā nolasījuma: delay (5); }
void stop_device () {
stāvoklis = -10; analogWrite (analogOutPin, 0); clearAndHome (); Serial.println ("Sessão tDCS interrompida"); Serial.println ("------------------------"); palīdzība (); }
// CLI PALĪGI
void clearAndHome () {Serial.write (27); Sērijas nospiedums ("[2J" "); // limpa a tela Serial.write (27); // ESC Serial.print ("[H"); // / r if (! tepe) for (int i = 0; i <= 30; i ++) Serial.println (""); }
anulēta palīdzība () {
Serial.println ("tDSC arduino, ver"+ver); Serial.println ("'?' - ajuda"); Serial.println ("'max_time' - atualiza o tempo máximo (em minutes)"); Serial.println ("'target_mA' - atualiza vai target (mA)"); Serial.println ("'epsilon_mA' - atualiza o epsilon_mA (mA)"); Serial.println ("'R' - aparatūras (ohm) pretestība un pretestība"); Serial.println ("'tepe' - muda a formatação de saída pro PuTTY"); Serial.println ("'stop' - para a tāmes"); Serial.println ("'restart' - inicia/reinicia a tāmesção & o timer"); Serial.println ("'turpināt' - Continua a tāmes"); Serial.print ("\ n / rEstado: / n / r * max_time:"); Sērijas nospiedums (maxmin); Serial.print ("minūtes / n / r * target_mA:"); Serial.print (target_mA); Serial.print ("mA / n / r * epsilon_mA:"); Sērijas nospiedums (epsilon_mA); Serial.print ("mA / n / r * R:"); Sērijas nospiedums (R); Serial.println ("Omi"); }
bool parse_param (String & cmdString) {
int spacePos = cmdString.indexOf (''); if (spacePos <= 0) return false; String komanda = cmdString.substring (0, spacePos); String fval = cmdString.substring (atstarpePos+1); ja (komanda == "tepe") ja (fval == "true") {tepe = true; atgriezties patiesi; } cits if (fval == "false") {tepe = nepatiesa; atgriezties patiesi; } pludiņš val = fval.toFloat (); ja (komanda == "target_mA") {if (val100.0) {return false; } target_mA = val; clearAndHome (); palīdzība (); } cits if (komanda == "epsilon_mA") {if (val0.3) {return false; } epsilon_mA = val; clearAndHome (); palīdzība (); } cits if (komanda == "R") {R = val; clearAndHome (); palīdzība (); } cits if (komanda == "max_time") {maxmin = val; clearAndHome (); palīdzība (); } else {return false; } return true; }
// IESTATĪŠANA UN GALVENĀ LOOP
void setup () {Serial.begin (115200); analogReference (INTERNAL); //1.1 V Serial.print ("Sessão iniciada!"); sākums = milis (); } void loop () {if (state! =-10) {process_feedback (); } ja (Serial.available ()> 0) {char v = Serial.read (); if (baits (v) == 13) {// Pārvadājumu atgriešanas bools pieņemts = true; ja (commandString == "?" || commandString == "stop") {stop_device (); } cits if (commandString == "restart") {clearAndHome (); stāvoklis = -1; outV = maxOutV/5.0; sākums = milis (); pieņemts = nepatiess; } cits if (commandString == "turpināt") {clearAndHome (); stāvoklis = -1; outV = maxOutV/5.0; pieņemts = nepatiess; } cits {bool labi = parsēt_param (commandString); ja (! labi) {clearAndHome (); palīdzība (); pieņemts = nepatiess; Serial.println ("Comando desconhecido: '" + commandString + "'"); }} commandString = ""; ja (pieņemts) {clearAndHome (); palīdzība (); Serial.println ("Labi!"); }} else {commandString+= v; ja (štats ==-10) {Sērijas.druka (v); }}}}
4. darbība. Uma personalizētā lietotāja saskarne
Lai pavadītu pavadošo pavadījumu un segranču, izmantojiet PuTTY ferramentu, un tas nav kods:
tepe = taisnība
Definīciju ieteikumi:
-
Logs
- 61 Kolona un 20 Linhas
- Rādīt ritjoslas atinstalēšanu
-
Logs> Izskats
Fonts: Lucida konsole, 28 pikseļi
5. solis: Dúvidas?
Para abrir a guia de ajuda, digite:
?
un nospiediet [ENTER]
OBS: Caso vai Estado seja:
-1 -> Cérebro não identifado (corrente aberta) +0 -> Ajustando spriegums m+1 -> Tudo certo, tDCS funcionando
Ieteicams:
DIY kabatas izmēra līdzstrāvas sprieguma mērītājs: 5 soļi
DIY kabatas izmēra līdzstrāvas sprieguma mērītājs: šajā pamācībā es parādīšu, kā pats izgatavot kabatas izmēra līdzstrāvas sprieguma mērītāju ar pjezo skaņas signālu, lai pats pārbaudītu ķēdi. Viss, kas jums nepieciešams, ir pamatzināšanas elektronikā un nedaudz laika. Ja jums ir kādi jautājumi vai problēmas, varat
Līdzstrāvas līdzstrāvas pastiprinātājs MT3608: 6 soļi
DC-DC pastiprināšanas pārveidotājs MT3608: šī apmācība parādīs, kā izmantot MT3608 pastiprinātāja pārveidotāju, lai ieslēgtu ierīces, kurām nepieciešams atšķirīgs spriegums. Mēs parādīsim, kuri ir labākie bateriju veidi, ko izmantot ar pārveidotāju, un kā iegūt vairāk nekā tikai vienu izeju no pārveidotāja
Maiņstrāvas līdz +15V, -15V 1A mainīgs un 5V 1A līdzstrāvas līdzstrāvas barošanas avots: 8 soļi
Maiņstrāvas līdz +15V, -15V 1A mainīgs un 5V 1A līdzstrāvas līdzstrāvas barošanas avots: Barošanas avots ir elektroierīce, kas piegādā elektroenerģiju elektriskai slodzei. Šim modeļa barošanas avotam ir trīs cietvielu līdzstrāvas barošanas avoti. Pirmā padeve nodrošina mainīgu pozitīvu 1,5 līdz 15 voltu jaudu līdz 1 ampēriem
DIY AC/ DC Hack "Mod" RD6006 barošanas avots un S06A korpuss W/ S-400-60 PSU būve un uzlabota līdzstrāvas ievade: 9 soļi
DIY AC/ DC Hack "Mod" RD6006 barošanas avots un S06A korpuss W/ S-400-60 PSU būvēšana un uzlabota līdzstrāvas ievade: Šis projekts ir vairāk pamata RD6006 būve, izmantojot S06A korpusu un S-400-60 barošanas avotu . Bet es patiešām vēlos izvēlēties akumulatora pievienošanu pārnesamībai vai strāvas padeves pārtraukumam. Tāpēc es arī uzlauzu vai pārveidoju lietu, lai pieņemtu līdzstrāvu vai akumulatoru
Jautri projekti ar Elegoo Uno R3 super starta komplektu - vadības sviras vadība līdzstrāvas motoram: 4 soļi
Jautri projekti ar Elegoo Uno R3 super starta komplektu - kursorsviras vadība līdzstrāvas motoram: Šajā instrukcijā es ar Arduino palīdzību mēģināšu kontrolēt līdzstrāvas motora virzienu un ātrumu, izmantojot kursorsviru, izmantot komponentus Elegoo Uno R3 Super Start Kit pieejams vietnē Amazon.com