Orodha ya maudhui:
- Hatua ya 1: Saiba Mais
- Hatua ya 2: Monte O Circuito Abaixo
- Hatua ya 3: Funga O Código Hakuna Seu Arduino
- Hatua ya 4: Uma UI Ubinafsishaji
- Hatua ya 5: Dúvidas?
Video: Arduino TDCS Super Simples. Transcranial Direct Stimulator (tDCS) DIY: Hatua 5
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:51
Para fazer este tDCS você precisará apenas de um arduino, resistor, capacitor e alguns cabos Vipengele
-
Arduino
- Pino D13 como saída PWM (pode ser alterado).
- Pino A0 como entada analógica (para maoni de corrente).
- Pino GND apenas para GND.
- Resistor (~ 470 Ω, mas provavelmente entre 300-1000 Ω funciona, você precisará alterar no código fonte)
- Msimamizi (220 μF). Kutumikia kwa msingi wa pulsos kufanya PWM.
- Eletrodos de Esponja (Tumia água salina para molhá-lo).
Como funciona
O Arduino calcula a corrente padrão (pode ser alterado) ikiwa ni pamoja na maoni yako kwa sababu ya maoni na maoni ya nguvu ya umeme. Você também pode alterar o valor do target_mA pelo serial CLI (Dashibodi).
Hatua ya 1: Saiba Mais
Você deve ler mais sobre tDCS primeiro. Ni kwa sababu tu FDA FDA ilikuwa na maoni ya haki juu ya sheria, msingi wa habari ni kwamba unaweza kupata habari zaidi kwa sababu ya maoni yako, kabla ya kutafakari…
Hatua ya 2: Monte O Circuito Abaixo
Não se esqueça das esponjas com água salina!
Hatua ya 3: Funga O Código Hakuna Seu Arduino
Lembre-se de alterar as configurações e parameter na área de HARDWARE PARAMS na PARAMU ZA USANAMISHO.
Você também deve alterar o boud rate do Serial kwa: 115200 kwa poder ver o resultado.
Para comutos comandos, troque o No Line Ending for Carriage Return.
O código fonte + tutorial também podem ser encontrados no repositório:
Código:
String ver = "2.0m"; // HARDWARE PARAMS const int analogInPin = A0; // Entrada kufanya Analógico const int analogOutPin = 13; // Saida D13 padrão kuelea maxOutV = 5.0; // A voltagem de saída PWM padrão do Arduino [V] kuelea maxRefInV = 1.1; // Referencia à voltagem analógica [V] kuelea R = 470.0; // Resistencia da corrente [Ohm]
// PARAMU ZA KUFANIKIWA
mpangaji bool = uwongo; // Defina: kweli, caso esteja usando o Serial plotter bool putty = false; // Defina: kweli, caso esteja usando o PuTTT (pode ser alterado no CLI) int maxmin = 30; // Tempo (em minutos) needário para desligar [Min] kuelea target_mA = 2.73; // Essa ni corrente que passará pelo seu cérebro !!! [mA] kuelea epsilon_mA = 0.03; // Diferença máxima entre a corrente real e o target_mA (Je! Unapenda kituo hiki?)
// INIT GLOBALS
hali ya ndani = 1; / * -1 - Cérebro não identificado 0 - Voltagem sendo alterada para definir a corrente padrão 1 - Tudo certo. Você esta na corrente definida -10 - Voltagem desligada * / kuelea njeV = maxOutV; // Voltagem int debuted_state = 0; int zeros_len = 0; kuelea laini_mA = 0;
Kamba ya amriString = ""; // kwa CLI
// WASAIDIZI WA MAONI
kuelea computeOutVoltage (kuelea V, kuelea new_mA) {if (abs (new_mA-target_mA) maxOutV) {state = -1; // resistência muito alta -> cérebro não encontrado? kurudi maxOutV; // kurudi maxOutV / 5.0; // para segurança} hali = 0; kurudi 0.1 * new_V + 0.9 * V; // kurudi new_V; }
int convertVtoOutputValue (kuelea V) {
kurudi kizuizi (int (V / maxOutV * 255), 0, 255); }
sensor ya kueleaValue2mA (int sensorValue) {
sensor ya kuelea Voltage = sensorValue / 1023.0 * maxRefInV; kuelea sensor_mA = sensorVoltage / R * 1000.0; sensor_mA ya kurudi; }
int debuted_state_compute (int state) {
ikiwa (hali 5) kurudi 0; } kurudi 1; }
mwanzo usiosainiwa, endc;
mchakato batili_feedback () {int sensorValue = analogRead (analogInPin); kuelea new_mA = sensorValue2mA (sensorValue); laini_mA = 0.2 * mpya_mA + 0.8 * laini_mA; kuelea V = outV; outV = computeOutVoltage (V, new_mA); AnalogWrite (analogOutPin, convertVtoOutputValue (outV)); debuted_state = debuted_state_compute (hali); // Exibir informações no CLI endc = (millis () - kuanza) / 1000; Kamba tv = "[", ttm = "mA /", tsm = "V,", ts = "mA] | Estado:", h = "| Tempo:", s = ":", leadM = "", leadS = "", plotT = "Lengo:", plotmA = "\ tSmoothed MA:", plotMin = "\ tMin:", tempo; muda mrefu uliotiwa saini tmin = endc / 60 - ((endc / 60)% 1); // Formatação ikiwa (endc% 60 <10) leadS = "0"; ikiwa (tmin = 0) ts = ts + "+"; // Parar automaticamente ikiwa (tmin> maxmin) stop_device (); Kamba txt; ikiwa (mpangaji) txt = njamaT + lengo_mA + njamaMin + "0" + plotmA + smoothed_mA; mwingine txt = tv + V + tsm + laini_mA + ttm + target_mA + ts + debuted_state + h + temp +; ikiwa (putty) Serial.print ("\ r / e [? 25l" + txt); mwingine Serial.println (txt);
// subiri 2 milliseconds kabla ya kitanzi kijacho
// kwa kibadilishaji cha analog-to-digital kukaa // baada ya kusoma mwisho: kuchelewesha (5); }
batili stop_device () {
hali = -10; AnalogWrite (AnalogOutPin, 0); waziNaNyumbani (); Serial.println ("Sessão tDCS interrompida"); Serial.println ("------------------------"); msaada (); }
// WASAIDIZI WA CLI
batili waziAndHome () {Serial.write (27); Printa ya serial ("[2J"); // limpa a tela Serial.write (27); // ESC Serial.print ("[H"); // / r ikiwa (! putty) ya (int i = 0; i <= 30; i ++) Serial.println (""); }
msaada batili () {
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 lengo (mA)"); Serial.println ("'epsilon_mA' - atualiza o epsilon_mA (mA)"); Serial.println ("'R' - atualiza a resistência fanya vifaa (Ohm)"); Serial.println ("'putty' - muda a formatação de saída pro PuTTY"); Serial.println ("'stop' - para a estimulação"); Serial.println ("'kuanzisha upya' - inicia / reinicia a estimulação & o timer"); Serial.println ("'endelea' - endelea kukadiria"); Serial.print ("\ n / rEstado: / n / r * max_time:"); Serial.print (maxmin); Serial.print ("minutos / n / r * target_mA:"); Serial.print (lengo_mA); Serial.print ("mA / n / r * epsilon_mA:"); Printa ya serial (epsilon_mA); Serial.print ("mA / n / r * R:"); Printa ya serial (R); Serial.println ("Ohms"); }
bool parse_param (Kamba & cmdString) {
nafasi ya ndaniPos = cmdString.indexOf (''); ikiwa (spacePos <= 0) inarudi uwongo; Kamba ya amri = cmdString.substring (0, spacePos); Kamba fval = cmdString.substring (nafasiPos + 1); ikiwa (amri == "putty") ikiwa (fval == "kweli") {putty = kweli; kurudi kweli; } mwingine ikiwa (fval == "uongo") {putty = uongo; kurudi kweli; } kuelea val = fval.toFloat (); ikiwa (command == "target_mA") {if (val100.0) {Return false; } lengo_mA = thamani; waziNaNyumbani (); msaada (); } kingine ikiwa (command == "epsilon_mA") {if (val0.3) {return false; } epsilon_mA = val; waziNaNyumbani (); msaada (); } vingine ikiwa (amri == "R") {R = val; waziNaNyumbani (); msaada (); } kingine ikiwa (command == "max_time") {maxmin = val; waziNaNyumbani (); msaada (); } vingine {kurudi uwongo; } kurudi kweli; }
// KUWEKA NA KITENGO KIKUU
kuanzisha batili () {Serial.begin (115200); Rejea ya Analog (YA NDANI); //1.1 V Serial.print ("Sessão iniciada!"); Anza = millis (); } kitanzi batili () {if (state! = - 10) {process_feedback (); } ikiwa (Serial.available ()> 0) {char v = Serial.read (); ikiwa (byte (v) == 13) {// Bool ya kurudi kwa gari inakubaliwa = kweli; ikiwa (commandString == "?" || commandString == "stop") {stop_device (); } kingine ikiwa (commandString == "restart") {clearAndHome (); hali = -1; njeV = maxOutV / 5.0; Anza = millis (); kukubalika = uongo; } mwingine ikiwa (commandString == "endelea") {clearAndHome (); hali = -1; njeV = maxOutV / 5.0; kukubalika = uongo; } mwingine {bool ok = parse_param (commandString); ikiwa (! sawa) {clearAndHome (); msaada (); kukubalika = uongo; Serial.println ("Comando desconhecido: '" + commandString + "" "); }} commandString = ""; ikiwa (imekubaliwa) {clearAndHome (); msaada (); Serial.println ("Ok!"); }} mwingine {commandString + = v; ikiwa (hali == - 10) {Serial.print (v); }}}}
Hatua ya 4: Uma UI Ubinafsishaji
Para melhor acompanhamento e segurança, tumia ferramenta PuTTY, na ufafanuzi hakuna fomu ya código:
putty = kweli
Recomendações de definições:
- Dirisha
- 61 Colunas na 20 Linhas
- Onyesha scrollbar desativado
-
Dirisha> Mwonekano
Fonti: Lucida Console, 28px
Hatua ya 5: Dúvidas?
Para abrir a guia de ajuda, jibu:
?
e pressione [ENTER]
OBS: Caso o Estado seja:
-1 -> Cérebro não kitambulisho (corrente aberta) +0 -> Ajustando voltagem + 1 -> Tudo certo, tDCS funcionando
Ilipendekeza:
Kifaa cha TDCS kinachoweza kuvaliwa kwa DIY: Hatua 4
Kifaa cha TDCS kinachoweza kuvaliwa kwa DIY: TDCS (Uhamasishaji wa Sasa wa moja kwa moja wa Transcranial) Katika hii inayoweza kufundishwa, nita: 1. Tembea kupitia uundaji wa kifaa rahisi cha TDCS. Mpangilio wa nadharia nyuma ya nyaya.2. Anzisha utafiti na ueleze ni kwanini kifaa kama hiki kinafaa kutengenezwa
DIY - Super Refu Reactor ya Nafuu na Super Cool: Hatua 8 (na Picha)
DIY - Super Cheap na Super Reactor Arc Reactor: Katika hii inayoweza kufundishwa nitakuonyesha jinsi unavyoweza kutengeneza mtambo wa bei rahisi sana nyumbani. Wacha kuanza. Mradi wa jumla ulinigharimu chini ya 1 $ ans nililazimika tu kununua LED na kila moja. LED ilinigharimu INR 2.5 na nilitumia 25 kwa hivyo gharama yote ni chini ya 1
Jenga Kifaa cha Kuboresha Binadamu (Ugavi wa Msingi wa TDCS): Hatua 3
Jenga Kifaa cha Kuboresha Binadamu (Ugavi wa Msingi wa TDCS): Hii inayoweza kufundishwa ilinukuliwa na chanzo mashuhuri (kiungo cha pdf)! Nukuu # 10 kwenye karatasi " Zana mpya za neuroenhancement - vipi kuhusu neuroethics? " (html link) Croat Med J. 2016 Aug; 57 (4): 392 - 394. doi: 10.3325 / cmj.2016.57.392 -
Super Hiper Super Robot Que Pinta, nada Más: Hatua 7
Super Hiper Super Robot Que Pinta, nada Más: Teknolojia sasa inaendelea haraka sana ambayo inasaidia na kushirikiana katika kazi ya mtu. Kujua hili, tumeunda mfano wa kuchora robot; Tunajua kuwa hii inaweza kutumika katika tasnia ya kuchonga, roboti hii inawezesha kazi mbaya
Sandal ya Super Super Geek: Hatua 9 (na Picha)
Sandal Super Geek Sandal: Ikiwa wewe ni mtengenezaji wa aina ya kuvutia ambaye anajaribu kwanza na anafikiria baadaye, wakati moshi umeenda, utapata LED zinateseka kila aina ya majeraha mabaya. Mradi huu mdogo ni juu ya kuchakata tena taa hizo duni kwa njia ya kijanja, na kuifanya