Përmbajtje:
- Hapi 1: Saiba Mais
- Hapi 2: Monte O Circuito Abaixo
- Hapi 3: Instaloni O Código No Seu Arduino
- Hapi 4: Personalizimi i Uma UI
- Hapi 5: Dúvidas?
Video: Arduino TDCS Super Simple. DIY DIY: 5 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:19
Para fazer este tDCS você precisará apenas de um arduino, resistor, capacitor e alguns cabosPononentet
-
Arduino
- Pino D13 përdoret për PWM (kodi në alterado).
- Pino A0 hyn në analizën analogica (para feedback de corrente).
- Pino GND apenas para GND.
- Rezistencë (~ 470 Ω, mas provavelmente entre 300-1000 Ω funksion, duke përcaktuar saktësisht alterar no código fonte)
- Kondensator (220 μF). Shërbejeni për vendosjen e sistemit operativ të PWM.
- Eletrodos de Esponja (Përdorni água salina para molhá-lo).
Como funciona
O Arduino njehsoni një korrente padrão (pode ser alterado) që kalon në seerebro apenas nga mudar a voltagem de saída. Você também pode alterar o valor do target_mA pelo serial CLI (Console).
Hapi 1: Saiba Mais
Você deve ler mais sobre tDCS primeiro. Nuk ka aprovim të FDA -së dhe të dhëna për paragjykime, si dhe të kuptoni se si të thoni që nuk mund të përdoret në mënyrë të pavarur, parapagimet dhe daljet e jashtme…
Hapi 2: Monte O Circuito Abaixo
Não se esqueça das esponjas com água salina!
Hapi 3: Instaloni O Código No Seu Arduino
Lembre-se de alterar as configurações e parametros na área de HARDWARE PARAMS dhe KONFIGURABLE PARAMS.
Você também deve alterar o boud rate do Serial para: 115200 para poder ver o resultado.
Për ekzekutues komando, troque o No Line Ending para Transportit Kthimi.
O código fonte + tutorial também podem ser encontrados no repositório:
Código:
const String ver = "2.0m"; // PARAMET HARDWARE const int analogInPin = A0; // Entrada do Analógico const int analogOutPin = 13; // Saida D13 padrão float maxOutV = 5.0; // Një tension i madh PWM padrão do Arduino [V] noton maxRefInV = 1.1; // Referencia à voltagem analógica [V] noton R = 470.0; // Rezistenca e korrenteve [Ohm]
// PARAMET E KONFIGURUESHME
bool plotter = false; // Përkufizimi: e vërtetë, rasti i përdorimit o Serial plotter bool stuko = false; // Përkufizimi: e vërtetë, me siguri që përdorni o PuTTT (pode ser alterado no CLI) int maxmin = 30; // Tempo (em minutos) needário para desligar [Min] float target_mA = 2.73; // Essa é a corrente que passará pelo seu cérebro !!! [mA] noton epsilon_mA = 0.03; // Diferença máxima hyn në një korrente reale ose objektiv_mA (Não altere caso não saiba o que está fazendo!)
// INIT GLOBALE
gjendja int = 1; /* -1 - Cérebro não identificado 0 - Voltagem sendo alterada paracaktuar për një korrente padrão 1 - Tudo certo. Você esta na corrente definida -10 - Voltagem desligada */ float outV = maxOutV; // Voltagem int debounced_state = 0; int zeros_len = 0; noton smoothed_mA = 0;
String commandString = ""; // për CLI
// NDIHMT E PERDORIMIT
float computeOutVoltage (float V, float new_mA) {if (abs (new_mA -target_mA) maxOutV) {gjendja = -1; // resistencia muito alta -> cérebro não encontrado? kthehu maxOutV; // kthehu maxOutV/5.0; // para segurança} gjendja = 0; kthimi 0.1*new_V+0.9*V; // kthej new_V; }
int convertVtoOutputValue (noton V) {
kufizimi i kthimit (int (V/maxOutV*255), 0, 255); }
sensor floatValue2mA (int sensorVlera) {
float sensorVoltage = sensorVlera/1023.0*maxRefInV; sensor notues_mA = sensorVoltage/R*1000.0; sensori i kthimit_mA; }
int debounced_state_compute (gjendja int) {
nëse (gjendja 5) kthehet 0; } kthimi 1; }
fillimi i gjatë i panënshkruar, përfundimi;
void process_feedback () {int sensorValue = analogRead (analogInPin); noton new_mA = sensorValue2mA (sensorVlera); smoothed_mA = 0.2*new_mA+0.8*smoothed_mA; noton V = outV; outV = computeOutVoltage (V, new_mA); analogWrite (analogOutPin, convertVtoOutputValue (outV)); debounced_state = debounced_state_compute (gjendja); // Exibir informações no CLI endc = (milis ()-fillimi)/1000; String tv = "[", ttm = "mA/", tsm = "V,", ts = "mA] | Estado:", h = "| Tempo:", s = ":", leadM = "", leadS = "", plotT = "Synimi:", plotmA = "\ tZbutur MA:", plotMin = "\ tMin:", tempo; tmin i gjatë i panënshkruar = endc/60-((endc/60)%1); // Formatimi nëse (fundc%60 <10) leadS = "0"; nëse (tmin = 0) ts = ts + " +"; // Parar automatike nëse (tmin> maxmin) stop_device (); Varg txt; if (plotter) txt = plotT + target_mA + plotMin + "0" + plotmA + zbutur_mA; përndryshe txt = tv + V + tsm + zbutur_mA + ttm + target_mA + ts + gjendje e debatuar + h + tempo; nëse (stuko) Serial.print ("\ r / e [? 25l" + txt); tjetër Serial.println (txt);
// prisni 2 milisekonda para lakit tjetër
// që konvertuesi analog-dixhital të vendoset // pas leximit të fundit: vonesë (5); }
pavlefshme stop_device () {
gjendje = -10; analogWrite (analogOutPin, 0); clearAndHome (); Serial.println ("Sessão tDCS interrompida"); Serial.println ("------------------------"); ndihmë (); }
// NDIHMT CLI
void clearAndHome () {Serial.shkruaj (27); Serial.print ("[2J"); // limpa a tela Seriali.shkruaj (27); // ESC Serial.print ("[H"); // / r nëse (! stuko) për (int i = 0; i <= 30; i ++) Serial.println (""); }
ndihmë e pavlefshme () {
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' - atualiza a resistencia do hardware (Ohm)"); Serial.println ("'stuko' - muda a formatação de saída pro PuTTY"); Serial.println ("'stop' - para a estulação"); Serial.println ("'rinisja' - inicia/reinicia a estulação & o timer"); Serial.println ("'vazhdoj' - Continua a estestulação"); Serial.print ("\ n / rEstado: / n / r * max_time:"); Serial.print (maxmin); Serial.print ("minutat / 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 ("Ohms"); }
bool parse_param (String & cmdString) {
int spacePos = cmdString.indexOf (''); nëse (spacePos <= 0) kthehet false; Komanda String = cmdString.substring (0, spacePos); String fval = cmdString.substring (spacePos+1); nëse (komanda == "stuko") nëse (fval == "e vërtetë") {stuko = e vërtetë; kthehet e vërtetë; } tjetër nëse (fval == "false") {stuko = false; kthehet e vërtetë; } float val = fval.toFloat (); if (komanda == "target_mA") {if (val100.0) {return false; } target_mA = val; clearAndHome (); ndihmë (); } else if (komanda == "epsilon_mA") {if (val0.3) {kthehu false; } epsilon_mA = val; clearAndHome (); ndihmë (); } tjetër if (komanda == "R") {R = val; clearAndHome (); ndihmë (); } else if (komanda == "max_time") {maxmin = val; clearAndHome (); ndihmë (); } else {return false; } kthehu i vërtetë; }
// VENDOSJA DHE LIGJI KRYESOR
void setup () {Serial.begin (115200); analogReference (INTERNAL); //1.1 V Serial.print ("Sessão iniciada!"); fillimi = millis (); } void loop () {if (gjendja! =-10) {process_feedback (); } if (Serial.available ()> 0) {char v = Serial.read (); nëse (byte (v) == 13) {// Boli i kthimit të karrocës i pranuar = i vërtetë; if (commandString == "?" || commandString == "stop") {stop_device (); } else if (commandString == "rinis") {clearAndHome (); gjendje = -1; jashtëV = maxOutV/5.0; fillimi = millis (); pranuar = false; } else if (commandString == "vazhdo") {clearAndHome (); gjendje = -1; jashtëV = maxOutV/5.0; pranuar = false; } else {bool ok = parse_param (commandString); nëse (! ok) {clearAndHome (); ndihmë (); pranuar = false; Serial.println ("Comando desconhecido: '" + commandString + "'"); }} commandString = ""; nëse (pranohet) {clearAndHome (); ndihmë (); Serial.println ("Ok!"); }} else {commandString+= v; if (gjendja ==-10) {Serial.print (v); }}}}
Hapi 4: Personalizimi i Uma UI
Për sa i përket shoqërimit dhe përdorimit, përdorni një PuTTY ferramenta, dhe nuk përcaktoni ndonjë themel:
stuko = e vërtetë
Rekomandimet për përcaktimet:
-
Dritare
- 61 Colunas e 20 Linhas
- Shfaq shiritin e rrotullimit të dëshiruar
- Dritarja> Pamja
Fonte: Paneli Lucida, 28px
Hapi 5: Dúvidas?
Para abrir a guia de ajuda, digite:
?
e pressione [ENTER]
OBS: Caso o Estado seja:
-1 -> Cérebro não identificado (corrente aberta) +0 -> Ajustando voltagem+1 -> Tudo certo, funksion tDCS
Recommended:
Pajisja DID e veshshme TDCS: 4 hapa
Pajisja DIY e veshshme TDCS: TDCS (Stimulimi Transkranial i Rrymës Direkte) Në këtë Udhëzues, unë do të: 1. Ecni përmes krijimit të një pajisjeje të thjeshtë TDCS. Paraqitja e teorisë prapa qarqeve.2. Prezantoni disa kërkime dhe shpjegoni pse një pajisje e tillë ia vlen të prodhohet
DIY - Reaktor me hark super të lirë dhe super të ftohtë: 8 hapa (me fotografi)
DIY - Reaktori i harkut super të lirë dhe super të ftohtë: Në këtë udhëzues do t'ju tregoj se si mund të bëni reaktor jashtëzakonisht të lirë të harkut në shtëpi. Le të fillojmë. Projekti total më kushtoi më pak se 1 dollarë dhe më duhej të blija vetëm LED dhe secilën LED më kushtoi 2.5 INR dhe kam përdorur 25, kështu që kostoja totale është më pak se 1
Super Simple Raspberry Pi 433MHz Automatizimi në shtëpi: 7 hapa
Super Simple Raspberry Pi 433MHz Automatizimi i Shtëpisë: Ky tutorial është një nga shumë kur bëhet fjalë për përdorimin e një Raspberry Pi për të kontrolluar pajisjet pa tel në shtëpi. Si shumë të tjerë, do t'ju tregojë se si të përdorni një palë transmetues/marrës të lirë të lidhur me Pi tuaj për të bashkëvepruar me pajisjet e operuara
Ndërtoni një pajisje për përmirësimin e njeriut (Furnizimi bazë TDCS): 3 hapa
Ndërtoni një pajisje për përmirësimin e njeriut (Furnizimi bazë TDCS): Ky udhëzues u citua nga një burim me reputacion (lidhje pdf)! Citimi #10 në punim " Mjete të reja për rritjen e neurove - po neuroetika? " (lidhje html) Croatian Med J. 2016 gusht; 57 (4): 392 - 394. doi: 10.3325/cmj.2016.57.392 -
Si të bëni dritë blic super të ndritshme me LED - DIY: Super dritë e ndritshme: 11 hapa
Si të bëni dritë blic super të ndritshme me LED - DIY: Super dritë e ndritshme: Shikoni videon në fillim