Вы находитесь на странице: 1из 13

Benemérita Universidad Autónoma de Puebla

Facultad de Ciencias de la Electrónica


Ingeniería Mecatrónica

Integrantes:
José Miguel Pérez Ramírez
Roberto Escobedo Hernández

Materia: Dispositivos de Potencia

Práctica 4: Motor Trifásico


I. Resumen

El uso de motores trifásicos en la industria es amplio por distintas características propias


tales como su versatilidad, economía, pocas perdidas, eficiencia y potencia.

II. Introducción

Diferentes cuestiones son las que se trabajan en la industria, voltajes pequeños en DC


controlando voltajes grandes en DC y AC. Algo de importancia es el uso de estos voltajes
para controlar los movimientos requeridos en la línea de producción de cualquier
producto, estos movimientos generalmente se logran utilizando motores trifásicos ¿por
qué este tipo de motores? Aquí algunas ventajas y/o desventajas de los motores trifásicos:
• Los motores trifásicos son más eficientes, es decir tienen menos pérdidas internas. • Los
trifásicos no necesitan bobina de arranque y por lo tanto tampoco capacitores y mucho
menos interruptores centrífugos que son comunes en los motores monofásicos. Por lo que
al ser más sencillos necesitan menos mantenimiento. • Los motores trifásicos pueden
cambiar el sentido de rotación con solo invertir dos de las tres líneas de entrada. •
Permiten diferentes tipos de conexiones con lo que se logra configurar el sistema de
arranque para reducir la corriente inicial. • En motores de la misma capacidad,
comparando con motores monofásicos, los trifásicos son mucho más pequeños en
tamaño.

III. Objetivo
Diseñar e implementar un control de paro y arranque para un motor trifásico. Utilizando 3
botones, uno para giro hacia un sentido, otro para giro al sentido contrario y un tercero
para paro. Como modo de funcionamiento se tiene que cumplir que: una vez se presiona
un botón de inicio de giro no se puede invertir el giro directamente, es decir que el otro
botón estará desactivado. La única forma en que se puede cambiar la dirección del giro es
parando el motor y posteriormente arrancarlo en sentido contrario. Para obtener una
mejor calificación decidimos aplicar control mediante el protocolo IR de Sony bajo la
norma RC5.
IV. Marco Teórico

Sensor H528

Este tipo de sensor da a recibe una señal infrarroja modulada


a 38 kHz rechazando cualquier otra fuente de luz. Esto lo
hace ideal para trabajar en condiciones de luz de día sin que
esta afecte su respuesta ante el emisor del control remoto.

Contactores GNC12

Son dispositivos electromecánicos cuyo funcionamiento es


similar al de los relevadores, cuenta con muelles
Normalmente Abiertos y Normalmente Cerrados son
especiales para su uso con corriente trifásica.

MOC3021

Son circuitos integrados que cuentan con un diodo emisor de luz y un fototriac
encapsulados en un solo empaquetado. Su funcionamiento es simple al
activarse el LED, el fototriac también se activa dejando asi pasar una
corriente y voltaje mucho mayor al que se encuentra activando el
LED quedando aislados galvánicamente, es decir, que de haber un
fallo del lado del TRIAC, el PIC quedará protegido.

2N6075AG

Son TRIACs encapsulados de tipo Transistor que sirven para el manejo de


voltajes más altos, en este caso 200 volts y hasta 20 amperes, esto mediante
una gate que puede ser activada con una corriente y voltaje bajos dejando pasar
el voltaje alto por las terminales MT1 y MT2, sin embargo en caso de haber un
fallo no existe protección en dichos empaquetados.
V. Desarrollo Práctico
V.1. Observaciones para realización

Tuvimos que investigar un poco sobre el protocolo RC5 de Sony que al estar modulado en
35KHz es de los más fáciles de decodificar. Los contactores se activan con 110 volts de
corriente alterna por lo que fácilmente podemos adaptar el circuito que utilizamos en la
práctica anterior para activarlos y a su vez, proteger el PIC de algún cortocircuito.

El PIC activaría los diodos internos del MOC por lo que un diagrama simple que encendiera
2 LEDs (1 por Contactor) sería suficiente.
VI. Desarrollo Mecánico

Asi mismo, investigamos acerca de la forma de operar los conectores para el cambio de
giro de un motor trifásico, para esto utilizamos el siguiente esquema de fuerza:
VII. Software (con pseudocódigos)
Se presenta el código del PIC, en ASM compilado en MPLAB:
; ZONA DE PRECONFIGURACIONES
list p=16F84A ; Procesador
#include <p16F84a.inc> ; Include especifico del Microchip

; PALABRA DE CONFIGURACION
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

; DEFINICION DE VARIABLES
w_temp EQU 0x0C ; Variable utilizada para guardar el contexto
status_temp EQU 0x0D ; Variable utilizada para guardar el contexto
irerror EQU 0x0E ; Variable utilizada cuando recibe posibles
errors
irtimer EQU 0x0F ; Variable utilizada para guardar el tiempo
bitlenght
ircounter EQU 0x10 ; Variable utilizada como contador de bits
ircmd EQU 0x11 ; Variable que mantenga el comando recibido
iradr EQU 0x12 ; Variable que mantenga la dirección recibido
irtemp EQU 0x13 ; Variable utilizada para calcular ircommand
de salida
delay1 EQU 0x14 ; Variable de tiempo de comparacion de
entrada
delay2 EQU 0x15 ; Variable de tiempo de entrada
CounterA EQU 0x16 ; Variable de contador de tiempoA
CounterB EQU 0x17 ; Variable de contador de tiempoB
ir EQU 0x04 ; Variable que asigna la entrada de
la Señal IR

CBLOCK 0X0C
ENDC

; FUNCIONES DE PROGRAMA
ORG 0x000 ; Reestablece el vector del
procesador
goto main ; Envia al inicio del programa goto
main
ORG 0x004 ; Ubicación vector de interrupción
movwf w_temp ; W temporal para guardar registros "viejos"
movf STATUS,w ; Mueve el registro status hacia el registro W
movwf status_temp ; STATUS temporal para guardar
registros "viejos"
movf status_temp,w ; Recupera copia de registro de status
movwf STATUS ; Reestablece el contenido pre-isr registro
status
swapf w_temp,f
swapf w_temp,w ; Reestablece el contenido de pre-isr al
registro W
retfie ; Retorna la interrupcion
init
CLRF PORTA ;Inicializamos el Puerto A y
sus configuraciones
BCF STATUS, RP1
BSF STATUS, RP0 ;Seleccionamos el Banco 1
MOVLW b'11110000' ;Valor usado en la
inicializacion
;direccion de datos
MOVWF TRISA ;Set RA<1> como
salida
MOVLW b'00000000' ;Valor usado en la
inicializacion
;direccion de datos
MOVWF TRISB ;Set Rb<7:0> como
salidas
BCF STATUS, RP0 ;Seleccionamos el
banco 0
return ;regresamos el valor
de la subrutina

read_sony
BSF irerror,0 ;Set el errorbit (después se
borrará cuando se recibe un código correcto)
BCF INTCON,GIE ;Deshabilita interrupciones
temporalmente
CLRWDT ;Limpiamos el
tiempo watchdog
BSF STATUS,RP0 ;Seleccionamos banco1
MOVLW b'10000101' ;Establece el temporizador y
prescaler
MOVWF OPTION_REG
BCF STATUS,RP0 ;Seleccionamos el banco0
BTFSC PORTA,ir ;Si se trata de un corto
sobre el señal ir dejar de leer el código de error.
GOTO end_sony
CLRF TMR0 ;Borrar temporizador para
medir la longitud startbit
sony_st1
BTFSS PORTA,ir ;Medir el startbit
GOTO sony_st1
MOVF TMR0,0 ;mueve el valor de bitlength
a irtimer
MOVWF irtimer
MOVLW d'32' ;Mide la longitude del
startbit menos de 2 ms a continua,si no es error
SUBWF irtimer,0
BTFSS STATUS,C
GOTO end_sony
MOVLW d'213' ;Si la longitud del startbit
fue es 2,6ms entonces la lectura final con código de error.
ADDWF irtimer,0 ;Porque cuando no es válido
el startbit el código ir ya no es protocolo sony
BTFSC STATUS,C ;Así startbit debe estar entre
2 ms y 2,6 ms.
GOTO end_sony
MOVLW d'7' ;Establecer ir para de recibir
7 bits de comando.
MOVWF ircounter

rd_sony_cmd
CLRF TMR0 ;Medida la primera parte de
la bitlength: Si no es entre 300 y 900µs

sony_prt1_c
BTFSC PORTA,ir ;A continuación, la salida
inmediata de la rutina con un error.
GOTO sony_prt1_c
MOVF TMR0,0
MOVWF irtimer
MOVLW d'5'
SUBWF irtimer,0
BTFSS STATUS,C
GOTO end_sony
MOVLW d'241'
ADDWF irtimer,0
BTFSC STATUS,C
GOTO end_sony
CLRF TMR0
CLRWDT ;limpiamos
el watchdog

sony_prt2_c
BTFSS PORTA,ir ;Part2 medida del comando bits y
probar si la duración es de entre 300 y 1600µs
GOTO sony_prt2_c ;Si entre estos intervalos de
prueba, si bitpart segundo es más corto o más largo que 900µs
MOVF TMR0,0
MOVWF irtimer
MOVLW d'5'
SUBWF irtimer,0
BTFSS STATUS,C
GOTO end_sony
MOVLW d'230'
ADDWF irtimer,0
BTFSC STATUS,C
GOTO end_sony
MOVLW d'241'
ADDWF irtimer,0
BTFSC STATUS,C
GOTO sony_its_1

sony_its_0
BCF STATUS,C ;si inferior a 900 µs recibido el bit es
un cero
RRF ircmd,1
GOTO nxt_sony_cmd

sony_its_1
BSF STATUS,C
RRF ircmd,1

nxt_sony_cmd
DECFSZ ircounter,1 ;comprobar si todos los bits
de comando son procesados en caso de no,recibir el próximo
GOTO rd_sony_cmd ;si es más de la longitud de
900µs recibido es un uno
BCF STATUS,C
RRF ircmd,1 ;Girar ircmd una posición
para convertirse en comando correcto
MOVLW d'5' ;ircounter
establecido para recibir 5 bits de dirección
MOVWF ircounter

rd_sony_adr
CLRF TMR0

sony_prt1_a
BTFSC PORTA,ir ;conjunto ir contar medida
primer bit de longitud inferior a 300µs o más de 900µs entonces recibir 5 bits de dirección
GOTO sony_prt1_a ;luego sale inmediatamente si es
error
MOVF TMR0,0
MOVWF irtimer
MOVLW d'5'
SUBWF irtimer,0
BTFSS STATUS,C
GOTO end_sony
MOVLW d'241'
ADDWF irtimer,0
BTFSC STATUS,C
GOTO end_sony
CLRF TMR0
CLRWDT ;limpiamos el
tiempo del watchdog

sony_prt2_a
BTFSS PORTA,ir
GOTO sony_prt2_a ;segunda medida de
longitud poco más corto que si 300µs o superior 1600µs
MOVF TMR0,0 ;luego sale si es error
MOVWF irtimer ;Si entre estos intervalos de
prueba si el bit es un uno o un cero (más corto o más largo que 900µs)
MOVLW d'5'
SUBWF irtimer,0
BTFSS STATUS,C
GOTO end_sony
MOVLW d'230'
ADDWF irtimer,0
BTFSC STATUS,C
GOTO end_sony
MOVLW d'241'
ADDWF irtimer,0
BTFSC STATUS,C
GOTO sony_its_1_a

sony_its_0_a
BCF STATUS,C ;si bitpart segundo fue más corto
que 900µs es un cero
RRF iradr,1
GOTO nxt_sony_adr

sony_its_1_a
BSF STATUS,C ;si bitpart segundo fue más larga
que la 900µs es uno
RRF iradr,1

nxt_sony_adr
DECFSZ ircounter,1 ;Comprueba si todos los bits
son procesados en caso de no, recibir el próximo
GOTO rd_sony_adr
BCF STATUS,C ;Girar tres veces el iradr a
convertirse en la dirección correcta
RRF iradr,1
BCF STATUS,C
RRF iradr,1
BCF STATUS,C
RRF iradr,1
CLRF irerror ;Porque cada bitlength se
midió correcto entre los límites no se han producido errores

end_sony
BCF INTCON,T0IF ;Borrar timer0 interrumpir
un pabellón para evitar interrupciones
BSF STATUS,RP0
MOVLW b'00000101'
MOVWF OPTION_REG
BCF STATUS,RP0
RETURN

ir_to_outp ;Comienza la seleccion de Botones


movf ircmd,W ;Guarda ircmd en irtemp
para evitar perder el código recibido
movwf irtemp

; Regla de Comparacion: *
;
*******************************************************************************************************
*********************************
; movf irtemp,W ;Checamos si el comando de IR es 0 (button
1) entonces la salidas es 1 *
; sublw d'0' ;Hace una resta comando y el numero de
codigo
*
; btfss STATUS,Z ;Hace una comparacion

*
; goto not_buttonSiguient ;si el resultado no es cero salta al siguiente(Checar la
ultima linea si es la ultima comparacion) *
; movlw b'00000001' ;Carga la salida al Puerto B

*
; xorwf PORTB,1 ;deja el dato grabado en el Puerto B

*
; ;call Tiempo ;tiempo que tarda el dato en el Puerto B

*
; ;goto reset ;limpia el puerto si deshabilitamos el puerto
deja el codigo en la salida *
; goto end_output ;si queremos que el dato se quede
encendido habilitamos esta funcion y deshabilitamos la anterior *
;

*
; goto end_output ;Si agregamos mas botones escribimos goto
not_buttonSiguiente, pero no hay mas finaliza la busqueda *
;
*******************************************************************************************************
*********************************

not_button16
movf irtemp,W ;Checamos si el comando de
IR es 16 (CH-UP) "Giro a la Derecha"
sublw d'16'
btfss STATUS,Z
goto not_button17
movlw b'00000001'
nop
nop
nop
movwf PORTB
;xorwf PORTB,1
call Tiempo
;goto reset
goto end_output

not_button17
movf irtemp,W ;Checamos si el comando de
IR es 17 (CH-DW) "Giro a la Izquierda"
sublw d'17'
btfss STATUS,Z
goto not_button21
movlw b'00000010'
nop
nop
nop
movwf PORTB
;xorwf PORTB,1
call Tiempo
;goto reset
goto end_output

not_button21
movf irtemp,W ;Checamos si el comando de
IR es 21 (Off-On) "Apagar el Motor"
sublw d'21'
btfss STATUS,Z
goto end_output
movlw b'00000000'
nop
nop
nop
movwf PORTB
;xorwf PORTB,1
call Tiempo
;goto reset
goto end_output

reset ;limpia los puertos


clrf PORTB ;PuertoB a cero
clrf PORTA ;PuertoA a cero

end_output
return ;retorna al codigo
principal

delayrout1 ;tiempo de comparacion de señal IR


movlw d'255'
movwf delay2

looping2
movlw d'255'
movwf delay1

looping1
nop
nop
decfsz delay1,1
goto looping1
decfsz delay2,1
goto looping2
return

Tiempo ;Tiempo de muestra rapido


movlw d'150'
movwf CounterA
movlw d'150'
movwf CounterB

loopTiempo
decfsz CounterB,1
goto loopTiempo
decfsz CounterA,1
goto loopTiempo
return

;************************
; Programa Principal *
;************************************************************************************************

;
main ;Codigo Principal
;
call init ;Inicializacion de variables
;
clrf PORTB ;Limpiamos PuertoB
;
clrf PORTA ;Limpiamos PuertoA
;

;
test
;
call read_sony ;Funcion que recibe la señal
IR ;
btfsc irerror,0 ;Busqueda de Errores
;
goto test ;Se queda esperando nueva
entrada ;
call ir_to_outp ;Funcion que verifica los
botones y la salida ;
call delayrout1 ;Tiempo de comparacion de
señal IR ;
goto test ;Se queda esperando nueva
entrada ;

;
END ;Fin de el programa (Idealmente Unreachable
Code) ;
VIII. Conclusiones

El uso de Motores de Corriente Trifásica es muy útil, puesto que se puede controlar el
sentido de giro de manera sencilla, el único inconveniente que encontramos fue el uso de
los sensores, pues son muy frágiles y pueden dañarse facilmente. Una vez que
conseguimos los adecuados, lo demás fue sencillo.

Вам также может понравиться