Identificarte

Versión Completa : pic16f877a DAC


Sponsored links
.




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 ..............

jpac
mayo 1, 2008, 10:42
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

Zarco
mayo 2, 2008, 12:39
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.

nickm
mayo 6, 2008, 05:15
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