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

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

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: dimmer de dos canales con pic
« Respuesta #15 en: 27 de Noviembre de 2010, 13:47:14 »
yo no me entere bien hasta que utilice un osciloscopio.pero si no tienes.seria una gran ayuda para ti el usar el proteus.
conjuntamente con el mplab.puede que te cueste un poco aprender el funcionamiento del simulador.pero al final vas a avanzar mucho.
para mi ya es imprescindible simular el circuito antes de montar el circuito.
antes era reacio.pero avanzas como 10 o 20 veces mas rapido. :)

por el foro hay diferentes imagenes del tipo de onda que tienes que obtener.

y ten muy encuenta que hace falta un minimo de tiempo excitando el gate del tiristor.en caso contrario puedes sufrir intermitencias.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado ceneca

  • PIC16
  • ***
  • Mensajes: 105
Re: dimmer de dos canales con pic
« Respuesta #16 en: 27 de Noviembre de 2010, 15:13:04 »
Hola groundman, gracias por tu comentario!!!, ademas el amigo bmb, también  utiliza proteus, así que tendré que ver de implementarlo, comenzare a ver algo de informacion a cerca del mismo, y lo del osciloscopio, en eso estoy metido, hay por allí un hitachi de un amigo que desea venderlo así que tendré que tener una seria charla con el.jajajaj.

Lo que ocurre es que no se como voy a meter tanta data en mi cabeza, el lenguaje c, tutotiales de mplab y c18, ccs, un curso de pic, y ahora proteus!!! :shock: :shock:, creo que seria mejor volver a la escuela , o comprarlo hecho!!!jejej  pero no me dejare vencer, algo va a salir, ademas es cierto y lo que me comentas acerca de la prueba del circuito antes de la implementación del mismo también lo veo sumamente necesaria.

Agradezco tus consejos y los tendré en cuenta

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

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: dimmer de dos canales con pic
« Respuesta #17 en: 27 de Noviembre de 2010, 15:37:24 »
Podrías comenzar con un firmware más sencillo, donde controlas de forma adecuada cada triac. Y después comenzar a jugar con eso. Te va a ser muy útil proteus, y realiza una búsqueda en el foro que ya se ha tratado el tema.


Saludos!
« Última modificación: 27 de Noviembre de 2010, 20:49:21 por Suky »
No contesto mensajes privados, las consultas en el foro

Desconectado ceneca

  • PIC16
  • ***
  • Mensajes: 105
Re: dimmer de dos canales con pic
« Respuesta #18 en: 28 de Noviembre de 2010, 10:38:32 »
Hola!!!, he estado leyendo a cerca de c y he metido un poco de mano en el programa, al menos estoy empezando a comprender las instrucciones, y ver como funciona. el circuito, en principio estaría funcionando bien, al menos desde las patillas de salidas del pin levantando este del circuito si doy 5v, las lamparas encienden y apagan según les de la orden, sigo teniendo dudas y no logro darme cuenta, cual es la patilla de sincronizacion, he ahora visto  y descargado un dimmer cuyo fimware también esta en c para compararlo y ver que y cuales son las diferencias. Asi que ni bien tenga alguna novedad la colgare aquí. De momento me meteré de lleno a el fimware y luego veré de implementar proteus , ire de a poco.

Gracias y 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 #19 en: 28 de Noviembre de 2010, 11:13:07 »
...enciende una, se apaga parpadeando, se vuelve a encender y asi queda y la otra siempre esta encendida.

Hola ceneca, finalmente tuve algo de tiempo y al montar el circuito en Proteus, no se por que razón no logro que me funcione con los triacs, pero si los desconecto y veo los oscilogramas de las dos salidas con respecto al de AC, pasa exactamente lo que dices.
Lo que sugiere Suky me parece lo más práctico ahora; de hecho es asi como inicio algún proyecto con el que no he tenido experiencia. Si quieres vamos empezando un programa pequeño que, por ejemplo lea un potenciómetro por una entrada análoga y con ese valor hacemos que varíe el retardo del disparo para un triac.

Entonces lo primero sería tener claro los tiempos que se manejan:

Son 120 semi ciclos en una forma de onda de 60Hz ó
Son 100 semi ciclos en una forma de onda de 50Hz
Cada semi ciclo dura  8.333 mS (60Hz) ó
Cada semi ciclo dura 10.0 mS (50Hz)

Según el retardo con respecto al cruce por cero que se le de al disparo de cada semiciclo, tendremos un control por fase del triac.  Una vez encendido el triac, por un pulso en el gate, este no se apagará hasta que no deje de fluir corriente a través de él, o sea en el cruce por cero.

Entonces lo primero sería intentar hacer el encabezado de configuración del PIC iniciando apropiadamente el Timer0 para que pueda cubrir el rango de tiempo para los retardos que necesitamos, además configurarlo también para que tenga una entrada análoga y configurar las dos interrupciones: int_EXT e int_RTCC.
Yo suguiero usar la siguiente configuración en los pines y fuses:

Código: [Seleccionar]
// Conexiones:
// PIN    Conexión
// ---    --------------------
//  1     Vdd
//  2     Cristal
//  3     Cristal
//  4     MCLR
//  5     INT EXT (Zero Cross)
//  6     Optoacoplador
//  7     Potenciómetro
//  8     Vss
//

#include <12F683.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES NOCPD                    //No EE protection
#FUSES NOPROTECT                //Code not protected from reading
#FUSES MCLR                     //Master Clear pin enabled
#FUSES PUT                      //Power Up Timer
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOIESO                   //Internal External Switch Over mode disabled
#FUSES NOFCMEN                  //Fail-safe clock monitor disabled

#use delay(clock=4000000)

Bueno, me cuentas que opinas y si te animas vamos armando el programita aquí, con la ayuda de todos hasta que lo hagamos funcionar.

Saludos!

Desconectado ceneca

  • PIC16
  • ***
  • Mensajes: 105
Re: dimmer de dos canales con pic
« Respuesta #20 en: 28 de Noviembre de 2010, 11:25:08 »
Citar
Bueno, me cuentas que opinas y si te animas vamos armando el programita aquí, con la ayuda de todos hasta que lo hagamos funcionar.

Me parece bárbaro, estoy dispuesto, solo les pido paciencia, voy de cero!!! :(

aprovechare antes de empezar  a leer algo mas para poder comprender mejor , y ya postear las primeras lineas.

gracias!!!
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 #21 en: 28 de Noviembre de 2010, 12:10:43 »
Bueno para que tengas una idea de como configurar el Timer0 y el ADC, te adelanto algo del código (que ya hice), y la forma de configurarlos:

Código: C
  1. // dimmer.c
  2. // Noviembre 28 de 2010
  3. // bmb
  4. //
  5. // En general:
  6. // clock = 4000000 Hz
  7. // Tosc = (1 / clock)
  8. // Tiempo = 4 x Tosc x Valor a contar en Timer + 1 x Rango del Divisor
  9. // Tiempo = 4 x 0.00000025 x 256 x 32 = 8.192mS        // Timer 8 bits a 4MHz
  10. //
  11. // Tiempos:
  12. // Son 120 medios ciclos en una forma de onda de 60Hz o
  13. // Son 100 medios ciclos en una forma de onda de 50Hz
  14. // Cada medio ciclo dura  8.333 mS (60Hz) o
  15. // Cada medio ciclo dura 10.0   mS (50Hz)
  16. // En este ejemplo los valores estan calculados para 60Hz
  17. // Ton para el gate del optoacoplador = 100uS
  18. //
  19. //
  20. // Conexiones:
  21. // PIN    Conexion
  22. // ---    --------------------
  23. //  1     Vdd
  24. //  2     Cristal
  25. //  3     Cristal
  26. //  4     MCLR
  27. //  5     INT EXT (Zero Cross)
  28. //  6     Optoacoplador
  29. //  7     Potenciometro
  30. //  8     Vss
  31. //
  32.  
  33. #include <12F683.h>
  34. #device adc=8
  35.  
  36. #FUSES NOWDT                    //No Watch Dog Timer
  37. #FUSES HS                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
  38. #FUSES NOCPD                    //No EE protection
  39. #FUSES NOPROTECT                //Code not protected from reading
  40. #FUSES MCLR                     //Master Clear pin enabled
  41. #FUSES PUT                      //Power Up Timer
  42. #FUSES NOBROWNOUT               //No brownout reset
  43. #FUSES NOIESO                   //Internal External Switch Over mode disabled
  44. #FUSES NOFCMEN                  //Fail-safe clock monitor disabled
  45.  
  46. #use delay(clock=4000000)
  47.  
  48. unsigned int valor_adc = 0;
  49.  
  50. #int_RTCC
  51. void  RTCC_isr(void)
  52. {
  53.    
  54. }
  55.  
  56. #int_EXT
  57. void  EXT_isr(void)
  58. {
  59.    
  60. }
  61.  
  62. void main()
  63. {
  64.    setup_adc_ports(sAN0|VSS_VDD);
  65.    setup_adc(ADC_CLOCK_INTERNAL);
  66.    setup_timer_0(RTCC_INTERNAL | RTCC_DIV_32);
  67.    setup_timer_1(T1_DISABLED);
  68.    setup_timer_2(T2_DISABLED,0,1);
  69.    setup_ccp1(CCP_OFF);
  70.    setup_comparator(NC_NC);
  71.    setup_vref(FALSE);
  72.    ext_int_edge(H_TO_L);
  73.    enable_interrupts(INT_RTCC);
  74.    enable_interrupts(INT_EXT);
  75.    enable_interrupts(GLOBAL);
  76.  
  77.    set_adc_channel(0);
  78.    
  79.    while(true)
  80.    {
  81.       valor_adc = read_adc();
  82.    }
  83. }

Bueno, nos vas contando de tus avances,

Saludos!

EDITO:  cambia este fuse:
Código: [Seleccionar]
#FUSES HS                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)por este:
Código: [Seleccionar]
#FUSES XT                       //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
« Última modificación: 28 de Noviembre de 2010, 12:18:29 por bmb »

Desconectado ceneca

  • PIC16
  • ***
  • Mensajes: 105
Re: dimmer de dos canales con pic
« Respuesta #22 en: 28 de Noviembre de 2010, 13:01:21 »
ok !!!, bien quiero detenerme en el cuerpo principal y estudiarlo un poco , ya te consultare mis dudas , quiero ir paso a paso y comprendiendo bien lo que vamos haciendo, perdón por las demoras pero si no no puedo seguirte  :oops:.

hasta aquí estoy bien pero quiero ver un par de instrucciones, que no entiendo .y aqui no tengo el machete, !!!
ya te preguntare, ... y mucho!!, l
saludos!!
El sabio no dice todo lo que piensa, pero siempre piensa todo lo que dice. ARISTOTELES

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: dimmer de dos canales con pic
« Respuesta #23 en: 28 de Noviembre de 2010, 13:06:37 »
Por acá está el proyecto en proteus de como Akenafab lo ha hecho funcionar. http://www.todopic.com.ar/foros/index.php?topic=32680.msg274038#msg274038


Por ahí para que se entienda un poco más fácil pueden hacer los siguiente. Pensando en 50Hz, tenemos periodos de 20ms, pero debemos controlar el triac cada medio ciclo, o sea 10ms. Entonces si disparamos el triac a los 5ms de detectado el cruce por cero estaremos entregando 50% de la onda. Para cargar el timer podemos hacer una regla de tres simple:

Configurando timer setup_timer_0(RTCC_INTERNAL | RTCC_DIV_64), con eso pre-cargando el timer con 100 obtenemos 10ms.-

write_timer0((Porcentaje/100.0)*155.0 + 100.0);

Entonces, cada vez que detectamos el cruce por cero cargamos el timer con el valor deseado y lo habilitamos, y en la interrupción del timer activamos el Gate del triac por unos us y desactivamos el timer. La variable Porcentaje puede controlarse externamente a gusto generando los efectos que se deseen.


Saludos!
« Última modificación: 28 de Noviembre de 2010, 13:09:33 por Suky »
No contesto mensajes privados, las consultas en el foro

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: dimmer de dos canales con pic
« Respuesta #24 en: 28 de Noviembre de 2010, 16:38:58 »
Hola Suky, no había podido hacer que me trabajara el triac con el optoacoplador en proteus; muchas gracias por el dato.  Te cuento que yo ya había hecho el programa y funciona bien.  La idea es ir posteando por partes el programa para que los que estén interesados como ceneca,  lo vayan entendiendo bien.  Por ejemplo la idea de configurar el Timer0 lo más ajustado posible a (en mi caso 60Hz) los 8.333 mS que dura el semiciclo es la de tener la mayor cantidad de pasos discretos posibles de atenuación.  Si configuro el timer asi: setup_timer_0(RTCC_INTERNAL | RTCC_DIV_64), me tocaría empezar a contar desde 128 para los 8,333 mS, por lo que tendría solo la mitad de pasos discretos para la atenuación.  Si configuro el timer como lo estoy haciendo, setup_timer_0(RTCC_INTERNAL | RTCC_DIV_32), voy a disponer de casi los 256 pasos discretos para la atenuación.  Digo casi, porque en la práctica solo puedo llegar desde 0 hasta 240, en donde casi llega al siguiente cruce por cero; si pongo valores mayores a 240, me paso del siguiente cruce por cero con las consecuencias que ya te imaginarás.  Le voy a dar una mirada al aporte de Akenafab y luego te comento.


Saludos! 

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: dimmer de dos canales con pic
« Respuesta #25 en: 28 de Noviembre de 2010, 17:20:25 »
Dependerá entonces de la frecuencia, aquí se trabaja a 50 Hz  ;-)


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

Desconectado ceneca

  • PIC16
  • ***
  • Mensajes: 105
Re: dimmer de dos canales con pic
« Respuesta #26 en: 29 de Noviembre de 2010, 09:38:35 »
GRACIAS, SUKY Y BMB, ayer estuve como dije intentando comprender un poco mas , yo intentare ir modificando las lineas para los 50 hz, hoy al llegar del laboral, si el tiempo me da lo posteare para que lo corrijan, (eso seguro), ya que estoy entendiendo pero muyyyy de apoco, ahora viendo el proyecto e akenafab , el amigo groundman colgo esta imagen que me aclara un poco (eso creo) lo que hablan del timer


o sea pasando en limpio, el detector de cruce por cero sincroniza la onda con el disparo del triac,de esta forma, cada vez que la tensión pase por 0V,. Lo que voy a hacer es activar un TIMER, para retrasar la conmutación al momento deseado que va dentro de los 10ms del semiperiodo. o sea

 la corriente de red va a 50 Hz, o sea como explica suky 20 ms de periodo. Pero como trabajamos con semiperiodo, serian 10 milisegundos.

Es decir, desde que detectamos el paso por 0V, tenemos un margen de 0 a 10milisegundos para activar el Triac.
Si activamos en 0 seg el triac permanecera encendido 10 ms  entonces la luz lucirá el maximo
Si activamos en10ms : La luz estará apagada, a los 9ms casi apagada etc, etc,

lo que no entiendo y pido me disculpen por la ignorancia es porque suky dice de activar el timer unos microseg y luego desactivarlo, no se desactiva al proximo cruce por cero? eso no lo entiendo,

esto me aclaro bien el tema del disparo del triac pero no entiendo como es que funciona lo del timer  :oops:, tal vez esta delante de mis ojos pero no lo entiendo, lo desactivo yo o se desactiva al cruce por cero?, y el control externo se haría a través de un pot o un pulsador ? a travez de la patailla 7 como lo definio bmb, y para eso se haria una tabla? y de alli daria un valor al pic para saber en que parte de la onda hago el disparo? seria algo asi o estoy muy errado?

al menos tengo bastante mas en claro como es el principio de funcionamiento, pero en el código aun me mareo y mucho, el programa y las instrucciones me confunden un poco, tengo que aprender mas su funcionamiento.

De igual manera les ruego me tengan paciencia, voy  lento pero quiero comprender. y mil gracias!!!

saludos!



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

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: dimmer de dos canales con pic
« Respuesta #27 en: 29 de Noviembre de 2010, 10:35:01 »
No, yo hablo del Gate del triac. Cuando salta la interrupción del timer hay que trabajar sobre el Triac, y lo que se hace es enviar un pulso a su pin Gate para engancharlo. Yo envío un pulso de 200 us. Es lo que se puede ver en la imagen que adjunte.
El Triac al cruce por cero se desactiva solo. (Guarda con ello, hay Triac que tienen detector de cruce por cero, esos no sirven para este propósito)

Luego hablas de una tabla, pero no se a cual te refieres.

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

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: dimmer de dos canales con pic
« Respuesta #28 en: 29 de Noviembre de 2010, 13:23:14 »
Hola ceneca, veo que ya tienes claro la mayoria de la idea.  Lo que dices con el timer en relidad es con el gate del Triac como te explica Suky.
La secuencia es más o menos asi:

- Se ha detectado un cruce por cero (interrupción externa bien sea por flanco ascendente o descentente)
- Se setea el timer0 con el valor de inicio deseado (el tiempo que queremos que el triac este apagado a partir del cruce por cero)
- Una vez se dispara la interrupción de timer0 por desbordamiento, encendemos la salida para el triac por unos 200uS y apagamos la salida.
- El triac permanece encendido hasta el siguiente cruce por cero.
- Esperamos la siguiente interrupción de cruce por cero y empezamos de nuevo.

Como ustedes en Argentina tienen una red eléctrica funcionando a 50Hz, el timer lo debes configurar como te dice Suky, porque como yo te había dicho no te alcanzaría el tiempo para un control total del semiciclo.  Cualquier otra cosa no dudes en preguntar.

Saludos!

Desconectado ceneca

  • PIC16
  • ***
  • Mensajes: 105
Re: dimmer de dos canales con pic
« Respuesta #29 en: 01 de Diciembre de 2010, 14:18:59 »
hola, de nuevo, he estado leyendo y comprendiendo un poco de c y de proteus y familiarizandome un poco mas con este mundo de los pic con el que no me llevo para nada, pero de a poco lo ire venciendo .
Pasa que en mi caso no tengo experiencia con pic y este proyecto pretendí que sea armar y listo, pero ahora se me ha transformado en un desafío, y ya que estoy en el baile voy a bailar , así que me detuve un poco a escuchar y ver las sugerencias de mis compañeros del foro, y he comenzado por leer muchos proyectos del foro , hojas de datos y manuales por eso estuve un poco ausente estos dias ya que estoy estudiando, les pido me tengan paciencia y me sigan ayudando. :lol:

Hay mucha info en el foro, y ademas encontré un pdf que estoy hojeando  a cerca del compilador de c y proteus, es u poco viejo pero creo que esta interesante, se los dejo tal vez les sirva de algo.
 bmb, ya he hecho en eagle el cto , con el programa estoy trabajando para pasarlo a 50 hz,( usando la idea de suky) y comenzando a hacer algunas pruebas a ver si aprendo algo,  :rolleyes:
Estoy dándole duro, voy lento por los tiempos que tengo pero seguro, asi que pronto hare mas preguntas!!

saludos
« Última modificación: 01 de Diciembre de 2010, 15:01:57 por ceneca »
El sabio no dice todo lo que piensa, pero siempre piensa todo lo que dice. ARISTOTELES