Autor Tema: Dimmer 1 canal ,pic12F683.  (Leído 21545 veces)

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

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Dimmer 1 canal ,pic12F683.
« Respuesta #15 en: 31 de Mayo de 2012, 02:26:24 »
Lo siento, no era mi intención ser o parecer grosero.

En el siguiente link encontrarás información de programación básica
http://www.todopic.com.ar/foros/index.php?topic=14634.0

Te recomiendo que comiences desde lo mas sencillo, hasta llegar a lo más complejo.
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado hypnos00

  • PIC10
  • *
  • Mensajes: 21
Re: Dimmer 1 canal ,pic12F683.
« Respuesta #16 en: 05 de Junio de 2012, 19:50:20 »
saludos!, tengo una nueva consulta, y el puntoe s que no recuerdo exactamente como relacionar el ADC de la siguiente manera: ejemplo si un adc de 4 bit tenemos que pueden hacerce que 2^4=16 valores, entonces si el vref es 5v como saco la relacion de:

0000    0v
0001     ??
0010     ???

sucesivamente hasta llegar a 1111   5v

en verdad agradesco su apoyo ya que tengo algo que egrese de la facultad y entre el trabajo y lo demas me despiste.


 saludos a todos y gracias al compañero que me apoyo con los tutoriales en el ultimo post me e apoyado en ellos mucho

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Dimmer 1 canal ,pic12F683.
« Respuesta #17 en: 05 de Junio de 2012, 21:00:15 »
Lo primero que debes hacer es convertir el valor Binario a un valor decimal, por ejemplo

0010=2

luego realizas una regla de 3

1111=15 dec = 5V

0010= 2 dec = x

por lo tanto

x = 5V * 2dec / 15 dec = 0.6667 V
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado hypnos00

  • PIC10
  • *
  • Mensajes: 21
Re: Dimmer 1 canal ,pic12F683.
« Respuesta #18 en: 06 de Junio de 2012, 01:03:16 »
Lo primero que debes hacer es convertir el valor Binario a un valor decimal, por ejemplo

0010=2

luego realizas una regla de 3

1111=15 dec = 5V

0010= 2 dec = x

por lo tanto

x = 5V * 2dec / 15 dec = 0.6667 V


O.o y asi de facil??? yo recordaba una formula que decia vo=vref/(2^n-1)   o algo asi porl el estilo jeje XD bueno esque ya son mas de 2 años que deje los libros atras por eso el de retomar los temas.

bueno gracias y saludos!

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Dimmer 1 canal ,pic12F683.
« Respuesta #19 en: 06 de Junio de 2012, 18:56:21 »
 :D Si a mi también me enseñaron de esa forma, pero lo olvidé y solo me acordé de esta otra forma  :D
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Dimmer 1 canal ,pic12F683.
« Respuesta #20 en: 06 de Junio de 2012, 22:41:43 »
Hola

Es la forma correcta como dices hypnos00, pero mira que si tienes un Vref=5v y un ADC de 4 bits, vas a tener la razon:  5/15, la cual es la que multiplicas por el valor ADC que te entrega el PIC.

Si tienes un ADC de 8 bits, la razon sera de 5/255, tal y como lo recuerdas :)

Saludos
El papel lo aguanta todo

Desconectado hypnos00

  • PIC10
  • *
  • Mensajes: 21
Re: Dimmer 1 canal ,pic12F683.
« Respuesta #21 en: 12 de Junio de 2012, 14:46:08 »
encontre este programa que se supone que es el dimmer con int externa pero noe ntiendo a que hacen referencia con la formula retardo=(int16)(255-data)*32 ya que cual es el objetivo de poner int16 entre parentesis, y de donde sale el 32, bueno si alguien tiene la respuesta le agradezco de antemano, saludos!


 #include "16f877a.h"
            #device ADC=8
            #fuses XT,NOWDT,NOPROTECT,NOLVP,NODEBUG
            #use delay(clock=4000000)
            #define Pulse PIN_C0             //aquí manda pulso disparo al triac
           
            int flag=0;                      //#include
               
            #int_ext
            void ext_isr()
            { flag=1; }
           
            void main()
            {
            BYTE i, j, address, value;
            int16 q, q1;
            int16 retardo=0,data=200;
            float p; q1=0;
           
            output_low(Pulse);
            setup_adc_ports(AN0);
            setup_adc(ADC_CLOCK_INTERNAL);
            set_adc_channel(0);
            ext_int_edge(0,L_TO_H);
            enable_interrupts(INT_EXT);
            enable_interrupts(GLOBAL);
           
            do
            {
            if(flag)
            {
            data=read_adc();
            retardo=(int16)(255-data)*32;
            delay_us(retardo);
            output_high(Pulse);
            delay_us(40);
            output_low(Pulse);
            flag=0;
            }
            }while (TRUE);
            }

Desconectado hypnos00

  • PIC10
  • *
  • Mensajes: 21
Re: Dimmer 1 canal ,pic12F683.
« Respuesta #22 en: 12 de Junio de 2012, 14:47:33 »
Hola

Es la forma correcta como dices hypnos00, pero mira que si tienes un Vref=5v y un ADC de 4 bits, vas a tener la razon:  5/15, la cual es la que multiplicas por el valor ADC que te entrega el PIC.

Si tienes un ADC de 8 bits, la razon sera de 5/255, tal y como lo recuerdas :)

Saludos


lo pillo thx men :)

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Dimmer 1 canal ,pic12F683.
« Respuesta #23 en: 14 de Junio de 2012, 14:33:19 »
a que hacen referencia con la formula retardo=(int16)(255-data)*32 ya que cual es el objetivo de poner int16 entre parentesis, y de donde sale el 32,

Ese (int16) convierte del valor de (255-data) a un entero de 16 bits mediante casting ya que data es un entero de 8 bits. Por ejemplo si data es igual a 0 entonces 255-data sería igual a 255. Si multiplicas 255 por 32, el resultado debería ser 8160 (que es un entero de mas de 8bits), pero si 255 esta almacenado en una variable de 8 bits, la multiplicación daría 224 debido a que se pierden los demás bits. Es por ello que es necesario convertir el resultado de la resta a un entero de 16 bits antes de realizar la multiplicación.

Por otro lado la multiplicación por 32 se debe a que el valor maximo obtenido es 8160. Este valor luego es pasado a la función delay_us. Es decir, conviertes los valores del ADC a retardos, dando como máximo retardo 8.16ms lo que equivale a medio ciclo de la onda senoidal.
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado hypnos00

  • PIC10
  • *
  • Mensajes: 21
Re: Dimmer 1 canal ,pic12F683.
« Respuesta #24 en: 14 de Junio de 2012, 19:28:24 »
a que hacen referencia con la formula retardo=(int16)(255-data)*32 ya que cual es el objetivo de poner int16 entre parentesis, y de donde sale el 32,

Ese (int16) convierte del valor de (255-data) a un entero de 16 bits mediante casting ya que data es un entero de 8 bits. Por ejemplo si data es igual a 0 entonces 255-data sería igual a 255. Si multiplicas 255 por 32, el resultado debería ser 8160 (que es un entero de mas de 8bits), pero si 255 esta almacenado en una variable de 8 bits, la multiplicación daría 224 debido a que se pierden los demás bits. Es por ello que es necesario convertir el resultado de la resta a un entero de 16 bits antes de realizar la multiplicación.

Por otro lado la multiplicación por 32 se debe a que el valor maximo obtenido es 8160. Este valor luego es pasado a la función delay_us. Es decir, conviertes los valores del ADC a retardos, dando como máximo retardo 8.16ms lo que equivale a medio ciclo de la onda senoidal.

colega me das permiso de agregarte al msn???

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Dimmer 1 canal ,pic12F683.
« Respuesta #25 en: 15 de Junio de 2012, 01:05:01 »
Ok, pero por los momentos no tengo mucho tiempo, así que no podré atenderte.
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado hypnos00

  • PIC10
  • *
  • Mensajes: 21
Re: Dimmer 1 canal ,pic12F683.
« Respuesta #26 en: 02 de Julio de 2012, 15:20:45 »
a que hacen referencia con la formula retardo=(int16)(255-data)*32 ya que cual es el objetivo de poner int16 entre parentesis, y de donde sale el 32,

Ese (int16) convierte del valor de (255-data) a un entero de 16 bits mediante casting ya que data es un entero de 8 bits. Por ejemplo si data es igual a 0 entonces 255-data sería igual a 255. Si multiplicas 255 por 32, el resultado debería ser 8160 (que es un entero de mas de 8bits), pero si 255 esta almacenado en una variable de 8 bits, la multiplicación daría 224 debido a que se pierden los demás bits. Es por ello que es necesario convertir el resultado de la resta a un entero de 16 bits antes de realizar la multiplicación.

Por otro lado la multiplicación por 32 se debe a que el valor maximo obtenido es 8160. Este valor luego es pasado a la función delay_us. Es decir, conviertes los valores del ADC a retardos, dando como máximo retardo 8.16ms lo que equivale a medio ciclo de la onda senoidal.

colega me das permiso de agregarte al msn???

 int16 retardo=0,data=200; otra dura pork limitan a data a 200 bueno a lo que se es por que esta almacenado en 8 bit y para no saturar solo hacen que llegue a 200, bueno si me equivoco corrijanme porfavor

Desconectado hypnos00

  • PIC10
  • *
  • Mensajes: 21
Re: Dimmer 1 canal ,pic12F683.
« Respuesta #27 en: 22 de Agosto de 2012, 17:17:08 »
:oops: Lo siento, tienes razon.

En ese caso no se cual utilizar, pero tambien puedes utilizar un divisor de voltaje mediante resistencias. Es decir, puedes utilizar una resistencia de 10k conectada en serie con una de 2M. Esto hará que practicamente lleguen los 170Vp de la fuente al PIC, pero con muy poca cantidad de corriente, limitada por la resistencia de 10k.


la resistencia deberia de se a 5w??

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Dimmer 1 canal ,pic12F683.
« Respuesta #28 en: 22 de Agosto de 2012, 23:33:50 »
No

Para obtener el valor de potencia debes tomar en cuenta lo siguiente

P=V*I=(V^2)/R=(170^2)/2M=0.01445W

Puedes utilizar una resistencia de 1/4W pero lo mejor es una de 1/2W por seguridad.

Por cierto, no es un divisor de voltaje, es la Resistencia de 2M directamente a la entrada del PIC, pero esta debe ser una entrada con diodos de protección. Por lo general todas las entradas q sirven para ADC traen esa protección. De lo contrario tendrás que poner los diodos de protección.
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Dimmer 1 canal ,pic12F683.
« Respuesta #29 en: 23 de Agosto de 2012, 00:26:45 »
Como puedes ver en la siguiente imagen utilizan 2 resistencias de 11k de 1/8W y una de 22k para detectar el cruce por cero.



esto lo puedes ver en la nota de aplicación de microchip q aparee en el siguiente enlace

http://ww1.microchip.com/downloads/en/AppNotes/91094A.pdf
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA