Te pongo el programa anterior con unas modificaciones, le he quitado el 20% ahora arrancara al 40% despues 60, 80 y a tope, les he dado a esos pasos 250 semiciclos= 2.5 seg, para que arranque mas lento.
como cada semiciclo daba 9.999ms le he puesto un NOP para que diera los 10ms clavados ( no creo que por esto no funcionara pero un NOP no cuesta nada ponerlo),
Te he cambiado la fase R por la S para que no las tengas que cambiar en el esquema, y he invertido las fases S y T, de esto ya te comente en otros mensajes.
En el esquema puedes cortar las pistas donde pasan por debajo del condensador y con un pequeño puente las conectas a la fase ( si puedes cambiala por una de 470 ohm), y la R de 1K la sueldas de pie entre GATE y el ANODO DE LA CARGA ( la patilla del medio del TRIAC)
Para probar en vez de poner el motor, pon una bombilla de 220 en la fase R y al neutro, deberias ver que se enciende escalonadamente y aumenta de intensidad cada 2.5seg. si esto es asi prueba lo mismo para las otras dos fases, si te lo hace bien entonces conecta el motor y reza
LIST P = 12f675
INCLUDE "P12f675.INC"
__CONFIG _CPD_OFF & _CP_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT
;**CONSTANTES**
VALOR1 EQU .164 ;VALORES PARA EL RETARDO
VALOR2 EQU .1
;**VARIABLES**
REG1 EQU H'20' ;VARIABLES LOCALES DE LA SUBRUTINA DE RETARDO
REG2 EQU H'21'
REG3 EQU H'27'
REG4 EQU H'28'
AUX EQU H'22'
SEMI_PERIODOS EQU H'23'
PASOACTUAL EQU H'24'
CONTADOR EQU H'25'
COPIA_CONTADOR EQU H'26'
#DEFINE BANCO0 BCF STATUS,RP0
#DEFINE BANCO1 BSF STATUS,RP0
#DEFINE CRUCE GPIO,2
#DEFINE TRIACT GPIO,1
#DEFINE TRIACR GPIO,0
#DEFINE TRIACS GPIO,4
;**********************************VECTOR RESET*************************************
ORG 0x00
goto INIC
INIC BANCO1
MOVLW B'00000100'
MOVWF TRISIO
CLRF ANSEL
call 3FFh ;Get the cal value
movwf OSCCAL ;Calibrate
BANCO0
MOVLW B'00000111'
MOVWF CMCON
CLRF GPIO
GOTO LEER_CRUCE2
INICIO
MOVLW .100
MOVWF SEMI_PERIODOS
LEER_CRUCE1 BCF TRIACR
BCF TRIACS
BCF TRIACT
BTFSC CRUCE ;DETECTA FLANCO POSITIVO
GOTO LEER_CRUCE1
ESCERO BTFSS CRUCE
GOTO ESCERO
CALL DEMORA_2MS
CALL DEMORA_2MS
CALL DEMORA_2MS
CALL DEMORA_2MS
CICLO_1 ;para que venga aqui y lo repita 1seg
BSF TRIACR
CALL DEMORA.33
BCF TRIACR
CALL DEMORA_3MS
BSF TRIACT
CALL DEMORA.33
BCF TRIACT
CALL DEMORA_3MS
BSF TRIACS
CALL DEMORA.33
BCF TRIACS
CALL DEMORA_3MS
DECFSZ SEMI_PERIODOS
GOTO CICLO_1
LEER_CRUCE2
MOVLW .250
MOVWF SEMI_PERIODOS
BCF TRIACR
BCF TRIACS
BCF TRIACT
BTFSC CRUCE ;DETECTA FLANCO POSITIVO
GOTO LEER_CRUCE2
ESCERO2 BTFSS CRUCE
GOTO ESCERO2
CALL DEMORA_2MS
CALL DEMORA_2MS
CALL DEMORA_2MS
CICLO_2
BSF TRIACR
CALL DEMORA.33
BCF TRIACR
CALL DEMORA_3MS
BSF TRIACT
CALL DEMORA.33
BCF TRIACT
CALL DEMORA_3MS
NOP
BSF TRIACS
CALL DEMORA.33
BCF TRIACS
CALL DEMORA_3MS
DECFSZ SEMI_PERIODOS
GOTO CICLO_2
MOVLW .250
MOVWF SEMI_PERIODOS
LEER_CRUCE3 BCF TRIACR
BCF TRIACS
BCF TRIACT
BTFSC CRUCE ;DETECTA FLANCO POSITIVO
GOTO LEER_CRUCE3
ESCERO3 BTFSS CRUCE
GOTO ESCERO3
CALL DEMORA_2MS
CALL DEMORA_2MS
CICLO_3
BSF TRIACR
CALL DEMORA.33
BCF TRIACR
CALL DEMORA_3MS
BSF TRIACT
CALL DEMORA.33
BCF TRIACT
CALL DEMORA_3MS
NOP
BSF TRIACS
CALL DEMORA.33
BCF TRIACS
CALL DEMORA_3MS
DECFSZ SEMI_PERIODOS
GOTO CICLO_3
MOVLW .250
MOVWF SEMI_PERIODOS
LEER_CRUCE4 BCF TRIACR
BCF TRIACS
BCF TRIACT
BTFSC CRUCE ;DETECTA FLANCO POSITIVO
GOTO LEER_CRUCE4
ESCERO4 BTFSS CRUCE
GOTO ESCERO4
CALL DEMORA_2MS
CICLO_4
BSF TRIACR
CALL DEMORA.33
BCF TRIACR
CALL DEMORA_3MS
BSF TRIACT
CALL DEMORA.33
BCF TRIACT
CALL DEMORA_3MS
NOP
BSF TRIACS
CALL DEMORA.33
BCF TRIACS
CALL DEMORA_3MS
DECFSZ SEMI_PERIODOS
GOTO CICLO_4
ARRANCO_MAXIMA MOVLW H'13'
MOVWF GPIO
GOTO ARRANCO_MAXIMA
RETURN
DEMORA_2MS movlw .249 ; 1 set numero de repeticion
movwf REG1 ; 1 |
PLoop0 clrwdt ; 1 clear watchdog
PDelL1 goto PDelL2 ; 2 ciclos delay
PDelL2 goto PDelL3 ; 2 ciclos delay
PDelL3
decfsz REG1, 1 ; 1 + (1) es el tiempo 0 ?
goto PLoop0 ; 2 no, loop
PDelL4 goto PDelL5 ; 2 ciclos delay
PDelL5 clrwdt ; 1 ciclo delay
return ; 2+2 Fin.
DEMORA_3MS
movlw .4 ; 1 set numero de repeticion (B)
movwf REG2 ; 1 |
Loop1 movlw .186 ; 1 set numero de repeticion (A)
movwf REG3 ; 1 |
Loop2 clrwdt ; 1 clear watchdog
decfsz REG3, 1 ; 1 + (1) es el tiempo 0 ? (A)
goto Loop2 ; 2 no, loop
decfsz REG2, 1 ; 1 + (1) es el tiempo 0 ? (B)
goto Loop1 ; 2 no, loop
PDelL6 goto PDelL7 ; 2 ciclos delay
PDelL7 clrwdt ; 1 ciclo delay
return ; 2+2 Fin.
DEMORA.33 movlw .81 ; 1 set numero de repeticion
movwf REG4 ; 1 |
Loop0 clrwdt ; 1 clear watchdog
decfsz REG4, 1 ; 1 + (1) es el tiempo 0 ?
goto Loop0 ; 2 no, loop
clrwdt ; 1 ciclo delay
return ; 2+2 Fin.
END
¿Me podeis mandar el circuito de conexionado?. Me interesa el tema y os agradezco la publicación. Tener cuidado con las medidas. Hace años, sufrí un fuerte descarga estudiando el cebado de tiristores sobre carga resistiva (bombilla). Sobre inductancias es más peligroso. Las bobinas se comportan como disparadores de corriente provocando fuertes tensiones. Este fenómeno se usa en el encendido de coches de gasolina con bujías. La seguridad ante todo. Un saludo
Paspan tienes la placa en la pag. anterior y aqui pongo las modificaciones a hacer, de todos modos espera a que funcione.
Tambien te digo, igual que le dije a rghugo, que la manera de hacer esto bien es con un 16f cualquiera valdria (posiblemente el 16f84 NO,solo tiene un TIMER), poner tres detectores de cruce por 0 (preferiblemente PS2505), y asi hacerlo mas inmune a los cambios de frec. que pueda haber. Se le podrian poner unos pulsadores para encendido, cambio de sentido, y poder variarle parametros como tiempos de aceleracion, deceleracion, porcentajes en ambas rampas etc.