فهرست مطالب:
- مرحله 1: سایبا میس
- مرحله 2: Monte O Circuito Abaixo
- مرحله 3: O Código No Seu Arduino را نصب کنید
- مرحله 4: Uma UI Personalizada
- مرحله 5: داویداس؟
تصویری: آردوینو TDCS فوق العاده ساده DIY تحریک کننده جریان مستقیم جمجمه (tDCS) DIY: 5 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:55
Para fazer este tDCS você precisará apenas de um arduino، resistor، capacitor e alguns cabos مonلفه ها
-
آردوینو
- Pino D13 como saída PWM (pode ser alterado).
- Pino A0 como entrada analógica (برای بازخورد de corrente).
- Pino GND apenas para GND.
- Resistor (70 470 Ω، mas provavelmente entre 300-1000 Ω funciona، você precisará alterar no código fonte)
- خازن (220 μF). قبل از PWM برای استقرار و پالس سرو کنید.
- Eletrodos de Esponja (از á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: سایبا میس
Você deve ler mais sobre tDCS primeiro. Não aprovado pelo FDA e pode ser biududicial a suade ، اصول اصطلاحات خود را در مورد اصول پیشگیرانه ، پیشگیری و پیشگیری از…
مرحله 2: Monte O Circuito Abaixo
Não se esqueça das esponjas com água salina!
مرحله 3: O Código No Seu Arduino را نصب کنید
Lembre-se de alterar as configurações e parametros na área de HARDWARE PARAMS and CONFIGURABLE PARAMS.
Você também deve alterar o boud rate do Serial para: 115200 para poder ver o resultado.
Para ekzar comandos ، troque o No Line Ending برای Carriage Return.
O código fonte + آموزش também podem ser encontrados no repositório:
Código:
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 [اهم]
// پارامترهای قابل تنظیم
bool plotter = false؛ // Defina: true، caso esteja usando o Serial plotter bool putty = false؛ // Defina: true، caso esteja usando 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] شناور 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 = 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 */ float outV = maxOutV؛ // Voltagem int debounced_state = 0؛ int zeros_len = 0؛ شناور smoothed_mA = 0 ؛
string stringString = ""؛ // برای CLI
// راهنمای بازخورد
float computeOutVoltage (float V ، float new_mA) {if (abs (new_mA -target_mA) maxOutV) {state = -1؛ // resistência muito alta -> cérebro não encontrado؟ بازگشت maxOutV ؛ // بازگشت maxOutV/5.0 ؛ // para segurança} state = 0؛ بازگشت 0.1*new_V+0.9*V ؛ // بازگشت new_V؛ }
int convertVtoOutputValue (float V) {
محدودیت بازگشت (int (V/maxOutV*255) ، 0 ، 255) ؛ }
سنسور شناور Value2mA (int sensorValue) {
float sensorVoltage = sensorValue/1023.0*maxRefInV؛ float sensor_mA = sensorVoltage/R*1000.0 ؛ sensor_mA بازگشت ؛ }
int debounced_state_compute (int state) {
if (حالت 5) بازگشت 0 ؛ } بازگشت 1؛ }
شروع طولانی بدون علامت ، پایان؛
void process_feedback () {int sensorValue = analogRead (analogInPin) ؛ float new_mA = sensorValue2mA (sensorValue) ؛ smoothed_mA = 0.2*new_mA+0.8*smoothed_mA ؛ شناور V = outV ؛ outV = computeOutVoltage (V ، new_mA) ؛ analogWrite (analogOutPin ، convertVtoOutputValue (outV)) ؛ debounced_state = debounced_state_compute (state)؛ // Exibir informações no CLI endc = (millis ()-start)/1000؛ رشته تلویزیونی = "[" ، ttm = "mA/" ، tsm = "V" ، ts = "mA] | Estado:" ، h = "| Tempo:" ، s = ":" ، leadM = "" ، leadS = "" ، plotT = "هدف:" ، plotmA = "\ tSmoothed MA:" ، plotMin = "\ t حداقل:" ، سرعت ؛ tmin طولانی بدون علامت = endc/60-((endc/60)٪ 1) ؛ // Formatação if (endc٪ 60 <10) leadS = "0"؛ اگر (tmin = 0) ts = ts + " +" ؛ // Parar automaticamente if (tmin> maxmin) stop_device ()؛ رشته txt ؛ if (plotter) txt = plotT + target_mA + plotMin + "0" + plotmA + smoothed_mA ؛ else txt = tv + V + tsm + smoothed_mA + ttm + target_mA + ts + debounced_state + h + tempo؛ if (putty) Serial.print ("\ r / e [؟ 25l" + txt) ؛ else Serial.println (txt)؛
// قبل از حلقه بعدی 2 میلی ثانیه صبر کنید
// برای تبدیل مبدل آنالوگ به دیجیتال // پس از آخرین خواندن: تأخیر (5)؛ }
void stop_device () {
حالت = -10 ؛ analogWrite (analogOutPin، 0)؛ clearAndHome ()؛ Serial.println ("Sessão tDCS interrompida") ؛ Serial.println ("------------------------") ؛ کمک()؛ }
// CLI HELPERS
void clearAndHome () {Serial.write (27)؛ Serial.print ("[2J") ؛ // limpa a tela Serial.write (27)؛ // ESC Serial.print ("[H") ؛ // / r اگر (! بتونه) برای (int i = 0؛ i <= 30؛ i ++) Serial.println ("")؛ }
void help () {
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 resistência do hardware (اهم)")؛ Serial.println ("'putty' - muda a formatação de saída pro PuTTY") ؛ Serial.println ("'stop' - para a estulação") ؛ Serial.println ("'راه اندازی مجدد' - inicia/reinicia a estulaula & o timer")؛ Serial.println ("'ادامه" - Continua a estmulação ") ؛ Serial.print ("\ n / rEstado: / n / r * max_time:")؛ Serial.print (maxmin)؛ 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:")؛ Serial.print (R)؛ Serial.println ("اهم") ؛ }
bool parse_param (String & cmdString) {
int spacePos = cmdString.indexOf ('')؛ if (spacePos <= 0) بازگشت false؛ دستور رشته = cmdString.substring (0 ، spacePos) ؛ رشته fval = cmdString.substring (spacePos+1) ؛ if (command == "putty") if (fval == "true") {putty = true؛ بازگشت واقعی ؛ } else if (fval == "false") {putty = false؛ بازگشت واقعی ؛ } float val = fval.toFloat ()؛ if (command == "target_mA") {if (val100.0) {return false؛ } target_mA = val؛ clearAndHome ()؛ کمک()؛ } else if (command == "epsilon_mA") {if (val0.3) {return false؛ } epsilon_mA = val؛ clearAndHome ()؛ کمک()؛ } else if (command == "R") {R = val؛ clearAndHome ()؛ کمک()؛ } else if (command == "max_time") {maxmin = val؛ clearAndHome ()؛ کمک()؛ } else {return false؛ } true true؛ }
// SETUP و MAIN LOOP
void setup () {Serial.begin (115200)؛ مرجع analog (داخلی) ؛ //1.1 V Serial.print ("Sessão iniciada!") ؛ شروع = millis ()؛ } void loop () {if (state! =-10) {process_feedback ()؛ } if (Serial.available ()> 0) {char v = Serial.read ()؛ if (byte (v) == 13) {// حمل و نقل بار bool پذیرفته شده = true؛ if (commandString == "؟" || commandString == "stop") {stop_device ()؛ } else if (commandString == "راه اندازی مجدد") {clearAndHome ()؛ حالت = -1 ؛ outV = maxOutV/5.0 ؛ شروع = millis ()؛ پذیرفته شده = غلط ؛ } else if (commandString == "ادامه") {clearAndHome ()؛ حالت = -1 ؛ outV = maxOutV/5.0 ؛ پذیرفته شده = غلط ؛ } else {bool ok = parse_param (commandString) ؛ اگر (! خوب) {clearAndHome ()؛ کمک()؛ پذیرفته شده = غلط ؛ Serial.println ("Comando desconhecido: '" + commandString + "'")؛ }} commandString = ""؛ اگر (پذیرفته شده) {clearAndHome ()؛ کمک()؛ Serial.println ("خوب!") ؛ }} else {commandString+= v؛ if (state ==-10) {Serial.print (v)؛ }}}}
مرحله 4: Uma UI Personalizada
Para melhor acompanhamento e segurança، use a ferramenta PuTTY، e defina no código fonte:
بتونه = درست
Recomandações de definições:
-
پنجره
- 61 Colunas e 20 Linhas
- نمایش نوار پیمایش مطلوب
-
پنجره> ظاهر
فونت: کنسول Lucida ، 28 پیکسل
مرحله 5: داویداس؟
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، tDCS funcionando
توصیه شده:
تفاوت بین (جریان متناوب و جریان مستقیم): 13 مرحله
تفاوت بین (جریان متناوب و جریان مستقیم): همه می دانند که برق بیشتر DC است ، اما در مورد نوع دیگری از برق چطور؟ آیا Ac را می شناسید؟ مخفف AC چیست؟ آیا بعد از DC قابل استفاده است؟ در این مطالعه تفاوت بین انواع برق ، منابع ، کاربرد
نحوه ایجاد نور فلش فوق العاده روشن با LED - DIY: نور فوق العاده روشن: 11 مرحله
نحوه ایجاد نور فلش فوق العاده روشن با LED - DIY: Super Bright Light: ابتدا فیلم را تماشا کنید
فوق العاده ساده & quot؛ فوق العاده & quot؛ نور شب: 5 مرحله
فوق العاده ساده & quot؛ فوق العاده & quot؛ Night Light: این یک نسخه بسیار ساده از Eggcellent Light Night است !. اگر این دستورالعمل را ندیده اید ، پیشنهاد می کنم حتماً آن را ببینید. من واقعاً می خواستم آن را درست کنم ، اما حوصله نداشتم. بنابراین من راه ساده تری برای ساختن آن پیدا کردم. این را بررسی کنید
فوق العاده قابل حمل ، فوق العاده بلند ، بادوام ، بلندگوهای باتری: 9 مرحله (همراه با تصاویر)
فوق العاده قابل حمل ، فوق العاده بلند ، با دوام ، بلندگوهای باتری: همیشه می خواستم یک سیستم بلندگوی قدرتمند برای کسانی که در مهمانی های باغی و مهمانی های محلی پیش می روند ، داشته باشم. بسیاری خواهند گفت که این یک دستورالعمل اضافی است ، زیرا بسیاری از رادیوهای سبک بوم باکس از روزهای گذشته که ارزان در دسترس بوده اند ، یا این سبک ارزان iPod mp3 d
فوق العاده آسان و فوق العاده ارزان Magneto Scratcher !: 3 مرحله
فوق العاده آسان و فوق العاده ارزان Magneto Scratcher !: & quot؛ Magnero scratcher & quot؛ دستگاهی است که می تواند صداهای خنده دار را فقط با & quot؛ خاراندن & quot؛ مواد مغناطیسی مانند نوارهای صوتی ، نوارهای ویدئویی ، کارت های اعتباری ، دیسک های مغناطیسی و غیره … در اینجا یک راه فوق العاده آسان برای ساخت آن است. بدون نیاز به لحیم کاری