Мазмұны:
- 1 -қадам: Сайба Маис
- 2 -қадам: Monte O Circuito Abaixo
- 3 -қадам: O Codigo No Seu Arduino орнатыңыз
- 4 -қадам: Uma UI Personalizada
- 5 -қадам: Дувидас?
Бейне: Arduino TDCS Super Simples. Транскраниальды тұрақты ток стимуляторы (tDCS) DIY: 5 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:25
TDCS параметрлері алдын -ала анықталады, резистор, конденсатор және электронды компоненттер
-
Ардуино
- PWM D13 комбинациясы PWM (pode ser alterado).
- P0 A0 como entrada analógica (кері байланыс бойынша пікір).
- GND үшін GND көрсеткіштері.
- Резистор (~ 470 Ω, 300-1000 Ω функциялары, функционалдылық, алфавитке ешқандай айырмашылық жоқ)
- Конденсатор (220 мкФ). PWM жасайтын пульсацияларды орнатыңыз.
- Eletrodos de Esponja (Use água salina para molhá-lo).
Комо фунциона
O Arduino калькуляторы сіздің есептік жазбаңызды жаңартуға мүмкіндік береді. CLI (Console) сериялы target_mA мәнін өзгертуге болады.
1 -қадам: Сайба Маис
TDCS Primeiro бағдарламасын шығарыңыз. FDA электрондық поштаға зиян келтіретіні белгілі бір уақытқа созылады, бұл сіздің жеке меншігіңізде, сонымен қатар алдын -ала …
2 -қадам: Monte O Circuito Abaixo
Еске алу қажет емес!
3 -қадам: O Codigo No Seu Arduino орнатыңыз
Параметрлерді конфигурациялау параметрлері ретінде HARDWARE PARAMS e CONFIGURABLE PARAMS.
Дауыс беру жылдамдығының сериялық мәні: 115200 үшін нәтиже.
Командалар мен командирлер, «Тасымалдауды қайтару» жолында шектеу жоқ.
Қарап шығу + репозиторийлері жоқ оқулықтар:
Кодиго:
const String ver = «2,0 м»; // HARDWARE PARAMS const int analogInPin = A0; // Analoggico const int analogOutPin = 13 енгізіңіз; // Saida D13 padrão float maxOutV = 5.0; // Arduino үшін PWM -ді орнату [V] maxRefInV = 1.1; // Referencia à voltagem analógica [V] float R = 470.0; // Resistencia da Corente [Ом]
// конфигурацияланатын парам
bool плоттер = жалған; // Дефинация: шындық, сериялық плоттер боль замаска = жалған; // Анықтама: рас, PuTTT (CLI жоқ альтернативті код) int maxmin = 30; // Tempo (em minutos) міндеттері [Min] float target_mA = 2.73; // Есептік жазбаңызды жасаңыз !!! [mA] қалқыма epsilon_mA = 0,03; // Diferença máxima to add a corente a e e target_mA (Não altere caso não saiba o que está fazendo!)
// INL GLOBALS
ішкі күй = 1; /* -1 - сәйкестендіру нөмірі 0 - Түсініктеме 1 - Тіл сертификаты. Түзетудің анықтамасы -10 - Voltagem desligada */ float outV = maxOutV; // Voltagem int debounced_state = 0; int zeros_len = 0; float smoothed_mA = 0;
String commandString = «»; // CLI үшін
// ПІКІР КӨРСЕТУШІЛЕР
float computeOutVoltage (float V, float new_mA) {if (abs (new_mA -target_mA) maxOutV) {күй = -1; // resistência muito alta -> cérebro não encontrado? maxOutV қайтару; // maxOutV/5.0 қайтару; // параграфтық} күй = 0; қайтару 0,1*жаңа_В+0,9*В; // new_V қайтару; }
int convertVtoOutputValue (өзгермелі V) {
қайтару шектеуі (int (V/maxOutV*255), 0, 255); }
өзгермелі сенсорValue2mA (int sensorValue) {
өзгермелі сенсорVoltage = sensorValue/1023.0*maxRefInV; float sensor_mA = sensorVoltage/R*1000.0; sensor_mA қайтару; }
int debounced_state_compute (күй күйі) {
егер (5 -күй) 0 қайтарады; } қайтару 1; }
қол қойылмаған ұзақ бастау, аяқтау;
void process_feedback () {int sensorValue = analogRead (analogInPin); float new_mA = sensorValue2mA (sensorValue); тегістелген_мА = 0,2*жаңа_мА+0,8*тегістелген_мА; өзгермелі V = шығысV; outV = computeOutVoltage (V, new_mA); analogWrite (analogOutPin, convertVtoOutputValue (outV)); debounced_state = debounced_state_cute (күй); // ExII ақпарат жоқ CLI endc = (millis ()-бастау)/1000; Тізім tv = «[», ttm = «mA/», tsm = «V,», ts = «mA] | Эстадо:», h = «| Tempo:», s = «:», leadM = «», leadS = «», plotT = «Мақсат:», plotmA = «\ tТегістелген MA:», plotMin = «\ tMin:», темп; белгісіз ұзын tmin = endc/60-((endc/60)%1); // Форматтау if (endc%60 <10) leadS = «0»; егер (tmin = 0) ts = ts + « +»; // Параметрлер автоматты түрде if (tmin> maxmin) stop_device (); Жол мәтіні; егер (плоттер) txt = plotT + target_mA + plotMin + «0» + plotmA + тегістелген_mA; else txt = tv + V + tsm + тегістелген_мА + ttm + target_mA + ts + күйден шығарылған_стат + h + temp; if (macun) 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 if (! putty) for (int i = 0; i <= 30; i ++) Serial.println («»); }
жарамсыз көмек () {
Serial.println («tDSC arduino, ver»+ver); Serial.println («'?' - ajuda»); Serial.println («'max_time' - жылдамдық немесе жылдамдық (минут)»); Serial.println («'target_mA' - мақсатты пайдалану (mA)»); Serial.println («'epsilon_mA' - atualiza o epsilon_mA (mA)»); Serial.println («'R' - аппараттық құралдардың төзімділігі (Ом)»); Serial.println («'macun' - PuTTY форматындағы файлдарды өңдеу)»; Serial.println («тоқтату» - бағалау үшін «); Serial.println («'restart' - inicia/reinicia & a timulação & o timer»); Serial.println («'жалғастыру' - continua a smesulaçã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; шындықты қайтару; } if if (fval == «false») {putty = false; шындықты қайтару; } float val = fval.toFloat (); if (command == «target_mA») {if (val100.0) {false false; } target_mA = val; clearAndHome (); Көмектесіңдер(); } if if (command == «epsilon_mA») {if (val0.3) {return false; } epsilon_mA = вал; clearAndHome (); Көмектесіңдер(); } if if (command == «R») {R = val; clearAndHome (); Көмектесіңдер(); } if if (command == «max_time») {maxmin = val; clearAndHome (); Көмектесіңдер(); } else {return false; } шындықты қайтару; }
// ОРНАТУ ЖӘНЕ НЕГІЗГІ Цикл
void setup () {Serial.begin (115200); аналогтық сілтеме (ІШКІ); //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 (байт (v) == 13) {// Carriage return bool қабылданды = true; if (commandString == «?» || commandString == «stop») {stop_device (); } else if (commandString == «restart») {clearAndHome (); күй = -1; outV = maxOutV/5.0; бастау = millis (); қабылданды = жалған; } else if (commandString == «жалғастыру») {clearAndHome (); күй = -1; outV = maxOutV/5.0; қабылданды = жалған; } else {bool ok = parse_param (commandString); if (! жарайды) {clearAndHome (); Көмектесіңдер(); қабылданды = жалған; Serial.println («Comando desconhecido: '» + commandString + «'»); }} commandString = «»; if (қабылданған) {clearAndHome (); Көмектесіңдер(); Serial.println («Жарайды!»); }} басқа {commandString+= v; if (state ==-10) {Serial.print (v); }}}}
4 -қадам: Uma UI Personalizada
Портативті байланыс үшін PuTTY ферраментасын қолданыңыз, сандар жоқ:
замазка = ақиқат
Анықтамалар:
-
Терезе
- 61 Colunas e 20 Linhas
- Айналдыру жолағын көрсетіңіз
-
Терезе> Сыртқы түрі
Қаріп: Lucida Console, 28 пиксель
5 -қадам: Дувидас?
Абру -джуа -аудада, цифр:
?
басу [ENTER]
OBS: Caso немесе Estado сайты:
-1 -> Cérebro não identificado (түзету) +0 -> Ajustando voltagem+1 -> Тудо сертификаты, tDCS функциясы
Ұсынылған:
Айнымалы ток +15В, -15В 1А айнымалы және 5В 1А тұрақты жұмыс үстелінің тұрақты ток көзі: 8 қадам
Айнымалы ток +15В, -15В 1А айнымалы және 5В 1А тұрақты кернеудің тұрақты ток көзі: Қуат көзі-бұл электр жүктемесіне электр қуатын беретін электр құрылғысы. Бұл қуат көзі үш тұрақты күйдегі тұрақты ток көзінен тұрады. Бірінші жеткізу 1 амперге дейін 1,5 -тен 15 вольтке дейінгі айнымалы шығуды береді
Тұрақты ток - тұрақты кернеуді төмендету режимі Бак кернеу түрлендіргіші (LM2576/LM2596): 4 қадам
Тұрақты ток-тұрақты кернеуді төмендету режимі Бак кернеу түрлендіргіші (LM2576/LM2596): Жоғары тиімділікке арналған конвертер жасау-бұл қиын жұмыс, тіпті тәжірибелі инженерлер де дұрыс жобалау үшін бірнеше дизайнды қажет етеді. бұл кернеуді төмендететін тұрақты токтан тұрақты токқа түрлендіргіш (жоғарылату кезінде
1А -дан 40А -ға дейінгі ток күші 1000 Вт дейінгі тұрақты ток қозғалтқышы үшін ағымдағы BOOST түрлендіргіші: 3 қадам
1000А дейін тұрақты ток қозғалтқышы үшін 1А-дан 40А-ға дейінгі ағымдағы BOOST түрлендіргіші: Сәлеметсіз бе! Бұл бейнеде сіз 1000 Вт және 40 Амперке дейінгі тұрақты ток қозғалтқыштарының транзисторлары мен трансформаторы бар орталық ток трансформаторы үшін ток күшейткіш схемасын жасауды үйренесіз. шығудағы ток өте жоғары, бірақ кернеу
Жақсартылған тұрақты реттелетін тұрақты ток көзі: 5 қадам
Жақсартылған қарапайым реттелетін тұрақты ток көзі: жалғасуда: Мен бұл заттың қалай жұмыс істейтінін түсіндіретін қосымша мәтін мен алдағы бірнеше күнде схемалық кескін қосамын. эксперименттер мен жобалар
Айнымалы ток тұрақты ток түрлендіргіші = диод көпірі: 3 қадам
Айнымалы токтан тұрақты токқа түрлендіргіш = диод көпірі: Диод көпірі - айнымалы токты (айнымалы токты) тұрақты токқа (тұрақты ток) өзгертетін құрылғы. Бұл екі түрдің айырмашылығы-айнымалы ток-секундына 50-60 рет импульсті электрлік полярлықтардың ауысуы. (Егер сіз электронды құрылғыларға қарасаңыз, онда