Está en la página 1de 4

Control de servomotor mediante un dsPIC.

Diseo Simulink (Stateflow) Vladimir Bonilla El presente ejemplo controla un servomotor mediante un dsPIC que lee el voltaje V1 de un potencimetro, si el voltaje es mayor que V1, el motor gira 180 grados, caso contrario se posiciona en 0 grados. Adicional existe un switch que arranca el sistema.

Figura 1. Esquema del circuito de control del servomotor Para la programacin del sistema se disea el siguiente sistema en Simulink, en el que existe un bloque de encendido de un led de prueba de funcionamiento, el sistema de control de la lgica de movimiento de un servo, y la salida al bloque que genera el PWM necesario para el posicionamiento del actuador.

Figura 2. Diseo del software embebido en el dsPIC El bloque ADC INPUT recibe la seal del potencimetro, del puerto anlogo 0, esta seal es recivida por el bloque Drive control que es un subsistema diseado como una mquina de estado finito mediante la herramienta Stateflow de Matlab (Figura 3). Este bloque realiza una comparacin de determinado nivel de voltaje V0 y toma la decisin de mover el servomotor en una u otra direccin. Para el accionamiento de este bloque se utiliza una entrada digital del dsPIC (B1), que permite iniciar al bloque DriveControl, adems es necesario que en este bloque se implemente un escucha (Pulse Generator) que mantenga activa a la mquina de estado finita.

Figura 3. Mquina de estado finito. Indica la posicin del servomotor

El bloque DriveControl enva como salida un nmero que permite posicionar al servomotor, cero para un ngulo de 180 grados, 1 para una ngulo de 0 grados. Este nmero entero, obtenido a la salida del bloque DriveControl es enviado a la entrada del bloque AngleSelector , y este bloque determine el ancho del pulso para generar el PWM (figura 4). Para 180 grados el valor del ancho del pulso es igual al Tperiodo/3.5, y para un ngulo de 0 grados el ancho del pulso es igual a Tperiodo/12 (Estos valores son tomados para posicionar al servomotor HS755HB).

Figura 4. Selector del valor para determinar el ancho de pulso La salida del bloque AngleSelector alimenta la entrada del bloque que genera el PWM para posicionar al servomotor. A continuacin el diagrama de programacin del bloque ControlServo 1

Figura 5. Bloque que genera el PWM para posicionar al servomotor

Resultados

Osciloscopio de PWM generado para posicionar el servo en 0 grados

Osciloscopio de PWM generado para posicionar el servomotor en 180 grados

También podría gustarte