Autor Tema: PWM por relé  (Leído 13888 veces)

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

Desconectado ORE

  • PIC10
  • *
  • Mensajes: 43
PWM por relé
« en: 19 de Junio de 2006, 14:06:01 »
Hola muy buenas,

Después de configurar toda una aplicación, descubro que no puedo, o no hay soluciones, para poder mostrar por un relé la actuación PWM por la patita CCP2 del PIC16F877. Mi aplicación consiste en un regulador PID, que realiza x funciones, y que obtiene mediante el cálculo de la siguiente forma la salida proporcional al error:

// Guardamos error de iteracion anterior
errant=error;                                   
// Calculo del error actual = set_point(consigna)-process_value(variable proceso)
error = set_point - process_value;             
// Error acumulativo
serror+=error;                                 
// Señal de control, duty cycle para PWM
salida=Kp*error+Ti*serror+Td*(error-errant);
   
Esta salida es la que se debe aplicar al rele mediante la instrucción:

//Lo convierto en un valor entero
duty_pwm2=(int) salida;
//Valor de carga para el duty         
set_pwm2_duty(duty_pwm2);

Para todo ello realizo los cálculos para ver las frecuencias mínimas y máximas que tiene el periodo T (mi cristal es de 10 MHz):

TPWMminimo=[(PR2+1)]·(4/fosc)·(TMR2 Preescaler)=[(255+1)]·(4/10MHz)·16=1,63 ms

Para saber la frecuencia hago su inversa, y obtengo 610 Hz. A esta frecuencia y periodo, es imposible ver conmutar un relé, ya que como mínimo ese período debería de ser de 1 s por lo menos. Harto de buscar, lo único que se me ocurre es realizar una interrupción (mediante el timer 1) que cada segundo active el pwm según el valor del duty_pwm2. No se si es lo correcto, y en 1 s o 2 s se podrán ver esas conmutaciones con su duty cicle respectivo. Ya no se donde darle más, porque viendo la teoria del pwm, cuando el TMR2=PR2, y posteriormente TMR2=duty cicle, no puedo hacer que ese periodo sea de 1 s. No se si me explico.

Sería de gran ayuda sus aportaciones y/o posibles soluciones, ya que he probado mil y una posibilidades y no se me ocurren más cosas.

Un saludo,

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: PWM por relé
« Respuesta #1 en: 19 de Junio de 2006, 14:23:48 »
Hola ORE, a duras penas un relay puede conmutar a una velocidad de 10 Hz, por lo que los 610 Hz que tu deseas serán imposibles, incluso un led puede generarlos, pero tu vista no lo verá, te recomendaria que controlaras un transistor y este a su ves le envie la señal a un parlante si tu deseas escuchar la variaciones segun el ciclo activo.

Un saludo.

Atte. CARLOS.

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado ORE

  • PIC10
  • *
  • Mensajes: 43
Re: PWM por relé
« Respuesta #2 en: 19 de Junio de 2006, 15:18:26 »
Hola Chaly29,

Gracias por tu rápida respuesta. Como bién dices debería modificar el hardware, pero a estas alturas ya me es imposible. Pero creo que no me he expresado bién anteriormente. Deseo variar la frecuencia de conmutación del relé en funcion de una salida que es regulada por un PID. Veo que a 610 Hz es imposible ver como conmuta un relé, lo se, pero lo que quiero es hacerlo conmutar a la velocidad más baja que pueda en Hz, por ejemplo lo mínimo que como dices es 10 Hz, la pregunta es ¿Puedo conseguir esos 10 Hz de alguna forma, bien con el pwm o con un timer que me genere una onda cuadrada?

Un saludo,

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: PWM por relé
« Respuesta #3 en: 19 de Junio de 2006, 15:50:47 »
Hola ORE, no creo que con el PWM del PIC consigas los 10Hz, pero con el timer seguro que podras, pero aparte de esto, con un reay no tendras definición para el PWM, pore como no se el uso que le daras no te puedo dar un mejos consejo.

Un saludo.

Atte. CARLOS.
La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: PWM por relé
« Respuesta #4 en: 19 de Junio de 2006, 16:37:12 »
A lo mejor podrias cambiar el rele por un LED, y ver las variaciones de brillo según el PWM.

Saludos.
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado ORE

  • PIC10
  • *
  • Mensajes: 43
Re: PWM por relé
« Respuesta #5 en: 19 de Junio de 2006, 18:24:19 »
Hola,

Gracias a ambos por las respuestas. Creo que la única opción que me queda es probarlo por el timer. Ya veremos como lo hago, no se si ha alguien se le ocurre alguna idea.

En relación al tema del rele por un led, el relé es necesario porque debe actuar sobre una carga, en concreto sobre un soldador, ya que dependiendo del valor de la temperatura que me proporciona un LM35, sobre dos placas de aluminio (simulo una planta con su sensor), actuo sobre el soldador que está insertado en una de las placas de aluminio.

Si consideran alguna idea más sobre este tema que me de una pista para sacar este problema se lo agradecere mucho.

Un saludo,

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: PWM por relé
« Respuesta #6 en: 19 de Junio de 2006, 18:36:37 »
Normalmente la temperatura se hace por un control de todo o nada con un cierto ciclo de histeresis, no se utiliza el PWM ya que la respuesta termica es muy lenta (no es como un motor).
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: PWM por relé
« Respuesta #7 en: 19 de Junio de 2006, 18:56:49 »
Hola ORE, usa el consejo de  jfh900 ya que si usas el ralay con una frecuencia de 10Hz, tanto el relay como el soldador te durarán muy poco, como la respuesta de tu equipo en muy lenta, su usas una señal que tenga un periodo de 10 seg te aseguro no notaras la diferencia, y lo mejor seria que tu detectes cuando la temperatura este muy baja y lo enciendas, cuando ya alcansa una mas alta lo apagas.

Un saludo.

Atte. CARLOS.
La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado QIQE

  • PIC18
  • ****
  • Mensajes: 335
Re: PWM por relé
« Respuesta #8 en: 21 de Junio de 2006, 10:34:47 »
Si el prolema es la frecuencia del relé por que no empleas un relé de estado sólido?? casi seguro que eso te dara mucha mas frecuencia, no mucha mas tb es verdad, ya que estos a la entrada llevan un optoacoplador en esta pagina tienes unos cuantos http://www.eurotherm.es/ con sus datasheet y todo
Muchas gracias por vuestro tiempo.

Saludos desde valencia!!!

Desconectado ORE

  • PIC10
  • *
  • Mensajes: 43
Re: PWM por relé
« Respuesta #9 en: 21 de Junio de 2006, 13:26:09 »
Hola muy buenas,

Gracias por la respuesta qiqe, pero la página que me comentas sobre relés de estado sólido no veo ninguno de ellos que pueda acoplarse a la placa de mi circuito impreso. Había pensado en hacer un TODO-NADA, con el relé y sacar un "cable" de la salida PWM, hacia una placa protoboard, y montar un transistor para con un amplificador para formar un convertidor tensión corriente y actuar sobre el relé como carga. No se me ocurre más. Cierto es que esto debería haber estado en mi aplicación, pero ahora ya es demasiado tarde.

Seguire buscando otras soluciones, no duden en darme otras opciones, seguro que alguna sirve o me encamina hacia el objetivo.

Un saludo,

Desconectado pikman

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 682
Re: PWM por relé
« Respuesta #10 en: 21 de Junio de 2006, 13:36:03 »
Tambien en vez de un rele puedes usar un TRIAC por ejemplo un BTB600, puedes acoplarlo con un optoacoplador al la salida de PWM, yo he usado algo similar para controlar un horno y funciona correctamente.
saludos
PikMan

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: PWM por relé
« Respuesta #11 en: 21 de Junio de 2006, 13:36:57 »
Bueno si quieres una regulación mas fina y controlar mejor la temperatura, lo que se emplea es una regulación de potencia por triac (la forma de regulación es muy similar al pwm) y asi puedes controlar la potencia entregada a la carga de forma continua. Esta es la opción mas aceptable para este tipo de aplicaciones. Veo que pikman se a adelantado a mi respuesta.  :D

Un saludo.
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado ORE

  • PIC10
  • *
  • Mensajes: 43
Re: PWM por relé
« Respuesta #12 en: 24 de Junio de 2006, 14:04:25 »
Hola,

Bueno al parecer, todo en esta vida de la electrónica tiene solución. Y he encontrado un relé de estado sólido, carito eso si 16,87€, espero que el lunes me traigan alguno más y lo pueda descambiar. Según veo en el data sheet de este puede conmutar a frecuencias muy elevadas, en concreto se trata del RP1B40D5. Ahora bién todo fenomenal, pero antes de "montar" en la placa el relé, lo que he echo es comprobar como cambia la frecuencia, viendo como el led va aumentando su luminosidad. Pero cuando lo aplico al PID, no hay forma de ver como cambia de estado. Y simplemente hago lo siguiente:

Control_PID(){
              errant=error;
              // Guardamos error de iteracion anterior, usado en parte D.
              error = set_point - process_value;
              // Calculo del error actual=set_point-process_value=unidad_fisica.
              serror+=error;  // Error acumulativo.
              Ti = (k*periodo)/Ti;
              Td = (k*Td)/periodo;
              duty_pwm2=k*error+Ti*serror+Td*(error-errant);
              // Señal de control, duty cycle para PWM.
              setup_timer_2(T2_DIV_BY_16, periodo,1);
              // Definiendo el periodo del PWM con la configuracion del timer 2
              duty_pwm2=124;
              set_pwm2_duty(duty_pwm2);
             
              if (process_value<=BP_max || process_value>=BP_min)
              // Si esta dentro de la banda proporcional actuo en función PID
              {
                  duty_pwm2 = (int)duty_pwm2;
                  //Cambiando de tipo de dato float a 8 bits sin signo.
                  set_pwm2_duty(duty_pwm2);
               // Cargamos en modulo PWM el valor absoluto de la señal de control obtenida.
              }
                     else if (process_value>BP_max)
                     {
                        duty_pwm2=0;
                        set_pwm2_duty(duty_pwm2);
                     }
                     else if (process_value<BP_min)
                     {
                     duty_pwm2=255;
                     set_pwm2_duty(duty_pwm2);
                     }*/
             }       // Fin control PID.

Y les confirmo que haciendo esto sin interrupciones ni nada por el estilo, configuro los puertos de la misma forma y no hay manera, ¿que puedo estar haciendo mal?

Un saludo,

Desconectado ORE

  • PIC10
  • *
  • Mensajes: 43
Re: PWM por relé
« Respuesta #13 en: 24 de Junio de 2006, 15:40:25 »
Hola,

He cambiado algunas cosas del programa que postee anteriormente, ahora veo que el regulador PID funciona correctamente, ya que antes había colocado un entero, y debo colocar un long, para poder abarcar el duty cicle del pwm hasta 255, que es el máximo preescaler que puedo conseguir, pero sigo sin ver a frecuencia de salida por la patita CCP2, con lo que no veo iluminarse más o menos el led, sigo intentándolo. Si alguno de ustedes me sugiere alguna idea, la aceptaré encantado. Posteo el nuevo código:

Control_PID(){
              errant=error;
              // Guardamos error de iteracion anterior, usado en parte D.
              error = set_point - process_value;
              // Calculo del error actual=set_point-process_value=unidad_fisica.
              serror+=error;  // Error acumulativo.
              ki = (k*periodo)/Ti;
              kd = (k*Td)/periodo;
              salida_PID=k*error+Ti*serror+Td*(error-errant);
              // Señal de control, duty cycle para PWM
              if (process_value<BP_max && process_value>BP_min){
              // Si esta dentro de la banda proporcional actuo en función PID
              setup_timer_2(T2_DIV_BY_16, periodo,1);
              // Definiendo el periodo del PWM con la configuracion del timer 2
              duty_pwm2 = (long) salida_PID;
              //Cambiando de tipo de dato float a 8 bits sin signo.
              set_pwm2_duty(duty_pwm2);
               // Cargamos en modulo PWM el valor absoluto de la señal de control obtenida.
              }
              if (process_value>BP_max)
                     {
                     setup_timer_2(T2_DIV_BY_16, periodo,1);
                     duty_pwm2=0;
                     set_pwm2_duty(duty_pwm2);
                     }
              if (process_value<BP_min)
                     {
                     setup_timer_2(T2_DIV_BY_16, periodo,1);
                     duty_pwm2=255;
                     set_pwm2_duty(duty_pwm2);
                     }
             }       // Fin control PID.

Un saludo,

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: PWM por relé
« Respuesta #14 en: 25 de Junio de 2006, 06:36:08 »
Te voy a realizar una pregunta, solo por curiosidad. Como realizas el termino derivativo y el termino integrativo del PID, por que no lo veo claro (no veo que se integre y se derive le termino).

Un saludo.
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús


 

anything