TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: manex_1987 en 29 de Septiembre de 2003, 15:00:00

Título: AYUDA CON LO ANALOGICO EN PIC 16F84
Publicado por: manex_1987 en 29 de Septiembre de 2003, 15:00:00
Saludos a tod@s!

A raíz de un pedido que efectué, tengo a mi posesión 2 sensores LM335 de temperatura, los cuáles dan un valor de X voltios en sus pines dependiendo de la temperatura a la que sean calibrados. Alguien conoce el modo de poder interpretar esos voltajes usando un PIC 16F84?? Hay algun modo de implementar lo analogico en un PIC 16F84?? He oido hablar sobre ADCs y DACs , pero la verdad estoy un poco perdido , y agradeceria rotundamente que algun@ de vosotr@s me ayudara en (o me resolviera) el problema.

Muchas gracias a tod@s por este fabuloso foro.

Hasta otra!
Título: RE: AYUDA CON LO ANALOGICO EN PIC 16F84
Publicado por: MarquesSalsero en 29 de Septiembre de 2003, 15:52:00
Con el 16F84 y sin un convertidor ADC externo lo tienes muy pero que muy dificil y eso que se me ocurre alguna idéa simplemente con unos operacionales o con algunos componentes básicos.

En alguna cadena de mensajes por ahí hay alguien ( no recuerdo quien ) que proponía usar el comando POT, pero dicho comando solo sirve para leer un potenciometro a algún otro elemento resistivo, así que no te hagas ilusiones con ello.

Hay una solución con los siguiente elementos: un operacional, una microbombilla una LDR, un trozo de cinta aislante y un condensador ( bueno y alguna resistencia ).....Creo que no hacen falta mas pistas.
Título: RE: AYUDA CON LO ANALOGICO EN PIC 16F84
Publicado por: manex_1987 en 30 de Septiembre de 2003, 14:53:00
Saludos!

Segun tu acertijo, deduzco que lo que quieres es usar una bombilla que se encienda dependiendo del voltaje del LM355 a ambos pines, y transformarlo a un valor de resistencia facilmente legible por el PIC mediante un LDR "optoacoplado caseramente" con la bombillita, no? Y el condensador supongo que es para poder usar el comando POT en el PIC.

Muchisimas gracias por tu idea!

Venga, adios!!

Título: RE: AYUDA CON LO ANALOGICO EN PIC 16F84
Publicado por: MarquesSalsero en 01 de Octubre de 2003, 05:08:00
Bien!!!!!!!!!!

Ahora otro: con 16F84, un operacional y unas pocas resistencias.... como harías un conversor ADC?
Título: RE: AYUDA CON LO ANALOGICO EN PIC 16F84
Publicado por: Elena2000 en 01 de Octubre de 2003, 11:09:00
Me encantan los acertijos....

* El 16F84; un puerto para entradas (puerto A, por ejemplo, cuatro canales, un canal por patita) un puerto para la salida (el puerto B)
* Un comparador.
* Un voltaje de referencia grabado "a fuego" en la memoria del PIC.
*... resistencias....
* implementar la función de conversión en el PIC, a modo de conversor analógico-digital "virtual"...

A ver, Marques, dígame si me he aproximado al menos a la solución...

Besotes!
Elena
Título: RE: AYUDA CON LO ANALOGICO EN PIC 16F84
Publicado por: MarquesSalsero en 01 de Octubre de 2003, 12:05:00
En realidad es el crear un convertidor por aproximación que es muy burdo pero funciona muy bien

Usamos ocho salidas del PIC para por medio de una red de resistencis R/2R crear un convertidor analógico digital. La salida de este convertidor a una entrada del operacional. La tensión a medir en la otra entrada del operacional. y la salida del operacional a una entrada del PIC.

Y como me gusta decir... el resto, es otra historia.
Título: RE: AYUDA CON LO ANALOGICO EN PIC 16F84
Publicado por: marmatar en 01 de Octubre de 2003, 12:29:00
Hola...
Creo que también se puede crear un AD con un VCO... que dependiendo de la tensión aplicada (regulada con un puente de resistencias) variará la frecuencia a la salida de éste circuito.
Ésta señal podrá ser entregada a una pata del PIC (entrada) y el programa deberá "contar", los pulsos por unidad de tiempo.
Creo que ésto lo podemos ver en varios proyectos de frecuencímetros que andan por la red, incluso en éste mismo foro.
La presentación será a elección, LCD, display de leds, o puerto serie a la PC.

El VCO, puede ser un IC NE564  - http://xanadu.ece.ucsb.edu/~long/ece145b/AN179.pdf

... o incluso hay varios circuitos con operacionales o transistores.

Un abrazo...
marmatar
Título: RE: AYUDA CON LO ANALOGICO EN PIC 16F84
Publicado por: MGLSOFT en 01 de Octubre de 2003, 12:44:00
Por que se complican tanto y no utilizan un AD externo serial, que los hay tantos??
Por ejemplo el AD 0831 , uno de los mas utilizados.
Yo en algun momento publique las rutinas de comunicacion entre el PIC y uno de estos dispositivos, no recuerdo en que foro...
Título: RE: AYUDA CON LO ANALOGICO EN PIC 16F84
Publicado por: marmatar en 01 de Octubre de 2003, 13:26:00
Perdón ... creí que la idea era encontrar una opción a una corcuito ADC de ese tipo, ...por supuesto que eso es lo ideal.
El circuito me lo habías pasado a mi, y usaba uno de esos conversores... lo busco y les paso el link.

Un abrazo...
marmatar
Título: RE: AYUDA CON LO ANALOGICO EN PIC 16F84
Publicado por: MarquesSalsero en 02 de Octubre de 2003, 05:15:00
Desde luego que como dije en mi primer mensaje en esta cadena lo ideal es un ADC, pero a falta de pan.... Buenos son unos canapes de beluga y un buén cava. Y a falta de un ADC dediquemonos a ejercitar nuestra imaginación y buscar soluciones que puedan funcionar y nos permitan ejercitar nuestra habilidad en diseño y nuestra creatividad.

"releñe" divirtamonos y veamos quién puede sugerir el modo de leer una tensión analógica con un F84 y el menor numero de componentes externos ( y no, no vale un ADC ), las soluciones deberián ser realmente ingeniosas y que puedan, al menos teoricamente, funcionar.
Título: RE: AYUDA CON LO ANALOGICO EN PIC 16F84
Publicado por: Elena2000 en 02 de Octubre de 2003, 05:59:00
Yo me apunto a esos canapés de "beluga", aunque no se lo que es..... pero si lo acompaña un buen cava imagino que serán deliciosos.

Y también me apunto al "releñe" de dar rienda suelta a nuestra creatividad, así que vamos allá chicos (Marcos, no seas vago... , que no nos puede vencer un ADC... total es una tonta cucharacha con patitas (me refiero al encapsulado, no te des por aludido, Cuca)... bah.. qué es un montón de silicio comparado con los cerebrines de este foro, eh???

Al grano. Marqués, muy bien la idea de usar la red de resistencias R/2R... vale, sería conectar varias de estas redes en serie, una de las redes (la terminal) conectada a tierra y la red inicial iría al voltaje de referencia. Sería entonces como un divisor de voltaje, no? con muchos voltajes de salida, que se irían comparando con la señal de entrada a través de comparadores... se miraría el resultado del comparador (1 si es mayor, 0 si es menor) y se metería en un circuito decodificado a binario, y de ahí al micro.
............ muchos componentes, me temo......

Otra cosa mariposa: usar el tiempo de descarga de un condensador: se carga un condesador durante un tiempo determinado, y entonces se descarga a través de una resistencia conocida. Como el tiempo de descarga, la capacidad del condensador y la resistencia son todo datos sabidos, entonces podemos averiguar el voltaje a la entrada...

.....Sírveme un poquito más de cava, porfa........
Bezodes.... hip!
Eleaah...
Título: RE: AYUDA CON LO ANALOGICO EN PIC 16F84
Publicado por: pocher en 02 de Octubre de 2003, 06:59:00
No hace falta añadir ningún componente externo más, ¡¡¡ estan todos!!!, repasemoslos: conversor D/A realizado con red R/2R (o también se podría con resistencias ponderadas, pero mejor el R/2R ya que solo se usan 2 valores), la salida de este conversor conectada a una entrada (la + por ejemplo) del A.O. comparador. A la otra entrada (la -) la tensión analógica a convertir.

La salida del comparador a una entrada del PIC.

¿Qué falta pués? ¡¡¡¡ Un CONTADOR !!!!

Este contador será implementado por software, utilizando como reloj otra entrada del PIC. A cada golpe de reloj la tensión digital de salida aumentará, aumentando la tensión analógica del conversor R/2R. Llegará un momento en que la tensión analógica del conversor R/2R (entrada +)será mayor que la tensión analógica a convertir (entrada -), entonces el operacional dará salida "1" y por sofware pararemos al contador siendo entonces la salida del contador el valor de la conversión digital y tal y tal.

Fin del rollete.

Título: RE: AYUDA CON LO ANALOGICO EN PIC 16F84
Publicado por: pocher en 02 de Octubre de 2003, 11:06:00
En lugar de utilizar un reloj externo, este reloj se podría hacer con el TMR0. Cada cierto tiempo el TMR0 mandaría un impulso a una variable que haría de contador incrementándola y mandando su valor al PORTB  para tener un conversor de 8 bits. Este tiempo la única condición que tendría que cumplir es que fuera mayor que el tiempo de conversión del D/A (red R/2R) más el tiempo de respuesta del operacional.

Me gustaría implementar toda esta historia con el PROTEUS, lo veo muy didáctico. A ver si tengo un rato.

Un saludo
Título: RE: AYUDA CON LO ANALOGICO EN PIC 16F84
Publicado por: Sispic en 02 de Octubre de 2003, 13:36:00
Mas para la olla.

Este conversor de tension a frecuencia funciona muy bien bueno funciona ......
lo uso para leer el valor de smeter de una lincoln con el pc .

Creo que con un pic no habra problemas , solo hay que ir reseteando y mediendo el tiempo de descarga  o algo asi , no  me acuerdo como lo hice  lo tendria que buscar .

saludotesss.
sispic.
Título: RE: AYUDA CON LO ANALOGICO EN PIC 16F84
Publicado por: marmatar en 02 de Octubre de 2003, 15:18:00
Eeeeeh!!... y yo que pensaba que había interpretado mal la propuesta...
... además me volví loco buscando el termometro con el ADC, para no dejarlos colgados... bueh!, cualquier cosa , me dicen eh?...

Una pregunta, si bien el comando POT, está testeando una resistencia... pero si en vez de alimentarla con una tensión fija... lo hacemos con la que viene del sensor... que pasaría?... después de todo lo que verifica es el tiempo de descarga sobre el capacitor, no es cierto?.

Es solo una idea...

Un abrazo...
marmatar
Título: RE: AYUDA CON LO ANALOGICO EN PIC 16F84
Publicado por: pocher en 03 de Octubre de 2003, 00:17:00
¡¡¡¡ FUNCIONA !!!!

Me ha costado varias horas. El PROTEUS me daba problemas. Contínuamente me aparecía el "time steep to small" y simplemente por borrar un cable y dibujarlo con otra horientación o por incluir un "Logic probe" en la salida del operacional o por cambiar el valor de la tensión analógica a medir. En fin sin comentarios. Si alguien sabe a que es debido esto o como se soluciona que avise.

Lo he hecho con reloj externo (1ª parte), ahora voy a ver si lo hago sin él (2ª parte).

Un saludo
Título: RE: AYUDA CON LO ANALOGICO EN PIC 16F84
Publicado por: MarquesSalsero en 03 de Octubre de 2003, 04:58:00
Muy bien por ahí, la idea era poner una serie de resistencias usando, digamos, ocho salidas del pic y realizar un conversor DA y como ha dicho pocher esto al comparador.

la mejora a realizar es en el algoritmo. Si bien un contador es perfecto no es lo mas idoneo en cuanto a rendimiento.

Lo mejor seía hacerlo por aproximación sucesiva....

pondriamos el bit de mayor peso ( p.ej. el 8 ) a uno si el valor de salida es mayor que el de referencia ( la tension a medir ) nos hemos pasado y por lo tanto lo volvemos a poner a cero.

Ponemos el siguiente bit a uno si el valor de salida es mayor que el de referencia ( la tension a medir ) nos hemos pasado y por lo tanto lo volvemos a poner a cero.

así en tan solo 8 iteraciones habremos encontrado el valor, ¿¿cuco, no cuca???  joder, lo siento pero no he resistido la tentación de hacer un mal juego de paalabras.
Título: RE: AYUDA CON LO ANALOGICO EN PIC 16F84
Publicado por: Elena2000 en 03 de Octubre de 2003, 05:50:00
Muy cuco, si señor!!.. digo Marqués...

Por aproximación sucesiva, como dices, me gusta. La salida del conversor es computada bit a bit. Vale, esto será bastante preciso pero muuuuy lento........ no crees?

Nueva propuesta: los conversores que utilizan los modem ADSL por ejemplo (lo se de buena tinta, qué remedio). Los Sigma/Delta o también les llaman "bit stream". La salida es una representación codificada de la anchura del pulso de entrada.... es decir, codifican las señales analógicas en pulsos modulados... en fin que al final del modulador sigma tienes una trama de un único bit.... vale, muy poca resolución, pero muy rápido.

.........la madre del cordero hacer esto en un 16f84.....
a ver, los ingredientes son: un sumador, un integrador y un comparador.... quien cocina?

Saludetes.
Elena
Título: RE: AYUDA CON LO ANALOGICO EN PIC 16F84
Publicado por: pocher en 03 de Octubre de 2003, 10:03:00
Si señor, por aproximaciones sucesivas.

Por si alguien lo quiere pasar a sofware voy a poner el algoritmo de una forma más práctica para que se entienda:

- Utilizamos un registro de 8 bits del PIC y ponemos un 1 en el bit MSB y ceros en los otros bits.

- Sacamos este valor por el PORTB.

- Este valor le entra al convertidor D/A externo, dando este un determinado valor analógico (Vd/a).

- Las conexiones al operacional comparador son: V+=Vref, V-=Vd/a

- Si Vref>Vd/a --> Vc (salida del comparador) = 1 entonces hay que mantener el 1 anterior del registro y meter otro 1 en el siguiente bit (contando hacia atrás)

- Si Vref<Vd/a --> Vc (salida del comparador) = 0 entonces
hay que borrar el 1 anterior (meter un 0) y meter otro 1 en el siguiente bit (contando hacia atrás)

- Así sucesivamente haste meter un 1 en el bit LSB y probar si  Vc=1 (se deja el 1) o  si Vc=0 (se borra el 1)

- Cuando todo esto suceda el valor del PORTB tendrá la conversión correcta de la señal de entrada analógica.

Un saludo

Título: RE: AYUDA CON LO ANALOGICO EN PIC 16F84
Publicado por: manex_1987 en 05 de Octubre de 2003, 06:24:00
Hola!

Lo que pasa es que he estado toda la semana dale que te pego con el bachillerato, sin tiempo para hacer nada...  (literalmente).
Bien, cuando tenga tiempo, intentaré ese basto invento de usar un operacional, una bombilla y un LDR acoplados en la oscuridad , a conjunto con el comando POT de PBP.

Cuando lo intente os cuento, de mientras también he tenido tiempo para probar el MAX232 , por cierto , una experiencia muy frustrante (ver mi reciente POST) , supongo que derivada de mi falta de experiencia.

Ya os contaré sobre mi progreso. Y bueno, por ahora no creo que me hagan falta DACs... pues estoy semi-inmerso (los fines de semana, y entre semana cuando no hay ni deberes, ni examenes en medio) en hacer un robot rastreador tipico de los de 2 CNY70 y 2 motores...

Bueno, saludos a tod@s y hasta otra!