Mục lục:
- Bước 1: Saiba Mais
- Bước 2: Monte O Circuito Abaixo
- Bước 3: Instale O Código No Seu Arduino
- Bước 4: Uma UI Personalizada
- Bước 5: Dúvidas?
Video: Arduino TDCS Siêu mẫu. Bộ kích thích dòng điện trực tiếp xuyên não (tDCS) Tự làm: 5 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:33
Para fazer este tDCS você Preisará apenas de um arduino, điện trở, tụ điện e alguns cabos
-
Arduino
- Pino D13 como saída PWM (pode ser alterado).
- Pino A0 como entrada analógica (para feedback de Corrente).
- Vượn cáo Pino GND para GND.
- Điện trở (~ 470 Ω, mas provavelmente entre 300-1000 Ω funciona, você Preisará alterar không có fonte)
- Tụ điện (220 μF). Cung cấp para settingilizar os pulsos do PWM.
- Eletrodos de Esponja (Sử dụng á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 atagem de saída. Você também pode alterar o valor do target_mA pelo serial CLI (Console).
Bước 1: Saiba Mais
Você deve ler mais sobre tDCS primeiro. Não é aprovado pelo FDA e pode ser trước tư pháp a sua saúde, majormente se você não sabe nada sobre os efeitos colaterais, đề phòng e dentre outros…
Bước 2: Monte O Circuito Abaixo
Não se esqueça das esponjas com água salina!
Bước 3: Instale O Código No Seu Arduino
Lembre-se de alterar as configurações e parametros na área de HARDWARE PARAMS e CÁC THÔNG SỐ CÓ THỂ CẤU HÌNH.
Você também deve alterar o boud rate do Serial para: 115200 para poder ver o resultado.
Para executive comandos, troque o No Line Ending para Carriage Return.
O código fonte + hướng dẫn também podem ser encontrados no repositório:
Código:
const String ver = "2.0m"; // THÔNG SỐ PHẦN CỨNG const int analogInPin = A0; // Entrada do Analógico const int analogOutPin = 13; // Saida D13 padrão float maxOutV = 5.0; // Atagem de saída PWM padrão do Arduino [V] float maxRefInV = 1.1; // Referencia àtagem analógica [V] float R = 470.0; // Resistencia da Corrente [Ohm]
// CÁC THÔNG SỐ CÓ THỂ CẤU HÌNH
bool plotter = false; // Định nghĩa: true, caso esteja usando o Trình vẽ nối tiếp bool putty = false; // Định nghĩa: 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] float epsilon_mA = 0,03; // Diferença máxima yêu cầu một sự điều chỉnh thực sự ở target_mA (Não altere caso não saiba o que está fazendo!)
// INIT TOÀN CẦU
int state = 1; / * -1 - Cérebro não Idificado 0 - Voltagem sendo alterada para Defr a Corrente padrão 1 - Tudo certo. Você esta na Corrente Defda -10 - Voltagem desligada * / float outV = maxOutV; // Voltagem int debounced_state = 0; int zeros_len = 0; float smoothed_mA = 0;
Chuỗi lệnhString = ""; // cho CLI
// PHẢN HỒI TRỢ GIÚP
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? trả về maxOutV; // trả về maxOutV / 5.0; // para segurança} bang = 0; trả về 0,1 * new_V + 0,9 * V; // trả về new_V; }
int convertVtoOutputValue (float V) {
return ràng buộc (int (V / maxOutV * 255), 0, 255); }
float sensorValue2mA (int sensorValue) {
float sensorVoltage = sensorValue / 1023.0 * maxRefInV; float sensor_mA = sensorVoltage / R * 1000.0; cảm_phục hồi_mA; }
int debounced_state_compute (int state) {
if (trạng thái 5) trả về 0; } trả về 1; }
đầu dài không dấu, endc;
void process_feedback () {int sensorValue = analogRead (analogInPin); float new_mA = sensorValue2mA (sensorValue); làm mịn_mA = 0,2 * new_mA + 0,8 * làm mịn_mA; float V = outV; outV = computeOutVoltage (V, new_mA); analogWrite (analogOutPin, convertVtoOutputValue (outV)); debounced_state = debounced_state_compute (trạng thái); // Exibir Informações no CLI endc = (millis () - start) / 1000; Chuỗi tv = "[", ttm = "mA /", tsm = "V,", ts = "mA] | Estado:", h = "| Tempo:", s = ":", leadM = "", leadS = "", plotT = "Mục tiêu:", plotmA = "\ tSmoothed MA:", plotMin = "\ tMin:", tempo; không dấu dài tmin = endc / 60 - ((endc / 60)% 1); // Formatação if (endc% 60 <10) leadS = "0"; if (tmin = 0) ts = ts + "+"; // Parar automaticamente if (tmin> maxmin) stop_device (); Chuỗi txt; if (máy vẽ) 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);
// đợi 2 mili giây trước vòng lặp tiếp theo
// để bộ chuyển đổi tương tự sang kỹ thuật số giải quyết // sau lần đọc cuối cùng: delay (5); }
void stop_device () {
trạng thái = -10; analogWrite (analogOutPin, 0); clearAndHome (); Serial.println ("Sessão tDCS interrompida"); Serial.println ("------------------------"); Cứu giúp(); }
// NGƯỜI TRỢ GIÚP CỦA CLI
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 (""); }
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 Phần cứng (Ohm)"); Serial.println ("'putty' - muda a formatação de saída pro PuTTY"); Serial.println ("'dừng' - para a ước tính"); Serial.println ("'khởi động lại' - inicia / reinicia a ước tính & o bộ đếm thời gian"); Serial.println ("'tiếp tục' - liên tục một ước tính"); 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 ("Ohms"); }
bool parse_param (Chuỗi & cmdString) {
int spacePos = cmdString.indexOf (''); if (spacePos <= 0) trả về false; Lệnh chuỗi = cmdString.substring (0, spacePos); String fval = cmdString.substring (spacePos + 1); if (lệnh == "putty") if (fval == "true") {putty = true; trả về true; } else if (fval == "false") {putty = false; trả về true; } float val = fval.toFloat (); if (lệnh == "target_mA") {if (val100.0) {return false; } target_mA = val; clearAndHome (); Cứu giúp(); } else if (lệnh == "epsilon_mA") {if (val0.3) {return false; } epsilon_mA = val; clearAndHome (); Cứu giúp(); } else if (lệnh == "R") {R = val; clearAndHome (); Cứu giúp(); } else if (lệnh == "max_time") {maxmin = val; clearAndHome (); Cứu giúp(); } else {return false; } trả về true; }
// THIẾT LẬP VÀ ĐĂNG NHẬP CHÍNH
void setup () {Serial.begin (115200); analogReference (NỘI BỘ); //1.1 V Serial.print ("Sessão iniciada!"); start = millis (); } void loop () {if (state! = - 10) {process_feedback (); } if (Serial.available ()> 0) {char v = Serial.read (); if (byte (v) == 13) {// Vận chuyển trả về bool accept = true; if (commandString == "?" || commandString == "stop") {stop_device (); } else if (commandString == "khởi động lại") {clearAndHome (); trạng thái = -1; outV = maxOutV / 5.0; start = millis (); chấp nhận = sai; } else if (commandString == "continue") {clearAndHome (); trạng thái = -1; outV = maxOutV / 5.0; chấp nhận = sai; } else {bool ok = parse_param (commandString); if (! ok) {clearAndHome (); Cứu giúp(); chấp nhận = sai; Serial.println ("Comando desconhecido: '" + commandString + "'"); }} commandString = ""; if (được chấp nhận) {clearAndHome (); Cứu giúp(); Serial.println ("Được!"); }} else {commandString + = v; if (state == - 10) {Serial.print (v); }}}}
Bước 4: Uma UI Personalizada
Para melhor acompanhamento e segurança, sử dụng một PuTTY ferramenta, e định nghĩa không có fonte código:
putty = true
Recomendações de Defções:
-
Cửa sổ
- 61 Colunas e 20 Linhas
- Hiển thị thanh cuộn desativado
-
Window> Appearance
Fonte: Bảng điều khiển Lucida, 28px
Bước 5: Dúvidas?
Para abrir a guia de ajuda, digite:
?
e pressione [ENTER]
OBS: Caso o Estado seja:
-1 -> Cérebro não Idificado (Corrente aberta) +0 -> Ajustando điện ápm + 1 -> Tudo certo, tDCS funcionando
Đề xuất:
Làm cho điện tử và lập trình dễ học với bàn làm việc tự làm trực quan: 3 bước
Làm cho điện tử và lập trình dễ học với bàn làm việc tự làm trực quan: Bạn đã bao giờ muốn truyền cảm hứng cho trẻ em học về điện tử và vi điều khiển? Nhưng vấn đề chung mà chúng ta thường gặp phải là các kiến thức cơ bản về lĩnh vực này khá khó đối với trẻ nhỏ. Có một vài bảng mạch trên
Bộ kích thích thần kinh xuyên ngôn ngữ: 10 bước
Máy kích thích thần kinh xuyên ngôn ngữ: Dự án này do Mark từ Nova Scotia ủy quyền. Nó có giá 471,88 USD cho các bộ phận và mất 66,5 giờ để thiết kế và chế tạo. Hai bức ảnh trên với hộp nhựa là từ lần lặp lại thứ hai (kèm theo) của thiết bị, được ủy quyền bởi một đồng nghiệp
Giới thiệu về điện áp, dòng điện, điện trở và công suất được giải thích cho người mới bắt đầu: 3 bước
Giới thiệu về Điện áp, Dòng điện, Điện trở và Công suất Giải thích cho người mới bắt đầu: Video này liên quan đến các thuật ngữ điện tử cơ bản và dễ hiểu, tôi sẽ cố gắng giải thích dễ dàng bằng khái niệm tương tự nước, vì vậy sẽ giúp hiểu được lý thuyết về bột, vì vậy hãy xem video này để làm rõ khái niệm của bạn về Dòng điện, Điện áp
Làm thế nào để đo dòng điện và tại sao bạn nên làm điều đó ?: 4 bước (có hình ảnh)
Làm thế nào để đo lường hiện tại và tại sao bạn nên làm điều đó ?: Rất nhiều nhà sản xuất không biết tầm quan trọng của việc biết bản vẽ hiện tại của dự án của bạn hoặc tại sao bạn cần biết điều này. Trong hướng dẫn này, tôi sẽ giải thích cho bạn cách đo bản vẽ hiện tại của dự án của bạn và tại sao việc biết điều này lại quan trọng đến vậy. NS
Tự kích thích một máy phát điện mà không cần bất kỳ máy phát điện một chiều, tụ điện hoặc pin nào: 5 bước (có hình ảnh)
Tự kích thích một máy phát điện mà không cần bất kỳ máy phát điện một chiều, tụ điện hoặc pin nào: Xin chào! Hướng dẫn này dùng để chuyển đổi máy phát điện kích thích trường thành máy phát điện tự kích thích. Ưu điểm của thủ thuật này là bạn sẽ không phải cấp nguồn cho trường này máy phát điện có pin 12 volt nhưng thay vào đó nó sẽ tự bật nguồn để bạn