Desde 1994 en la Red. La pagina de los aficionados a la electronica, informatica y otras curiosidades de la vida. No dudes en visitarnos.
Ahora 3 visitas.| 3027401 Visitas (desde Dic. 2011), hoy: 560 Visitas 1940 Pag. Vistas , ultimos 36 dias: 18111 Visitas. 120885 Pag. Vistas. Tu IP: 18.212.120.195
Que ando curioseando:
AutosuficienciaCosas de casaElectronicaEn InternetInformáticaMundo MisticoSin categoríaSociedadTe lo recomiendo

Tester para servomotor con PIC16F84

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

controlservo[2] 

Mediante S1  formado por 3 pulsadores, conectados al puerto B, se controla la posición del eje del servomotor. Es posible posicionarlo en 0º, 90º y 180º, estos valores son aproximados ya que dependen del fabricante del servomotor. El servo se conecta al conector JP1, el pin RA0 envía la señal de control al servo. IC1 es un microcontrolador PIC 16F84, Q1 es un cristal de 4Mhz. Las resistencias R2-R4 no son necesarias si se activan las resistencias internas del puerto B del microcontrolador.

El conector del servo tiene posición, normalmente el cable negro es negativo, el rojo positivo y el 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 lo cual se usa el temporizador TMR0, al finalizar la cuenta provoca una interrupción que llama a la rutina encargada de generar el pulso de control del servo.

;*********************************************************************************�
; Programa: ControlServo.asm  ; Fecha: 23/03/2007  ; Autor: Jorge Fernández�
; Descripción: Programa para el control de un servo de radio control conectado al�
; pin RA0, la posición se puede controlar mediante 3 pulsadores conectados a RB0,�
; RB1 y RB2�
;*********************************************************************************�
;
                    CONTROL SERVOMOTOR RC CON PIC 16F84A�
;*********************************************************************************        �
title  “Control Servomotor”        �
__CONFIG _CP_OFF & _XT_OSC & _PWRTE_ON  & _WDT_OFF          �
LIST P=16F84A, R=DEC        �
;  16F84  a 4 MHz        �
errorlevel 0,-305        �
INCLUDE “p16f84a.inc”        �
LIST  ;  Registros usados        �
CBLOCK 0x00C              �
; Bloque de registros comenzando en 0x00C                �
PWM               �
; Variable para el control PWM                �
POSICION          �
; 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º        �
#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ón del pulso para posición 180º (2ms)  �
;*********************************************************************************�
;                       INICIALIZACIÓN DEL PIC�
;*********************************************************************************        �
org     0                     �
; Posición de inicio                �
goto    Inicio        �
; Salto a la posición de inicialización PIC        �
org     4                     �
; Vector interrupción                �
goto    Servos        �
; Tratamiento interrupcion
TMR0�
;*********************************************************************************             �
;  Inicialización de los puertos�
;*********************************************************************************�
Inicio        �
clrf    PORTA                 �
; Borrar PORTA                �
clrf    PORTB                 �
; Borrar PORTB                �
bsf     STATUS,RP0            �
; Selección banco 1                �
movlw   b’11110′              �
;                �
movwf   TRISA                 �
; Configurar puerto A               �
movlw   b’01111111′           �
;               �
movwf   TRISB                 �
; Configurar puerto B                �
bcf     STATUS,RP0            �
; Selección banco 0�
;*********************************************************************************�
;   Inicialización de las interrupciones 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�
;*********************************************************************************                �
movlw   POS_0                �
movwf    POSICION�
;*********************************************************************************�
;                       PROGRAMA DE CONTROL PRINCIPAL�
;*********************************************************************************�
main            goto main�
;*********************************************************************************�
;                       TRATAMIENTO DE LA INTERRUPCION

;*********************************************************************************�
;*********************************************************************************�
;                       SERVOS�
;*********************************************************************************�
Servos        �
bsf     SERVO         �
; Activar pin servo                �
bcf     INTCON,T0IF    �
; Habilitar interrupción desbordamiento TMR0                �
movlw   100                �
movwf   TMR0                �
movf    PORTB,0                �
andlw    b’00000111′                �
btfsc    STATUS,Z                �
goto    seguir                �
btfsc    A_0                �
movlw    POS_0                �
btfsc    A_90                �
movlw    POS_90                �
btfsc    A_180                �
movlw    POS_180                               �
movwf    POSICION  seguir        �
movf    POSICION,W                �
movwf   PWM  pulso         �
decf    PWM                   �
; Decrementar valor registro control servo                �
btfsc   STATUS,Z              �
; ¿Es igual a cero?                �
bcf     SERVO                 �
; Desactivar pin servo                �
nop                �
btfss   SERVO                �
retfie                 �
goto    pulso�
;************************************************************************************************�
;                       FIN DEL PROGRAMA�
;************************************************************************************************                �
end

 

Revisa eltexto del porgrama antes de efectuar la compilacion.

 

Fuente: http://www.zonabot.com/microbotica/3-actuadores/10-control-servomotor-con-pic16f84.html

Escribe un comentario

Tu comentario