Servo Controle usando Ondas Cerebrais (Parte 12/13)

Servocontrol mediante ondas cerebrales (Parte 12/13)

Servocontrol mediante ondas cerebrales

RESUMEN

Después de aplicar ondas cerebrales a los LED RGB, ahora es el momento de comprobar las extensiones en algunas aplicaciones más en tiempo real y determinar la eficiencia y flexibilidad que se puede lograr con este módulo. Ahora planeo usarlo en algún campo robótico.
En este artículo, planeo utilizar Brain Wave para algunas aplicaciones de atención médica junto con la robótica. Al estudiar los brazos robóticos, descubrí que están controlados por un servomotor. ¿Y si pudiéramos controlar el servomotor usando nuestro Brainwave? No estaba seguro de esto ya que los resultados de Brainwave suelen ser aleatorios y quería comprobar si podemos controlar el ángulo con nuestros pensamientos. Así que para comprobar la precisión lo probé.
Imagem mostrando um usuário usando o Brainwave para controlar o servo motor
Fig. 1: Imagen que muestra a un usuario usando ondas cerebrales para controlar el servomotor.
DESCRIPCIÓN
Para controlar cualquier brazo robótico, necesitamos controlar el servomotor . El mecanismo del brazo robótico es que hay un servomotor fijado en el borde del brazo. El movimiento de los brazos robóticos depende completamente del ángulo del servomotor. Puedes leer más sobre el servomotor (aquí) para saber cómo funciona. En resumen, el servomotor I se utiliza básicamente cuando necesitamos un ángulo preciso. Por tanto, para controlar el ángulo del servo, se produce una onda PWM. La onda PWM decide el ángulo del servomotor variando el ciclo de trabajo, de forma muy similar a lo que hicimos en el control de velocidad del motor. Aquí, estamos controlando el ángulo del motor. El motor puede girar 180 grados según el ciclo de trabajo. Usaremos la onda alfa nuevamente, ya que puede usarse para ver resultados en tiempo real basados ​​en nuestros pensamientos. Entonces, transformemos los valores de la onda alfa y limitémoslos a estar entre 0,255, lo que se convertirá en un ángulo de 0 a 180. Encuentre el diagrama de bloques adjunto a continuación.
Diagrama de blocos do servo controlado por ondas cerebrais baseado em Arduino e sensor Mindflex
Fig. 2: Diagrama de bloques de Arduino y servo controlado por ondas cerebrales basado en el sensor Mindflex
Hardware: Encuentre el diagrama de circuito adjunto de las conexiones que deben realizarse. Cogemos un pin del pin T del sensor mindflex y conectamos este pin al pin Rx de nuestro Arduino UNO. Además, cortocircuitamos el sensor y la tierra UNO mediante un cable. Tenga especial cuidado al soldar cualquier cosa al sensor Mindflex ya que los pines están muy cerca uno del otro. Para conexiones de servos, conectamos el servo VCC y GND a los 3.3V y GND del arduino. Conectamos el noveno pin de Arduino al servo para control de ángulo.
Programas: Vayamos a la parte del software. Hemos estado recibiendo los valores del sensor a nuestro arduino a través de T-pin. Una vez que recibimos el valor en cualquier punto específico, solo necesitamos convertir ese nivel de valor al ángulo del servo.
Aquí estamos utilizando la biblioteca de servos incorporada de Arduino para controlar el servomotor.
Aquí hay una pequeña sección del código.
Serial.print(“alfa = “);
Serie.println(num1);
salida = mapa(num1,0,999999,0,180);
myservo.write(salida);
Primero, extraemos los valores alfa de la cadena y los almacenamos en una variable llamada num1. Después de eso, simplemente asignamos los valores alfa en el rango de 0 a 180 usando la función de mapa de arduino.
Y luego enviamos los valores almacenados en la variable "salida" aquí al servo usando myservo.write, una función incorporada de Arduino.
Algunos puntos a tener en cuenta:
El sensor suele proporcionar entre un 60 y un 80% de resistencia debido a su orientación y al lugar donde lo ubiquemos. Intente mantener el sensor de metal exactamente encima de su ojo izquierdo. También me apliqué agua salada en la frente para una mejor conectividad con el sensor. Si no encuentra el 100%, entonces es normal.
La intensidad de la señal también afecta la forma en que soldamos el cable al pin T. Intente proteger este cable y también asegúrese de que las sondas de referencia estén conectadas correctamente. Si tiene algún cable conectado al pin EEG del sensor, desconecte ese cable ya que esto creará mucho ruido en los valores del sensor.
Prueba este experimento y mantente atento a la serie de ondas cerebrales. En la siguiente parte, nos ocuparemos del experimento en hiperterminal .

Código fuente del proyecto

 //Programa para


 // Biblioteca del cerebro Arduino - Prueba en serie del cerebro

 // Descripción: toma datos del cerebro del pin RX serie y envía CSV a través del pin TX (semidúplex).
 //Más información:
 // Autor: Eric Mika, 2010 revisado en 2014

 #incluir
 #incluir

 // Configure el analizador cerebral, pásele el objeto serie de hardware que desea escuchar.
 Cerebro cerebro(Serie);
 Servo myservo; // crea un objeto servo para controlar un servo
 //char a(400);
 Cadena a,a1;
 int v = 0;
 int z=0,salida;
 uint32_t número=0;
 uint32_t número1=0;
 configuración nula { 
// Inicia el hardware serie.
 Serie.begin(9600);
 myservo.attach(9); // conecta el servo en el pin 9 al objeto servo
 pinMode(12, SALIDA);
 pinMode(11, SALIDA);
 }

 bucle vacío {
 // Espere paquetes aproximadamente una vez por segundo.
 // La función .readCSV devuelve una cadena (bueno, char*) que enumera los datos cerebrales más recientes, en el siguiente formato:
 // "intensidad de la señal, atención, meditación, delta, theta, alfa bajo, alfa alto, beta bajo, beta alto, gamma bajo, gamma alto"
 si (cerebro.actualización) {
 // Serial.println(brain.readErrors);
 // Serial.println(cerebro.readCSV);
 //sprintf(a, "%c",brain.readCSV);
 a = cerebro.readCSV;
 v = a.indexOf(',');
 v = a.indexOf(',',v+1);
 v = a.indexOf(',',v+1);
 v = a.indexOf(',',v+1);
 z = a.indexOf(',',v+1);

 a1 = a.subcadena(v+1,z);
 número = a1.toInt;

 v = a.indexOf(',',z+1);


 a = a.substring(z+1,v);

 número1 = a.toInt; 
Serial.print("alfa = ");
 Serie.println(num1);

 salida = mapa(núm,0.999999,0.180);


 myservo.write(salida); // le dice al servo que vaya a la posición en la variable 'pos'
 retraso(15);

 // escritura analógica(12,salida)

 //brain.readCSV .toCharArray(a,200);
 }
 }

Diagramas de circuito

servidor

Vídeo del proyecto

contenido relacionado

Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.