جدول المحتويات:
- الخطوة 1: Saiba Mais
- الخطوة 2: Monte O Circuito Abaixo
- الخطوة 3: تثبيت O Código No Seu Arduino
- الخطوة 4: Uma UI Personalizada
- الخطوة 5: Dúvidas؟
فيديو: اردوينو TDCS سوبر سيمبلز. محفز التيار المباشر عبر الجمجمة (tDCS) DIY: 5 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:39
Para fazer este tDCS você precisará apenas de um arduino، resistor، capacitor e alguns cabos المكونات
-
اردوينو
- Pino D13 como saída PWM (pode ser alterado).
- Pino A0 como entrada analógica (الفقرة feedback de corrente).
- Pino GND apenas الفقرة GND.
- المقاوم (~ 470 Ω، mas provavelmente entre 300-1000 funciona، você precisará alterar no código fonte)
- مكثف (220 μF). تخدم الفقرة estabilizar os pulsos do PWM.
- Eletrodos de Esponja (استخدم água salina para molhá-lo).
وظيفة كومو
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: Saiba Mais
Você deve ler mais sobre tDCS Primeiro. Não é aprovado pelo FDA e pode serjud a sua saúde، mainmente se você não sabe nada sobre os efeitos colaterais، precauções e dentre outros…
الخطوة 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 e PARAMS القابلة للتهيئة.
Você também deve alterar o boud rate do Serial para: 115200 para poder ver o resultado.
قواعد تنفيذية ، توك ، لا خط ينتهي لعودة النقل.
O código fonte + تعليمي também podem ser encontrados no repositório:
كوديغو:
سلسلة نصية 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 [أوم]
// المعلمات القابلة للتهيئة
الراسمة المنطقية = خطأ ؛ // Defina: true ، caso esteja usando o معجون منطقي للرسام التسلسلي = خطأ ؛ // Defina: true، caso esteja usando o PuTTT (pode ser alterado no CLI) int maxmin = 30 ؛ // الإيقاع (em minutos) ضروري للفقرة desligar [Min] float target_mA = 2.73 ؛ // Essa é a corrente que passará pelo seu cérebro !!! [مللي أمبير] عائم 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 debuted_state = 0 ؛ int zeros_len = 0 ؛ تعويم Smoothed_mA = 0 ؛
سلسلة commandString = ""؛ // لـ 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) {
مستشعر تعويم الجهد = sensorValue / 1023.0 * maxRefInV ؛ تعويم sensor_mA = sensorVoltage / R * 1000.0 ؛ عودة sensor_mA ؛ }
int debuted_state_compute (حالة int) {
إذا (الحالة 5) إرجاع 0 ؛ } العودة 1؛ }
بداية طويلة بدون توقيع ، endc ؛
void process_feedback () {int sensorValue = analogRead (analogInPin) ؛ تعويم 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)) ؛ debuted_state = debuted_state_compute (حالة) ؛ // Exibir informações no CLI endc = (millis () - start) / 1000 ؛ String tv = "["، ttm = "mA /"، tsm = "V،"، ts = "mA] | Estado:"، h = "| Tempo:"، s = ":"، leadM = ""، LeadS = ""، plotT = "الهدف:"، plotmA = "\ t MA Smoothed:"، plotMin = "\ t Min:"، tempo؛ 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 = plotT + target_mA + plotMin + "0" + plotmA + smoothed_mA ؛ else txt = tv + V + tsm + smoothed_mA + ttm + target_mA + ts + debuted_state + h + tempo ؛ إذا (معجون) Serial.print ("\ r / e [؟ 25l" + txt) ؛ آخر Serial.println (txt) ؛
// انتظر ملي ثانية قبل الحلقة التالية
// للمحول التناظري إلى الرقمي لتسوية // بعد القراءة الأخيرة: تأخير (5) ؛ }
stop_device باطل () {
الدولة = -10 ؛ analogWrite (analogOutPin ، 0) ؛ clearAndHome () ، Serial.println ("Sessão tDCS interrompida") ؛ Serial.println ("------------------------") ؛ يساعد()؛ }
// مساعدو CLI
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 ("") ؛ }
مساعدة باطلة () {
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 ("معجون" - muda a formatação de saída pro PuTTY ")؛ Serial.println ("'stop' - para a Estimulação")؛ Serial.println ("إعادة تشغيل" - inicia / reinicia a Estimulação & o timer ")؛ Serial.println ("'متابعة' - استمر في التقدير '')؛ 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 ('') ؛ إذا كانت (spacePos <= 0) ترجع خطأ ؛ أمر السلسلة = cmdString.substring (0، spacePos) ؛ String fval = cmdString.substring (spacePos + 1) ؛ إذا (الأمر == "المعجون") إذا (fval == "صحيح") {المعجون = صحيح ؛ العودة صحيح } 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 () ، يساعد()؛ } آخر {إرجاع خطأ؛ } عودة صحيحة؛ }
// الإعداد والحلقة الرئيسية
إعداد باطل () {Serial.begin (115200) ؛ تمثيلي المرجع (داخلي) ؛ //1.1 V Serial.print ("Sessão iniciada!") ؛ البداية = ميلي () ؛ } حلقة فارغة () {if (state! = - 10) {process_feedback ()؛ } if (Serial.available ()> 0) {char v = Serial.read ()؛ if (byte (v) == 13) {// Carriage return bool Accept = true ؛ if (commandString == "؟" || commandString == "stop") {stop_device ()؛ } else if (commandString == "reset") {clearAndHome () ؛ الدولة = -1 ؛ outV = maxOutV / 5.0 ؛ البداية = ميلي () ؛ مقبول = خطأ ؛ } else if (commandString == "continue") {clearAndHome ()؛ الدولة = -1 ؛ outV = maxOutV / 5.0 ؛ مقبول = خطأ ؛ } else {bool ok = parse_param (commandString) ؛ إذا (! ok) {clearAndHome () ، يساعد()؛ مقبول = خطأ ؛ Serial.println ("Comando desconhecido: '" + commandString + "" ")؛ }} commandString = ""؛ إذا (تم قبوله) {clearAndHome () ؛ يساعد()؛ Serial.println ("حسنًا!") ؛ }} else {commandString + = v؛ إذا (الحالة == - 10) {Serial.print (v) ؛ }}}}
الخطوة 4: Uma UI Personalizada
Para melhor acompanhamento e segurança ، استخدم ferramenta PuTTY ، e defina no código fonte:
المعجون = صحيح
Recomendações de definições:
-
نافذة او شباك
- 61 Colunas e 20 Linhas
- عرض شريط التمرير desativado
-
نافذة> المظهر
فونتي: Lucida Console ، 28 بكسل
الخطوة 5: Dúvidas؟
Para abrir a guia de ajuda، digite:
?
الصحافة الإلكترونية [ENTER]
OBS: Caso o Estado seja:
-1 -> Cérebro não identificado (corrente aberta) +0 -> Ajustando voltagem + 1 -> Tudo certo، tDCS funcionando
موصى به:
الفرق بين (التيار البديل والتيار المباشر): 13 خطوة
الفرق بين (التيار البديل والتيار المباشر): يعلم الجميع أن الكهرباء تتكون في الغالب من تيار مستمر ، ولكن ماذا عن نوع آخر من الكهرباء؟ هل تعرف AC؟ ماذا تعني AC؟ هل يمكن استخدامها ثم DC؟ في هذه الدراسة سوف نتعرف على الفرق بين أنواع الكهرباء ، المصادر ، التطبيق
Soft Starter (محدد التيار الداخل) لأحمال التيار المتردد والتيار المستمر: 10 خطوات
Soft Starter (محدد تيار Inrush) لأحمال التيار المتردد والتيار المستمر: إن تدفق التيار / زيادة التيار الكهربائي هو أقصى تيار إدخال فوري يتم سحبه بواسطة جهاز كهربائي عند تشغيله لأول مرة. تيار الاندفاع أعلى بكثير من تيار الحالة المستقرة للحمل وهذا هو مصدر العديد من المشكلات مثل الصمامات
محفز عصبي عبر اللسان: 10 خطوات
Translingual Neurostimulator: تم تكليف هذا المشروع من قبل مارك من نوفا سكوشا. تكلف 471.88 دولارًا أمريكيًا في الأجزاء ، واستغرق التصميم والبناء 66.5 ساعة. الصورتان أعلاه مع الصندوق البلاستيكي مأخوذة من التكرار الثاني (المرفق) للجهاز ، بتكليف من زميل
مستشعر اللمس ومستشعر الصوت الذي يتحكم في أضواء التيار المتردد / التيار المستمر: 5 خطوات
مستشعر اللمس ومستشعر الصوت التحكم في أضواء التيار المتردد / التيار المستمر: هذا هو مشروعي الأول وهذا يعمل على أساس مستشعرين أساسيين أحدهما مستشعر اللمس والثاني هو مستشعر الصوت ، عندما تضغط على لوحة اللمس على مستشعر اللمس ، سيتحول ضوء التيار المتردد قيد التشغيل ، إذا قمت بتحريره ، فسيتم إيقاف تشغيل الضوء ، ونفس الشيء
أرخص اردوينو -- أصغر اردوينو -- اردوينو برو ميني -- البرمجة -- اردوينو نينو: 6 خطوات (مع صور)
أرخص اردوينو || أصغر اردوينو || اردوينو برو ميني || البرمجة || اردوينو نينو: …………………………. الرجاء الاشتراك في قناتي على يوتيوب لمزيد من مقاطع الفيديو ……. يدور هذا المشروع حول كيفية التعامل مع أصغر وأرخص اردوينو على الإطلاق. أصغر وأرخص اردوينو هو اردوينو برو ميني. إنه مشابه لاردوينو