TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: afta en 29 de Septiembre de 2020, 02:10:57
-
Hola a todos. Alguien sabe que pasa si al mismo pin de un PIC se le envía dos señales: un nivel alto y también
pulsos de paso por cero?
-
Hola a todos. Alguien sabe que pasa si al mismo pin de un PIC se le envía dos señales: un nivel alto y también
pulsos de paso por cero?
Al PIC nada, pero lo que estas haciendo usualmente terminarías con:
- algún nivel predominante (es decir no vas a poder distinguir el nivel alto), o
- algún cortocircuito entre los otros dos circuitos (el que te provee el nivel alto y el detector de cruce.
-
Gracias por responder Killer.
Al hacer la simulación en Proteus obtengo los pulsos por cero desplazados hacia arriba pero con el nivel alto con el mismo valor.
La señal resultante es la de unos pulsos pero con el nivel mínimo con un valor en alto. Es decir, todos los valores en la señal resultante se ven como un nivel alto.
Como dices, talves este predominando el nivel alto.
-
Además no descartes la corriente extra que estaría consumiendo, debido a que un parte del circuito quiere entregar 5V y otra parte quiere llevarlo a 0V en el mismo punto, tal ves no llega hasta 0V debido a que el detector por cero no tiene suficiente ganancia si es un transistor o existe una resistencia en el camino. Pero esos elementos están evitando el cortocircuito que tendrías, aunque esto no evita el consumo "extra".
Y si... Si la tensión mínima no supera el voltaje que considera bajo el PIC, la señal predominante es el estado alto, es decir siempre ve un 1 a la entrada.
Y si la supera, es decir logra cambiarle el estado de la entrada, entonces la predominante es la del cruce por 0, y la otra "informacion" se pierde (no habría diferencias si esta en 1 o no).
-
Entonces, para asegurarme que entendí, si veo una señal pulsante pero todos los valores de la señal tienen un valor que el PIC considera alto, tendría un 1 siempre a la entrada del PIC?
-
Voy a hacerlo mas practico al ejemplo. Los valores son orientativos
Voltaje en que el PIC considera un 0 lógico en su entrada: 2V para abajo
Voltaje en que el PIC considera un 1 lógico en su entrada: 3V para arriba
Es decir.. Si tenia 5V, (1 lógico para el PIC) si quiero leer un 0, necesito bajar la entrada a menos de 2V. Recién ahí el PIC lo considera un cero lógico. Lo mismo ocurre para considerarlo un 1 cuando tenes un 0, es necesario que supere los 3V el pin de entrada.
Ahora veamos las dos situaciones en cuestiones de voltajes
Primera situación:
Suponiendo que la tensión baje de los 2V: Supongamos que tenemos 5V (cruce por cero sin hacer pull a GND ) y 1.5V (cruce por cero pull a GND ) en la entrada del PIC. Estando activas ambas señales (el 1 lógico y la detección por cruce) Y siendo el cruce por cero que pone un limitante hacia GND.
Tendrías algo así:
5V - 1.5V - 5V - 1.5V - 5V
En la entrada del PIC verías los 1 o 0 lógicos, que corresponden a estos valores:
1 - 0 - 1 - 0 - 1
Que seria la señal del detector del cruce por cero, lo pienso como una señal cuadrada
Señal predominante: Cruce por cero.
Segunda situación:
Las dos señales sumadas el mínimo valor de tensión que llegan es de 2.5V y oscila entre ese valor y 5V, siendo no suficiente para que se detecte un cero lógico.
Las tensiones serian:
5V - 2.5V - 5V - 2.5V - 5V - 2.5V
El PIC vería estos estados lógicos:
1 - 1 - 1 - 1 - 1 - 1
Es decir solo el estado lógico del nivel alto... y se pierde el cruce por cero.
Señal predominante: Pulso en alto.
Tercera situación:
Suponiendo que la tensión baje de los 2V: Supongamos que tenemos 5V y 1.5V en la entrada del PIC. Estando la señales de detección por cruce y la señal fija en 0V
Tendria que tener un limitante el circuito fijo, ya que sino tendrias un cortocircuito entre 5V y 0V.
Si existe un limitante en el circuito, entonces puede darse cualquiera de las otras situaciones
Por supuesto podemos considerar la siguiente posibilidad de que mientras este en 1 la señal en alto que nombras, no te importe perder la informacion del cruce por cero. y esta situacion particular funcionaria siempre y cuando los voltajes sean los correctos.
-
Gracias Killer.
Mi PIC tiene el pin por donde entran los pulsos con los siguientes niveles:
Input Low Voltage = 0 hasta 1V
Input High Voltage = 4V hasta 5V
Estoy usando circuitos para generar pulsos de paso por cero para disparar triac's.
Cuando el triac de uno de los circuitos es activado mientras el del otro permanece desactivado, la señal resultante es de 3.2V hasta 4.7V.
Cuando ninguno de los triac de los circuitos está funcionando al pin llegan pulsos desde 0V hasta 4.5V.
Los valores desde 3.2V hasta 4.7V me permitirán leer un estado alto solo mientras el nivel pase de 4V según la especificación para el PIC. Entonces, una vez que active un triac debo dispararlo cada cierto tiempo cuando se llegue al nivel alto?
-
Los valores desde 3.2V hasta 4.7V me permitirán leer un estado alto solo mientras el nivel pase de 4V según la especificación para el PIC. Entonces, una vez que active un triac debo dispararlo cada cierto tiempo cuando se llegue al nivel alto?
Una vez que paso de 4V, vas a leer un 1, pero nunca va a cambiar de vuelta a 0, ya que necesitas que baje hasta menos de 1V.
-
Entonces, el intervalo por debajo de 4V que es indeterminado no afecta la conducción del triac?
-
Con tu ultima sentencia, creo que estamos hablando de dos cosas distintas.
Yo estoy hablando de que llegan dos entradas distintas a un mismo pin del PIC, parece que vos estas hablando de una salida.
Para no continuar hablando y luego corrigiéndome te pido que subas una imagen del circuito que pretendes realizar y que se conectan al pin del PIC en cuestion.
-
Tienes razón, no me explique bien. Se trata de un pin de entrada a la que llegan dos señales distintas.
Mi duda es si puedo usar la señal resultante que llegaría al pin para activar un triac en el cruce por cero.
Otra duda es si es correcto mantener el gate del triac en un nivel alto para que se quede conduciendo hasta que quiera cambiar de triac o tengo que activar el triac en cada paso por cero.
-
Se trata de un pin de entrada a la que llegan dos señales distintas.
Con esto ya tenes complejidad para leer las señales de entrada, lo cual es mucho.
Mi duda es si puedo usar la señal resultante que llegaría al pin para activar un triac en el cruce por cero.
Ni hablar encima de usarlo para activar el TRIAC, ademas suponiendo que estas usando un TRIAC logico y no aislado, activarlo en todos los cruces por cero, es tenerlo activo siempre al TRIAC, lo interesante de observar el cruce por cero es poder activar el TRIAC luego de un tiempo de ese cruce.
Sino es mucho mas sencillo usar un opto-TRIAC que tenga incorporado el cruce por cero, en donde ganas aislacion de la tension de red y ademas solo necesitas un pulso positivo para activarlo. Y asi lo activas el tiempo que quieras, y es el optoTRIAC quien le da el pulso positivo o negativo al gate del TRIAC.
Lo que a mi me genera mas dudas, es tu idea de usar 1 pin para 3 cosas, es como si te faltaran pines. Tal ves sea mejor y mas barato comprar un PIC mas grande.
Otra duda es si es correcto mantener el gate del triac en un nivel alto para que se quede conduciendo hasta que quiera cambiar de triac o tengo que activar el triac en cada paso por cero.
Una ves activo el TRIAC, este va a conducir sin importar la tension de GATE hasta que la corriente en sus bornes principales sea 0, por lo tanto los unicos momentos necesarios en el que le deberias entregar un pulso es para "arrancar", pero si usas un TRIAC logic level, podes conectarlo directo al PIC mediante una resistencia y mantener el pulso continuo en el gate. PERO no usar un optoacoplador implica que vas a tener que unir el Neutro de la red con el GND del circuito, lo que no es algo muy lindo para tu seguridad, aunque se usa. Es preferible usar ese optoTRIAC que te comentaba, algunos vienen ya con el cruce por cero incorporado, y otros sin el mismo, para poder activarlo cuando uno desea.
-
Quisiera activar el triac enviando un nivel alto desde el PIC a la base de un transistor cuyo emisor este conectado al gate del triac y con colector a 12V.
Si pongo en 1 el pin correspondiente del PIC, el triac quedará conduciendo mientras se mantenga el nivel 1?
-
Si, mientras se encuentre en los cuadrantes 1 y 4, aunque el cuadrante 4 pide mucha mas corriente, y... no todos los TRIACs lo hacen...
Por eso opino que es mejor, aislar el circuito con una fuente aislada, y ademas aislar con un optoacoplador el TRIAC, asi te desvinculas de tensiones peligrosas en tu circuito. Y ahi si vas a poder activarlo con un 1 y en cualquier tipo de TRIAC,
-
Para hacer un programa que me dispare el triac en el cruce por cero:
Como debería leer los pulsos de paso por cero? Solo empiezo leyendo el pin o se debe poner algún retardo para comenzar a leer?
Una vez que se detecta el cruce por cero, se debe esperar un tiempo para activar el triac? Como saber cuánto tiempo?
-
Un optotriac con cruce por cero como el moc3041 sirve para ese proposito, aislar y disparar en los cruces por cero
-
Para hacer un programa que me dispare el triac en el cruce por cero:
Como debería leer los pulsos de paso por cero? Solo empiezo leyendo el pin o se debe poner algún retardo para comenzar a leer?
Una vez que se detecta el cruce por cero, se debe esperar un tiempo para activar el triac? Como saber cuánto tiempo?
Como te dijeron... usando el optoaislador el MOC3041, directamente pones un 1 y listo, no necesitas "leer" cruces por cero, te ahorras gran parte del circuito.
¿Queres activar algunos picos y otros no? Entonces usa un timer para controlar cuanto presionas.
(https://i.pinimg.com/originals/7d/c9/b7/7dc9b721c8736f6f8add3677e21e387f.png)
(Falta red snubber)
No entiendo porque insistís en hacerlo de otra forma si solo vas a hacerlo en los cruces por cero.
Si vos queres esperar tiempo, lo que vas a hacer es recortar la onda. Esto hace que tengas que poner un TRIAC mas potente, la onda deja de ser senoidal, lo aviso por la carga que tengas. Y existen otros métodos de "regulación" según el tipo de carga.
Si quieres seguir en tu método entonces:
- Lees el pin, detectaste el cruce por cero (ya sea usando interrupcion por flanco, etc, depende de tu circuito)
- Esperas o no dependiendo de tu circuito de deteccion, si este genera el pulso justo apenas hace el 0, entonces lo activas de inmediato, sino esperas un ratito antes de disparar, el tiempo máximo que tenes para dispararlo es de la mitad del periodo de la red de linea, ejemplo con 50Hz, son 20ms, es decir el tiempo maximo de espera es de 10ms +margen de seguridad, te quedaría en 9ms aprox.
- Al activarlo es recomendable que se hagan varios pulsos y por un ratito. Ya que el pin de gate consume corriente. y es mejor proporcionarsela momentaneamente de a pulsos que de forma continua, se hacen varios para asegurarse que realmente se activo el TRIAC.
- Una ves activo solo se va a desactivar (nuevamente dependiendo de la carga)
-
Nada de retardos para disparar al triac(me refiero a que no debes de usar __delay_), para poder realizar un disparo del triac debes de realizar tu ckto detector de cruce por cero a un pin del pic(te recomiendo conectar al pin de interrupcion RB0), dependiendo de tu ckto de cruce por cero puede ser de media u onda completa para que suceda la interrupcion en RB0.
"Cómo decir al pic en qué momento disparar?" - Pues analiza la señal AC de tu región y mide el periodo, con esto sabrás cuantos ms corresponde.
-Debes usar el timer para generar un rango de tiempos (tienes que configurar al timer y cargarlo un valor inicial o mejor dicho este valor equivale en ms al tiempo en el cual se disparará el triac) que se encuentre comprendido entre el perido de tu señal AC.