Autor Tema: ADC 18f4550 y Simulacion Proteus Problema  (Leído 2398 veces)

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

Desconectado Rick_x

  • PIC10
  • *
  • Mensajes: 32
ADC 18f4550 y Simulacion Proteus Problema
« en: 14 de Marzo de 2010, 16:32:17 »
Estimados foreros estoy muestreando un señal sinusoidal de 50Hz y 1,5 V de amplitud con el puerto ADC del pic 18f4550 la señal sinusoidal esta entre 1 Volt y 4 volt peak to peak.

realizo 64 muestreos cada 312 micro segundos por lo que los datos deben corresponden a un ciclo de la sinusoide.

pero una vez que realice la simulacion quise corroborar que realmente estuviera muestreando un ciclo  de la sinusoide, por lo que tome los datos leidos y los envie por el puerto serie RS232 y los grafique en excel.
me encontre con la sorpresa de que no ocurre lo que yo esperaba, los 64 datos corresponden a varios ciclos de la señal de 50 hz.
lo que indica que la frecuencia de muestreo menor es menor.

quisiera saber si a alguien le ha pasado lo mismo, es problema de la simulacion de proteus, u otro problema???

El otro problema que tengo es que el ciclo FOR no funciona desde p=0 hasta p=64, en la simulacion se queda iterando infinitamente.  Porque ocurre esto? como puedo arreglarlo??

adjunto  los archivos de proteus, excel con grafico, y MPLAB v8  CCS

saludos
gracias de antemano

Desconectado pablomanieri

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 639
Re: ADC 18f4550 y Simulacion Proteus Problema
« Respuesta #1 en: 14 de Marzo de 2010, 18:46:11 »
Primero,el ciclo for no está bien utilizado:

For is also used as a loop/iteration statement.

 The syntax is

for (expr1,expr2;expr3)

  statement

 The expressions are loop control statements. expr1 is the initialization, expr2 is the termination check and expr3 is re-initialization. Any of them can be omitted.

 

Example:

for (i=1;i<=10;++i)

   printf("%u\r\n",i);



Por eso es que siempre no  sale de el.

El problema de que no te salga un ciclo completo de la senoidal es porque estás mandando los datos por Usart al mismo tiempo que realizas la captura (el envío de datos tarda demasiado tiempo). Te aconsejo que primero guardes los datos capturados en un buffer y luego los envíes por usart. Si mides el tiempo que tarda entre una captura y otra vas a ver que te lleva alrededor de 9ms. y no los 312us que le colocaste en el delay



 

anything