pic16f877a DAC

nickm

Lanero Regular
29 Mar 2007
19
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....
 
......... 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
 
hola beingenier

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




=)=)=) espero q este bien la verdad es que estoy buascano informacion sobre el adc 0808 y por lo visto tu tienes.... la cual me intereza mucho...... el motivo es por que estoy realizando la tesis... me intereza ver el montaje de este..... espero que tu me lo puedas enviar a mi correo... agradesco tu atencionn... gracias..... e-mail: leduardomendoza@hotmail.com
 
......... 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 ..............
Hola aun tienes el diagrama con el circuito??
 
......... 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 ..............
por favor enviame esos datos datos a a mi correo diego_fd8@hotmial.com porq he hecho un arrancador suave y mi problema creo que se presenta en la salida del dac porque el motor arranca pero no acelera ni desacelera es un arrancador estatico para motor trifasico
 
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.
hola yo estoy haciendo un arrancador estatico para mortor trifasico pero el dac no funciona bien con esto puedo evitar el uso del dac o lo tengo q usar necesariamente mi motor arranca pero no acelera ni desacelera y sacude hasta qu llega a su tiempo colocado con el pic