Autor Tema: Entradas analogicas en pic16f877 y LM35  (Leído 11353 veces)

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

Desconectado jonbul

  • PIC10
  • *
  • Mensajes: 11
Entradas analogicas en pic16f877 y LM35
« en: 02 de Marzo de 2010, 07:35:33 »
Hola, estoy empezand en el mundillo de los pics y ya he hecho algunas cosillas y me gustaria meterme con las entradas analogicas. Estoy haciendo un proyecto para clase con un PIC 16F877 y me gustaria medir una tension analogica que em da un sensor de temperatura.  De momento de la ayuda de proton e sacado esto pero no entiendo bien para que sirve cada declaracion. Aparte este ejemplo explica como usar el PORTA pero a mi me gustaria usar el PORTE.

 DECLARE ADIN_RES 10       ' 10-bit result required
 DECLARE ADIN_TAD FRC      ' RC OSC chosen
 DECLARE ADIN_STIME 50     ' Allow 50us sample time
 DIM VAR1 as WORD
 TRISA = %00000001         ' Configure AN0 (PORTA.0) as an input
 ADCON1 = %10000000        ' Set analogue input on PORTA.0
 VAR1 = ADIN 0             ' Place the conversion into variable VAR1

En resumen me gustaria saber:
Que signica cada declare
que valor e de meter al adcon1 para asignar el PORTE como entrada analogica
tambien, decir que uso un cristal de 4MHz, que frecuencia pongo en el ADIN_TAD?

« Última modificación: 07 de Marzo de 2010, 18:00:07 por jonbul »

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4923
Re: Entradas analogicas en pic16f877 en PORTE
« Respuesta #1 en: 02 de Marzo de 2010, 07:50:36 »
Hola, estoy empezand en el mundillo de los pics y ya he hecho algunas cosillas y me gustaria meterme con las entradas analogicas. Estoy haciendo un proyecto para clase con un PIC 16F877 y me gustaria medir una tension analogica que em da un sensor de temperatura.  De momento de la ayuda de proton e sacado esto pero no entiendo bien para que sirve cada declaracion. Aparte este ejemplo explica como usar el PORTA pero a mi me gustaria usar el PORTE.

 DECLARE ADIN_RES 10       ' 10-bit result required
 DECLARE ADIN_TAD FRC      ' RC OSC chosen
 DECLARE ADIN_STIME 50     ' Allow 50us sample time
 DIM VAR1 as WORD
 TRISA = %00000001         ' Configure AN0 (PORTA.0) as an input
 ADCON1 = %10000000        ' Set analogue input on PORTA.0
 VAR1 = ADIN 0             ' Place the conversion into variable VAR1

En resumen me gustaria saber:
Que signica cada declare
que valor e de meter al adcon1 para asignar el PORTE como entrada analogica
tambien, decir que uso un cristal de 4MHz, que frecuencia pongo en el ADIN_TAD?


DECLARE ADIN_RES 10       ' aqui el resultado sera en 10 bit
 DECLARE ADIN_TAD FRC      'aqui deberia usar un condensador como referencia RC OSC chosen
 DECLARE ADIN_STIME 50     ' Allow 50us sample time
 DIM VAR1 as WORD    , aqui defini la variable en word que puede ser entre 0 y 65,535
 TRISA = %00000001         'aqui activa la resistencia internal pullUp-- Configure AN0 (PORTA.0) as an input
 ADCON1 = %10000000        ' aqui activa el puerto A.0--Set analogue input on PORTA.0
 VAR1 = ADIN 0             'aqui coloca la varible para la conversion- Place the conversion into variable VAR1

En resumen me gustaria saber:
Que signica cada declare
que valor e de meter al adcon1 para asignar el PORTE como entrada analogica
tambien, decir que uso un cristal de 4MHz, que frecuencia pongo en el ADIN_TAD?

Desconectado jonbul

  • PIC10
  • *
  • Mensajes: 11
Re: Entradas analogicas en pic16f877 en PORTE
« Respuesta #2 en: 02 de Marzo de 2010, 08:07:02 »
jej con los declare me bastaba pero gracias
por lo que he entendido si quiero que el resultado me lo guarde en un byte entre 0 y 255 tendria que poner "ADIN_RES 8", lo del frc sigue sin quedarme claro, adin_stime por lo que he leido por ahi es un tiempo que hay que darle al pic para que lea y lo convierta asi que puedo dejar 50us.

lo de adcon1 puedo suponer que el bit mas a la izquierda o de mayor peso seria RA0/AN0 y si se pone a 1 me lo configura como entradas analogica, es decir si pusiese "ADCON1 = %01100000" ra1 y ra2 serian las entradas analogicas. siendo el de mas a la izquierda AN0 y el de mas a la derecha AN7, es posible que sea asi?

Desconectado Strepto

  • PIC16
  • ***
  • Mensajes: 159
    • Pictronics
Re: Entradas analogicas en pic16f877 en PORTE
« Respuesta #3 en: 02 de Marzo de 2010, 11:35:51 »
1) En lo primero de ADIN_Res 8 estas en lo correcto.
2) Lo del frc es indica el tipo de oscilador que utiliza
Cita de: Proton
Sets the ADC's clock source. All compatible PICmicros have four options for the clock source used by the ADC. 2_FOSC, 8_FOSC, and 32_FOSC, are ratios of the external oscillator, while FRC is the PICmicro's internal RC oscillator.
Traducido: 2_FOSC, 8_FOSC y 32_FOSC son valores usando el oscilador externo y el FRC es usando el oscilador interno del PIC
3) En lo del tiempo tambien andas en lo correcto
4) En lo ultimo no me atrevo a decir nada y mejor espero a que alguien que sepa conteste porque yo solo he hecho una vez pruebas con el ADC y ha sido basandome en ese mismo ejemplo que has puesto tu, sacado del proton.

Un saludo!

Desconectado jonbul

  • PIC10
  • *
  • Mensajes: 11
Re: Entradas analogicas en pic16f877 en PORTE
« Respuesta #4 en: 02 de Marzo de 2010, 14:12:34 »
gracias strepto, espero que alguien me pueda aydar con la ultima. mientras seguire mirando haber si encuentro algo

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: Entradas analogicas en pic16f877 en PORTE
« Respuesta #5 en: 02 de Marzo de 2010, 15:36:16 »
Citar
lo de adcon1 puedo suponer que el bit mas a la izquierda o de mayor peso seria RA0/AN0 y si se pone a 1 me lo configura como entradas analogica, es decir si pusiese "ADCON1 = %01100000" ra1 y ra2 serian las entradas analogicas. siendo el de mas a la izquierda AN0 y el de mas a la derecha AN7, es posible que sea asi?

Y si no estoy equivocado ¿No sera que el AN0 es  el primeo de la izquierda y el AN7 el primero de la derecha?

Esto lo puedes ver en el datasheet.Mira aqui:  http://ww1.microchip.com/downloads/en/DeviceDoc/30292c.pdf

El registro ADCON1 sirve para seleccionar el canal de la conversion y como justificas la conversion si a la derecha o a la izquierda cuando el conversor es de 10 bits. Si es de 8 bits el resultado se queda en el registro "adresh" y por tanto ocupa la totalidad del byte en tu variable si la has declarado como tal.

Fer.
« Última modificación: 02 de Marzo de 2010, 15:41:27 por Fer_TACA »
Todos los días se aprende algo nuevo.

Desconectado jonbul

  • PIC10
  • *
  • Mensajes: 11
Re: Entradas analogicas en pic16f877 en PORTE
« Respuesta #6 en: 03 de Marzo de 2010, 06:08:06 »
ha base de empollarme el datasheet, que menos mal que lo encontre en castellano e desubierto como va el adcon1 para poner las salidas analogicas o digitales, esta en el apartad 11-1 en ambos idiomas, al parecer, los 4 bits de menor peso segun el valor que tengan se configuran las entradas analogicas o digitales, lo cual me parece una porqueria ya que no puedes elegir libremente cuales se quiere como analogicas y cuales como digitales

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: Entradas analogicas en pic16f877 en PORTE
« Respuesta #7 en: 03 de Marzo de 2010, 15:14:23 »
Si que puedes elegir, pero de acuerdo a la estructura que te dejan.

¡Eso es lo que hay y con eso tenemos que lidiar!

Fermin
Todos los días se aprende algo nuevo.

Desconectado jonbul

  • PIC10
  • *
  • Mensajes: 11
Re: Entradas analogicas en pic16f877 en PORTE
« Respuesta #8 en: 03 de Marzo de 2010, 19:59:36 »
Si que puedes elegir, pero de acuerdo a la estructura que te dejan.

¡Eso es lo que hay y con eso tenemos que lidiar!

Fermin

si a eso me referia pero ya tengo todo el diseño y el programa practicamente acabados y esto me obliga a hacer varios cambio, vere que se puede hacer y hare pruebas con el 16f876 y 8 diodos leds en el port B

Desconectado jonbul

  • PIC10
  • *
  • Mensajes: 11
Re: Entradas analogicas en pic16f877 en PORTE
« Respuesta #9 en: 04 de Marzo de 2010, 23:06:37 »
ya h ehecho un programilla de prueba y me funciona


 DECLARE ADIN_RES 8       ' -bit result required
 DECLARE ADIN_TAD FRC      ' RC OSC chosen
 DECLARE ADIN_STIME 50     ' Allow 50us sample time
Dim AnDig as byte
  trisa=%11111110
  trisb=0
  Adcon1.0=0
  Adcon1.1=1
  Adcon1.2=1
  Adcon1.3=1
Inicio:
portb= adin 0
delayms 100
goto inicio 

A RA0/AN0 he conectado la base de una resistencia ajustables de 4K7 y sus extremos GND y a +5V y todo el PORTB a diodos leds. Al regularla se veia como se iban encendiendo los diodos leds y apagando segun la tension de ra0.

Gracias a todos por la ayuda

Desconectado jonbul

  • PIC10
  • *
  • Mensajes: 11
Re: Entradas analogicas en pic16f877 en PORTE
« Respuesta #10 en: 07 de Marzo de 2010, 17:59:22 »
ahora que ya me funciona la entrada analogica estoy probando con un LM35 para ver la temperatura que hace con un PIC 16f877. Lo tengo directamente conectado a RA0 vcc y gnd. El caso es que cuando mido tensiones a la salida del LM35 me da siempre la temperatura en mV, es decir 20ºC--->Vout=20mV y aumenta ocn la temperatura, pero al medir con el pic en el zocalo me da 0,14mV y cuando le doy calor a lm35 baja la tension y el valor que se muestra en la lcd. Haber si me podria explicar alguien por que.

PD: por lo que he leido en algunos foros no hace falta conectar un operacional a la salida del LM35 al usar un pic 16f877, no se si sera verdad

EDIT: ya me vale, despues de ni se cuanto tiempo buscando el porque, al final resulta que es por que no tenia configurado el RA0 como entrada, de aqui por la ventana
« Última modificación: 07 de Marzo de 2010, 21:38:19 por jonbul »

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: Entradas analogicas en pic16f877 y LM35
« Respuesta #11 en: 08 de Marzo de 2010, 10:33:52 »
Enhorabuena
Todos los días se aprende algo nuevo.

Desconectado janiro74

  • PIC10
  • *
  • Mensajes: 44
Re: Entradas analogicas en pic16f877 en PORTE
« Respuesta #12 en: 31 de Marzo de 2010, 19:45:02 »
ha base de empollarme el datasheet, que menos mal que lo encontre en castellano e desubierto como va el adcon1 para poner las salidas analogicas o digitales, esta en el apartad 11-1 en ambos idiomas, al parecer, los 4 bits de menor peso segun el valor que tengan se configuran las entradas analogicas o digitales, lo cual me parece una porqueria ya que no puedes elegir libremente cuales se quiere como analogicas y cuales como digitales


disculpa acabo de leer esto y estoy aprendiendo sobre el tema (las entradas analogicas) y me interesa si puedes poner la direccion del data ese que has encontrado en español  y de algunos otros aver si entre unos y otros me voy enterando
de antemano gracias