Go Down

Topic: AREF exclusivo (Read 143 times) previous topic - next topic

inelint

Hola Amigos.
Estoy censando dos entradas analógicas con un arduino UNO, de las cuales una de ellas varía entre 0-5VCC mientras que la otra, de otro sensor distinto, varía sólo de 0-1VCC.
Mi pregunta es si existe la forma, a partir de programación, de usar la funcion "analogReference" para llevarlo a 1,1VCC, pero sólo para una entrada analógica.
Por hardware sé como se hace, pero no quiero, ... busqué por todos lados y no puedo encontrar la respuesta a hacerlo por soft...
Muchas gracias

surbyte

Bueno, te habia respondido que solo se podía hacer en el setup pero cuando llegan preguntas de este tipo, justamente aprovecho para estudiar el tema y sorpresa... se puede pero solo hay que descartar una lectura hasta que la nueva referncia se establezca sino tendras lecturas anómalas

Esta persona @Jiggy-Ninja dice haber escrito un tutorial o documento que no he encontrado hasta ahora pero si encontré este comantario, esta rutina ejemplo fue extraída de este link Re: How to feed one analog pin with 1.0-1.1V and keep other analog pins at 5V

Code: [Select]
float readTemperatureK( int adcPin )
{
  analogReference( INTERNAL );
//  Dummy read to set the new reference.
  analogRead( adcPin );
//  may not be necessary to stabalize the new ADC reference,
//  but this delay is a "just in case" sort of thing"
  delay( 10 );
  int tempSense = analogRead( adcPin );
//  Temperature sensor is calibrated to read Celsius.
  float celsiusTemp = tempSensorToCelsius( tempSense, vRefTemp );
//  Covert to Kelvins.
  return temperatureCtoK( celsiusTemp );
}

float readPressureKPa( int adcPin )
{
  analogReference( DEFAULT );
  analogRead( adcPin );
  delay( 10 );
  int pressSense = analogRead( adcPin );
  return baroSensorToKPa( pressSense, vRefPress );
}



Bueno justamente hace algo como lo que pides, tal vez no sean los sensores pero tu sabrás adecuarlo a tu necesidad.

inelint

Gracias Surbyte, me imaginé que podía venir por ese lado.
Voy a probar como sale, y a la brevedad comento los resultados.
un abrazo!

inelint

Probado, una cosa nueva que anda y que se puede compartir.
Funciona perfectamente

Hice básicamente dos sentencias por separado,  a las cuales las invoco en el loop en distintos momentos, pero dentro de la sentencia, para una uso

analogReference( INTERNAL );

y para la otra:

analogReference( DEFAULT );


muy útil para el uso de varios sensores con rangos diferentes de toma de datos... estaría ya solucionado el hilo @surbyte?

Go Up