Aplicación 3 con SADE en JAVA. IOPin como PWM – Control de un servomotor

En esta aplicación se controlará un servomotor mediante una aplicación hecha en JAVA utilizando un Jslider. Se utlizará el recurso de SADE los pines de entrada o salida configurados como PWM.

IMPORTANTE: Antes de comenzar por favor lee los archivos SADESymbhiaRevB.pdf y Comunicación SADE.pdf

En el código fuente de la clase Main en la función public class Main agregamos creamos dos objetos privados:

private Thread t;

private Hilo hilo;

Y en la inicialización private void initialize() escribimos las siguientes lineas de código:

hilo = new Hilo(this);

t = new Thread(hilo);

Con eso ya podemos mandar a llamar el código de la clase Hilo.

Agregamos un botón que llamaremos “Iniciar PWM” y le asignamos un evento.

Y para ejecutar el código unicamente lo mandamos a llamar con la función t.start() por lo que quedaría de la siguiente manera:

JButton btnIniciarConteo = new JButton(“Iniciar PWM”);
btnIniciarConteo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
t.start();//Ejecutar código

}

Después agregamos un JSlider para el control del servomotor.

Para poder utilizar el JSlider en la clase Hilo.java tenemos que volverlo un objeto público, para eso vamos al código fuente en la pestaña Source y dejamos la inicialización del JSlider como se muestra en la siguiente imagen:

Hecho eso pasamos ala función public class Main y escribimos la siguiente linea de código:

Es importante determinar el rango de valores del JSlider ya que se utilizarán para el ciclo de trabajo del PWM para el servomotor. En la hoja de especificaciones del motor se determinan los tiempos de la señal (varían según fabricante), en este caso los tiempos están dados como:

Con un periodo de 21.5 ms y un ciclo de trabajo que va desde los 0.5 ms hasta los 2.5 ms.

Utilizando la fórmula para obtener el periodo del PWM para SADE determinamos el siguiente valor:

Valor periodo = (21.5×10-3 s) * (50,000,000)

Valor periodo = 1,075,000

De igual manera obtenemos el valor mínimo y el valor máximo del ciclo de trabajo que colocaremos en las propiedades del Jslider

Valor mínimo de C.T. = (Tiempo ciclo [segundos]) * (50,000,000)
Valor mínimo de C.T. = (0.5×10-3 s) * (50,000,000)
Valor mínimo de C.T. = 25,000

Valor máximo de C.T. = (Tiempo ciclo [segundos]) * (50,000,000)
Valor máximo de C.T. = (2.5×10-3 s) * (50,000,000)
Valor máximo de C.T. = 125,000

Colocamos los valores del ciclo de trabajo en las propiedades del JSlider en la pestaña de diseño.

Ahora abrimos la clase Hilo.java

y el código que utilizaremos para nuestra aplicación es el siguiente:

public void run() {
// TODO Auto-generated method stub

while(true){

comando.PWM(1075000, main.slider.getValue(), comando.G1);
// Configuramos el pin G1 de la tarjeta symbhia como PWM

}

}

En el periodo colocamos el valor que ya habíamos calculado y en el ciclo de trabajo colocamos el valor que nos arroja el JSlider.

Y así finaliza nuestra aplicación.

IMPORTANTE: Cada vez que se utilice la clase Hilo.java se deberá ejecutar el código presionando una sola vez el botón de inicio.

Y así finaliza nuestra aplicación.

¡Gracias por su interés en SADE!

Cualquier duda o información pueden contactarnos en: [email protected]

Menú