Autor Tema: Generar pulsos cuadrados mediante PIC16f877  (Leído 2424 veces)

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

Desconectado chris2508

  • PIC10
  • *
  • Mensajes: 4
Generar pulsos cuadrados mediante PIC16f877
« en: 25 de Noviembre de 2014, 00:46:19 »
hola que tal, tengo un problema con mi codigo y/o simulacion de un generador de pulsos cuadrados(pwm) por software, es regulable con un potenciometro configurado con el adc, para modificar el periodo de los pulsos, lo estoy generando con un pic 16f877, el problema es que en la simulacion, los pulsos no son completamente cuadrados, tienen un tipo de rampa, o inclinacion, no se como corregir ese error; el codigo es demaciado simple y me gustaria que porfavor me ayudaran a detectar el problema, aqui les dejo el codigo, es en PICC.
#include <16f877.h>
#device adc=10
#fuses NOWDT, PUT
#use delay(clock=4000000)
#byte portb=0x06
#byte trisb=0x86

void main(){

int x,y;

do{
trisb=0x00;
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(AN0);
x=read_adc();
y=1023;
portb=0x01;
delay_ms(x);
portb=0x00;
delay_ms(y-x);
portb=0x00;
}
while(true);
}

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Generar pulsos cuadrados mediante PIC16f877
« Respuesta #1 en: 25 de Noviembre de 2014, 04:48:22 »
le pusiste una carga o estas tomandolo directamente sin nada, ponele una resistencia de 1k en la simulacion, pero eso es problema de simulacion nomas

Desconectado misterweb

  • PIC16
  • ***
  • Mensajes: 111
Re: Generar pulsos cuadrados mediante PIC16f877
« Respuesta #2 en: 25 de Noviembre de 2014, 11:08:09 »
En cualquier caso si no te llegan a ser perfectamente cuadrado, montale un circuito monoastable, .

Desconectado allennet

  • PIC16
  • ***
  • Mensajes: 108
Re: Generar pulsos cuadrados mediante PIC16f877
« Respuesta #3 en: 28 de Noviembre de 2014, 13:09:39 »
ponle en DC y ya esta
"La curiosidad mato al gato, pero murio sabiendo"

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: Generar pulsos cuadrados mediante PIC16f877
« Respuesta #4 en: 28 de Noviembre de 2014, 16:38:42 »
El osciloscopio esta midiendo AC, cambiale a DC y queda.
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado chris2508

  • PIC10
  • *
  • Mensajes: 4
Re: Generar pulsos cuadrados mediante PIC16f877
« Respuesta #5 en: 01 de Diciembre de 2014, 13:59:41 »
Muchas gracias por sus comentarios, el problema fue solucionado corrigiendo el codigo, el delay_ms, lo cambie a delay_ns, y esto genera una señal mas estable y recta... es la unica solucion que pude darle al problema... muchas gracias

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: Generar pulsos cuadrados mediante PIC16f877
« Respuesta #6 en: 02 de Diciembre de 2014, 12:33:52 »
seguro? existe ese delay?
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Generar pulsos cuadrados mediante PIC16f877
« Respuesta #7 en: 02 de Diciembre de 2014, 12:50:48 »
Ademas el delay no le causaria ese problema.... si pones a 0 una salida se pondria a 0V y si pones a uno se pondria a 5V, cualquier otra cosa simulada ( a no ser un circuito externo ) deberia ser asi. a lo sumo puede no ser cuadrada perfecta y tener un rampa de subida y bajada pero como muestra proteus esta muy mal. En fin, solo es una simulacion.

Desconectado chris2508

  • PIC10
  • *
  • Mensajes: 4
Re: Generar pulsos cuadrados mediante PIC16f877
« Respuesta #8 en: 09 de Diciembre de 2014, 00:44:53 »
muchas gracias por sus comentarios, el delay que use era delay_us, me equivoque... y se corrigio en el circuito ya fisico, probablemente es un error en la simulacion