Autor Tema: conversor ADC0804 , pic 16f84 .. ayuda porfavor  (Leído 5169 veces)

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

Desconectado kronocher

  • PIC10
  • *
  • Mensajes: 47
conversor ADC0804 , pic 16f84 .. ayuda porfavor
« en: 27 de Septiembre de 2005, 10:29:00 »
hola.
estoy queriendo conectar al conversor ADC0804 al pic pero no logro que funcione adecuadamente. Conecto el CS y RD a tierra y los pines WR y INTR a los pines del PIC. Ademas utilizo dos registros 74374 para hacer de entrada y salida.
Entiendo que teniendo CS y RD a tierra , mandandole un nivel 0 a WR comienza la conversion. y hay que esperar a que ocurra la interrupcion en INTR.
y luego de recibir la interrupcion hay que darle un nivel bajo para comience otra conversion. Es eso del todo correcto???
quisiera que alguien me proporcione. el algoritmo correcto para conectar el ADC0804 al PIC16F84.

por cierto cuando hago funcionar el ADC sin el PIC en modo LIBRE, al ir variando la tension de entrada del ADC a la salida tengo leds que indican la conversion s digital , pero estos led en momentos comienzan a parpadear , como pudiera solucionar esto.

gracias.........


Desconectado XRaziel

  • PIC10
  • *
  • Mensajes: 15
RE: conversor ADC0804 , pic 16f84 .. ayuda porfavor
« Respuesta #1 en: 27 de Septiembre de 2005, 17:15:00 »
Escrito originalmente por kronocher
hola.
estoy queriendo conectar al conversor ADC0804 al pic pero no logro que funcione adecuadamente. Conecto el CS y RD a tierra y los pines WR y INTR a los pines del PIC. Ademas utilizo dos registros 74374 para hacer de entrada y salida.
Entiendo que teniendo CS y RD a tierra , mandandole un nivel 0 a WR comienza la conversion. y hay que esperar a que ocurra la interrupcion en INTR.
y luego de recibir la interrupcion hay que darle un nivel bajo para comience otra conversion. Es eso del todo correcto???
quisiera que alguien me proporcione. el algoritmo correcto para conectar el ADC0804 al PIC16F84.

por cierto cuando hago funcionar el ADC sin el PIC en modo LIBRE, al ir variando la tension de entrada del ADC a la salida tengo leds que indican la conversion s digital , pero estos led en momentos comienzan a parpadear , como pudiera solucionar esto. Demas esta decir que el tipo de sensor puede ser cualquiera en este caso es uno de temperatura  ojala te sirva.

gracias.........




Hola mira yo use una rutina que encontre en internet y me funciono bien ahora lo del parpadeo es propio del adc  no te compliques porque el soft del pic soluciona los timming del adc te envio la rutina .
;Medición digital de la temperatura
;mediante un LM35 y ADC0804 y envío
;de la temperatura al PC mediante un PIC16F84A
;y un MAX232 vía RS-232
LIST P=16F84
;*****************************
;Declaración de registros
status  equ 0x03
PORTA   equ 0x05
PORTB   equ 0x06
carry   equ 0
TX      equ 1
WR      equ 2
CLK     equ 3
INTR    equ 4
loops   equ 0x0c
r0d     equ 0x0d
r0e     equ 0x0e
trans   equ 0x0f
org       0
goto    inicio
org     5
;****************************
;Subrutina reloj, que se encarga de dar pulsos al ADC0804
reloj bsf PORTA,CLK ;sube la linea del reloj
      movlw 0x1F
      movwf loops ;retardo
reloj2 decfsz loops
       goto reloj2
       bcf PORTA,CLK ;baja la linea de reloj
       movlw 0x1F
       movwf loops ;retardo
reloj3 decfsz loops
       goto reloj3
       return
;Fin de la subrutina reloj
;****************************
;Subrutina delay para transmitir un bit
delay movlw .166 ;cargar para 833 microseg aproximadamente
startup movwf r0e ;llevar a cabo el retardo
redo nop ;limpiar circuito de vigilancia
     nop
     decfsz r0e
     goto redo
     retlw 0
;Fin de la subrutina delay
;****************************
;Subrutina enviar, envia el valor de la temperatura
;al PC de manera serial
enviar movwf trans ;llevar el contenido de w a transmision
xmrt movlw 8 ;cargar con el numero de bits
     movwf r0d ;el contador
     bcf PORTA,TX ;colocar la linea de transmision en bajo
     call delay ;para generar bit de arranque
xnext bcf PORTA,TX ;colocar la linea de transmision en bajo
     bcf status,carry ;limpiar el carry
     rrf trans ;rotar registro de transmision
     btfsc status,carry ;preguntar por el carry
     bsf PORTA,TX ;si es uno, colocar linea en alto
     call delay
     decfsz r0d ;decrementar el contador, saltar si cero
     goto xnext ;repetir hasta transmitir el dato
     bsf PORTA,TX ;colocar la linea de transmision en alto
     call delay ;llamar retardo 1 bit -bit de parada-
     retlw 0
;Fina de la subrutina enviar
;****************************
;Inicio del programa
inicio bsf status,5
       movlw 0x11
       movwf PORTA
       movlw 0xFF
       movwf PORTB
       bcf status,5
       bsf PORTA,TX ;colocar la linea de transmision en alto
       bcf PORTA,WR ;colocar en bajo WR para resetear el ADC
       movlw 0x1F
       movwf loops ;retardo
salto1 decfsz loops
       goto salto1
       bsf PORTA,WR ;colocar en alto WR para iniciar la conversion
       movlw 0x1F
       movwf loops ;retardo
salto2 decfsz loops
       goto salto2
pulsos call reloj ;llamar a la subrutina reloj
       btfsc PORTA,INTR ;preguntar se INTR es cero, si lo es saltar
       goto pulsos
       movf PORTB,w ;cargar el dato binario en w
       call enviar ;llamar a la subrutina enviar
       goto inicio
;Fin del programa principal
;*****************************
end

Desconectado poi5on

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 127
RE: conversor ADC0804 , pic 16f84 .. ayuda porfavor
« Respuesta #2 en: 29 de Septiembre de 2005, 18:11:00 »
Hola, aqui esta otro hecho por mi:
;LECTURA DEL ADC
ADC  BCF   PORTA,4    ;pin WR
   CALL   DEMO           ;espera conversión, no utilice el INTR
   CALL    DEMO
        MOVF   PORTB,W
   MOVWF   DATO_IN
   BSF   PORTA,4
   RETURN

DEMO   MOVLW   020H
        MOVWF   CONT
DEMO1   DECFSZ   CONT
         GOTO   DEMO1
         RETURN

Yo utilice el pin RD porque estaba conectado en el puerto con una LCD, entonces si tu lo tienens a tierra la rutina se acorta mas. Lo de los leds es normal pero con el pic deberia funciona OK.
Yo no utilice el pin INTR porque no me alcanzaban los puertos del PIC, asi que me asegure que el tiempo de espera del pic para la conversión del ADC fuera lo suficiente.
Saludos

Desconectado La_ReNgA

  • PIC10
  • *
  • Mensajes: 47
Re: conversor ADC0804 , pic 16f84 .. ayuda porfavor
« Respuesta #3 en: 28 de Octubre de 2006, 14:53:44 »
hola a todos!!..

Quiero pedirles su ayuda y si pueden darme una mano para resolver mi problema porque yo no le encuentro la vuelta..

Tengo una placa de un control semiproporcional de temperatura con un conversor adc0804 y un pic16f84.. El tema es que no logro activar el conversor para que funcione.. Otro tema es que el conversor funciona con pulsos de reloj del pic, por lo que se complica para manejar los tiempos..

Alguien sería tan amable de decirme la secuencia de activacion del conversor??.. Tengo CS (Chip Select) a masa y RD, INTR y WR al puerto A del pic, como así la salida por el RA4.. Además tengo los 8 bits del conversor el el puerto B..

El control semiproporcional de temperatura debe variar la relacion del pulso en estado alto con respecto al estado bajo, con la frecuencia fija, o sea variar el "duty cicle" de la señal de salida; que debe controlar una lámpara por medio de un actuador (transistor --> optotriac --> triac)..

La idea es que a baja temperatura la señal de salida se encuentre la mayor parte del tiempo en estado alto, y, a altas temperaturas, ésta se encuentre la mayor parte del tiempo en estado bajo..

Si quieren puedo pasarles el programa que yo hice en ASM.. Debería funcionar pero hay algo por ahí que estoy haciendo mal y no lo encuentro.. Les pregunto la secuencia de activación del conversor porque creo que ahí reside el problema..

Espero que puedan ayudarme.. De antemano.. Muchas gracias!!


 

anything