Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Pic18f452 Generador de Señales PDF
Pic18f452 Generador de Señales PDF
ESCUELASUPERIORDEINGENIERIAMECANICAYELECTRICA
UNIDADPROFESIONALADOLFOLPEZMATEOS
T E S I S
PRESENTAN:
ASESORES:
MXICO, D.F.
2010
Son tantas personas a las cuales debo parte de este triunfo, de lograr alcanzar
una de mis metas, la cual es el anhelo de todos los que soamos alguna vez
con terminar una carrera.
A mi familia: a mis padres Sofia y Arturo, a mis hermanas Yeimi y Berenice,
ellos que han estado hay durante los 23 aos que tengo de vida, compartiendo
momentos buenos y malos, momentos que hoy son recuerdos pero que sin
ellos a mi lado no significaran mucho por que han sido ellos quienes los han
hecho inolvidables y los que siempre creyeron en mi aun cuando yo no lo
hacia.
A mis amigos: dicen que los verdaderos amigos se cuentan con los dedos de
una mano y es cuando me doy cuanta de lo afortunada que soy ya que
comienzo a necesitar mi otra mano para poder contarlos, a ellos que han
estado conmigo a pesar de todo, por que me conozco y se que no soy fcil de
entender y que aun as estn aqu vindome caer y levantarme una y otra vez,
dndome una mano cuando la necesito, un hombro en el cual llorar en esos
momentos difciles y una enorme sonrisa cuando cumplo mis sueos.
Al Instituto Politcnico Nacional, esta gran institucin a quien le debo mi
formacin y a todos los profesores que la integran ya que fueron ellos los que
me ensearon lo necesario para poder desarrollarme como profesional y como
persona.
INDICE GENERAL
INTRODUCCION
Justificacin
Objetivos
Marco terico
1
1
1
1
3
4
5
5
6
7
7
8
9
11
1.5.1 Planteamiento
11
1.5.2 Diagrama de flujo
12
1.5.3 Anlisis del cdigo
15
1.5.4 Graficas de los pulsos controlados por ngulo de fase
obtenidas en la simulacin (P-SPICE)
16
1.5.5 Graficas de los pulsos controlados por ngulo de fase
obtenidas en el laboratorio
18
1.6 Circuito cerrar abrir
1.6.1 Planteamiento
1.6.2 Diagrama de flujo
1.6.3 Anlisis del cdigo
1.6.4 Graficas del circuito cerrarabrir obtenidas
en la simulacin (P-SPICE)
1.6.5 Graficas del circuito cerrar abrir obtenidas
en el laboratorio
22
22
23
25
26
28
33
34
35
36
36
2.3.1 Funcionamiento
2.3.2 Ventajas y desventajas
36
37
37
2.4.1 Planteamiento
2.4.2 Diagrama de flujo
2.4.3 Anlisis del cdigo
2.4.4 Graficas del circuito modulacin por ancho de pulso
(PWM) obtenidas en el laboratorio
37
38
40
2.4
2.5
41
42
2.5.1 Planteamiento
2.5.2 Diagrama de flujo
2.5.3 Anlisis del cdigo
2.5.4 Graficas del circuito modulacin de varios
pulsos uniformes (UPWM) obtenidas en la simulacin (P-SPICE)
2.5.5 Graficas del circuito modulacin de varios
pulsos uniformes (UPWM) obtenidas en el laboratorio
43
44
45
46
50
3.1 Introduccin
3.2 Dispositivos semicontrolados
3.2.1 El SCR
3.2.2 El TRIAC
3.3 Dispositivos totalmente controlados
3.3.1 El MOSFET
55
56
56
56
57
57
CAPITULO IV COSTOS
4.1
Costos
64
CAPITULO V CONCLUSIONES
5.1
Conclusiones
65
APENDICES
Apndice A: Diseo de la fuente de alimentacin
Apndice B: Programa Final
Apndice C: Hojas de especificaciones
BIBLIOGRAFIA
67
87
105
113
CAPITULO I
INTRODUCCIN
Justificacin
En los laboratorios de Electrnica de Potencia de enseanza a nivel
licenciatura se requieren seales de control para los circuitos de potencia que
manejan diversas cargas, estas seales en varios casos debern estar
sincronizados con la fase de alimentacin.
El sistema generador de seales para circuitos de Electrnica de Potencia,
proporciona seales sincronizadas con la fase, as como otro tipo de seales
utilizadas especficamente en circuitos de Electrnica de Potencia. Todo lo
anterior lo hace un equipo muy til en el laboratorio de Potencia para efectuar
experimentos, as como otros desarrollos en este campo
Objetivos
Objetivo general:
Disear y construir un sistema generador de seales de control para ser
utilizado en los laboratorios de Electrnica de Potencia.
Objetivos especficos:
Disear e implementar el circuito generador de pulsos sincronizados
con la lnea de alimentacin de voltaje de corriente alterna (ca)
variantes en el tiempo y para el control abrir cerrar.
Disear e implementar el circuito generador de pulsos modulados
por anchura.
Disear e implementar el circuito de interface de usuario.
-
Marco terico
Con el fin de ampliar y mejorar los mtodos aplicables en la materia de
electrnica de potencia y como una ayuda para los alumnos que toman esta
materia, se propone como objetivo principal de este trabajo, disear y construir
un generador de seales, as como comprobar su viabilidad en un entorno real.
Para ejemplificar mejor proyecto se decidi dividirlo en 2 bloques principales:
1.- Subsistema analgico
2.- Subsistema digital.
1
CAPITULO I
SUBSISTEMA DIGITAL
SUBSISTEMA ANALOGICO
Reduccin
de voltaje
de la seal
a sincronizar
Procesado
digital y control
de la duracin
de los pulsos
Detector
de cruce
por cero
Salida A
Salida B
Men
selectivo
tipo
de seal
A
L
I
M
E
N
T
A
C
I
Interface
de usuario
(Teclado)
Pantalla
A = Abrir cerrar
Control por ngulo de fase
PWM 1
UPWM 1
B = PWM 2
UPWM 2
CAPITULO I
CAPITULO I
CIRCUITO GENERADOR
DE PULSOS
VARIABLES EN ELTIEMPO
1.1 Introduccin
Los dispositivos semiconductores de potencia dependen ampliamente de la
forma en que el circuito de control excita su disparo para obtener la salida
deseada. Por consiguiente, las caractersticas del circuito de control deben
ajustarse a los requerimientos de disparo del dispositivo. La familia de tristores:
rectificadores controlados de silicio (SCR), El trodo de corriente alterna
(TRIAC), interruptor controlado en compuerta (GTO), etc. son disparados por
un pulso de corriente con un defasamiento adecuado con respecto a la seal
sinusoidal de alimentacin.
El propsito de este circuito es generar los pulsos de corriente necesarios para
el control de fase de disparo de la familia de los tristores, teniendo en cuenta
que deben estar sincronizados con la seal de alimentacin (figura 1.1)
CAPITULO I
CAPITULO I
1.2.1 Funcionamiento
El circuito toma una muestra de la lnea de alimentacin, por medio de un
transformador se puede reducir el voltaje de la lnea sin que la forma de onda
sea afectada. La seal es introducida a dos amplificadores operacionales, en
uno la seal de corriente alterna se aplica a la entrada no inversora del
amplificador, mientras que en el segundo la seal se aplica a la entrada
inversora del amplificador. La entrada restante de cada amplificador es
conectada la seal de referencia de 0volts, la cual genera un pulso en el cruce
del voltaje de suministro positivo con cero, para el caso del primer amplificador
y un pulso en el cruce del voltaje de suministro negativo con cero volts.
La salida de los amplificadores genera un pulso que es reducido en anchura
hacindolo pasar por un integrador. Este pulso se aplica a la entrada positiva
de otro amplificador. En la entrada inversora es aplicado un nivel de voltaje, de
acuerdo al nivel que se tiene en esta entrada se puede retardar el pulso el
ngulo que se desee.
Se tienen dos pulsos: uno generado en el semiciclo positivo defasado grados
y el otro generado en el semiciclo negativo defasado grados con respecto al
cruce con cero.
La compuerta OR hace que los pulsos de cada salida del amplificador se
tengan en una sola, el pulso que corresponde al semiciclo negativo puede o no
estar presente de acuerdo a la posicin de interruptor.
CAPITULO I
1.3.1 Funcionamiento
El microcontrolador elegido para esta aplicacin es uno de los ms verstiles
de los PIC: el PIC18F452, que se encuentra disponible en encapsulado del tipo
DIL40.
Normalmente el microcontrolador PIC18F452 se alimenta con 5 volts aplicados
entre los pines VDD y VSS que son, respectivamente, la alimentacin y tierra
del chip.
CAPITULO I
Circuito bsico
La manera ms simple de construir un comparador consiste en conectar un
amplificador operacional sin resistencias de realimentacin, como se ve en la
Figura 1.4. Dada la alta ganancia de tensin en lazo abierto, un voltaje de
7
CAPITULO I
Vin (min)
14
100.000
0.014mV
Lo que significa que una tensin de entrada ms positiva que +0,014mV lleva
al comparador a una saturacin positiva, y un voltaje de entrada mas negativa
que -0,014mV lleva a1 comparador a una saturacin negativa.
Las tensiones de entrada de un comparador son normalmente muy superiores
a 0.014mV. Por ello, la tensin de salida tiene dos estados, +V sat o -Vsat.
Fijndonos en el voltaje de salida, podremos decir inmediatamente si el voltaje
de entrada es mayor o menor que cero.
Un detector de cruce por cero determina la transicin de una forma de onda
(senoidal) de positiva a negativa, proporcionando un pulso que coincida
exactamente con la condicin de voltaje cero y genere un estado alto cuando
esto suceda y cuando se vuelva a repetir cambie al estado opuesto de manera
peridica.
1.4.1 El LM339
El LM339 puede ser usado para ajustar simtricamente los ngulos correctos
de una onda senoidal alrededor de cero volts mediante la incorporacin de una
pequea cantidad de retroalimentacin positiva para mejorar el cambio de los
tiempos y centrando la entrada de umbral a tierra (vase figura 1.5).
CAPITULO I
1.4.2 Simulacin
Se simulo el circuito que el fabricante del LM339 propone en sus hojas de
especificaciones (figura 1.6) con el objetivo de comprobar su funcionamiento,
utilizamos el simulador P-SPICE el cual nos da los resultados mostrados en la
figura 1.7.
CAPITULO I
VCC
VCC
VCC
5Vdc
100k
100k
5.1k
V+
IN
VOFF = 0
VAMPL = 4.25
FREQ = 60
5.1k
D1N914
12
5.1k
2 OUT
V-
OUT
LM339
0
20MEG
10k
10
CAPITULO I
Figura 1.9: (a) Circuito bsico del tristor. (b) Formas de onda del circuito
11
CAPITULO I
T2
VS
g2
RL
12
CAPITULO I
13
CAPITULO I
Inicio
Si
Si se detecta un
cambio de estado en
del detector
While
Infinito
Si
Si es un
pulso
positivo
Si
NO
Escribe en el
timer el valor de
retardo
Si
Si se detecta un
cambio de estado en
del detector
Si
Escribe en el
timer el valor de
retardo
Espera a que
finalice el conteo
del timer hasta
llegar a cero
NO
Oprimido
el botn de
salida?
Si
Salir
y regresa al
men principal
14
NO
CAPITULO I
while(Pulso_Bajo == 0)
{
while(temp != PORTDbits.RD0)
{
while(PORTBbits.RB7 == 1)
{}
15
CAPITULO I
INTCONbits.TMR0IF = 0;
WriteTimer0(retardo);
while(INTCONbits.TMR0IF == 0)
{}
PORTBbits.RB7 = 1;
Delay10TCYx(1);
PORTBbits.RB7 = 0;
temp = PORTBbits.RB7;
}
}
if(PORTBbits.RB0 == 0)
Menu();
}
1.5.4
Graficas de los pulsos controlados por ngulo de fase,
obtenidas en la simulacin (P-SPICE)
Las siguientes figuras muestran los resultados obtenidos en la simulacin. En
las figuras 1.13, 1.14 y 1.15 se observan la seal de la lnea de entrada y los
pulsos que genera el sistema en el semiciclo positivo con un pulso.
16
CAPITULO I
17
CAPITULO I
1.5.5
Graficas de los pulsos controlados por ngulo de fase
obtenidas en laboratorio
Las siguientes figuras muestran los resultados obtenidos en el laboratorio, en la
figura 1.16 se observan la seal de la lnea de entrada y los pulsos que genera
el sistema tanto en el semiciclo positivo como en el negativo sin
desplazamiento.
18
CAPITULO I
19
CAPITULO I
20
CAPITULO I
21
CAPITULO I
g1
T1
VS
RL
22
CAPITULO I
23
CAPITULO I
Inicio
While
infinito
Si
Asigna a n = 8-m
Asigna j=0
Salir
NO
Si
NO
Si
NO
Si se detecta un
cambio de estado en
del detector
i=j
si es
oprimido el
botn de
salida
Si
Asigna un nivel alto a la
salida RB7 durante cierto
tiempo (ancho de pulso)
NO
Si
Si se detecta un
cambio de estado en
del detector
NO
24
Si
CAPITULO I
CAPITULO I
Men();
}
}
Figura 1.27: m = 1
Figura 1.28: m = 2
26
CAPITULO I
Figura 1.29: m = 3
Figura 1.30: m = 4
Figura 1.31: m = 5
27
CAPITULO I
Figura 1.32: m = 6
Figura 1.33: m = 7
28
CAPITULO I
Figura 1.34: m = 1
Figura 1.35: m = 2
29
CAPITULO I
Figura 1.36: m = 3
Figura 1.37: m = 4
30
CAPITULO I
Figura 1.38: m = 5
Figura 1.39: m = 6
31
CAPITULO I
Figura 1.40: m = 7
32
CAPITULO II
CAPITULO II
CIRCUITO GENERADOR
DE PULSOS
MODULADOS POR ANCHURA
2.1
Introduccin
, es el ciclo de trabajo
Donde:
T, es el perodo de la funcin
, es el tiempo en que la funcin es positiva (ancho del pulso)
33
CAPITULO II
34
CAPITULO II
2.2.1 Funcionamiento
El circuito mostrado en la figura 2.2 los amplificadores U1, U2 y U3 se
encargan de generar la onda triangular, por medio de la entrada no inversora
del amplificador U3 se puede variar la frecuencia de la seal triangular. El
amplificador operacional U4 funciona como comparador en donde en su
terminal no inversora entra la seal triangular, mientras que en la terminal
inversora entra la seal que proviene de un nivel de referencia de voltaje que
se puede variar para obtener un uso a la salida con duracin tambin variable.
El MOSFET conectado a la salida proporciona la potencia necesaria para
alimentar a la carga.
Se puede implementar un modulador por ancho de pulso por medio del C.I.
555, el circuito se basa en un potencimetro y dos diodos. La carga y descarga
se realiza de manera independiente, pudiendo as cambiar el ancho de pulso
manteniendo la frecuencia fija.
35
CAPITULO II
2.3
Circuito generador de pulsos modulados por anchura
utilizando un microcontrolador
Por medio de un microcontrolador se pueden generar los pulsos modulados por
anchura haciendo uso de las funciones de Temporizacin y las funciones de
retardos (ver figura 2.3).
2.3.1 Funcionamiento
El microcontrolador dispone de rutinas de retardo que son tiles para procesos
que no un estricto control de tiempos. Otro procedimiento ms eficaz y preciso
consiste en la utilizacin de un timer.
Un timer se implementa por medio de un contador que determina el tiempo
preciso entre el momento en que el valor es cargado y el instante en el que se
produce su desbordamiento. Un timer tpico se describe de manera simplificada
en la figura 2.4. Consiste en un contador ascendente (tambin podra ser
descendente) que, una vez inicializado con un valor, su contenido se
incrementa con cada impulso hasta llegar a su valor mximo, desbordando y
volviendo a comenzar de cero.
CAPITULO II
216 1
2.4.1 Planteamiento
En el control de modulacin por ancho de un solo pulso slo hay un pulso por
cada medio ciclo, y se hace variar su ancho para controlar el voltaje de salida.
La figura 2.5 muestra la generacin de las dos seales de control
proporcionadas por el generador y el voltaje de salida al ser aplicados a un
puente inversor completo.
37
CAPITULO II
2
2
2
2
12
2
VS d
VS
4VS
n
sen
senn t
2
1,3,5,... n
Debido a la simetra del voltaje de salida respecto al eje x, las armnicas pares
(para n = 2, 4, 6) estn ausentes.
38
CAPITULO II
Inicio
Inicializa variables de
tiempo alto y tiempo
bajo
While
infinito
Lee el tiempo
alto y el tiempo
bajo
Espera a que
finalice el
conteo del timer
hasta llegar a
cero
Si
Limpia bandera de
desbordamiento
Y
Desactiva el puerto RB7
ponindolo en bajo durante
el tiempo en bajo
Espera a que
finalice el
conteo del timer
hasta llegar a
cero
Si
Activa el puerto RB6
con 1 durante el
tiempo alto
Salir
y regresa al
men principal
Espera a que
finalice el
conteo del timer
hasta llegar a
cero
NO
Si
Limpia bandera de
desbordamiento Y
Desactiva el puerto RB6
ponindolo en bajo durante el
tiempo en bajo
Espera a que
finalice el
conteo del
timer hasta
llegar a cero
Si
Oprimido
el botn de
salida?
39
NO
CAPITULO II
216 1
Temporizacin
TCM Prescaler
10 s
1 s 1
65525
7
mnimo tiempo alto
216 1
Temporizacin
TCM Prescaler
8320 s
1 s 1
57215
8
mximo tiempo alto
Cdigo 3
void Cto_3()
{
Pantalla_Cto3();
tbajo = 57217;
talto = 65525;
while(1)
{
INTCONbits.TMR0IF = 0;
Desplazamiento_3();
PORTBbits.RB7 = 1;
WriteTimer0(talto);
while(INTCONbits.TMR0IF == 0)
{}
INTCONbits.TMR0IF = 0;
PORTBbits.RB7 = 0;
WriteTimer0(tbajo);
CAPITULO II
while(INTCONbits.TMR0IF == 0)
{}
INTCONbits.TMR0IF = 0;
PORTBbits.RB6 = 1;
WriteTimer0(talto);
while(INTCONbits.TMR0IF == 0)
{}
INTCONbits.TMR0IF = 0;
PORTBbits.RB6 = 0;
WriteTimer0(tbajo);
while(INTCONbits.TMR0IF == 0)
de RB7
{}
if(PORTBbits.RB0 == 0)
Men();
RB0
}
}
41
CAPITULO II
42
CAPITULO II
2.5.1 Planteamiento
Como puede observarse en la figura 2.7 existe una seal de referencia que
establece la frecuencia de salida f O , y la frecuencia de la portadora f C
determinada por la cantidad de pulsos p por cada medio ciclo. El ndice de
modulacin controla el voltaje. La cantidad de pulsos por medio ciclo se
determina con la ecuacin 9:
fC
2 fO
p
Donde m f
mf
Si
es el ancho de cada pulso, el voltaje rms de salida se calcula con la
ecuacin 10:
VO
2p
2
1
p
VS d
VS
10
CAPITULO II
vO t
Bn senn t
11
n 1,3,5,...
Bn
m
4VS
n
sen
senn
4
1 n
3
4
senn
3
4
12
0 , y las
44
CAPITULO II
Inicio
Salir y regresa
al men principal
While
infinito
Si
Oprimido el botn
de salida?
Asigna j=0
n=3
NO
NO
For i=0;i<n;i++
For i=0;i<n;i++
Si
Si
Espera a que
finalice el conteo
del timer hasta
llegar a cero
Espera a que
finalice el conteo
del timer hasta
llegar a cero
Si
Si
Espera a que
finalice el conteo
del timer hasta
llegar a cero
Espera a que
finalice el conteo
del timer hasta
llegar a cero
Si
Si
45
CAPITULO II
Cdigo 4
void Cto_4()
{
Pantalla_Cto4();
LCD
n = 3;
while(1)
{
Desplazamiento_4();
for(i=0; i<n; i++)
{
PORTBbits.RB7 = 1;
WriteTimer0(talto);
while(INTCONbits.TMR0IF == 0)
{}
INTCONbits.TMR0IF = 0;
PORTBbits.RB7 = 0;
WriteTimer0(tbajo);
while(INTCONbits.TMR0IF == 0)
{}
INTCONbits.TMR0IF = 0;
pulsos en RB6
}
for(i=0; i<n; i++)
{
PORTBbits.RB6 = 1;
WriteTimer0(talto);
while(INTCONbits.TMR0IF == 0)
{}
INTCONbits.TMR0IF = 0;
PORTBbits.RB6 = 0;
WriteTimer0(tbajo);
while(INTCONbits.TMR0IF == 0)
{}
duracin
INTCONbits.TMR0IF = 0;
RB7
}
if(PORTBbits.RB0 == 0)
Menu();
}
}
46
CAPITULO II
Las figuras 2.15 a 2.17 muestran los resultados obtenidos en las simulaciones
para un UPWM con los valores ms relevantes de ancho de pulso.
47
CAPITULO II
Las figuras 2.18 a 2.20 muestran los resultados obtenidos para un UPWM con
7 pulsos por semiciclo y diferentes anchos de pulso, puede verse que la
frecuencia debe de ser constante (60Hz).
48
CAPITULO II
49
CAPITULO II
50
CAPITULO II
Las figuras 2.24 a 2.26 muestran el generador UPWM con 5 pulsos. La seal
tiene una frecuencia de 60Hz, pero el osciloscopio muestra la frecuencia de
repeticin entre cada pulso del semiciclo.
51
CAPITULO II
Finalmente las figuras 2.27 a 2.29 muestran el UPWM con 7 pulsos y los
valores de ancho de pulso manejados.
52
CAPITULO II
53
CAPITULO II
54
CAPITULO III
CAPITULO III
APLICACIONES
3.1
INTRODUCCION
Diodos de Potencia
Un diodo de potencia puede soportar tensiones inversas elevadas. Si se supera
el valor de voltaje de ruptura especificado por el fabricante, el diodo puede
llegar a destruirse por excesiva circulacin de corriente inversa y en definitiva,
por excesiva disipacin de potencia.
55
CAPITULO III
3.2
Dispositivos semicontrolados
3.2.1 El SCR.
Un rectificador controlado de silicio (SCR) es un dispositivo de tres terminales
usado para controlar corrientes altas para una carga.
El smbolo esquemtico del SCR se presenta en la figura 3.1.
3.2.2 El TRIAC
El TRIAC se asemeja a dos SCR conectados en paralelo-inverso. El TRIAC
puede encenderse mediante un pulso de corriente de compuerta y no requiere
voltaje de ruptura para iniciar la conduccin. El TRIAC es capaz de conducir
corriente
en cualquier direccin
cuando se le dispara a encendido
dependiendo de la polaridad de sus terminales nodo y ctodo.
As como el SCR, los TRIAC tambin se usan para controlar potencia promedio
en una carga mediante el mtodo de control de fase.
56
CAPITULO III
3.3
3.3.1 El MOSFET
Los MOSFET son transistores controlados por voltaje. Ello de debe al
aislamiento (xido de Silicio) de la puerta respecto al resto del dispositivo.
Existen dos tipos bsicos de MOSFET, los de canal n y los de canal p, si bien
en Electrnica de Potencia los ms comunes son los primeros, por presentar
menores prdidas y mayor velocidad de conmutacin, debido a la mayor
movilidad de los electrones con relacin a los agujeros.
La familia de controladores de MOSFET proporciona seguridad, fcil uso y
soluciones eficientes para la mayora de las aplicaciones que demandan
controles de MOSFETs y IGBTs. Estos dispositivos pueden ser usados para el
control de cargas capacitivas, resistivas e inductivas debido a que soportan
picos de corriente altos, tienen tiempos de conmutacin rpidos y baja
impedancia. Los niveles de entrada de voltaje TTL o CMOS se pueden usar
para generar los niveles de voltaje necesarios a la salida.
Los controladores de MOSFET son totalmente operativos con niveles de voltaje
de alimentacin de hasta 30volts, estn disponibles en una gran variedad de
rangos de temperatura, varias configuraciones (simples, dobles, cudruples) y
con la opcin de salida invertida o no invertida. Disponen de circuitos de
proteccin interna contra descargas electrostticas y condiciones de bloqueo.
Estos productos son ideales para todas las aplicaciones que utilicen grandes
MOSFETs o IGBTs tales como: fuentes de alimentacin conmutadas, control
de motores, amplificadores conmutados clase-D, equipos de test automticos,
sistemas de automocin, control de transformador de pulsos. Tambin se
pueden utilizar en aplicaciones con transductores piezoelctricos, cables
coaxiales, rels, solenoides, etc.
57
CAPITULO III
de
voltaje
por
tasa
de
400Volts
5V/s
para el 2N7063
58
CAPITULO III
59
CAPITULO III
3.5
Operacin:
Como se haba mencionado los MOSFET son dispositivos que pueden ser
usados para el control de cargas, para este caso como un interruptor.
En la figura 3.6 se muestra la aplicacin que se le pueden dar al generador de
pulsos en el modo de PWM. En la figura 3.7 se muestra el empleo de un
comparador (LM339) y un transistor los cuales nos proporcionan un aislamiento
y una adecuacin para no daar as al generador. El aislamiento es necesario
60
CAPITULO III
61
CAPITULO III
Figura 3.7: Etapa de aislamiento y adecuacin de voltaje.
Figura 3.8: Formas de onda de tensin en la carga (foco) del inversor en puente completo
controlado por cancelacin de tensin (modulacin por onda casi-cuadrada), ancho del pulso
de control al 15%.
62
CAPITULO III
Figura 3.9: Formas de onda de tensin en la carga (foco) del inversor en puente completo
controlado por cancelacin de tensin (modulacin por onda casi-cuadrada) ancho del pulso de
control al 50%.
Figura 3.10: Formas de onda de tensin en la carga (foco) del inversor en puente completo
controlado por cancelacin de tensin (modulacin por onda casi-cuadrada) ancho del pulso de
control al 90%.
63
CAPITULO IV
CAPITULO IV
COSTOS
Costos de construccin del generador
A continuacin se presenta el costo total de los materiales empleados en la
construccin del generador.
64
CAPITULO V
CAPITULO V
CONCLUSIONES
6.1
Conclusiones
65
CAPITULO V
El manejo del generador se realizo con pocos botones, hacindolo muy fcil de
utilizar, adems de incorporar un LCD que despliega la informacin de cada
seal.
Dos de los primeros pulsos estn sincronizados con la lnea y tienen una
duracin en alto de 10s en cada semiciclo, tiempo suficiente para activar la
compuerta del TRIC y del SCR. Los otros dos son pulsos modulados por
anchura PWM y UPWM, y oscilan a una frecuencia de 60Hz, que es la
frecuencia de lnea, lo cual permite realizar aplicaciones para manejar aparatos
de corriente alterna. Tambin fue necesario disear una fuente de alimentacin
que se adecuara a las necesidades de dicho sistema ya que se tenan que
cumplir caractersticas especficas para que el sistema funcionara
correctamente.
66
APENDICE A
APENDICE A
DISEO DE LA FUENTE
DE ALIMENTACIN
Eleccin de la fuente de alimentacin
La fuente de alimentacin es un elemento importante para el generador ya que
es el que va a alimentar el sistema es por eso que en este apndice se
muestra como se construyo dicha fuente desde el diseo del transformador
hasta la fuente misma.
67
APENDICE A
Wsec
Wsecn Watts
En donde:
Wsec
Wseci
Vsec1 =
Voltios
Isec1 =
Amperes
2do. secundario
Vsec2 =
Voltios
Isec2 =
Amperes
Wsec
Wsec1 Wsec2
68
APENDICE A
Wpri
1.2 12
14.4 Watts
Wr
37 Watts
DATO
VALOR
UNIDAD
ACLARACIN
COMENTARIO
Dato. Potencia real que se quiere
obtener del transformador
Dato. De la lnea de alimentacin
Dato. Tensin nominal de
alimentacin alternativa
Dato. Primera tensin secundaria
Wr =
37
Watts
Potencia eficaz
F=
60
Hz
Frecuencia de trabajo
Vpri =
120
Volts
Vsec1 =
Volts
Vsec2 =
Volts
Isec1 =
Ampers
Isec2 =
Ampers
69
APENDICE A
Notas
ptimo
Unidad
Criterios de clculo
[cm ]
Flujo mximo
10000
Gauss
Densidad admisible
A/mm
Clculo de la Seccin
del ncleo de hierro
[cm ]
Clculos
6.32139
cm
Redondeos
cm
Tipo servicio
50 a 60 Hz
Hierro comn
10000
13000
Intermitente
Contino
Hierro calidad
13000
15000
Se explica que las cifras para servicio intermitente sean menores porque se
trata de reducir las prdidas en el hierro para aumentar las de cobre. Para
frecuencias menores (25 Hz) los valores se refuerzan en un 10%.
Tratado de Electricidad, Tomo II, 7ma. Edicin, Pg. 294, Francisco L. Singer
Tabla A.1: Flujo de induccin mximo.
Tipo trafo
Bobinado a aire
Bao de aceite
Bao de agua
Aceite forzado
Mejor
Admisible
2
2.5
3
3.5
4
D = 2 A/mm2
70
Sh = 6 cm2
APENDICE A
Variable
Valor
Unidad
2
Sh =
cm
W=
37
Watts
D=
A/mm
B = 11000 Gauss
f=
60
Hz
W/Kg
Detalle
Tablas vinculadas
Frecuencia de clculo
Prdidas en el hierro
supuestas
Chapa Tipo
Silicio [%]
Espesor
[mm]
Prdidas en
el hierro
[W/Kg]
0,5 a 0,8
0,5 a 1
3,6 a 8
II
0,8 a 1,2
0.5
III
2,4 a 3,0
0.5
IV
3,5 a 4,5
0,35 a 0,5
1 a 1,7
Aplicaciones
Para uso intermitente de mquinas
y transformadores elctricos.
Para uso intermitente de
transformadores elctricos.
Para uso normal, servicio permanente
de transformadores elctricos.
Uso normal, servicio permanente de
grandes transformadores.
71
APENDICE A
Chapa
Adoptada
111
Ancho real
de la
rama
central
del ncleo
Ancho real
de la
ventana de
conductores
a [mm]
25.4
br [mm]
12.7
Alto real
de la ventana
de
conductores
Ancho real
de la
rama superior
e inferior
del ncleo
Altura de apilamiento
para cumplir
con la seccin
Sh reclamada,
mediante clculos
previos,
para el ncleo
cr [mm]
33.1
dr [mm]
12.7
h = Sh / a
[mm]
23.622
APENDICE A
73
APENDICE A
Carrete
Adoptado
111
ar [mm]
hr [mm]
26
26
Detalle
constructivo
indicar al
proveedor
0
Sr = (ar)(hr) [cm ]
6.76
de donde deducimos
Nev
N
E
2
2
m x
Volts
Espiras
Maxwell
Hz
B S r , y cuando B esta en
N B S f 10
2 107
[espiras/volts]
2 B Sr f
74
APENDICE A
N ev
225 105
[espiras/volts]
B Sr f
Nx
Nev Vx [Espiras]
donde:
Vx = Tensin total en se bobinado.
Primario
Secundario
Np
Nev Vp
Ns 1
Ns 2
597.4824
espiras
Nev Vs 1
44.81118
espiras
Nev Vs 2
14.93706
espiras
75
APENDICE A
7
1.3
10
1.25
15
1.2
68
1.1
75
1.09
100
1.08
120
1.07
180
1.06
250
1.05
700
1.03
1000
1.025
Revista Electro Gremio, Diciembre de 1990, Pg. 15
Tabla A.6: Perdidas en el cobre
Np 1r
k c Np l
746.853
espiras
Secundario
Ns 1r
k c Ns 1
56.013975
espiras
Ns 2r
k c Ns 2
18.671325
espiras
76
APENDICE A
D=2
Dr = 1.5 A/mm2
y adoptamos
Ix
Variable
Ix
mm 2
D
S cx
Unidad
Wx = Watts
Vx = Voltios
cx
S cx
mm
Detalle
Potencia en los arrollamientos primarios
Tensin en los arrollamientos primarios
x=?
p
(primario)
s
(secundario)
subndice
I x Ampers
S cx mm 2
subdivisin
de los
bobinados
Corrientes calculadas en el
primario. Las corrientes en el
secundario son datos
Ip1
Is1
Is 2
0.308333
1
1
Scp1
Scs1
Scs2
0.205555
0.666666
0.666666
cx
mm
cp1
cs1
cs 2
0.51
0.92
0.92
77
APENDICE A
78
APENDICE A
79
APENDICE A
De dichas tablas obtenemos los siguientes valores que son los que vamos a
utilizar:
Con lectura automtica
de la tabla [mm]
cp1 0.5
cs1 0.92
cs 2 0.92
Peso
[g/Km]
Longitud
[m/Kg]
Resistencia
[ohm/m]
1745.5474
5655.5736
5655.5736
57.2886
17.6817
17.6817
0.08780769
0.02710114
0.02710114
Diseo de la fuente
80
APENDICE A
Figura A.8: Relacin de voltaje pico aplicado con el voltaje de salida en circuitos de media
onda con filtro capacitivo
Figura A.9. Relacin de voltaje pico aplicado con el voltaje de salida en circuitos
de onda completa con filtro capacitivo
81
APENDICE A
82
APENDICE A
Corriente transitoria
El capacitor de filtro permite desarrollar una corriente transitoria grande, debido
a que la fuga de inductancia en la reactancia del transformador es muy
pequea. La corriente transitoria instantnea mxima es aproximadamente
VM/RS y el capacitor se carga con una constante de tiempo = RSC1. Como
una aproximacin checar, que la corriente transitoria no daara al diodo si
VM/RS es menor que la corriente especificada para el diodo IFSM y si es
menor que 8.3 ms. Es prudente que RS sea tan grande como sea posible y no
perseguir una regulacin de voltaje estricta; por lo tanto no solo se reducirn
los transitorios sino que las especificaciones para el transformador y el
rectificador sern ms cercanas a los requerimientos para la fuente de CD.
Procedimiento de diseo
A) Del circuito regulador, conocemos:
-
83
APENDICE A
B)
De la figura A.11, podemos determinar un rango de valores
mnimos del capacitor para obtener una atenuacin de ripple suficiente.
Primero determinamos rf.
V ripple ( pp )
rf
X 100
2 2VC (CD )
Podemos encontrar un rango para CRL en la figura A.11.
C) A continuacin, determinamos el rango de RS/RL de la figura A.8 o
A.9 usando VC(CD) y los valores para CRL encontrados en la parte B). Si el
rango de valores de CRL determinados inicialmente de la figura A.11 son
arriba de 10, RS/RL se puede encontrar en las figuras A.8 o A.9 usando el
valor ms pequeo de CRL. De lo contrario, pueden ser necesarias algunas
iteraciones de las figuras A.8, A.9 y B.11 antes de que se pueda encontrar una
solucin exacta para RS/RL y CRL para una valor dado de rf y VC(DC)/Vm.
D) Una vez que se encuentra CRL, se puede determinar el valor del
capacitor de filtro (C) de:
C
2 (
CR L
VC (CD )
Io
84
APENDICE A
=
=
=
=
=
6V
0.5V
9V
0.5A
60Hz
B) Usando la ecuacin
rf
Vripple ( pp )
2 2VC (CD )
0.5
X 100%
2 2(5)
X 100%
7.21%
VC (CD )
Vm
Rs
5
0.5555 55.55%
9
Rs
35 % o
Rl
(0.35) RL
0.35
85
VC (CD )
IO
1.75
APENDICE A
C
2 f
CR L
VC (CD )
7
2 (60)(5)
3713
Io
86
APENDICE B
APENDICE B
PROGRAMA FINAL
Este es el cdigo final, es decir este cdigo contiene las cuatro partes de los
cdigos que se vieron en los captulos 2 y 3 (Pulsos controlados por ngulo de
fase, Circuito cerrar abrir, Modulacin por ancho de pulso (PWM) y
Modulacin de varios pulsos uniformes (UPWM), dichos cdigos se anexaron
en un men el cual sirve para que el usuario pueda interactuar con el
generador usando unos botones que le permitirn elegir el tipo de pulso con el
que se quiera trabajar (ver imagen B.1).
// Bibliotecas utilizadas
#include <p18f452.h>
#include <delays.h>
#include <timers.h>
#include <LCD40X4.h>
void Configura_Timer0(void);
void BCD_ASCCII(unsigned long int);
void Despliega_Valores1(void);
void Despliega_Valores3(void);
void Despliega_Valores4(void);
// Prototipos de funciones
87
APENDICE B
void Desplazamiento_1(void);
void Desplazamiento_2(void);
void Desplazamiento_3(void);
void Desplazamiento_4(void);
void Pantalla_Seleccion(void);
void Menu(void);
void Pantalla_Cto1(void);
void Pantalla_Cto2(void);
void Pantalla_Cto3(void);
void Pantalla_Cto4(void);
void Cto_1(void);
void Cto_2(void);
void Cto_3(void);
void Cto_4(void);
unsigned long int tbajo, talto, retardo, resultado, grados;
static unsigned char u1, d1, c1, m1,
u2, d2, c2, m2;
int Pulso_Bajo, temp, opcion;
int i, j, m, n;
rom char
Cto1[14] = {'A','N','G','U','L','O',' ','D','E',' ', 'F','A','S','E'},
Cto2[12] = {'C','E','R','R','A','R','-','A','B','R','I','R'},
Cto3[11] = {'C','O','N','T','R','O','L',' ','P','W','M'},
Cto4[12] = {'C','O','N','T','R','O','L',' ','U','P','W','M'},
Op[17] = {'S','E','L','E','C','C','I','O','N','E',' ','O','P','C','I','O','N'},
Arriba[16] = {'M','O','V','E','R',' ','A','R','R','I','B','A',' ',' ',' ','>'},
Abajo[16] = {'M','O','V','E','R',' ','A','B','A','J','O',' ',' ',' ',' ','>'},
Selec[16] = {'S','E','L','E','C','C','I','O','N','A','R',' ',' ',' ',' ','>'},
Ret_ms[15] = {'R','E','T','A','R','D','O',' ',' ','0','.','0',' ','m','s'},
Ret_g[14] = {'R','E','T','A','R','D','O',' ',' ','0','.','0',' ',0xDF},
Ciclo[18] = {'P','U','L','S','O','S',' ','P','O','R',' ','C','I','C','L','O',' ','1'},
Regresar[13] = {'R','E','G','R','E','S','A','R',' ',' ', ' ',' ','>'},
Izquierda[17] = {'M','O','V','E','R',' ','I','Z','Q','U','I','E','R','D','A',' ','>'},
Derecha[16] = {'M','O','V','E','R',' ','D','E','R','E','C','H','A',' ',' ','>'},
N_Pulsos[13] = {'1','/','2',' ','P','U','L','S','O','S',' ',' ','>'},
Pulsosm[20] = {'C','I','C','L','O','S',' ','C','O','N',' ','P','U','L','S','O',' ','m','=','1'},
Pulsosn[20] = {'C','I','C','L','O','S',' ','S','I','N',' ','P','U','L','S','O',' ','N','=','7'},
Aumentar[15] = {'A','U','M','E','N','T','A','R',' ','m',' ',' ',' ',' ','>'},
Disminuir[15] = {'D','I','S','M','I','N','U','I','R',' ','m',' ',' ',' ','>'},
Ancho[14] = {'A','N','C','H','O',' ','D','E',' ','P','U','L','S','O'},
A_Ancho[16] = {'A','U','M','E','N','T','A','R',' ','A','N','C','H','O',' ','>'},
D_Ancho[17] = {'D','I','S','M','I','N','U','I','R',' ','A','N','C','H','O',' ','>'},
Pulsos[18] = {'P','U','L','S','O','S',' ','S','E','M','I','C','I','C','L','O',' ','3' },
Cambiar[20] = {'C','A','M','B','I','A','R',' ','P','U','L','S','O','S',' ','3','/','5','/','7'},
ms[6] = {'0','.','0',' ','m','s'},
grad[4] = {'0','.','0',' '};
void main(void)
88
APENDICE B
{
TRISB = 0B00011111;
TRISC = 0B00000000;
Configura_Timer0();
Inicializa_LCD();
Menu();
}
// Configuracion de
//entradas y salidas
// Configuracin del timer 0
// Inicializa el LCD
void Menu()
{
Pantalla_Seleccion();
// Llamada a funcin, despliega
en el LCD
opcion = 1;
Comando1_LCD(DDRAM_L1 + 16);
Dato1_LCD(0x7F);
while(1)
{
while(PORTBbits.RB0 == 1 ||
// Detecta activacion de botones de control
PORTBbits.RB1 == 1 ||
PORTBbits.RB2 == 1
)
{
if(PORTBbits.RB1 == 1 && opcion < 4)
// Incremeta el valor de
opcion
{
while(PORTBbits.RB1 == 1)
{}
opcion++;
}
if(PORTBbits.RB2 == 1 && opcion > 1)
// Decrementa el valor de
opcion
{
while(PORTBbits.RB2 == 1)
{}
opcion--;
}
Comando1_LCD(DDRAM_L1 + 16);
// Fija el despliegue de flechas
if(opcion == 1)
//indicadoras en el LCD
Dato1_LCD(0x7F);
else
Dato1_LCD(' ');
Comando1_LCD(DDRAM_L2 + 16);
if(opcion == 2)
Dato1_LCD(0x7F);
else
Dato1_LCD(' ');
Comando2_LCD(DDRAM_L1 + 16);
if(opcion == 3)
Dato2_LCD(0x7F);
else
Dato2_LCD(' ');
89
APENDICE B
Comando2_LCD(DDRAM_L2 + 16);
if(opcion == 4)
Dato2_LCD(0x7F);
else
Dato2_LCD(' ');
if(PORTBbits.RB0 == 1)
{
while(PORTBbits.RB0 == 1)
{}
if(opcion == 1)
Cto_1();
if(opcion == 2)
Cto_2();
if(opcion == 3)
Cto_3();
if(opcion == 4)
Cto_4();
}
}
}
}
void Cto_1()
{
Pantalla_Cto1();
// Llamada a funcin, despliega en el LCD
Pulso_Bajo = 0;
// Pulso bajo encendido
temp = PORTBbits.RB4; // RB4 // entrada detector de cruce por cero
retardo = 65535;
// tiempo 0 de retardo por omisin
while(1)
{
while(Pulso_Bajo)
// Pasa pulso en pulso alto
y bajo
{
Desplazamiento_1();
// Llamada a la funcin desplazamiento
while(temp != PORTBbits.RB4)
// Cambio de estado del detector
{
INTCONbits.TMR0IF = 0;
WriteTimer0(retardo);
// Escribe en el timer0 el valor de retardo
while(INTCONbits.TMR0IF == 0)
// Espera a que finalice el conteo
{}
PORTBbits.RB7 = 1;
// La salida RB7 pasa a nivel alto
Delay10TCYx(1);
// Ancho de pulso 10 microsegundos
PORTBbits.RB7 = 0;
// La salida RB7 pasa a nivel bajo
temp = PORTBbits.RB4;
// Asigna el valor actual de RB7 para
}
//esperar el siguiente cambio de estado
if(PORTBbits.RB3 == 1)
// Regresa al men cuando se oprime RB3
Menu();
}
while(Pulso_Bajo == 0)
APENDICE B
{
Desplazamiento_1();
while(temp != PORTBbits.RB4)
// Cambio de estado del detector
{
while(PORTBbits.RB4 == 0)
// Solo pasan los semiciclos positivos
{}
INTCONbits.TMR0IF = 0;
WriteTimer0(retardo);
while(INTCONbits.TMR0IF == 0)
{}
PORTBbits.RB7 = 1;
Delay10TCYx(1);
PORTBbits.RB7 = 0;
temp = PORTBbits.RB4;
}
if(PORTBbits.RB3 == 1)
// Regresa al men cuando se oprime RB3
Menu();
}
}
}
void Cto_2()
{
Pantalla_Cto2();
// Llamada a funcin, despliega en el LCD
m = 1;
// Asigna por omisin pulsos en 1 ciclo
while(1)
{
Desplazamiento_2();
// Llama a la funcin que lee m
n = 8 - m;
// Asigna a n el valor 8 - n
j = 0;
// Asigna a j el valor 0 para empezar el conteo
while(j<(m*2))
// Ciclo de pulsos activos m
{
while(temp != PORTBbits.RB4)
// Cambio de estado
{
PORTBbits.RB7 = 1;
// Se activa RB7
Delay10TCYx(5);
// Ancho de pulso 10 microsegundos
PORTBbits.RB7 = 0;
// Se desactiva RB7
temp = PORTBbits.RB4;
// Asigna el valor actual de RB4 para
j++;
//esperar el siguiente cambio de estado
}
// Incrementa el contador
}
i=j;
while(i<16)
// Cuenta desde pulsos altos
hasta terminar los 8 ciclos
while(temp != PORTBbits.RB4)
// Cambio de estado
{
temp = PORTBbits.RB4;
//Asigna el valor actual de RB7 para
i++;
//esperar el siguiente cambio de estado
}
//pero no manda pulso
if(PORTBbits.RB3 == 1)
// Regresa al men cuando se oprime RB0
91
APENDICE B
Menu();
}
}
void Cto_3()
{
Pantalla_Cto3();
// Llamada a funcin, despliega en el LCD
tbajo = 57217;
//8318 us, mximo tiempo bajo
talto = 65525;
//10 us, mnimo tiempo alto
while(1)
{
INTCONbits.TMR0IF = 0;
Desplazamiento_3();
// Lee el tiempo alto y bajo del pulso
PORTBbits.RB7 = 1;
// Activa el pulso en RB7
WriteTimer0(talto);
//con duracin de tiempo alto
while(INTCONbits.TMR0IF == 0)
// Espera a que finalice el conteo
{}
INTCONbits.TMR0IF = 0;
// Limpia la bandera de desbordamiento
PORTBbits.RB7 = 0;
// Desactiva el pulso en RB7
WriteTimer0(tbajo);
// Duracin del tiempo bajo
while(INTCONbits.TMR0IF == 0) //mas el tiempo de activacin y
desactivacion de RB6
{}
INTCONbits.TMR0IF = 0;
PORTBbits.RB6 = 1;
// Activa el pulso en RB6
WriteTimer0(talto);
//con duracin de tiempo alto
while(INTCONbits.TMR0IF == 0)
// Espera a que finalice el conteo
{}
INTCONbits.TMR0IF = 0;
// Limpia la bandera de desbordamiento
PORTBbits.RB6 = 0;
// Desactiva el pulso en RB6
WriteTimer0(tbajo);
// Duracin del tiempo bajo
while(INTCONbits.TMR0IF == 0)
//mas el tiempo de activacin y
desactivacion de RB7
{}
if(PORTBbits.RB3 == 1)
Menu();
// Regresa al men cuando se oprime RB0
}
}
void Cto_4()
{
Pantalla_Cto4();
m = 1;
n = 3;
talto = 65525;
tbajo = 62760;
while(1)
{
92
APENDICE B
Desplazamiento_4();
// Lee el ancho de los pulsos
for(i=0; i<n; i++)
// n = 3,5 o 7 pulsos por semiciclo
{
PORTBbits.RB7 = 1;
WriteTimer0(talto);
while(INTCONbits.TMR0IF == 0)
{}
INTCONbits.TMR0IF = 0;
PORTBbits.RB7 = 0;
WriteTimer0(tbajo);
while(INTCONbits.TMR0IF == 0) // Duracin del tiempo bajo
{}
// En el ultimo pulso se suma la duracin
INTCONbits.TMR0IF = 0; //de activacin y desactivacin de los pulsos en RB6
}
for(i=0; i<n; i++)
// n = 3,5 o 7 pulsos en RB6
{
PORTBbits.RB6 = 1;
WriteTimer0(talto);
// Anchura de los pulsos
while(INTCONbits.TMR0IF == 0)
{}
INTCONbits.TMR0IF = 0;
PORTBbits.RB6 = 0;
WriteTimer0(tbajo);
while(INTCONbits.TMR0IF == 0)
// Duracin del tiempo bajo
{}
// En el ultimo pulso se suma la duracin
INTCONbits.TMR0IF = 0; //de activacin y desactivacin de los pulsos en RB7
}
if(PORTBbits.RB3 == 1)
Menu();
// Regresa al men cuando se oprime RB0
}
}
void Desplazamiento_1()
{
if(PORTBbits.RB0 == 1)
// Activado RB0?
{
while(PORTBbits.RB0 == 1)
{}
Pulso_Bajo = ~Pulso_Bajo;
// Complemento 0 a 1 1 a 0
Comando2_LCD(DDRAM_L2+18);
// Posiciona el cursor del LCD
if(Pulso_Bajo == 0)
// Opcin actual
Dato2_LCD('1');
// Despliega en el LCD
else
Dato2_LCD('2');
//la opcin
}
if(PORTBbits.RB1 == 1)
// Activado RB1?
{
if(retardo > 57215)
// Retardo menor a 8.33 ms?
retardo-=20;
// incrementa retardo
93
APENDICE B
BCD_ASCCII(retardo);
Despliega_Valores1();
}
if(PORTBbits.RB2 == 1)
{
if(retardo < 65535)
retardo+=20;
BCD_ASCCII(retardo);
Despliega_Valores1();
}
}
// Rutina de conversin
// Rutina de despliegue
// Activado RB2?
// Retardo mayor a 0 ms?
// Decrementa retardo
void Desplazamiento_2()
{
if(PORTBbits.RB2 == 1)
// RB1 activado?
{
while(PORTBbits.RB2 == 1)
{}
if(m < 8)
// Si m es menor a 8
m++;
//incrementa m
Comando1_LCD(DDRAM_L2+19);
Dato1_LCD(0x30+m);
Comando2_LCD(DDRAM_L1+19);
Dato2_LCD(0x38-m);
}
if(PORTBbits.RB1 == 1)
// RB2 activado?
{
while(PORTBbits.RB1 == 1)
{}
if(m > 1)
// Si m es mayor a 1
m--;
// Decrementa m
Comando1_LCD(DDRAM_L2+19);
Dato1_LCD(0x30+m);
Comando2_LCD(DDRAM_L1+19);
Dato2_LCD(0x38-m);
}
}
void Desplazamiento_3()
{
if(PORTBbits.RB1 == 1)
{
if(talto > 65525)
{
talto = 57217;
tbajo = 65525;
BCD_ASCCII(talto);
Despliega_Valores3();
}
94
APENDICE B
talto+=20;
tbajo-=20;
BCD_ASCCII(talto);
Despliega_Valores3();
}
if(PORTBbits.RB2 == 1)
{
if(talto < 57217)
{
talto = 65525;
tbajo = 57217;
BCD_ASCCII(talto);
Despliega_Valores3();
}
talto-=20;
tbajo+=20;
BCD_ASCCII(talto);
Despliega_Valores3();
}
}
void Desplazamiento_4()
{
if(PORTBbits.RB0 == 1)
{
while(PORTBbits.RB0 == 1)
{}
m++;
if(m==4)
m=1;
if(m == 1)
{
n = 3;
Comando2_LCD(DDRAM_L2+17);
Dato2_LCD(0x33);
talto = 65525;
tbajo = 62760;
}
if(m == 2)
{
n = 5;
Comando2_LCD(DDRAM_L2+17);
Dato2_LCD(0x35);
talto = 65525;
tbajo = 63880;
}
if(m == 3)
{
n = 7;
// Cambia el
//valor de n
//dependiendo del
//valor actual de n
95
APENDICE B
Comando2_LCD(DDRAM_L2+17);
Dato2_LCD(0x37);
talto = 65525;
tbajo = 64346;
}
}
if(PORTBbits.RB2 == 1)
{
if(n == 3)
{
if(talto > 65525)
{
talto = 65525;
tbajo = 62760;
BCD_ASCCII(talto);
Despliega_Valores4();
}
talto+=10;
tbajo-=10;
BCD_ASCCII(talto);
Despliega_Valores4();
}
if(n == 5)
{
if(talto > 65525)
{
talto = 65525;
tbajo = 63880;
BCD_ASCCII(talto);
Despliega_Valores4();
}
talto+=10;
tbajo-=10;
BCD_ASCCII(talto);
Despliega_Valores4();
}
if(n == 7)
{
if(talto > 65525)
{
talto = 65525;
tbajo = 64346;
BCD_ASCCII(talto);
Despliega_Valores4();
}
talto+=10;
tbajo-=10;
BCD_ASCCII(talto);
Despliega_Valores4();
// Mnimo ancho 10 us
// Mximo ancho 1656 us
96
APENDICE B
}
}
if(PORTBbits.RB1 == 1)
{
if(n == 3)
{
if(talto < 62760)
{
talto = 65525;
tbajo = 62760;
BCD_ASCCII(talto);
Despliega_Valores4();
}
talto-=10;
tbajo+=10;
BCD_ASCCII(talto);
Despliega_Valores4();
}
if(n == 5)
{
if(talto < 63880)
{
talto = 65525;
tbajo = 63880;
BCD_ASCCII(talto);
Despliega_Valores4();
}
talto-=10;
tbajo+=10;
BCD_ASCCII(talto);
Despliega_Valores4();
}
if(n == 7)
{
if(talto < 64346)
{
talto = 65525;
tbajo = 64346;
BCD_ASCCII(talto);
Despliega_Valores4();
}
talto-=10;
tbajo+=10;
BCD_ASCCII(talto);
Despliega_Valores4();
}
}
}
97
APENDICE B
void Configura_Timer0()
{
WriteTimer0(57217);
de prueba
INTCONbits.TMR0IF = 0;
desbordamiento
OpenTimer0 (TIMER_INT_OFF&
T0_16BIT &
T0_SOURCE_INT &
T0_EDGE_FALL &
T0_PS_1_1);
T0CONbits.TMR0ON=1;
}
Limpia
la
bandera
de
// Interrupciones apagadas
// Formato de 16 bits
// Fuente interna Fosc/4
// Flanco de bajada
// Preescaler de 1
void Despliega_Valores3()
{
98
APENDICE B
Comando2_LCD(DDRAM_L1+8);
Dato2_LCD(m1);
Dato2_LCD('.');
Dato2_LCD(c1);
Dato2_LCD(d1);
Comando2_LCD(DDRAM_L2+9);
Dato2_LCD(m2);
Dato2_LCD(c2);
Dato2_LCD(d2);
}
void Despliega_Valores4()
{
Comando2_LCD(DDRAM_L1+2);
Dato2_LCD(m1);
Dato2_LCD('.');
Dato2_LCD(c1);
Dato2_LCD(d1);
Comando2_LCD(DDRAM_L1+12);
Dato2_LCD(m2);
Dato2_LCD(c2);
Dato2_LCD(d2);
}
void Pantalla_Seleccion()
{
Comando1_LCD(CLEAR);
Comando2_LCD(CLEAR);
Comando1_LCD(DDRAM_L1);
for(i = 0; i < 14; i++)
{
Dato1_LCD(Cto1[i]);
Delay1TCY();
}
Comando1_LCD(DDRAM_L2);
for(i = 0; i < 12; i++)
{
Dato1_LCD(Cto2[i]);
Delay1TCY();
}
Comando2_LCD(DDRAM_L1);
for(i = 0; i < 11; i++)
{
Dato2_LCD(Cto3[i]);
Delay1TCY();
}
Comando2_LCD(DDRAM_L2);
for(i = 0; i < 12; i++)
{
// Limpia LCD
// Cursor en lnea 1 posicin 5
99
APENDICE B
Dato2_LCD(Cto4[i]);
Delay1TCY();
}
Comando1_LCD(DDRAM_L1+23);
for(i = 0; i < 17; i++)
{
Dato1_LCD(Op[i]);
Delay1TCY();
}
Comando1_LCD(DDRAM_L2+24);
for(i = 0; i < 16; i++)
{
Dato1_LCD(Arriba[i]);
Delay1TCY();
}
Comando2_LCD(DDRAM_L1+24);
for(i = 0; i < 16; i++)
{
Dato2_LCD(Abajo[i]);
Delay1TCY();
}
Comando2_LCD(DDRAM_L2+24);
for(i = 0; i < 16; i++)
{
Dato2_LCD(Selec[i]);
Delay1TCY();
}
}
void Pantalla_Cto1()
{
Comando1_LCD(CLEAR);
Comando2_LCD(CLEAR);
Comando1_LCD(DDRAM_L1+1);
for(i = 0; i < 14; i++)
{
Dato1_LCD(Cto1[i]);
Delay1TCY();
}
Comando1_LCD(DDRAM_L2+2);
for(i = 0; i < 15; i++)
{
Dato1_LCD(Ret_ms[i]);
Delay1TCY();
}
Comando2_LCD(DDRAM_L1+2);
for(i = 0; i < 14; i++)
{
Dato2_LCD(Ret_g[i]);
Delay1TCY();
100
APENDICE B
}
Comando2_LCD(DDRAM_L2+1);
for(i = 0; i < 18; i++)
{
Dato2_LCD(Ciclo[i]);
Delay1TCY();
}
Comando1_LCD(DDRAM_L1+27);
for(i = 0; i < 13; i++)
{
Dato1_LCD(Regresar[i]);
Delay1TCY();
}
Comando1_LCD(DDRAM_L2+23);
for(i = 0; i < 17; i++)
{
Dato1_LCD(Izquierda[i]);
Delay1TCY();
}
Comando2_LCD(DDRAM_L1+24);
for(i = 0; i < 16; i++)
{
Dato2_LCD(Derecha[i]);
Delay1TCY();
}
Comando2_LCD(DDRAM_L2+27);
for(i = 0; i < 13; i++)
{
Dato2_LCD(N_Pulsos[i]);
Delay1TCY();
}
}
void Pantalla_Cto2()
{
Comando1_LCD(CLEAR);
Comando2_LCD(CLEAR);
Comando1_LCD(DDRAM_L1+3);
for(i = 0; i < 12; i++)
{
Dato1_LCD(Cto2[i]);
Delay1TCY();
}
Comando1_LCD(DDRAM_L2);
for(i = 0; i < 20; i++)
{
Dato1_LCD(Pulsosm[i]);
Delay1TCY();
}
Comando2_LCD(DDRAM_L1);
101
APENDICE B
APENDICE B
Dato2_LCD(grad[i]);
Delay1TCY();
}
Dato2_LCD(0xDF);
Comando1_LCD(DDRAM_L1+27);
for(i = 0; i < 13; i++)
{
Dato1_LCD(Regresar[i]);
Delay1TCY();
}
Comando1_LCD(DDRAM_L2+24);
for(i = 0; i < 16; i++)
{
Dato1_LCD(A_Ancho[i]);
Delay1TCY();
}
Comando2_LCD(DDRAM_L1+23);
for(i = 0; i < 17; i++)
{
Dato2_LCD(D_Ancho[i]);
Delay1TCY();
}
}
void Pantalla_Cto4()
{
Comando1_LCD(CLEAR);
Comando2_LCD(CLEAR);
Comando1_LCD(DDRAM_L1+3);
for(i = 0; i < 12; i++)
{
Dato1_LCD(Cto4[i]);
Delay1TCY();
}
Comando1_LCD(DDRAM_L2+3);
for(i = 0; i < 14; i++)
{
Dato1_LCD(Ancho[i]);
Delay1TCY();
}
Comando2_LCD(DDRAM_L1+3);
for(i = 0; i < 6; i++)
{
Dato2_LCD(ms[i]);
Delay1TCY();
}
Comando2_LCD(DDRAM_L1+12);
for(i = 0; i < 4; i++)
{
Dato2_LCD(grad[i]);
103
APENDICE B
Delay1TCY();
}
Dato2_LCD(0xDF);
Comando2_LCD(DDRAM_L2);
for(i = 0; i < 18; i++)
{
Dato2_LCD(Pulsos[i]);
Delay1TCY();
}
Comando1_LCD(DDRAM_L1+27);
for(i = 0; i < 13; i++)
{
Dato1_LCD(Regresar[i]);
Delay1TCY();
}
Comando2_LCD(DDRAM_L1+24);
for(i = 0; i < 16; i++)
{
Dato2_LCD(A_Ancho[i]);
Delay1TCY();
}
Comando1_LCD(DDRAM_L2+23);
for(i = 0; i < 17; i++)
{
Dato1_LCD(D_Ancho[i]);
Delay1TCY();
}
Comando2_LCD(DDRAM_L2+20);
for(i = 0; i < 20; i++)
{
Dato2_LCD(Cambiar[i]);
Delay1TCY();
}
}
104
APENDICE C
APENDICE C
HOJAS
DE
ESPECIFICACIONES
105
APENDICE C
106
APENDICE C
107
APENDICE C
108
APENDICE C
109
APENDICE C
110
APENDICE C
111
APENDICE C
112
BIBLIOGRAFIA
BIBLIOGRAFIA
Autor: Malvino, Albert Paul
Titulo: Principios de Electrnica
Editorial: Mcgraw Hill De Mxico
ISBN: 84-481-5619-0
Edicin: 6
No. de pginas: 1126
Idioma: Espaol
Autor: Boylestad Nashelsky
Titulo: Electrnica: teora de circuitos y dispositivos electrnicos
Editorial: Prentice Hall
ISBN: 970-26-0436-2
Edicin: 8
No. de pginas: 1020
Idioma: Espaol
Autor: Muhammad H. Rashid
Titulo: Electrnica de Potencia
Editorial: Prentice Hall
ISBN: 970-26-0532-6
Edicin: 3
No. de pginas: 878
Idioma: Espaol
Autor: R. V. Honorat
Titulo: Dispositivos Electrnicos de Potencia
Editorial: Paraninfo
ISBN: 84-283-2218-3
Edicin: 1
No. de pginas: 374
Idioma: Espaol
113
BIBLIOGRAFIA
Autor: Usategui, A.
Titulo: MICROCONTROLADORES PIC
Editorial: internal. Thomson edrs. SA CV
ISBN: 84-9732-199-5
Edicin: 1
No. de pginas: 105
Autor: Jose Maria Angulo
Titulo: MICROCONTROLADORES PIC
Editorial: McGraw Hill / Interamericana de Espaa
ISBN: 9788448156473
Edicin: 3
No. de pginas: 357
Idioma: Espaol
114