Autor Tema: VREF pic c compiler  (Leído 3840 veces)

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

Desconectado Somag!

  • PIC10
  • *
  • Mensajes: 12
VREF pic c compiler
« en: 30 de Enero de 2017, 22:44:56 »
Alguien sabe ¿cómo utilizar el voltaje de referencia?
Se que si uso un voltaje de referencia, puedo tener más resolución de una lectura analógica y no tener que usar OPAM
Pero no se como escribirlo en código para tener 2.5V y tengo la duda de si esos 2.5V
se escriben en código o tengo que hacer un divisor resistivo que me de 2.5
Agradecería mucho la ayuda

Desconectado Somag!

  • PIC10
  • *
  • Mensajes: 12
Re:VREF pic c compiler
« Respuesta #1 en: 01 de Febrero de 2017, 06:49:55 »
Aún no se la manera de utilizar el voltaje de referencia pero por lo mientras aprovecho la resolución de 10 bits
La señal analógica que leo es la de un LM35(sensor de temperatura) y lo que no quiero hacer es armar un amplificador operacional
Como la resolución a 5V es de 4.8mV, con esto puedo medir la señal de LM35(10mV/ºC)

Hay de dos sopas:
-Multiplicar por 5 la señal de entrada
 v=read_adc() * 5;
 temp=99.0/1023*v

-Multiplicar el valor obtenido por 100
 v=read_adc();
 temp=99.0/1023*v*100
 :-/
Yo utilizo la ecuación de la recta para escalar los valores

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:VREF pic c compiler
« Respuesta #2 en: 01 de Febrero de 2017, 08:11:29 »
el VREF unicamente te sirve para que en el caso que la entrada no supere cierta tension, puedas poner una referencia externa, y asi tu maximo que serian los 1023 ( en el caso de un Vref+) sea esta tension y no los 5V del micro.

Igual tenes que cumplir con los parametros electricos, creo que tiene una diferencia de tension minima.
El mayor problema que tenes es que 10mV es muy poco, si te pones a pensar  y lo vas a usar en solo la temperatura ambiente ysolo la parte positiva, tenes que vas desde 2ºC a 45ºC como maximo. Siendo 2ºC = 0mV, para los 45ºC son solo 450mV o 0.45V como lo quieras ver. Un amplificacion no le haria nada mal.

Citar
Como la resolución a 5V es de 4.8mV

Si pero ese es el ultimo bit , y nunca va a estar estable por lo tanto a veces lo vas a tener y a veces no, y luego de esa lectura y pasado por la formula puede significar 1 grado mas o 1 menos de diferencia.

Desconectado Somag!

  • PIC10
  • *
  • Mensajes: 12
Re:VREF pic c compiler
« Respuesta #3 en: 01 de Febrero de 2017, 16:40:38 »
Ya resolví mi enigma jaja ((:-))
La duda que tenía era si tenia que poner por software el voltaje de referencia o era con un divisor resistivo.
Ya lo simule y estuve revisando en el archivo .h como colocar el vref+

//Hasta ahora se que el voltaje de referencia en este pic
//debe de ser por hardware, colocando un voltaje de referencia
//de 2.5V como mínimo, no necesito amplificar la señal con un circuito externo
#include<16f819.h>
#device adc=10
#use delay(clock=4MHz)
#fuses intrc,nowdt,nomclr,noprotect
#define LCD_RS_PIN PIN_B0
#define LCD_RW_PIN PIN_B1
#define LCD_ENABLE_PIN PIN_B2
#include <lcd.c>

void Configurar()
{
   SETUP_OSCILLATOR(OSC_4MHz);
   setup_adc_ports(AN0_AN1_AN2_AN4_VSS_VREF);
   SETUP_ADC(ADC_CLOCK_DIV_8); //el tiempo de adquisición mínimo para este pic es de 1.6uS
   SET_ADC_CHANNEL(4);         //y el máximo es de 6.4us, por lo que debo de acercarme a lo mínimo
}                        //div/Fosc ==> (8/4MHz) = 2uS
void main()
{
   long v;
   float temp=0.0;
   Configurar();
   lcd_init();
   for(;; )
   {
      v=read_adc(); //A 10bits el adc tiene una resolucion de 4.8mV a 5V
      temp=2.5/1023.0*v*100.0; //el lm35 10mV/ºC
      //Con un Vref de 2.5V la resolución a 10bits será 2.43mV
      lcd_gotoxy(1,1);
      printf(lcd_putc,"Valor: %Ld",v);
      printf(lcd_putc,"\r\nTemp: %2.1f",temp);
   }
}


Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:VREF pic c compiler
« Respuesta #4 en: 01 de Febrero de 2017, 19:31:35 »
Yo no sabia de que PIC se trataba, porque algunos tienen un modulo de Vref interno.

2.5V es lo minimo que podes tener en Vref+ con una tension de 5V. Segun el datasheet