consulta control motor DC apartir de señal pwm de receptor RF

que tal compañeros tengo una duda sobre el control de un motor DC a partir de la señal pwm de un receptor de RF he investigado y leído y eh llegado a algunas conclusiones las cuales comparto aquí con la esperanza de que alguien me diga si estoy en lo correcto y si mi lógica está bien y si hay alguna recomendación o algún tip es bienvenido!!

mi idea es controlar un motor DC a partir del receptor de RF conectando el pin que manda la señal pwm a un pic 16f84a mi idea es que el programa del pic al recibir la señal con el pulso en alto comience a incrementar el valor de un registro al que yo he llamado R1 y lo guarde en cuanto el pulso pase a cero después de eso compararlo con el valor nominal que el receptor manda para que el servo este en posición neutra y dependiendo si es mayor, menor o igual hacer que el motor DC avance, retroceda, o esté detenido

aquí un pequeño programa que hice de prueba para saber cuantos ciclos del acumulador se cumplian con un pulso de 0.5 ms y con ese ancho de pulso se cumplen 4 ciclos



List P=16f84A

#INCLUDE <P16F84A.INC>
__CONFIG _CP_OFF & _WDT_OFF & _HS_OSC & _PWRTE_ON

ORG 0
E EQU 0X03
PA EQU 0X05
PB EQU 0X06
R1 EQU 0X0C
R2 EQU 0X0D

BSF E,5
CLRF PB
MOVLW b'11111111'
MOVWF PA
BCF E,5

INICIO
CLRF PB
CLRF R1
BTFSS PA,1 ; comienza el programa y solo pasa ala parte de trabajo cuando la
GOTO INICIO ; señal está en alto

INICIO2
BTFSS PA,1 ; comienza el programa al ponerse en alto la señal
GOTO INICIO3 ; cuando la señal pasa a 0 muestra el resultado en PB
MOVLW d'10' ; se guarda un 10 decimal en el registro R2
MOVWF R2
BUCLE ; entra al bucle
DECFSZ R2,1 ; decrementa 10 veces el regristro R2
GOTO BUCLE
INCF R1 ; sale del bucle e incrementa en 1 el registro R1
GOTO INICIO2 ; regresa al bucle
INICIO3
MOVFW R1
MOVWF PB
GOTO INICIO3

END


este es el programa de prueba cuando tenga el receptor tomare el pulso pwm correspondiente para que el servo esté en estado medio (cuando el joystik del emisor este en reposo) para poder determinar el valor de referencia para realizar la comparación del valor que se genere durante los pulsos para así determinar si el motor DC debe ir para adelante, para atras o si debe estar detenido

y aqui tengo un pequeño código que encontre para realizar la comparación de los registros, el valor de referencia y el valor que genere el programa si hay algun error háganme lo saber por favor


Variable A
Variable B

movf A,w
subwf B,w
btfsc status,z
goto A=B
btfss status,c
goto B<A
goto B>A



bien por el momento es todo en cuanto tenga un avance comparto los resultados y de antemano gracias
 
Última edición:
Atrás
Arriba