INHOUDSOPGAWE:
- Stap 1: Saiba Mais
- Stap 2: Monte O Circuito Abaixo
- Stap 3: Installeer O Código No Seu Arduino
- Stap 4: Uma UI Personalizada
- Stap 5: Dúvidas?
Video: Arduino TDCS Super Simples. Transkraniale gelykstroomstimulator (tDCS) DIY: 5 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:25
Para fazer este tDCS você precisará apenas de um arduino, resistor, capacitor e alguns cabosComponentes
-
Arduino
- Pino D13 as PWM (pode ser alterado).
- Ons het 'n analoog ingang (vir terugvoer van korrespondensie).
- Pino GND apenas para GND.
- Weerstand (~ 470 Ω, mas provavelmente entre 300-1000 Ω funciona, você precisará alterar no código fonte)
- Kondensator (220 μF). Bedien vir die stabilisering van PWM.
- Eletrodos de Esponja (Gebruik água salina para molhá-lo).
Como funciona
O Arduino calcula a corrente padrão (pode ser alterado) que passarans pelo seu cérebro apenas por mudar a voltagem de saída. Ons kan 'n alternatiewe of waardevolle doelwit vir 'n reeks CLI (konsole) gebruik.
Stap 1: Saiba Mais
Você deve ler mais sobre tDCS primeiro. Die FDA kan ook 'n vooroordeel in die toekoms hê, maar ons kan nie meer 'n goeie idee hê nie …
Stap 2: Monte O Circuito Abaixo
Não se esqueça das esponjas com água salina!
Stap 3: Installeer O Código No Seu Arduino
Lembre-se de alterar as configurações and parametros na área de HARDWARE PARAMS e CONFIGURABLE PARAMS.
Ons kan 'n ander koers of 'n reeks koers gebruik: 115200 vir die wagwoord vir die resultate.
Vir die uitvoerende komando's, of No Line Ending vir Carriage Return.
O código fonte + tutoriaal oor hoe u dit kan installeer:
Wysiging:
const String ver = "2.0m"; // HARDWARE 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] float R = 470,0; // Resistencia da corrente [Ohm]
// KONFIGUREERbare parame
bool plotter = vals; // Defina: true, caso esteja usando o Serial plotter bool stopverf = vals; // Defina: true, caso esteja usando o PuTTT (pode ser alterado no CLI) int maxmin = 30; // Tempo (em minutos) necessário para desligar [Min] float target_mA = 2.73; // Essa é a corrente que passará pelo seu cérebro !!! [mA] float epsilon_mA = 0,03; // Daar kan 'n korrekte werklike doelwit_mA wees (dit is 'n alternatiewe saak of dit 'n fazendo is!)
// INIT GLOBALS
int toestand = 1; - Você esta na corrente definida -10 - Voltagem desligada */ float outV = maxOutV; // Voltagem int debounced_state = 0; int nulle_len = 0; float smoothed_mA = 0;
String commandString = ""; // vir CLI
// TERUGVOERHULPERS
float computeOutVoltage (float V, float new_mA) {if (abs (new_mA -target_mA) maxOutV) {toestand = -1; // resistência muito alta -> cérebro não encontrado? gee maxOutV terug; // terugkeer maxOutV/5.0; // para segurança} staat = 0; opgawe 0,1*new_V+0,9*V; // terugkeer new_V; }
int convertVtoOutputValue (float V) {
terugkeerbeperking (int (V/maxOutV*255), 0, 255); }
float sensorValue2mA (int sensorValue) {
float sensorVoltage = sensorValue/1023.0*maxRefInV; float sensor_mA = sensorVoltage/R*1000.0; terugkeer sensor_mA; }
int debounced_state_compute (int toestand) {
as (staat 5) terugkeer 0; } terugkeer 1; }
ongetekende lang begin, einde;
void process_feedback () {int sensorValue = analogRead (analogInPin); float new_mA = sensorValue2mA (sensorValue); smoothed_mA = 0.2*new_mA+0.8*smoothed_mA; dryf V = uitV; outV = computeOutVoltage (V, new_mA); analogWrite (analogOutPin, convertVtoOutputValue (outV)); debounced_state = debounced_state_compute (toestand); // Exibir informações no CLI endc = (millis ()-start)/1000; String tv = "[", ttm = "mA/", tsm = "V,", ts = "mA] | Estado:", h = "| Tempo:", s = ":", leadM = "", leadS = "", plotT = "Doel:", plotmA = "\ tSmoothed MA:", plotMin = "\ tMin:", tempo; ongetekende lang tmin = endc/60-((endc/60)%1); // Formatação if (endc%60 <10) leadS = "0"; as (tmin = 0) ts = ts + " +"; // Parar automaticamente if (tmin> maxmin) stop_device (); String txt; as (plotter) txt = plotT + target_mA + plotMin + "0" + plotmA + smoothed_mA; anders txt = tv + V + tsm + smoothed_mA + ttm + target_mA + ts + debounced_state + h + tempo; as (stopverf) Serial.print ("\ r / e [? 25l" + txt); anders Serial.println (txt);
// wag 2 millisekondes voor die volgende lus
// om die analoog-na-digitale omskakelaar te vestig // na die laaste lesing: vertraging (5); }
leemte stop_toestel () {
staat = -10; analogWrite (analogOutPin, 0); clearAndHome (); Serial.println ("Sessão tDCS interrompida"); Serial.println ("------------------------"); hulp (); }
// CLI HELPERS
leegte clearAndHome () {Serial.write (27); Serial.print ("[2J"); // limpa a tela Serial.write (27); // ESC Serial.print ("[H"); // / r if (! stopverf) vir (int i = 0; i <= 30; i ++) Serial.println (""); }
leegte hulp () {
Serial.println ("tDSC arduino, ver"+ver); Serial.println ("'?' - ajuda"); 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' - 'n weerstand teen hardeware (ohm)"); Serial.println ("'stopverf' - muda a formatação de saída pro PuTTY"); Serial.println ("'stop' - para a estimulação"); Serial.println ("'herlaai' - inicia/reinicia a estimulação & o timer"); Serial.println ("'voortgaan' - continua a estimulação"); Serial.print ("\ n / rEstado: / n / r * max_time:"); Reeks.afdruk (maksimum); 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:"); Reeks.afdruk (R); Serial.println ("Ohms"); }
bool parse_param (String & cmdString) {
int spacePos = cmdString.indexOf (''); as (spacePos <= 0) terugkeer vals; Stringopdrag = cmdString.substring (0, spacePos); String fval = cmdString.substring (spacePos+1); if (command == "stopverf") if (fval == "true") {stopverf = waar; terugkeer waar; } anders as (fval == "vals") {stopverf = vals; terugkeer waar; } float val = fval.toFloat (); if (command == "target_mA") {if (val100.0) {return false; } target_mA = val; clearAndHome (); hulp (); } anders if (command == "epsilon_mA") {if (val0.3) {return false; } epsilon_mA = val; clearAndHome (); hulp (); } anders as (command == "R") {R = val; clearAndHome (); hulp (); } anders as (command == "max_time") {maxmin = val; clearAndHome (); hulp (); } anders {return false; } terugkeer waar; }
// INSTELLING EN HOOFLUS
ongeldige opstelling () {Serial.begin (115200); analogReference (INTERNE); //1.1 V Serial.print ("Sessão iniciada!"); begin = millis (); } leemte lus () {if (staat! =-10) {proses_terugvoer (); } as (Serial.available ()> 0) {char v = Serial.read (); as (byte (v) == 13) {// Vervoeropgawe bool aanvaar = waar; if (commandString == "?" || commandString == "stop") {stop_device (); } anders as (commandString == "herlaai") {clearAndHome (); toestand = -1; outV = maxOutV/5.0; begin = millis (); aanvaar = vals; } anders as (commandString == "gaan voort") {clearAndHome (); toestand = -1; outV = maxOutV/5.0; aanvaar = vals; } anders {bool ok = parse_param (commandString); as (! ok) {clearAndHome (); hulp (); aanvaar = vals; Serial.println ("Comando desconhecido: '" + commandString + "'"); }} commandString = ""; as (aanvaar) {clearAndHome (); hulp (); Serial.println ("Ok!"); }} anders {commandString+= v; as (staat ==-10) {Serial.print (v); }}}}
Stap 4: Uma UI Personalizada
Vir 'n enkele kombinasie, gebruik 'n ferramenta PuTTY, of definieer geen funksie nie:
stopverf = waar
Aanbevelings vir definisies:
-
Venster
- 61 Colunas e 20 Linhas
- Vertoon die rolbalk in die besonder
-
Venster> Voorkoms
Foto: Lucida -konsole, 28 px
Stap 5: Dúvidas?
Para abrir a guia de ajuda, syfer:
?
druk op [ENTER]
OBS: Caso o Estado seja:
-1 -> Cérebro não identifierado (corrente aberta) +0 -> Ajustando voltagem+1 -> Tudo certo, tDCS funcionando
Aanbeveel:
DIY draagbare TDCS -toestel: 4 stappe
DIY draagbare TDCS -toestel: TDCS (transkraniale gelykstroomstimulasie) In hierdie instruksies sal ek: 1. Lei u deur die skepping van 'n eenvoudige TDCS -toestel. Gee 'n uiteensetting van die teorie agter die stroombane.2. Stel 'n bietjie navorsing in en verduidelik waarom 'n toestel soos hierdie die moeite werd is om te maak
DIY - Super goedkoop en super cool boogreaktor: 8 stappe (met foto's)
DIY - Super goedkoop en super cool boogreaktor: in hierdie instruksies sal ek u wys hoe u 'n baie goedkoop boogreaktor tuis kan maak. Laat ons begin. Die totale projek het my minder as 1 $ gekos, ek moes net LED's en elk koop LED kos my 2,5 INR en ek het 25 gebruik, so die totale koste is minder as 1
Hoe om 'n super helder flitslig met LED te maak - selfdoen: super helder lig: 11 stappe
Hoe om 'n super helder flitslig met LED te maak - selfdoen: super helder lig: kyk eers na die video
Super draagbare, super luide, langdurige, battery -aangedrewe luidsprekers: 9 stappe (met foto's)
Super draagbare, luidrugtige, langdurige, battery -aangedrewe luidsprekers: wou altyd 'n kragtige luidsprekerstelsel hê vir diegene wat in die tuin partytjies/veldkragte het. baie sal sê dat dit 'n oorbodige instruksie is, want daar is baie boombox -stylradio's uit die verlede goedkoop beskikbaar, of hierdie goedkoop ipod -styl mp3 d
Super maklik en super goedkoop Magneto Scratcher !: 3 stappe
Super eenvoudig en super goedkoop Magneto Scratcher !: " Magnero scratcher " is 'n toestel wat snaakse klanke kan skep net deur " te krap " magnetiese materiale. Soos klankbande, videobande, kredietkaarte, magnetiese skywe, ens … Hier is 'n super maklike manier om een te bou. Geen soldeer nodig nie