Autor Tema: PWM con Timer 2  (Leído 2529 veces)

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

Desconectado ORE

  • PIC10
  • *
  • Mensajes: 43
PWM con Timer 2
« en: 05 de Mayo de 2006, 18:29:04 »
Hola muy buenas,

Estoy intentando generar una señal de salida por la patita CCP2, de una frecuencia determinada, y un duty cicle determinado. El problema se encuentra en que primero, no puedo visualizar la señal generada a la salida, porque en mi lugar de trabajo no tengo un osciloscopio, y segundo como quiero actuar sobre un relé, para ver como va activandose más o menos dependiendo del duty cicle, la máxima salida que observo en el pin RC1 es de 0 a 500mV, imposible que pueda encenderme un led. Uso un PIC16F877 y compilo con CCS. No se si tengo un error de concepto o el programa que estoy realizando no actua sobre el relé tal y como le digo.

Me sería de gran ayuda conocer a que se debe este problema, y si es debido a un problema de soft, o por hardware, no puedo obtener 5V de salida por RC1, cuando actua como PWM.

Un saludo,

Muchas gracias

Desconectado kain589

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 324
Re: PWM con Timer 2
« Respuesta #1 en: 05 de Mayo de 2006, 19:39:42 »
Seria conveniente que postees tu codigo, de todas formas no creo que usar un rele sea una buena idea ya que su capacidad de conmutacion es mucho menor que la frecuencia del pwm. Para ver el efecto del pwm puedes usar un led, si esta bien hecho apreciaras el efecto
Saludos desde Córdoba, españa

Desconectado ORE

  • PIC10
  • *
  • Mensajes: 43
Re: PWM con Timer 2
« Respuesta #2 en: 06 de Mayo de 2006, 06:47:00 »
Hola muy buenas,

El programa que he utilizado, es uno de los tantos ejemplos realizados por los colaboradores del foro, y que sirve de gran utilidad para ir aprendiendo a programar en C, y comprobar que tú aplicación es la correcta. Sobre el tema de los reles, dependiedo de la frecuencia, si sería posible realizarlo, aunque muchísimo mejor sobre un led, ya que tiene una capacidad de conmutación superior al relé. Posteo el programa:

#include "C:\15 - Program Files C\20060506_prueba_pwm_timer2.h"
#include<lcd.c>
#use fast_io(B)
#byte port_b=0X06
#use fast_io (D)
#byte port_d=0X08
#use fast_io (E)
#byte port_e=0X09

void main(void)
{
   int i;
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(FALSE);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DIV_BY_1,100,1);
   setup_ccp2(CCP_PWM);
   for(;;)
   {
      for(i=1;i<=99;++i)
      {
      lcd_init();
      lcd_gotoxy(1,2);
      printf(lcd_putc,"%i",i);
      set_pwm2_duty(i);
      delay_ms(50);
      }
      for(i=99;i>=1;--i)
      {
      lcd_init();
      lcd_gotoxy(1,2);
      printf(lcd_putc,"%i",i);
      set_pwm2_duty(i);
      delay_ms(50);
      }
   }
}

El lcd, lo uso para comprobar como va creciendo y decreciendo la variable i

Un saludo y gracias

Desconectado kain589

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 324
Re: PWM con Timer 2
« Respuesta #3 en: 06 de Mayo de 2006, 17:39:36 »
Supongo que aunque aqui no lo pones, especificas el dispostivo, los fuses y la frecuencia del reloj; yo tambien soy bastante nuevo en el ccs asi que no se si estas cuestiones las suple la primera linea #include "C:\15 - Program Files C\20060506_prueba_pwm_timer2.h", si es asi no puedo ayudarte.

Saludos
Saludos desde Córdoba, españa

Desconectado ORE

  • PIC10
  • *
  • Mensajes: 43
Re: PWM con Timer 2
« Respuesta #4 en: 07 de Mayo de 2006, 06:43:34 »
Hola muy buenas,

Si los fuses están incluidos, pero no los he colocado en el código ya que cuando compilo y abro todos los archivos del proyecto, si que me aparecen, en concreto son estos:

#include <16F877.h>
#device adc=8
#use delay(clock=10000000)
#fuses NOWDT,HS, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG

Con lo que el programa quedaría de la siguiente forma:

#include "C:\15 - Program Files C\20060506_prueba_pwm_timer2.h"
#include <16F877.h>
#device adc=8
#use delay(clock=10000000)
#fuses NOWDT,HS, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG
#include<lcdpfc2.c>
#use fast_io(B)
#byte port_b=0X06
#use fast_io (D)
#byte port_d=0X08
#use fast_io (E)
#byte port_e=0X09
#use fast_io (C)
#byte port_c=0X07

void main(void)
{
   int i;
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(FALSE);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DIV_BY_1,100,1);
   setup_ccp2(CCP_PWM);
   port_c=0;
   set_tris_c(0x10);
   for(;;)
   {
      for(i=1;i<=99;++i)
      {
      lcd_init();
      lcd_gotoxy(1,2);
      printf(lcd_putc,"%i",i);
      set_pwm2_duty(i);
      delay_ms(50);
      }
      for(i=99;i>=1;--i)
      {
      lcd_init();
      lcd_gotoxy(1,2);
      printf(lcd_putc,"%i",i);
      set_pwm2_duty(i);
      delay_ms(50);
      }
   }
}

Un saludo, espero me puedas audar, gracias

Desconectado quirogaareal

  • PIC16
  • ***
  • Mensajes: 180
Re: PWM con Timer 2
« Respuesta #5 en: 08 de Mayo de 2006, 08:12:40 »
Hola MIra : no tengo tanta experiencia en programacion , por eso solo te hago esta sugerencia con respecto a tu carencia de instrumental. Usa el programa proteus 6.7 sp3  para simulacion con microcontroladores. aunque no es perfecta te permitira  conocer mas de lo que estas haciendo  o por lo menos  te dara una idea mas paroximada.

Saludo

Desde Cordoba Argentina (Area Ingenieria) :)
Recuerda : Si una mujer te ama de verdad no te pedira ni Matrimonio, Ni concubinato , Ni hijos, No te mentira , ni buscara que cambies de opinion con respecto a las tres primeras opciones.

Saludos

desde Cordoba Argentina

Desconectado marvic

  • PIC10
  • *
  • Mensajes: 15
Re: PWM con Timer 2
« Respuesta #6 en: 08 de Mayo de 2006, 12:40:39 »
Hola ORE,

Yo actualmente tambien trabajo con una señal pwm, me he leido tu mensaje y no entiendo muy bien que quieres hacer, para comenzar si puedes adjunta el circuito montado ya que no me cuadra eso de que tengas de 0 a 500 mV en la salida, debe ir de 0 a Vcc.

Por lo demás debes mirar la frecuencia del PWM a la que trabajas, ya que seguramente un rele no te servirá para ver el ciclo de trabajo. Expon que pretendes hacer y te ayudaré en todo lo que pueda.

Un saludo :-/ :-/

Desconectado ORE

  • PIC10
  • *
  • Mensajes: 43
Re: PWM con Timer 2
« Respuesta #7 en: 08 de Mayo de 2006, 14:41:34 »
Hola,

Lo primero muchas gracias por las respuestas.

En un principio, contesto a quirogaareal, al no disponer del instrumental necesario para comprobar en casa las oscilaciones a través de la patita CCP2, que es homóloga a CCP1, no cuento con el programa Proteus. Ya se que lo puedo conseguir a través del eMule, pero bastante pelea tengo actualmente con los proramas que uso para compilacion (CCS), programación(WinPIc800) y simulación (Orcad PSpice), como diseño (Orcad Layout y Orcad Capture), ya no tengo más tiempo de pelearme con otro programa, te lo puedo asegurar, y mucho tiempo para comprender los dos últimos, ahora bien te puedo asegurar también que aprendes muchísimo. Gracias por el comentario, lo tendré en cuenta para siguientes aplicaciones.

Para maric, yo tampoco entiendo porque a la salida tengo esa tensión. Te adjunto el circuito, el cual dependiendo de la variable de entrada que tú coloques (entre 0-1V), mediante un regulador PID, actuo sobre el relé en modo PWM, para variar el duty cicle de la señal dependiendo del error que se comenta en la medida: error=set_point-consigna, pero eso es otro tema. Seguiré investigando porque me ocurre esto, y si no es debido a programación, creo que el hardware está, ya que lcd, pulsadores, reles y todos los dispositivos están bien.

En referencia a tu segundo parrafo, me han comentado que a frecuencias muy bajas es posible observar los duty cicle del relé sin problema, eso me han dicho.

Un saludo y gracias

Por cierto, publicaré la subrutina de atencion al MAX187, que es un conversor de 12 bits, sin necesidad de tensión de referencia.

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: PWM con Timer 2
« Respuesta #8 en: 08 de Mayo de 2006, 15:54:56 »
Tienes dos SALIDA4 en el esquema, una en RB4 y otra en RC1 ¿está bien esto? huele a "corto"

Desconectado ORE

  • PIC10
  • *
  • Mensajes: 43
Re: PWM con Timer 2
« Respuesta #9 en: 09 de Mayo de 2006, 13:56:29 »
Hola Pocher,

Efectivamente el error estaba en el hardware, ya que había leido que había que cortocircuitar la salida con el rele, !!!pero burro de mi no con la salida del PORTB!! Ahora puedo observar como el rele se activa y desactiva dependiendo del duty. Por lo que será válido poder seleccionar los diferentes % de la salida.

Muchísimas gracias por la ayuda.

Un saludo,


 

anything