Sisällysluettelo:
- Vaihe 1: Saiba Mais
- Vaihe 2: Monte O Circuito Abaixo
- Vaihe 3: Asenna O Código No Seu Arduino
- Vaihe 4: Uma UI Personalizada
- Vaihe 5: Dúvidas?
Video: Arduino TDCS Super Simples. Transkraniaalinen tasavirran stimulaattori (tDCS) DIY: 5 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Para fazer este tDCS -lauseen tarkkuus, apdu de um arduino, vastus, kondensaattori ja alkukaapit
-
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.
- Vastus (~ 470 Ω, mas provavelmente entre 300-1000 Ω funciona, você precisará alterar no código fonte)
- Kondensaattori (220 μF). Tarjoile PWM: n pulssien perustamiseen.
- Eletrodos de Esponja (Käytä água salina para molhá-lo).
Como funciona
O Arduino laskee 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).
Vaihe 1: Saiba Mais
Você deve ler mais sobre tDCS primeiro. Não é aprovado pelo FDA e pode ser prejudicial a sua saude, principmente se você não sabe nada sobre os efeitos colaterais, preventuções e dentre outros…
Vaihe 2: Monte O Circuito Abaixo
Não se esqueça das esponjas com água salina!
Vaihe 3: Asenna O Código No Seu Arduino
Muita vaihtoehtoja laitteiston kokoonpanoissa ja parametreissa HARDWARE PARAMS e CONFIGURABLE PARAMS.
Você também deve alterar o boud rate do Sarjanumero: 115200 para poder ver o resultado.
Suorituskomennot, troque o No Line Ending, Carriage Return.
O código fonte + opetusohjelma também podem ser encontrados no repositório:
Código:
const String ver = "2.0m"; // LAITTEISTON PARAMIT const int analogInPin = A0; // Entrada do Analógico const int analogOutPin = 13; // Saida D13 padrão float maxOutV = 5.0; // A jännite PWM padrão do Arduino [V] float maxRefInV = 1.1; // Viite jännitteelle analogiikka [V] float R = 470,0; // Resistencia da corrente [Ohm]
// MÄÄRITETTÄVÄT PARAMAT
bool plotteri = epätosi; // Määritelmä: true, caso esteja usando o Sarjaplotteri bool putty = false; // Määritelmä: true, caso esteja usando o PuTTT (pode ser alterado no CLI) int maxmin = 30; // Tempo (em minuteos) välttämättömyys [Min] float target_mA = 2,73; // Essa é a corrente que passará pelo seu cérebro !!! [mA] kelluva 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 -tila = 1; /* -1 - Tunniste nro 0 - Jännite lähettämällä alterada para definir a corrente padrão 1 - Tudo certo. Você esta na corrente definida -10 - Voltagem desligada */ float outV = maxOutV; // Jännite int debounced_state = 0; int nollien_len = 0; float smoothed_mA = 0;
MerkkikomentoString = ""; // CLI: lle
// PALAUTE -APUA
float computeOutVoltage (float V, float new_mA) {if (abs (new_mA -target_mA) maxOutV) {tila = -1; // resistência muito alta -> cérebro não encontrado? palauta maxOutV; // palauta maxOutV/5.0; // para segurança} tila = 0; paluu 0,1*uusi_V+0,9*V; // return new_V; }
int convertVtoOutputValue (float V) {
paluurajoitus (int (V/maxOutV*255), 0, 255); }
float sensorValue2mA (int sensorValue) {
float sensorVoltage = sensorValue/1023.0*maxRefInV; float sensor_mA = sensorVoltage/R*1000.0; paluuanturi_mA; }
int debounced_state_compute (int -tila) {
jos (tila 5) palauta 0; } paluu 1; }
allekirjoittamaton pitkä alku, endc;
void process_feedback () {int sensorValue = analogRead (analogInPin); float new_mA = sensorValue2mA (sensorValue); tasoitettu_mA = 0,2*uusi_mA+0,8*tasoitettu_mA; kellua V = ulosV; outV = computeOutVoltage (V, uusi_mA); analogWrite (analogOutPin, convertVtoOutputValue (outV)); debounced_state = debounced_state_compute (tila); // Exibir informações no CLI endc = (millis ()-alku)/1000; Merkkijono tv = "[", ttm = "mA/", tsm = "V", ts = "mA] | Estado:", h = "| Tempo:", s = ":", leadM = "", leadS = "", plotT = "Target:", plotmA = "\ tSmoothed MA:", plotMin = "\ tMin:", tempo; allekirjoittamaton pitkä tmin = endc/60-((endc/60)%1); // Formatação if (endc%60 <10) leadS = "0"; jos (tmin = 0) ts = ts + " +"; // Parar automaattinen, jos (tmin> maxmin) stop_device (); Merkkijono txt; if (plotteri) txt = plotT + tavoite_mA + plotMin + "0" + plotmA + tasoitettu_mA; else txt = tv + V + tsm + tasoitettu_mA + ttm + target_mA + ts + poistettu_tila + h + tempo; if (kitti) Serial.print ("\ r / e [? 25l" + txt); else Serial.println (txt);
// odota 2 millisekuntia ennen seuraavaa silmukkaa
// jotta analogia-digitaalimuunnin laskeutuu // viimeisen lukemisen jälkeen: delay (5); }
void stop_device () {
tila = -10; analogWrite (analogOutPin, 0); clearAndHome (); Serial.println ("Sessão tDCS interrompida"); Serial.println ("------------------------"); auta(); }
// CLI HELPERS
void clearAndHome () {Serial.write (27); Serial.print ("[2J" "); // limpa a tela Serial.write (27); // ESC Serial.print ("[H"); // jos if (! putty) for (int i = 0; i <= 30; i ++) Serial.println (""); }
mitätön ohje () {
Serial.println ("tDSC arduino, ver"+ver); Serial.println ("'?' - ajuda"); Serial.println ("'max_time' - atualiza o tempo máximo (em minuteos)"); Serial.println ("'target_mA' - tavoite tai tavoite (mA)"); Serial.println ("'epsilon_mA' - ausaliza tai epsilon_mA (mA)"); Serial.println ("'R' - laitteiston vastustuskyky (Ohm)"); Serial.println ("'kitti' - muda a formatação de saída pro PuTTY"); Serial.println ("'stop' - para a aprēķin"); Serial.println ("'uudelleenkäynnistys' - inicia/reinicia a estimação & o timer"); Serial.println ("'jatka' - Continua a Estimulação"); Serial.print ("\ n / rEstado: / n / r * max_time:"); Sarjajälki (maxmin); Serial.print ("minuutit / n / r * target_mA:"); Serial.print (kohde_mA); Serial.print ("mA / n / r * epsilon_mA:"); Serial.print (epsilon_mA); Serial.print ("mA / n * r:"); Sarjanjälki (R); Serial.println ("ohmia"); }
bool parse_param (String & cmdString) {
int spacePos = cmdString.indexOf (''); if (spacePos <= 0) return false; Merkkikomento = cmdString.substring (0, välilyönti); Jono fval = cmdString.substring (välilyönti+1); if (komento == "putty") if (fval == "true") {putty = true; palaa tosi; } else if (fval == "false") {putty = false; palaa tosi; } float val = fval.toFloat (); if (komento == "target_mA") {if (val100.0) {return false; } target_mA = val; clearAndHome (); auta(); } else if (komento == "epsilon_mA") {if (val0.3) {return false; } epsilon_mA = val; clearAndHome (); auta(); } muu jos (komento == "R") {R = val; clearAndHome (); auta(); } else if (komento == "max_time") {maxmin = val; clearAndHome (); auta(); } else {return false; } return true; }
// ASETUKSET JA PÄÄSYÖTTÖ
void setup () {Serial.begin (115200); analogReference (INTERNAL); //1.1 V Serial.print ("Sessão iniciada!"); alku = millis (); } void loop () {if (state! =-10) {process_feedback (); } if (Serial.available ()> 0) {char v = Serial.read (); if (tavu (v) == 13) {// Kuljetuksen palautusbool hyväksytty = true; if (commandString == "?" || commandString == "stop") {stop_laite (); } else if (commandString == "käynnistä uudelleen") {clearAndHome (); tila = -1; outV = maxOutV/5,0; alku = millis (); hyväksytty = epätosi; } else if (commandString == "jatka") {clearAndHome (); tila = -1; outV = maxOutV/5,0; hyväksytty = epätosi; } else {bool ok = parse_param (commandString); if (! ok) {clearAndHome (); auta(); hyväksytty = epätosi; Serial.println ("Comando desconhecido: '" + commandString + "" "); }} commandString = ""; jos (hyväksytty) {clearAndHome (); auta(); Serial.println ("Ok!"); }} else {commandString+= v; jos (tila ==-10) {Sarjajälki (v); }}}}
Vaihe 4: Uma UI Personalizada
Käytä melodista säestystä ja sekoitusta, käytä ferramenta PuTTY: tä ja määrittele se ilman koodia:
kitti = totta
Määritelmän suositukset:
- Ikkuna
- 61 Colunas ja 20 Linhas
- Näytä vierityspalkin desativado
-
Ikkuna> Ulkonäkö
Kuvaus: Lucida Console, 28px
Vaihe 5: Dúvidas?
Para abrir a guia de ajuda, digite:
?
ja paina [ENTER]
OBS: Caso tai Estado:
-1 -> Cérebro não identifado (corrente aberta) +0 -> Ajustando jännite m+1 -> Tudo certo, tDCS funcionando
Suositeltava:
DIY -puettava TDCS -laite: 4 vaihetta
DIY Wearable TDCS -laite: TDCS (Transcranial Direct Current Stimulation) Tässä ohjeessa aion: 1. Opastaa yksinkertaisen TDCS -laitteen luomiseen.3. Aseta piirien takana oleva teoria.2. Esittele tutkimusta ja selitä, miksi tällainen laite kannattaa tehdä
Super Viime hetken DIY -ystävänpäiväkortti: 4 vaihetta
Super Viime hetken DIY -ystävänpäiväkortti: Oletko unohtanut myös ystävänpäivän? Älä huoli, saat meiltä tämän viime hetken muokattavan DIY -ystävänpäiväkortin! ?
DIY - Super Halpa ja Super Cool Arc Reactor: 8 vaihetta (kuvilla)
DIY - Erittäin halpa ja erittäin viileä kaarireaktori: Tässä ohjeessa näytän sinulle, kuinka voit tehdä erittäin halpaa kaarireaktoria kotona. Aloitetaan. LED maksoi minulle 2,5 INR ja käytin 25, joten kokonaiskustannukset ovat alle 1
DIY Super Bright ladattava taskulamppu (Micro USB -latausportti): 6 vaihetta
DIY Super Bright ladattava taskulamppu (Micro Usb -latausportti): Näin äskettäin youtubessa videon taskulampun tekemisestä, mutta hänen rakentamansa taskulamppu ei ollut niin voimakas, mutta hän käytti myös painikkeita virtalähteeksi. .ly/2tyuvlQSto yritin tehdä siitä oman versioni, joka on paljon tehokkaampi
Ihmisparannuslaitteen rakentaminen (TDCS -perusvarustus): 3 vaihetta
Rakenna ihmisen parannuslaite (perus -TDCS -tarjonta): Hyväkuntoinen lähde viittasi tähän ohjeeseen (pdf -linkki)! Viite #10 artikkelissa " Uudet työkalut hermoston parantamiseen - entä neuroetiikka? " (html -linkki) Croat Med J. 2016 Aug; 57 (4): 392 - 394. doi: 10.3325/cmj.2016.57.392