Autor Tema: problema con pic 16f88 y PWM  (Leído 3412 veces)

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

Desconectado lagruya

  • PIC16
  • ***
  • Mensajes: 204
problema con pic 16f88 y PWM
« en: 05 de Junio de 2012, 18:27:42 »
Hola a todos en el foro, estoy realizando pruebas con el pic 16f88 y su modulo PWM, en principio funciona bien, pero en determinado momento siempre aleatoreo, el pwm se clava en "0" o al mango, estoy realmente desconcertado, les dejo el circuito que use y el codigo que escribi en ccs:





Código: CSS
  1. #include <16F88.h>
  2.  
  3.  
  4. #fuses NOWDT, INTRC_IO, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NOMCLR
  5.  
  6. #use delay(clock=8000000)
  7.  
  8. #use fast_io(a)
  9. #use fast_io(b)
  10.  
  11. /////////////////////////ETIQUETAS PUERTOS///////////////////////////////
  12.  
  13. #byte PORTA = 0x05         // Puerto A
  14.    #bit RA0 = 0x05.0      // RA0
  15.    #bit RA1 = 0x05.1      // RA1
  16.    #bit RA2 = 0x05.2      // RA2
  17.    #bit RA3 = 0x05.3      // RA3
  18.    #bit RA4 = 0x05.4      // RA4
  19.    #bit RA5 = 0x05.5      // RA5 SOLO ES ENTRADA
  20.    #bit RA6 = 0x05.6      // RA6
  21.    #bit RA7 = 0x05.7      // RA7
  22.  
  23. #byte PORTB = 0x06         // Puerto B
  24.    #bit RB0 = 0x06.0      // RB0
  25.    #bit RB1 = 0x06.1      // RB1
  26.    #bit RB2 = 0x06.2      // RB2
  27.    #bit RB3 = 0x06.3      // RB3
  28.    #bit RB4 = 0x06.4      // RB4
  29.    #bit RB5 = 0x06.5      // RB5
  30.    #bit RB6 = 0x06.6      // RB6
  31.    #bit RB7 = 0x06.7      // RB7
  32.    
  33.  
  34.    
  35. //////////////////variables//////////////////////////////
  36.  
  37. int16 control;
  38.  
  39. ////////////////////////////////////////////////////////
  40.  
  41.  
  42.  
  43. void main()
  44. {
  45.  
  46.    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);  // oscilador interno preescaler 1
  47.    setup_timer_1(T1_DISABLED);               // timer 1 deshabilitado
  48.    setup_timer_2(T2_DIV_BY_1,99,1);          // timer 2 habilitado preescaler 1
  49.                                              // periodo 100 postescaler 1
  50.   // con un clock interno de 8MHz el periodo del PWM sera de: 50 microsegundos
  51.   // lo que implica una frecuencia de PWM de 20KHz
  52.    
  53.    set_tris_A(0b11111111);    // puerto A entradas
  54.    set_tris_B(0b00000000);    // puerto B salidas
  55.    
  56.    
  57.    PORTA = 0;            // puerto A todo a cero
  58.    PORTB = 0;            // puerto B todo a cero
  59.    
  60.    setup_ccp1(CCP_PWM);
  61.    set_pwm1_duty(0);
  62.  
  63.    setup_comparator(NC_NC_NC_NC);
  64.    setup_oscillator(OSC_8MHZ|OSC_TIMER1);
  65.  
  66.    
  67.         control = 0;
  68.        
  69.    
  70.    do {
  71.      
  72.    if (RA2 == 1) {
  73.                 if (control < 99) {
  74.                         control = control + 1;
  75.                         set_pwm1_duty(control);
  76.                 }
  77.         delay_ms(50);
  78.         }
  79.    
  80.         if (RA3 == 1) {
  81.         if (control > 0){
  82.                         control = control - 1;
  83.                         set_pwm1_duty(control);
  84.                 }
  85.         delay_ms(50);
  86.         }
  87.  
  88.    
  89.    }while (true);        // bucle infinito
  90.  
  91. }

desde ya muchas gracias por cualquier sugerencia.
saludos.

Desconectado NoSepComo

  • PIC18
  • ****
  • Mensajes: 305
Re: problema con pic 16f88 y PWM
« Respuesta #1 en: 06 de Junio de 2012, 04:39:29 »
Hola, Yo en el código no veo nada que te pudiese hacer eso, sin embargo, el uso del PWM sobre la protoboard es lo que te puede estar infiriendo en errores, ya que tiene muchas capacidades parasitas, yo quitaría esos condensadres que tienes de un micro en las entradas de los switches (que addemás tienes poco filtrado, y ya es una señal buena) y metería la salida rectificada directamente,  con un Pull-down y mas grande, de unos de 10 K. Prueba.

Desconectado lagruya

  • PIC16
  • ***
  • Mensajes: 204
Re: problema con pic 16f88 y PWM
« Respuesta #2 en: 06 de Junio de 2012, 15:36:43 »
muchas gracias NoSepComo, efectivamente, es una cuestion de ruidos, le puse los pulldown de 10k y retire los capacitores de .1 (los tenia porque tambien probe el circuito con un motor de continua y sin los capacitores me metia ruido en RA0 y se incrementaba solo el duty del pwm).
la cuestion es que hasta ahora anda sin problemas. :-/

gracias denuevo!  :mrgreen:

Desconectado NoSepComo

  • PIC18
  • ****
  • Mensajes: 305
Re: problema con pic 16f88 y PWM
« Respuesta #3 en: 07 de Junio de 2012, 05:24:53 »
Me alegra leerlo ;).
Un saludo!


 

anything