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