Compañeros amigos y demás...
estoy en un dilema y espero que me ayuden necesito crear un programa que se aplique a este esquema de potencia .. llamado ciclo-convertidor. de esta manera podemos variar la frecuencia ... y a su ves variar la velocidad de un motor ... no así su troque como mucho de ustedes sabrán...
Bueno para entender un poco mas del como debiera trabajar... un gráfico vale mas que mil palabras...
y ahora el codigo .. espero que lo comprendan ... y me ayuden un poco...
tengo serios problemas con los pulsos y son la selección de ellos ...
adjunto
esquema proteus
archivo ASM
y el HEX
todo el el rar... haber si me ayudannn
EDITO PARA MI AMIGO NESTOR2017
ESQUEMA PROTEUS
ESQUEMA POTENCIA
GRACIAS !!!
estoy en un dilema y espero que me ayuden necesito crear un programa que se aplique a este esquema de potencia .. llamado ciclo-convertidor. de esta manera podemos variar la frecuencia ... y a su ves variar la velocidad de un motor ... no así su troque como mucho de ustedes sabrán...
Bueno para entender un poco mas del como debiera trabajar... un gráfico vale mas que mil palabras...
y ahora el codigo .. espero que lo comprendan ... y me ayuden un poco...
tengo serios problemas con los pulsos y son la selección de ellos ...
adjunto
esquema proteus
archivo ASM
y el HEX
todo el el rar... haber si me ayudannn
EDITO PARA MI AMIGO NESTOR2017
ESQUEMA PROTEUS
ESQUEMA POTENCIA
GRACIAS !!!
Código:
;PROGRAMA
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST p=16f877A
INCLUDE "p16f877A.inc"
ORG 00h
PDel0 equ 0x42
PDel1 equ 0x43
PDel050 equ 0x44
PDel150 equ 0x45
PDel010 equ 0x46
PDel110 equ 0x47
PDel015 equ 0x48
PDel115 equ 0x49
PDel020 equ 0x50
PDel120 equ 0x51
goto inicio
inicio
ORG 10h
;Configurar el puerto B (RB4 salida).
call banco1
movlw b'00000111'
movwf PORTB
; SALIDAS UP B1
; DOWN B2
; Pulso 1 tipo P B3
; Puslo 2 tipo p B4
; Pulso 1 tipo N B5
; Pulso 2 tipo N B6
movlw b'11111110'
movwf PORTD
; ENTRADAS 50 HZ D7
; 25 HZ D6
; 16.6 Hz D5
; 15,5Hz D4
; SALIDA DE ACTIVACION D0
; ENTRADA DE ACTIVACION D1
call banco0
;Configurar la INT.
call banco1
bcf OPTION_REG,INTEDG ;flanco de bajada de la INT
call banco0
programa
movlw 00h
movwf 20h
progra1
btfss INTCON,INTF
goto progra1
bcf INTCON,INTF
call varia
call donde? ;pregunta donde va dirigido los pulsos
call disparoP ; subrutina de disparo, si rd1 es = 1 entonses dipara el tipo P si no el tipo N
call up
call down
goto progra1
;--------------------------------------------------
;Subrutina de la transmicion
;---------------------------------------------------
donde?
btfss PORTD,7
goto viente
goto pulse50
viente btfss PORTD,6
goto diesi
goto pulse20
diesi btfss PORTD,5
goto doce
goto pulse16
doce btfss PORTD,4
goto donde?
goto pulse12
goto retu
pulse50
bsf PORTD,0
call cincuentaD
bcf PORTD,0
call cincuentaD
goto retu
pulse20
bsf PORTD,0
call vienteD
bcf PORTD,0
call vienteD
goto retu
pulse16
bsf PORTD,0
call diesiseisD
bcf PORTD,0
call diesiseisD
goto retu
pulse12
bsf PORTD,0
call doceD
bcf PORTD,0
call doceD
goto retu
retu
return
;--------------------------------------------------
;Subrutina dirivacion
;---------------------------------------------------
;--------------------------------------------------
;Subrutinas de los botones UP-DOWN.
;---------------------------------------------------
up
btfss PORTB,1 ;testeo el puerto RB2 y si vale uno salto
goto saltu1
incf 20h,1 ;incremento el registro 20h
bcf STATUS,C ;corrección para no llegar a FFh, solo llego
;hasta F1h
movlw 0fh
addwf 20h,0
btfss STATUS,C
goto saltu1
movlw 0f1h
movwf 20h
saltu1
return
down
btfss PORTB,2 ;testeo el puerto RB3 y si vale uno salto
goto saltu3
decf 20h,1 ;decremento el registro 20h
bcf STATUS,C ;corrección para no llegar a 00h, sólo llego
;hasta 0Fh
movlw 0f1h
addwf 20h,0
btfss STATUS,C
goto saltu2
return
saltu2
movlw 0fh
movwf 20h
saltu3
return
;------------------------------------
;Disparo del triac: 225 useg.
;------------------------------------
;Pulso de disparo de 225 microsegundos necesarios para activar el SCR
btfss PORTD,1 ;testeo el puerto RD! y si vale uno salto
goto disparoN
goto disparoP
disparoP bsf PORTB,3
call usg225
bcf PORTB,3
call msg10
bsf PORTB,4
call usg225
bcf PORTB,4
return
disparoN
bsf PORTA,5
call usg225
bcf PORTA,5
call msg10
bsf PORTA,6
call usg225
bcf PORTA,6
return
usg225
movlw 4bh
movwf 30h
sal4
decfsz 30h,1
goto sal4
return
msg10
movlw .8 ; 1 set number of repetitions (B)
movwf PDel0 ; 1 |
PLoop1 movlw .249 ; 1 set number of repetitions (A)
movwf PDel1 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
clrwdt ; 1 cycle delay
decfsz PDel1, 1 ; 1 + (1) is the time over? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) is the time over? (B)
goto PLoop1 ; 2 no, loop
PDelL1 goto PDelL2 ; 2 cycles delay
PDelL2 clrwdt ; 1 cycle delay
return ; 2+2 Done
;-----------------------------------------------
;Retarodo 50HZ - 10ms - 25ms
;-----------------------------------------------
cincuentaD
PDelay50 movlw .6 ; 1 set number of repetitions (B)
movwf PDel050 ; 1 |
PLoop150 movlw .207 ; 1 set number of repetitions (A)
movwf PDel150 ; 1 |
PLoop250 clrwdt ; 1 clear watchdog
decfsz PDel150, 1 ; 1 + (1) is the time over? (A)
goto PLoop250 ; 2 no, loop
decfsz PDel050, 1 ; 1 + (1) is the time over? (B)
goto PLoop150 ; 2 no, loop
PDelL150 goto PDelL250 ; 2 cycles delay
PDelL250 clrwdt ; 1 cycle delay
return ; 2+2 Done
;-----------------------------------------------
;Retarodo 25HZ - 20ms
;-----------------------------------------------
vienteD
PDelay10 movlw .8 ; 1 set number of repetitions (B)
movwf PDel010 ; 1 |
PLoop110 movlw .249 ; 1 set number of repetitions (A)
movwf PDel110 ; 1 |
PLoop210 clrwdt ; 1 clear watchdog
clrwdt ; 1 cycle delay
decfsz PDel110, 1 ; 1 + (1) is the time over? (A)
goto PLoop210 ; 2 no, loop
decfsz PDel010, 1 ; 1 + (1) is the time over? (B)
goto PLoop110 ; 2 no, loop
PDelL110 goto PDelL210 ; 2 cycles delay
PDelL210 clrwdt ; 1 cycle delay
return ; 2+2 Done
;-----------------------------------------------
;Retarodo 16.6HZ - 30ms
;-----------------------------------------------
diesiseisD
PDelay15 movlw .21 ; 1 set number of repetitions (B)
movwf PDel015 ; 1 |
PLoop115 movlw .142 ; 1 set number of repetitions (A)
movwf PDel115 ; 1 |
PLoop215 clrwdt ; 1 clear watchdog
clrwdt ; 1 cycle delay
decfsz PDel115, 1 ; 1 + (1) is the time over? (A)
goto PLoop215 ; 2 no, loop
decfsz PDel015, 1 ; 1 + (1) is the time over? (B)
goto PLoop115 ; 2 no, loop
clrwdt ; 1 cycle delay
return ; 2+2 Done
;-----------------------------------------------
;Retarodo 12,5HZ - 40ms
;-----------------------------------------------
doceD
PDelay20 movlw .21 ; 1 set number of repetitions (B)
movwf PDel020 ; 1 |
PLoop120 movlw .237 ; 1 set number of repetitions (A)
movwf PDel120 ; 1 |
PLoop220 clrwdt ; 1 clear watchdog
decfsz PDel120, 1 ; 1 + (1) is the time over? (A)
goto PLoop220 ; 2 no, loop
decfsz PDel020, 1 ; 1 + (1) is the time over? (B)
goto PLoop120 ; 2 no, loop
PDelL120 goto PDelL220 ; 2 cycles delay
PDelL220 clrwdt ; 1 cycle delay
return ; 2+2 Done
;-----------------------------------------------
;Retardo variable después de la INT.
;-----------------------------------------------
;El tiempo entre que se activa la bandera INTF es de 10mseg (10.000 microsegundos)
;Si un registro (21h) lo cargo con un valor comprendido entre 01h y FFh y
;lo voy decrementando hasta llegar a cero con un retardo fijo de unos
;25 microsegundos entre medias puedo conseguir unos pocos microsegundos o
;los 10.000 microsegundos.
varia
movf 20h,0
movwf 21h
salte
call usg25
decfsz 21h,1
goto salte
return
usg25
movlw 08h
movwf 30h
sal5
decfsz 30h,1
goto sal5
return
;------------------------------------------
;Subrutinas de cambios de bancos.
;------------------------------------------
banco0
bcf STATUS,RP0
return
banco1
bsf STATUS,RP0
return
END
Adjuntos
Última edición: