Autor Tema: ayuda con PWM con PIC16f877 en C  (Leído 2689 veces)

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

Desconectado jcmujica

  • PIC10
  • *
  • Mensajes: 4
ayuda con PWM con PIC16f877 en C
« en: 07 de Septiembre de 2012, 03:00:20 »
Buenas noches,

Estoy tratando de hacer un control para un MOTOR DC con unpic 16f877a.

Mi dise;o consta de 3 puladores, 1 para invertir el sentido de giro del motor y los otrs 2 para aumentar y disminuir la velocidad (ciclo  util del pwm) del motor.

El codigo que desarrolle es el siguiente:

Citar
#include <16F877A.h>
#fuses XT, NOWDT, NOPROTECT, BROWNOUT, NOPUT, NOLVP
#use delay(clock = 4000000)


void main()
{
   output_low(PIN_C2);
   setup_ccp1(CCP_PWM);
   setup_timer_2(T2_DIV_BY_16, 124, 1);
   set_pwm1_duty(0);
   delay_ms(1000);
   
   long ciclo=0;
   short sentido=0;

while(1){
         if(input(PIN_A0)){         
         ciclo++;
         delay_ms(10);
         if(ciclo>254)           
            ciclo=255;           
         }
         if(input(PIN_A1)){
         if(ciclo>0){
         ciclo--;
         delay_ms(10);
         }
         }
         
         if(input(PIN_A2)){
         while(input(PIN_A2)){
         }
         if(sentido==0){
         sentido=1;
         output_high(PIN_d0);
         }
         else
         if (sentido==1){
         sentido=0;
         output_low(PIN_d0);
         }
         }
         
set_pwm1_duty(ciclo);
delay_ms(10);
}

El PIC parece perderse al aumentar o disminuir el ciclo util, a veces disminuye, a veces no, a veces colapsa y proteus no lo simula. :(

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: ayuda con PWM con PIC16f877 en C
« Respuesta #1 en: 08 de Septiembre de 2012, 10:05:05 »
Hola jcmujica

hay veces que proteus, hace las cosas un poc regular,
yo dejaria un tiempo de retardo o le pondria un
voltimetro o aparato de medida para ver, si realmente lo hace.

Otra opcion es imprimirlo y sacarlo por terminal virtual,
los valores del ciclo en todo momento.

Ya nos contaras.

Desconectado jcmujica

  • PIC10
  • *
  • Mensajes: 4
Re: ayuda con PWM con PIC16f877 en C
« Respuesta #2 en: 11 de Septiembre de 2012, 02:33:43 »
lo probe en un osciloscopio y la salida es 0 al igual que en proteus, tambien he visto otros pwm funcionando en proteus, lo que me lleva a pensar que hay algun problema que no logro encontrar en mi codigo

Desconectado marqueses

  • PIC12
  • **
  • Mensajes: 80
    • Alberto Marqueses Blog
Re: ayuda con PWM con PIC16f877 en C
« Respuesta #3 en: 11 de Septiembre de 2012, 09:43:30 »
Hola,

¿que interface estas usando entre el PIC y el motor?  He visto que no indicas nada y tiene toda la pinta de que lo estás conectando directamente, por lo que si es así, muy probablemente el PIC ya tenga la salida de PWM quemada.
Alberto Aragón Marqueses
albertomarqueses.wordpress.com

Desconectado jcmujica

  • PIC10
  • *
  • Mensajes: 4
Re: ayuda con PWM con PIC16f877 en C
« Respuesta #4 en: 11 de Septiembre de 2012, 12:43:35 »

Desconectado marqueses

  • PIC12
  • **
  • Mensajes: 80
    • Alberto Marqueses Blog
Re: ayuda con PWM con PIC16f877 en C
« Respuesta #5 en: 12 de Septiembre de 2012, 09:19:35 »
Si usas un debugger podras ver que valor tiene en la salida la variable ciclo. Puede ser que el programa no te esté aumentando el ciclo de PWM, pero no saber en que momento falla para que eso no ocurra. Tambien podrias darle un valor de inicio distinto de 0, para comprobar que si que funciona el modulo CCP y está bien configurado.

Un saludo.
Alberto Aragón Marqueses
albertomarqueses.wordpress.com


 

anything