Autor Tema: Duda con 16f873a...  (Leído 2060 veces)

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

Desconectado lhyaz

  • PIC10
  • *
  • Mensajes: 11
Duda con 16f873a...
« en: 06 de Mayo de 2008, 02:05:16 »
Hola a todos, antes que nada una felicitacion por este foro que sin duda es de gran ayuda para quienes comenzamos en esto. :-/

Bueno, les comento, necesito reconstruir una señal con un PIC a partir de una señal que entre al mismo, es decir, necesito "sacar" la señal que "metí" despues de digitalizarla. :shock: (Es para una practica, mi PIC es el 16f873a)
Tengo una idea teorica, y dos programas en C que creo me pueden servir.
Mi idea es convertir la señal aplicada en AN0 a una señal digital en el puertoB, la reconstruccion de esta misma señal seria con un PWM.

Me pueden orientar?

Para convertir la señal tengo este programa:


#include <16F873a.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use fast_io(B)           
#use fast_io(a)           
#use fast_io(c)
#byte portb = 6           
#byte porta = 5
#byte portc = 7
#DEFINE LED DELAY_MS(100)     
void main() {

uno:
set_tris_a(0xff);           
set_tris_c(0x00);         
set_tris_b(0x00);         
   
     
SETUP_ADC(ADC_CLOCK_INTERNAL);     
SETUP_ADC_PORTS(AN0);                   
SET_ADC_CHANNEL(0);                         

output_b(READ_ADC());                         
LED;
goto uno;}



y para un PWM encontre esto:

void main()
{

TRISC = 0b10111001;
PR2 = 0xFF; // PERIODO Seteado a 0xFF
T2CON = 0b00000110; // Prescalar de 16 PWM Freq = 1.22kHz -- Clock 20MHz
CCP1CON=0b00001100; //
CCP2CON=0b00001100;

 while(1)
 {
  CCPR1L=50;
  CCPR2L=50;  // 50 -- 180 us


  // 100 -- 320 us
  // 150 -- 480 us
  // 200 -- 640 us
 }
}



Estoy algo confundido por que no se si se puedan unir ambos, o si me serian utiles para lo que les comento. Que opinan?? alguna idea diferente para lograr lo que les comento?

De antemano, gracias :)

Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: Duda con 16f873a...
« Respuesta #1 en: 06 de Mayo de 2008, 04:44:24 »
Varias ideas.

Si usas AN0 significa que vas a hacer una conversión analógica-digital (A/D).Para entendernos si a la entrada AN0 le vas metiendo los valores de una recta analógica dentro del PIC tendrás la misma recta pero digital, es decir formada por escalones ascendentes.

Si ahora lo que quieres es que a partir de esta recta digital el PIC te reconstruya la recta original analógica no va a ser posible puesto que el PIC no posee en conversor D/A. Vas a necesitar un convertidor externo D/A

Si no es esto lo que quieres conseguir avisa.

PD. De los programas que has puesto, el primero se puede mejorar bastante (quita el GOTO y usa el while)

El segundo simplemente no hace nada.

Desconectado jfmateos2

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Duda con 16f873a...
« Respuesta #2 en: 06 de Mayo de 2008, 05:04:49 »
Bienvenido Ihyaz.

Pocher, creo que Ihyaz no quiere usar un conversor D/A para reconstruir la señal, sino simularlo medianta PWM, como se hace en algunas aplicaciones de sonido (otros usan escaleras R-2R).

La mayor dificultad que veo en tu proyecto ihyaz es el control de los tiempos: tienes que saber exactamente a qué ritmo estás muestreando para poder luego reconstruir la señal sin que se alargue o encoja.

Mi consejo es que te decidas por un lenguaje de programación (en mi opinión, tus opciones son C o ASM; olvídate de Basic para esta aplicación), que abras un hilo en el subforo correspondiente (C o ASM) publicando el esquema de tu circuito y que intentes crear un pequeño código para la parte de la conversión A/D. Así podremos ayudarte con mejor criterio.

Los códigos de otros están bien para aprender pero es complicado coger un trozo de código de aquí y otro trozo de allí y esperar que todo funcione sin entender a fondo lo que se está haciendo.

Ánimo y buena suerte.

Desconectado lhyaz

  • PIC10
  • *
  • Mensajes: 11
Re: Duda con 16f873a...
« Respuesta #3 en: 07 de Mayo de 2008, 22:26:36 »
Muchas gracias, entonces me voy al otro foro para comentar lo que solicito.

Saludos!