Autor Tema: dimmer de dos canales con pic  (Leído 12917 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado ceneca

  • PIC16
  • ***
  • Mensajes: 105
dimmer de dos canales con pic
« en: 23 de Noviembre de 2010, 16:16:34 »
hola, a todos.
 los molesto por lo siguiente  estoy en el armado de un regulador de intensidad de 2 canales para lograr efecto día noche, he leído mucho y he extraído info del foro para tratar de lograrlo ya que recién estoy empezando a entender el mundo pic, mis conocimientos son casi cero y he empezado por algo difícil, de igual modo ya estoy con varios puntos mas claros.
En un hilo bastante antiguo hay un programa en C que mas o menos se ajusta a lo que busco, este es

Código: [Seleccionar]
/********************************************************/
/* Proyecto regulaDOr de luces dia noche               */
/********************************************************/
#include <12F683.h>
#FUSES NOWDT, HS, NOCPD, NOPROTECT, MCLR, PUT, BROWNOUT, IESO, NOFCMEN
#use delay(clock=20000000)
#use fast_io(A)

#define MaximoLuz 12
#define MinimoLuz 93 // Absoluto

#byte port_a = 5
#bit  TRIAC1 = port_a.0
#bit  TRIAC2 = port_a.1

/******************************************************/
/* Declaración de variables                           */
/******************************************************/
// Variable auxiliar
int cuenta;
int disparo = 1;
// Va contando nivel de disparo
int nivel = 0;

int periodoDia = MinimoLuz; //Empieza apagado
int periodoNoche = MaximoLuz; // Empieza encendido
// Diferencia de periodo entre cada paso
int paso = 2;
// Cuenta los segundos que pasan
int segundos = 0;

// Segundos entre cambio de ciclo
int cambio = 35;

// Variable para contar el tiempo transcurrido - Se incrementa en cada INTerrupción externa: 1/100 segundos
int16 tiempo = 0;

#INT_TIMER0
void disparo() // El timer cuenta 1 cada 51.2 us. Con 2 tics saltará cada 102.4us
{
set_timer0 (254); // Salta cada 102.4us

if(nivel == periodoDia)
output_low(PIN_A0);
if(nivel == periodoDia+5)
output_high(PIN_A0);

if(nivel == periodoNoche)
output_low(PIN_A1);
if(nivel == periodoNoche+5)
output_high(PIN_A1);

nivel++;
}

#INT_EXT
void EXT_isr()
{
set_timer0 (255);

nivel = 0;

if (cuenta == 0)
{
ext_int_edge (H_TO_L); // La próxima interrupción será de bajada
}
  else
{
ext_int_edge (L_TO_H); // La próxima interrupción será de subida
  }
cuenta = !cuenta;

tiempo++; // Cuenta 1 / 100 segundos más.

if(tiempo == 100) // 1 segundo
     {
      tiempo = 0;
     /* if(periodoDia > MaximoLuz)
      periodoDia -= paso;
else if(periodoDia < MaximoLuz)
periodoDia = Maximoluz;*/

segundos++;

if(segundos > 0 && segundos <= cambio)
{
//periodoDia = MinimoLuz+((30-segundos)*paso);
  periodoDia = periodoDia-paso;
periodoNoche = periodoNoche+paso;
}
if(segundos == cambio+1)// && segundos <= 60)
{
periodoDia = MaximoLuz;
periodoNoche = MinimoLuz;
}
if(segundos > 2*cambio && segundos <= 3*cambio)
{
periodoDia = periodoDia+paso;
periodoNoche = periodoNoche-paso;
  }
if(segundos == 3*cambio+1)// && segundos < 120)
{
               periodoDia = MinimoLuz;
               periodoNoche = MaximoLuz;
  }

      if(segundos == 4*cambio)
          segundos = 0;
}
}

void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
  enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
  enable_interrupts(INT_TIMER0);

     set_tris_A(0b111100);

// Desactivamos las salidas
  output_high(PIN_A0);
output_high(PIN_A1);

// periodoDia = MaximoLuz;

  for(;;)
{
}
}

De este mas o menos he deducido como es el oscilador, las salidas, y tengo dudas del cto detector de cruce por cero, no se si poner una resistencia directa, desde el trafo , o usar un opto. igualmente posteare el cto en breve, no se que opinan al respecto, que usarían?
esa es una de las dudas y la otra es saber si me orientan como poder compilar para obtener el .hex o si alguien me haría el favor de compilarlo y postearlo, así queda para alguien mas, ya que del hilo de donde esta el código, han sacado toda la info publicada, (o yo no puedo acceder  :() asi que quisiera resolver mi problema y ver si comparto esto para quien lo quiera.

ojala puedan ayudarme
El sabio no dice todo lo que piensa, pero siempre piensa todo lo que dice. ARISTOTELES

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: dimmer de dos canales con pic
« Respuesta #1 en: 23 de Noviembre de 2010, 20:01:05 »
Hola ceneca, hay varias maneras de detectar el cruce por cero.  En esta página encuentras un circuito sencillo de uno, o en la AN236 de Microchip también puedes ver algunos circuitos que te pueden servir.  Te adjunto el archivo compilado de tu programa.

Saludos!

Edito: esta AN958 de Microchip también te puede dar ideas.
« Última modificación: 23 de Noviembre de 2010, 20:14:23 por bmb »

Desconectado ceneca

  • PIC16
  • ***
  • Mensajes: 105
Re: dimmer de dos canales con pic
« Respuesta #2 en: 23 de Noviembre de 2010, 20:25:55 »
mil, gracias bmb,  :-/ :-/ :-/ :-/
ya teniendo ahora el .hex debo terminar el cto , lo posteare en base a lo que deduzco del programa , lo haré en eagle y lo iré mostrando , a ti y todos los foreros, ahora echare un vistazo a tus datos y tratare de ensamblar todo.

tratare de tenerlo para mañana, y gracias por tu ayuda !!!!!!!!
El sabio no dice todo lo que piensa, pero siempre piensa todo lo que dice. ARISTOTELES

Desconectado ceneca

  • PIC16
  • ***
  • Mensajes: 105
Re: dimmer de dos canales con pic
« Respuesta #3 en: 24 de Noviembre de 2010, 11:49:53 »
Bueno, tras la ayuda de bmb, he intentado armar el cto, pero me surgen dudas, aver si me ayudan ya que estoy metido en un tremendo lio , (para mi), hasta ahora creo tener lo siguiente

PIN1: VCC +5volt
PIN2: osc
PIN3: osc
PIN4: aqui, entra el detector?
PIN5: ?
PIN6: salida triac
PIN7:salida triac
PIN8: gnd

estos son los pines del pic, y no se como esta, hasta aqui (bien o mal), ya que mi experiencia es cero total, pero creo que es asi, les adjunto el cto para ver si me dan una mano.
con respecto al detector no se si funcione , pero estoy leyendo las aplicaciones que me paso bmb y la an 521, para comprender un poco mas. y algo de c ya que consegui un tutorial.

espero su ayuda si es posible y gracias . :mrgreen: :mrgreen:

El sabio no dice todo lo que piensa, pero siempre piensa todo lo que dice. ARISTOTELES

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: dimmer de dos canales con pic
« Respuesta #4 en: 24 de Noviembre de 2010, 14:57:06 »
Hola, estuve viendo el diagrama y yo lo veo bien por ahora.  Te falta conectar el negativo del puente. Si el componente que está conectado al pin 1 del transformador es un varistor, no va conectado asi. Que función cumple OK1?.

Bueno, yo pondría la señal del detector de cruce por cero en el pin 5 (GP2) para aprovechar la interrupción.  Por lo demás se ve bien el circuito.

Saludos!

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: dimmer de dos canales con pic
« Respuesta #5 en: 24 de Noviembre de 2010, 14:59:11 »
cto = circuito?  :?:
No contesto mensajes privados, las consultas en el foro

Desconectado ceneca

  • PIC16
  • ***
  • Mensajes: 105
Re: dimmer de dos canales con pic
« Respuesta #6 en: 24 de Noviembre de 2010, 18:20:45 »
hola bmb, esta así en la librería de eagle es un protector térmico, no es que lo busque a propósito, solo lo elegí por elegir dentro de la librería (trafo) y lo coloque pero es un fusible o protector térmico y va en serie si no me equivoco.
  te pregunto ya que aun no lo comprendo y me gustaría hacerlo ¿dentro del programa hay algo que te indique que va en el pin5 ?    desde ya agradezco tu ayuda y predispocision.
 ahora voy a armar el circuito.
Al pin no usado le pongo una R  a vcc ?,  voy a corregir el esquemático y  a preparar todo para hacer las pruebas, así cuando funcione posteo el cto y el esquemático para quien lo quiera hacer.  :mrgreen:

hola suky , pido disculpas si no se entiende, pero toda la vida he abreviado circuito como cto, pero la escribo y listo para evitar confusiones, gracias por tu aporte. pero dime también cual es tu opinión acerca del circuito por favor.

Armo y veo los resultados veremos si lo tengo para mañana

saludos


El sabio no dice todo lo que piensa, pero siempre piensa todo lo que dice. ARISTOTELES

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: dimmer de dos canales con pic
« Respuesta #7 en: 24 de Noviembre de 2010, 19:10:36 »
Hola ceneca, eso depende de la forma en que quieras programar tu aplicación.  Una de las formas de hacerlo, es estar interrogando al pin de entrada (polling) de cruce por cero hasta que esté activo y proceder con el algoritmo de control de fase.  Otra forma es que la señal de cruce por cero active la interrupción externa (GP2) en el pin 5 y allí proceder con el algoritmo de control de fase.  No se con que compilador vas a trabajar, pero léete con cuidado la nota aplicativa de Microchip AN958 en el link que posteé antes.  Allí utilizan el método 'polling' para detectar el cruce por cero, sin embargo al hacerlo por interrupciones, tienes la ventaja de que otras tareas que tenga el PIC no te van a 'desajustar' los tiempos precisos que necesitas para el control de fase.

Saludos!

Desconectado ceneca

  • PIC16
  • ***
  • Mensajes: 105
Re: dimmer de dos canales con pic
« Respuesta #8 en: 24 de Noviembre de 2010, 19:19:48 »
De nuevo gracias!!!!!! bmb.
 haré caso de tu recomendación y ya mismo me pondré a leer la hoja de datos, con detenimiento ya que le he dado una mirada, muy por arriba , aunque para mi es chino básico, pero igual le voy a poner todo mi esfuerzo. de igual forma comenzare a armar el circuito para ir haciendo las pruebas, espero tener suerte y tu ayuda ya que estoy muy perdido, pero avanzando!!

saludos!!
El sabio no dice todo lo que piensa, pero siempre piensa todo lo que dice. ARISTOTELES

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: dimmer de dos canales con pic
« Respuesta #9 en: 24 de Noviembre de 2010, 19:41:38 »
Hola, en este link hay algo de información que te puede aclarar el concepto de control de fase con una aplicación básica en assembler.  También le puedes dar una mirada a este otro que está escrito en C y tiene también otro circuito de detección de cruce por cero: PIC16F84 Based Triac

Saludos!

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: dimmer de dos canales con pic
« Respuesta #10 en: 24 de Noviembre de 2010, 20:39:09 »
hola suky , pido disculpas si no se entiende, pero toda la vida he abreviado circuito como cto, pero la escribo y listo para evitar confusiones, gracias por tu aporte. pero dime también cual es tu opinión acerca del circuito por favor.

Armo y veo los resultados veremos si lo tengo para mañana

saludos


Es cuestion de respetar las reglas del foro y que los demás entiendan de que estas hablando  ;-)

Yo utilizo un esquema similar, y por ejemplo en la salida del OK1 obtengo la señal de cruce por cero y la coloco a un pin de interrupción por flanco. Solo que uso dos resistencias de 18k para 220 Vef.


Saludos!


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado ceneca

  • PIC16
  • ***
  • Mensajes: 105
Re: dimmer de dos canales con pic
« Respuesta #11 en: 24 de Noviembre de 2010, 23:09:24 »
gracias por responder, estoy de acuerdo con las resistencias, lo había pensado cuando leí una de las respuestas de bmb , en una de la aplicaciones,que me dejo para revisar  y ahora con tu comentario veré de modificarlas.

de acuerdo, si hay normas hay que cumplirlas. y te felicito por la web, estoy alli viendo el tutorial de mplab  c18.

saludos!!  ;-)
El sabio no dice todo lo que piensa, pero siempre piensa todo lo que dice. ARISTOTELES

Desconectado ceneca

  • PIC16
  • ***
  • Mensajes: 105
Re: dimmer de dos canales con pic
« Respuesta #12 en: 25 de Noviembre de 2010, 16:18:37 »
  :( he armado y puesto en marcha el circuito, con mal resultado, tenia la esperanza de que el código estuviera mas o menos bien , pero por lo visto no es así, las lamparas tienen el siguiente comportamiento:
una de ellas se enciende, se apaga como parpadeando y luego se enciende de la misma manera, y allí queda , la otra permanece siempre encendida.creo que es el código, ya que estoy convencido de que el pcb es correcto, lo he revisado mil veces de igual modo ya estoy empezando una cuidadosa revisión, ojala sea aquí el problema, ya que el código para mis conocimientos esta lejos de poder resolverlo :oops:. veremos como sigo, lo que pido si es posible que alguien vea el código y me de una mano,  acudo al foro por ayuda o al menos alguna orientación, como para que pueda resolverlo.

gracias, saludos!!
El sabio no dice todo lo que piensa, pero siempre piensa todo lo que dice. ARISTOTELES

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: dimmer de dos canales con pic
« Respuesta #13 en: 25 de Noviembre de 2010, 21:20:35 »
Hola ceneca, postea el circuito final que estás usando y apenas tenga un tiempo libre lo monto en Proteus para ver que pasa.

Saludos!

Desconectado ceneca

  • PIC16
  • ***
  • Mensajes: 105
Re: dimmer de dos canales con pic
« Respuesta #14 en: 26 de Noviembre de 2010, 13:48:29 »
bueno gracias bmb!!!!!  :-/

yo estoy en plena lectura  de tutoriales, instrucciones, hilos , post , tratando de empaparme en el tema, así que tratare de ayudar, y te agradezco la colaboración, aquí adjunto el circuito que monte, te cuento que he hecho , un poco de pruebas cambiando el detector , por una resistencia como lo indica la AN521, he probado ademas un detector con transistor, y el resultado fue siempre el mismo se enciende una, se apaga parpadeando, se vuelve a encender y asi queda y la otra siempre esta encendida.

He visto que en el encabezado del programa define un clock de 20MHZ y que en esta lineas

include <12F683.h>
#FUSES NOWDT, HS, NOCPD, NOPROTECT, MCLR, PUT, BROWNOUT, IESO, NOFCMEN

HS es un oscilador externo a cristal, o sea que lo que yo puse en el circuito estaría bien, en principio.
Ademas he visto en otra nota de aplicación que la forma de conexión de los triac y los opto esta correcta, por eso revisando el pcb y no encontrando errores de montaje considero que el problema esta en el código, (eso creo)  :lol:

ni bien este en casa en un par de horas seguiré  PELEÁNDOME CON ESTO.

p/d, en el esquema figura el moc 3010, no lo cambie al corregir ...... se me paso , pero uso los moc3021, lo otro esta ok


GRACIAS POR TU AYUDA!!!!!!!!

saludos!!!
« Última modificación: 26 de Noviembre de 2010, 13:52:02 por ceneca »
El sabio no dice todo lo que piensa, pero siempre piensa todo lo que dice. ARISTOTELES