Envío Gratis en compras mínimas de $1200 mxn Enviamos a toda la Republica Mexicana
Buscar

Aplicación 8 con SADE en JAVA. ADC – Control de un Servomotor con un Potenciómetro

 

En ésta aplicación se controlará un servomotor utilizando un potenciómetro por lo cual se utilizará el ADC y un IOPin configurado como PWM.

 

 

Creamos 2 objetos Hilo t.

 

private Thread t;
private Hilo hilo;

hilo = new Hilo(this);
t = new Thread(hilo);

 

En nuestro diseño agregamos un botón que llamaremos Inicio y le asignamos un evento.

 

 

Para ejecutar el código que se encuentra en el Hilo únicamente lo mandamos a llamar con la función t.start().

 

JButton btnIniciarPWM = new JButton("Inicio");
btnIniciarPWM .addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent e) { 
        t.start(); //Ejecutar Hilo.
    }

 

En la hoja de especificaciones del servomotor se determinan los tiempos del PWM (varían según el fabricante).

 

 

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

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

 

ValorPeriodo = (TiempoPeriodo[S]) * (50,000,000)

ValorPeriodo = (21.5*10^-3) * (50,000,000)

ValorPeriodo = 1,075,000

 

De igual forma obtenemos el valor mínimo y el valor máximo del ciclo de trabajo.

 

ValorMínimo = (TiempoCiclo[S]) * (50,000,000)

ValorMínimo = (0.5*10^-3) * (50,000,000)

ValorMínimo = 25,000

ValorMáximo = (TiempoCiclo[S]) * (50,000,000)

ValorMáximo = (2.5*10^-3) * (50,000,000)

ValorMáximo = 125,000

Ahora abrimos la clase Hilo.java.

 

 

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

 

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

   int x; //Variable tipo entero que guarda el valor del ADC sin el complemento a dos.

   while(true) {
        
         byte valor_adc = comando.ADC(1);           //Hacemos una lectura utilizando el canal 1 del ADC y la información la guardamos en la variable.
         
         if(valor_adc < 0){ x = 255-(~valor_adc); } //Con esta condición quitamos el complemento a dos para trabajar sólo con valores positivos.
         else{ x = valor_adc; }

         /*El valor máximo del ADC es 255 y es en éste valor cuando el ciclo de trabajo debe llegar a 125000, entonces sise divide 125000/255 = 490 y este valor se multiplica por "x" */
         int ciclo_trabajo = x * 490;

        /*La siguiente condición la utilizaremos para que el ciclo de trabajo no sea menor de 25000*/
        if(ciclo_trabajo < 25000){ ciclo_trabajo = 25000; }
        
        comando.PWM(1075000, ciclo_trabajo, comando.G1); //Configuramos el pin G1 como PWM.

        }
}


 

Y así finaliza nuestra aplicación.

 

¡Gracias por su interés en SADE!

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