Versión Completa : pic16f877a DAC
nickm
abril 30, 2008, 10:49
Hola amigos, necesito ayuda... necesito saber como tranformar una señal analógica a digital para transmitirla a otro pic16f877a en el cual dicha señal debe regresar de digital a analógica pues es voz lo que voy a transmitir digitalmente. Necesito quien me indique cuales son las instrucciones para dicho pic para las conversiones A/D y D/A,gracias de antemano....
beingenier_dj
mayo 1, 2008, 10:18
......... ps amigo tu pic maneja 8 bits ....... te puedo recomendar el conversor analogo digital ADC0808 ............ funciona muy bien si quieres te paso el diagrama yo lo he montado varias veces este semestre y funciona muy facil ........... para regresar la señal usas el DAC0808 ............. estos solo necesitan una señal de reloj para que conviertan continuamente, un voltaje de referencia ......... y listo tenes tu conversion .............
............ si te sirve la ayuda avisame y te mando el diagrama por que ahora mismo no lo tengo en el pc ..............
pues no se si le sirva que mande la señal de voz al ADC del pic y después mediante una salida de ese mismo pic por medio de pwm mande los valores resultantes de la conversión de analogo a digital.
EJEMPLO:
su señal de voz tiene una frecuencia máxima de 4khz, usted hace el muestreo utilizando el ADC del pic a 32 k muestras por segundo( frecuencia de muestro de 32khz) después para volver la señal de voz digitalizada a analoga por un pin de salida del pic que esta utilizando saca una señal pwm de 32khz en el que elciclo útil va a ser proporcional al valor de la convesión hecha anteriormente.
Espero que le sirva
buenas.....
Pongo por acá una pequeña ayuda.... he estado trabajando bastante con los pic 16f877a...
Estos cuentan con un conversor ADC de 10bits de resolución 2^10=1048 pasos.
La rutina para manejar el conversor en lenguaje C para el compilador PIC C es:
#include <16F877A.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
void main() {
int res;
setup_adc_ports(RA0_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);
delay_ms(1000);
do {
res = read_adc();
printf("\r\nLa temperatura es: %u\r\n",res);
OUTPUT_B(res);
delay_ms(400);
} while(TRUE);
}
Lo q hace este programa es tomar la señal análoga por el puerto RA0 y enviar dicho dato por RS232 "La temperatura es X:"
Espero q ayude en algo este pequeño código....
Si tienen preguntas me las hacen por MP.
Estoy programando el pic con pic basic y ya consegui las instrucciones pero al programarlo no obtengo el dato digital en la variable para dicho efecto, en cierta informacion que conseguí me decia q la transformacion el 16f877 lo realizaba a 8 bits es decir 256 códigos, x lo cual decidi almacenarla en una variable tipo byte, supongo q mi error de conversion es al lmacenar dicho dato, agradezco cualquier ayuda adicional.
Lo del ADC0808 y DAC0808 es muy buena idea ya lo habia pensado pero como es un proyecto de la universidad tengo q hacer todo dentro del pic... GRACIAS
vBulletin®, Copyright ©2000-2008, Jelsoft Enterprises Ltd.