TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: fastyx en 18 de Marzo de 2006, 12:21:00
-
amigos:como sabreis estoy usando un triac para controlar un motor.
lo que deseo saber es si lo que estoy poniendo en el programa esta bien
{ if (sinc==0)
// sinc es la direccion de un bit por donde entra el sincronismo de alterna para detectar el cero (rb3 en 16f628a) configurado como entrada
//(puse en las definiciones #bit sinc=portb.3)
{
disparo=1;delay_ms(17);
//disparo es el bit de la pata ra2 configurada como salida para entrar a la pata 1 del opto(led)
//(puse en las definiciones #bit disparo = porta.2)
}
else disparo==0;
lo que me ocurre es que el disparo se mantiene en un alto aunque sinc no sea 0
y yo quiero qeue el disparo se haga una sola vez cuando pasa por 0 y no que se quede todo el tiempo en 1(lo coteje con el osciloscopio)
desde ya gracias!
-
else disparo == 0; lleva un "=" de más
Ponlo así:
else {
disparo = 0;
}
-
ok lo voy a probar
la duda que tengo es la siguiente.
una onda senoidal tiene en un tiempo llamemosle t0 el valor de cero.
luego se incrementa hasta el maximo y cae hasta cero nuevamente para cambiar el signo e ir a la semionda negativa.
para la frecuencia de linea de 50 ciclos por segundo, el ciclo dura 20 mseg,con lo cual la conduccion maxima por semiciclo en el que puedo excitar el gate del triac es de 10 mseg,y el minimo sera de 50 useg calculo.
lo que no se es cuando le digo al pic : dispara el pin disparo cuando el sincronismo sea cero,pero cero y solamente cero,no tengo forma de saber si cuando esta en 0.001volt ya inhibe al disparo,y si va a estar preparado para recibir el nuevo cruce de cero. me explique?
desde ya gracias por la dedicacion!!
-
Mi recomendación sería que usases la interrupción externa(pin RB0) para detectar el paso por cero y no te fiases demasiado de la exactitud de la frecuencia de red.Podrías utilizar el timer del pic para generar una base de tiempos que te interrumpiese por ejemplo cada 1 ms.Así,cuando el paso por cero provoque una interrupción,en la rutina de tratamiento de ésta,puesde poner a correr al timer,incrementando una variable cada vez que dicho timer se desborde.En cada desbordamiento del timer puedes comprobar el valor de esta variable y efectuar el disparo cuando más te convenga.No olvides que si configuras el timer para que interrumpa cada 1 ms,lo hará unas 10 veces como máximo antes de que vuelvas a tener un cruce por cero de la alterna.Conseguirías así 10 niveles de regulación de potencia.Si quieres más niveles,pues reduces la base de tiempo del timer.
¿Qué te parece?
-
Como Modulay comenta tienes que utilizar la interrupción externa (pin RB0).
Cada paso por cero te iras al código que tiene asociado dicha interrupción y... lo que tienes que hacer simplemente es ponerle un retardo en función de lo que quieres que te conduzca.
se inicia el programa
.
.
.
se detecta un paso por cero
.
.
.
hacemos un retardo de 5 ms (por decir un valor)
.
.
.
se detecta un paso por cero
.
.
.
hacemos un retardo de 5 ms (por decir un valor)
.
.
.
etc.etc....
Lo que tendremos entonces es que nuestro triac nos conducirá la mitad del semiciclo positivo y la mitad del semiciclo negativo. Con un par de botones puedes hacer que se modifique el retardo (desde 0 hasta 10 ms.) y... cambiarás el tiempo que el triac conduce (la bombillita brillará más o menos).
No me puedo explicar mejor porque me tengo que ir pero... si tienes algún problema avisa y me explayo más.
PD: Esto es la teoría. Para la practica, si lo quieres hacer de forma eficiente, lo puedes hacer como dice Modulay
Un saludo desde Alicante.
-
desde ya les agradezco la ayuda.!!!
no habia pensado en la interrupcion porque nunca hice una todavia(que verguenza!)
pero como ustedes bien dicen si por rbo al configurar para interrupcion externa,va a detectar los pasos por cero de la señal senoidal,ya tengo el camino allanado.
ahora... conviene que con un puente rectificador voltee los semiciclos negativos
para tener pasos por cero pero no valores negativos de tensionsobre rbo?
igual los detectaria digo...
-
Holas!
Si activas el triac a la mitad de una semionda (10ms) vas a tener el 50% del voltaje eficaz. Si son 220VCA, tendrás 110VCA en el foco (bombilla como ustedes le dicen).
¿Qué método estás usando para detectar el cruce por cero? No lo tengo muy claro. Sé que te dimos propuestas para hacerlo pero no sé cuál usaste.
Para activar el triac sólo necesitas activar el opto con un pulso; un milisegundo es suficiente. El triac se quedará activo mientras haya voltaje en él; se desactivará al cruzar por cero la corriente alterna.
-
No creo ni que necesites rectificar los semiciclos negativos.Con ponerle una R de 1Mohm para limitar la corriente te vale.Los diodos de protección que lleva el puerto te salvan del resto
-
amigos: en relacion a lo que me decis Mig, recien me desayuno con que tengo que utilizar la interrupcion por rbo para detectar cuando la onda pasa por cero y realizar la rutina para el triac.
Ahora, diganme si estoy en lo correcto porque si no tengo un matete en el cerebro....
cuando la onda pase por cero,es el momento de disparar el triac.pero si yo lo disparo
digamos en el angulo 0 ó 1 de los 180 del semiciclo,ya no tengo opcion de apagarlo hasta que la onda pase por cero de nuevo y lo apague,con lo cual pienso que si queremos controlar el angulo de disparo tendriamos que hacerlo en la porcion restante de la onda,supongamos que quiero que conduzca 90 grados,tendria que hacer un delay y dispararlo cuando esta en la cresta maxima hasta que baje a cero
es correcto?
por otra parte les comento que el triac va a manejar 12 volts de alterna ,no 220v
-
Exacto.
En el post anterior mencioné 10ms, en realidad eran 5ms. 
Si quieres tener el 50% del voltaje eficaz (6VCA en tu caso) deberás disparar el triac cuando sean 5ms después del cruce por cero (si hablamos de 50Hz), sin importar si es cruce por cero de positivo a negativo o viceversa, porque un semiciclo dura 10ms y la mitad del semiciclo son 5ms.
Si activas el triac justo después del cruce por cero tendrás el 100% del voltaje eficaz (12VCA).
Si quieres tener 2VCA tendrías que esperar 8.333ms, es decir 5/6 de 10ms. El triac sólo estará activado 1.666ms, o sea 1/6 de 10ms.
Y tienes razón, una vez que mandas el pulso de activación de la Gate del triac, ya no podrás apagarlo, se quedará "enclavado" hasta que el VCA cruce por cero o cortes manualmente la alimentación.
-
¿Las relaciones entre tensiones son tan faciles de calcular? No tendrias que calcular para cada angulo de disparo el area que forma la parte de senoidal que dejas conducir, y creo que no seran lineales
-
Mi experiencia con lo de los triacs es poca, esos datos que doy son por observación.
Hice un dimmer que tenía una LCD. Cuando yo disparaba el triac a la mitad de un semiciclo, la LCD me indicaba 50% y con un voltímetro de alterna yo medía el voltaje que se aplicaba en el foco, había 60VCA (en mi país se manejan 120VCA). La proprocionalidad era lineal, 10% era a 12VCA, 90% era a 108VCA.
Talvez sí haya una fórmula para calcularlo, pero a mí me salían esas mediciones.
Kain, si llegas a encontrar esa fórmula, por favor avísanos.
-
No llega a ser lineal,aunque equiespaciando los distintos niveles que se quieran usar para no complicarse la vida es más que válido.
Para hacerlo con exactitud,sería mediante una integral mediante la cual se calcula la tensión media a la salida,que quedaría como:
Vmedia = (16.92V/pi)*(cos (a) + 1)

Se ve que la relación entre ángulo de disparo y tensión media no es lineal,pero casi.
"a" sería el ángulo de disparo,en radianes,tomando como referencia el paso por cero de la señal (ángulo cero).
16.92 es el valor de tensión de pico,suponiendo los 12V eficaces.
Si suponemos que "a" variará entre 0 y pi(radianes),para traducirlo a retardo en segundos sería:
t = (a*T)/(2*pi)
t es el retardo en segundos
T el periodo en segundos,en nuestro caso 20 ms
Para hacerlo totalmente lineal se podría hacer algún trapicheo numérico y buscar,por ejemplo,10 valores de a que resultaran con incrementos iguales en la tensión media de salida.Una vez calculados esos 10 valores de a,se calculan los 10 valores correspondientes de t
-
¿Podrías poner un ejemplo Modulay?
Por favor
-
Acabo de editar para añadir cosillas migsantiago.
Dime a qué te refieres y lo haré con gusto.
Un saludo
-
Woooww, me diste más que un ejemplo.

Mis datos son... 127VCArms, 60Hz, 180VCApico.
Digamos que yo disparo el triac a los 90° (pi / 2)... el voltaje que tendría es de 57.17V. Esos 57VCA, ¿son eficaces (rms)?
-
Pero eso tendra que ver con la tension instantanea, y no con la tension media en la carga¿no? en unos dias tengo que ponerme a estudiar este tema asi que todavia no estoy muy seguro de como va la cosa
-
La tensión instantánea es la que se tiene en un instante determinado.Puede ser 0,6,2,16...dependiendo del momento que escojas.La potencia media (es la que nos ataña) está relacionada directamente con el valor medio de la tensión y,tal y como comentabas antes,con el área bajo la curva de tensión.También se la calcula con una integral,y los límites de integración si no recuerdo mal son los mismos que para la tensión media.Lo que no recuerdo es la expresión en sí.A ver si la encuentro por ahí
-
Entonces Modulay, los 57vca que me dan, ¿son eficaces o instantáneos? Estoy un poco confundido.
-
Ah ya veo, entonces ¿eso es lo que mediría un voltímetro?
-
Un voltímetro,cuando mide una señal alterna,te da el valor eficaz de la señal:
Veficaz = Vpico/1.41
Los 220V de la red es en realidad una señal que alcanza unos voltios considerables
220Veficaces = Vpico/1.41 => Vpico de la red = 220 * 1.41 = 310.2V
-
Acabo de aprender algo nuevo. Muchas gracias por la clase Modulay.
-
A mandar mig
-
¿Cuando el polimetro se ponia en medir tension en continua no daba el valor medio de la tension? Lo digo porque asi se podria saber la tension media aplicada a la carga; creo recordar que habia una forma de medir la tension media con el polimetro
-
Pudiera ser.
Para una señal rectificada (si no está rectificada el valor medio sería cero) sin regular,es decir,cogiendo la onda completa,la tensión media es:
Vmedia = (Vpico/pi)*( 1 + cos(0) ) = 2*Vpico/pi
Si pruebas con tus 12Vac rectificados te debería salir:
Vmedia = 2*16.92/3.1416 = 10.77V