10 Control Servomotor Con Pic16f84

6
 Tester para servomotor con PIC16F84 Escrito por ZonaBot Viernes 10 de Octubre de 2008 11:16 - Ultima actualización Jueves 02 de Abril de 2009 19:20 Mediante es circuito se puede comprobar el funcionamiento de un servomotor usando un microcontrolador PIC16F84A.  CIRCUITO  1 / 5

Transcript of 10 Control Servomotor Con Pic16f84

Page 1: 10 Control Servomotor Con Pic16f84

5/9/2018 10 Control Servomotor Con Pic16f84 - slidepdf.com

http://slidepdf.com/reader/full/10-control-servomotor-con-pic16f84 1/5

 

Tester para servomotor con PIC16F84

Escrito por ZonaBotViernes 10 de Octubre de 2008 11:16 - Ultima actualización Jueves 02 de Abril de 2009 19:20

Mediante es circuito se puede comprobar el funcionamiento de un servomotor usando unmicrocontrolador PIC16F84A.

 

CIRCUITO

1 / 5

Page 2: 10 Control Servomotor Con Pic16f84

5/9/2018 10 Control Servomotor Con Pic16f84 - slidepdf.com

http://slidepdf.com/reader/full/10-control-servomotor-con-pic16f84 2/5

 

Tester para servomotor con PIC16F84

Escrito por ZonaBotViernes 10 de Octubre de 2008 11:16 - Ultima actualización Jueves 02 de Abril de 2009 19:20

Mediante S1 formado por 3 pulsadores, conectados al puerto B, se controla la posición del ejedel servomotor. Es posible posicionarlo en 0º, 90º y 180º, estos valores son aproximados yaque dependen del fabricante del servomotor. El servo se conecta al conector JP1, el pin RA0envía la señal de control al servo. IC1 es un microcontrolador PIC 16F84, Q1 es un cristal de4Mhz. Las resistencias R2-R4 no son necesarias si se activan las resistencias internas delpuerto B del microcontrolador.El conector del servo tiene posición, normalmente el cable negro es negativo, el rojo positivo yel cable de control puede ser blanco o amarillo.PROGRAMA

El programa de control está constituido por un bucle infinito que se ejecuta cada 20ms, para locual se usa el temporizador TMR0, al finalizar la cuenta provoca una interrupción que llama a larutina encargada de generar el pulso de control del servo.

;********************************************************************************* ; Programa:ControlServo.asm ; Fecha: 23/03/2007 ; Autor: Jorge Fernández ; Descripción: Programapara el control de un servo de radio control conectado al ; pin RA0, la posición se puedecontrolar mediante 3 pulsadores conectados a RB0, ; RB1 y RB2;********************************************************************************* ;CONTROL SERVOMOTOR RC CON PIC 16F84A;********************************************************************************* title "ControlServomotor"

__CONFIG _CP_OFF & _XT_OSC & _PWRTE_ON & _WDT_OFF LISTP=16F84A, R=DEC ; 16F84 a 4 MHz errorlevel 0,-305 INCLUDE"p16f84a.inc"

LIST ; Registros usados CBLOCK 0x00C ; Bloque de registroscomenzando en 0x00C PWM ; Variable para el control PWMPOSICION ; Variable para salvar la posición ENDC ; Variables #DEFINE

A_0 PORTB,0 ; Pulsador posición 0º #DEFINE A_90 PORTB,1 ;Pulsador posición 90º #DEFINE A_180 PORTB,2 ; Pulsador posición 180º

2 / 5

Page 3: 10 Control Servomotor Con Pic16f84

5/9/2018 10 Control Servomotor Con Pic16f84 - slidepdf.com

http://slidepdf.com/reader/full/10-control-servomotor-con-pic16f84 3/5

 

Tester para servomotor con PIC16F84

Escrito por ZonaBotViernes 10 de Octubre de 2008 11:16 - Ultima actualización Jueves 02 de Abril de 2009 19:20

#DEFINE SERVO PORTA,0 ; Pin de control del servo #DEFINE POS_0 124; Duración del pulso para posición 0º (1ms) #DEFINE POS_90 186 ;

Duración del pulso para posición 90º (1,5ms) #DEFINE POS_180 249 ; Duracióndel pulso para posición 180º (2ms)

;********************************************************************************* ;INICIALIZACIÓN DEL PIC;********************************************************************************* org 0

; Posición de iniciogoto

Inicio ; Salto a la posición de inicialización PIC org 4 ; Vectorinterrupcióngoto

Servos ; Tratamiento interrupcion TMR0;********************************************************************************* ; Inicialización

de los puertos ;********************************************************************************* Inicioclrf PORTA ; Borrar PORTA clrf PORTB ; BorrarPORTB bsf STATUS,RP0 ; Selección banco 1 movlw b'11110'

; movwf TRISA ; Configurar puerto A movlw b'01111111'

; movwf TRISB ; Configurar puerto B bcfSTATUS,RP0 ; Selección banco 0;********************************************************************************* ; Inicialización de lasinterrupciones y Configuración TMR0

;********************************************************************************* movlw b'10100000'; Habilitar interrupción TMR0 movwf INTCON ; bsf

STATUS,RP0 movlw b'000000110'

; Configuración TMR0 movwf OPTION_REG bcf STATUS,RP0;********************************************************************************* ;INICIALIZACION DE LOS PARAMETROS;********************************************************************************* movlwPOS_0 movwf POSICION

;********************************************************************************* ;PROGRAMA DE CONTROL PRINCIPAL;********************************************************************************* maingotomain ;********************************************************************************* ;TRATAMIENTO DE LA INTERRUPCION;*********************************************************************************;********************************************************************************* ;SERVOS ;********************************************************************************* Servosbsf SERVO ; Activar pin servo bcf INTCON,T0IF ; Habilitar

interrupción desbordamiento TMR0 movlw 100 movwf TMR0movf PORTB,0 andlw b

3 / 5

Page 4: 10 Control Servomotor Con Pic16f84

5/9/2018 10 Control Servomotor Con Pic16f84 - slidepdf.com

http://slidepdf.com/reader/full/10-control-servomotor-con-pic16f84 4/5

 

Tester para servomotor con PIC16F84

Escrito por ZonaBotViernes 10 de Octubre de 2008 11:16 - Ultima actualización Jueves 02 de Abril de 2009 19:20

'00000111'btfsc STATUS,Z

gotoseguir btfsc A_0 movlw POS_0 btfsc A_90

movlw POS_90 btfsc A_180 movlw POS_180movwf POSICION seguir movf POSICION,W movwf PWM pulsodecf PWM ; Decrementar valor registro control servo btfsc STATUS,Z

; ¿Es igual a cero? bcf SERVO ; Desactivar pin servonop btfss SERVO retfie

gotopulso ;************************************************************************************************ ;

FIN DEL PROGRAMA;************************************************************************************************end

SEÑAL DE CONTROL

La señal que se genera mediante el microcontrolador tiene un periodo de 20 ms y la duración(ancho) del pulso varía entre 1 ms y 2 ms, dependiendo del pulsador que se haya activado,esta señal se conoce como PWM (Pulse Width Modulation).

4 / 5

Page 5: 10 Control Servomotor Con Pic16f84

5/9/2018 10 Control Servomotor Con Pic16f84 - slidepdf.com

http://slidepdf.com/reader/full/10-control-servomotor-con-pic16f84 5/5

 

Tester para servomotor con PIC16F84

Escrito por ZonaBotViernes 10 de Octubre de 2008 11:16 - Ultima actualización Jueves 02 de Abril de 2009 19:20

 El funcionamiento del tester se puede comprobar montando el circuito en una placa deprototipos.

5 / 5