Datos de sensor analógico fluctúan mucho ¿poner capacitador?

Buenas... tengo un sensor de humedad de tierra que va conectado al pin A0, y estoy observando que el valor fluctúa mucho, pasa del 20% al 50% y luego vuelve al 30% en cosa de tres segundos... he leído que puedo poner un capacitador en la probotoard "al lado de donde van conectados los pines de GND y 5V del arduino" para estabilizar los valores... ¿¿¿es eso cierto??? y de ser así... ¿¿qué capacitador me recomendáis??

Gracias!!

Ahi tienes otro problema, un sensor que te dice 20... 50... 30 es un sensor que no funciona bien.

Hi,
Pregunta. Declarastes el puerto que lees el sensor como un input en el setup. Muchos dicen que al hacer el input lo hace automatico pero es bueno simpre hacerlo.

Declarastes el puerto que lees el sensor como un input en el setup. Muchos dicen que al hacer el input lo hace automatico pero es bueno simpre hacerlo.

Que?

Declarar que?
SI lees por A0 tu sugieres declarar con pinMode(A0, INPUT); Desde cuando tauro?

Acá tienes el playground de Arduino para analogRead, dime donde declaran como INPUT una entrada analógica

Buenas... estaba probando con un sensor de humedad de suelo analógico capacitivo, exactamente es "Capacitive Soil Moisture Sensor v1.2" "ya que los reactivos se corroen muy rápido" y observo que me muestra valores que fluctúan mucho... he cambiado la manera de alimentar el sensor, en vez de con los 5V directos del arduino, le pongo una fuente externa y me sigue pasando lo mismo... el problema que observo más llamativo es que cuando desconecto el pin del sensor que está conectado al A0 del arduino, los valores siguen fluctuando en la pantalla LCD que tengo, y eso que ya no está conectado el sensor.... ¿cómo es posible que muestre valores que fluctúan si el sensor está quitado físicamente del arduino???

Gracias.

Hi,
El problema es que no se puede leer un pin de analoga sin senal pues te va dar un lectura erratica. Esto se debe a que la senal de entrada esta flotando. Para sabe si tienes problemas lo que debes hacer es ponerle un cable del pin a ground y lees la entrada. La lectura debe leer zero. Despues trata de leer un voltaje que sea conocido como una bateria de un 1.2 voltios. La lectura debe de ser bastante cerca de 1.2 voltios. Otra cosa que puedas hacer es de conectar una resistencia de 10K del pin de entrada a los 5 voltios. Lee la lectura y debe de estar cerca al voltaje de los 5 voltios del arduinio. Estas son unas pruebas sencillas que se deben de hacer cuando se cree que hay un problema en las lecturas.

Hola Tauro...¿cómo se pone un cable del pin al ground?... ¿del pin del sensor? o del pin A0 del arduino? y lo mismo con el ground... ¿del ground del sensor? o del ground del arduino?... no te entiendo muy bien cómo quieres decir

GRacias.

El arduino actúa como un multímetro. Pero no sabes si esta midiendo bien o mal. Lo que te dice @tauro es una prueba simple para saber si esta midiendo bien tu sistema o no.

Poner una R entre pin A0 y GND no requiere una contra pregunta.
Si pones una R de 10k entre A0 y GND y luego debes medir 0 en el ADC.

Aca me surge una duda con la idea de @tauro porque no leí que tuvieras un divisor resistivo como para medir 12V
Suponiendo que lo tengas tal que puedas leer tensiones de 12V entonces en ese entorno debería ser tu lectura.
Lo mismo con 5V.

Tienes GND del Arduino y A0
La primer prueba es con una R entre A0 y GND y debes leer 0
La segunda/tercera require un divisor resistivo. SIno no puedes leer mas de 5V.
Si no lo tienes solo prueba A0 directo al pin 5V y deberias leer 1023.

Se comprende?

NOTA: si no sabes conceptos básicos de electricidad porque te pones en un proyecto de este tipo. Simplement ponte a leer sobre Ley de Ohm y verás como se aclaran las dudas.

Hi,
Creo que surbyte aclaro lo que yo decia. El problema que yo tengo cuando doy consejos es que creo que la persona que recibe este tienen conocimientos para ejecutarlo. Para hacerlo mejor cuando me refiero a conectar un cable me refiero conectar un cable del pin A1 al ground del arduino. Debes leer zero. Despues conectas una resistencia de 10K de los 5 voltios del arduino al pin A1. Este debe de cerca de los 5 voltos que tiene el arduino.

Una "R" imagino que sea una "Resistencia" no?... yo siempre agradezco los intentos de la gente por ayudarme, pero para una persona que no tiene ni idea de electricidad ni de electrónica hay que tener en cuenta que hasta los conceptos más básicos pueden resultarle frustrantes. Y comentar que aunque a los demás les parezca que una pregunta no requiera de contra-pregunta, para mí que no he sido capaz de entender lo que me están explicando, pues sí la requiere.

Por ejemplo... pongo una Resistencia de 10K entre el GND y el A0... hasta ahí todo correcto, y mido los bornes de la resistencia y ¿debe medir 0 en el ADC?¿Qué es el ADC?.

Comentar que tampoco sé que es un divisor resistivo, pero no he puesto nada a 12V, ya que he trabajado en 5V tanto en el power supply como con la salida del propio arduino.

Y con respecto a la NOTA: comentar que aunque no sepa nada de electricidad, me meto en proyectos precísamente para ir aprendiendo y como hobby, leí hace un tiempo la ley de ohm, pero es como si leyese un libro en chino.

Gracias!

Gracias Tauro0221, pero si pongo un cable entre el A1 del arduino y el ground también del arduino...¿dónde pincho el cable rojo y negro del multímetro "o polímetro" para medir y ver el 0 que me dices, y medir ¿Voltios con el multímetro? imagino ¿no?, y si... yo siempre te agradeceré la ayuda prestada, pero a veces me siento que leo en chino las cosas y no me entero de nada.

Gracias.

Hi,
Al conectar un cable del pin A1 al ground del arduino lo que estas haciendo es que el pin A1 esta a zero voltios. Si lees el A1 debes de leer una lectura de zero voltios. Normalmente el cable negro tienes que conectarlo al ground. El rojo vaz a conectarlo al voltaje del pin que va pin del Al . Asi el metro te va a leer una lectura positiva, Si lo inviertes te dara una lectura negativa. Ambas lecturas seran iguales pero con signos de polaridad invertida. Siempre que usas el voltimetro para leer voltajes el negro va it al ground. Aqui lo que estamos tratando de saber es si el analog input A1 no se a danado al conectar el sensor.

Hola tauro0221, comentarte que si mido con el polímetro el voltaje que me arroja al conectar el pin A0 al rojo del polímetro y el GND al negro del polímetro, no se me queda en 0V como me indicabas que tendría que ser la lectura...

Será que está mal el pin A0? porque pruebo con el resto de pines analógicos y me pasa lo mismo...

Gracias.

Hola Cotarejo, a lo que se refería Tauro es que conectes un cable desde GND hasta el pin AO, es decir, que pongas A0 a tierra, por tanto, cuando midas con el multímetro (siempre cable rojo adonde quieres medir y el negro a la tierra) debe darte 0V, luego haz lo mismo pero conectando A0 a la salida de 5V de Arduino, y debe darte 5V en el multímetro.
Un consejo cuando midas algo, no toques el cobre con los dedos ya que, aparte de que estas interfiriendo en la medida, puedes tener algún susto trabajando con corrientes altas o en corriente alterna.
Cuando hayas realizado las medidas, sabrás que estás midiendo bien el voltaje en A0, entonces pondrás tu sensor de humedad y leerás el voltaje que hay en cada momento al igual que has leido cuando había 0V y 5V, la única diferencia es que ese voltaje ahora se correspondería con la característica del sensor que estas midiendo.

Hola Cotarejo, a lo que se refería Tauro es que conectes un cable desde GND hasta el pin AO, es decir, que pongas A0 a tierra, por tanto, cuando midas con el multímetro (siempre cable rojo adonde quieres medir y el negro a la tierra) debe darte 0V, luego haz lo mismo pero conectando A0 a la salida de 5V de Arduino, y debe darte 5V en el multímetro.

NO es lo que se le indicó.
Se le indicó que colocará una Resistencia de 10k entre A0 y GND y en esas condiciones con el cable NEGRO en GND y el cable ROJO en A0 mida la tensión que será 0V y claro el Arduino tmb debería reflejar eso

Luego con un cable unir A0 con 5V de salida del arduino (pin +5V) mantiendo la R de 10k entre A0 y GND y en esas condiciones el multimetro debería mostrar algo entorno a los 5V y el arduino debería indicar 1023.

La utilización de una resistencia no tiene mucho sentido, incluso es perjudicial para la medida ya que estás disipando voltaje.

surbyte:
NO es lo que se le indicó.
Se le indicó que colocará una Resistencia de 10k entre A0 y GND y en esas condiciones con el cable NEGRO en GND y el cable ROJO en A0 mida la tensión que será 0V y claro el Arduino tmb debería reflejar eso

Buenas, yo pongo la resistencia de 10K entre el A0 y el GND del arduino, y mido los bornes de la resistencia con el multímetro, y efectivamente me muestra 0V... pero donde dices eso de que "claro el Arduino tmb debería reflejar eso" no entiendo dónde debería de reflejarlo, ya que no tengo conectada ninguna LCD al arduino y el único sitio donde puedo ver algún dato físico es en la pantalla del multímetro, el cual me muestra 0V.

Luego con un cable unir A0 con 5V de salida del arduino (pin +5V) mantiendo la R de 10k entre A0 y GND y en esas condiciones el multimetro debería mostrar algo entorno a los 5V y el arduino debería indicar 1023.

Luego, manteniendo en el mismo sitio la resistencia, pongo un cable entre el A0 del arduino "el cual cuesta un poco meter porque el pin está ocupado con la resistencia de 10K" y el pin de 5V del arduino, y mido con el polímetro y me marca 0.002V... tampoco entiendo dónde podría ver que el arduino me debería indicar 1023 si no tengo conectada ninguna LCD

la utilización de una resistencia no tiene mucho sentido,

Claro que lo tiene. Una resistencia entre el pin y GND referencia el pin, hace que el ADC cuando esta usando el multiplexor descargue ese capacitor de muestro a GND y por eso le indicamos un valor alto empezando por 10k porque es de los mas comunes. En casos asi es la mejor de las pruebas.

incluso es perjudicial para la medida ya que estás disipando voltaje.

No es perjudicial en nada. Ante todo esta en paralelo y no en serie.
Además no se disipa voltage, una resistencia provoca una caida de tensión, y si estuviera en serie si claro tendría un efecto nocivo pero no le sugerimos conectar una R de 10k en serie sino en paralelo, insisto entre A0 y GND es como si a la Rint que es de alto valor ahora se le agrega otra de mas bajo.
Solo eso.

@cortarejo

pero donde dices eso de que "claro el Arduino tmb debería reflejar eso" no entiendo dónde debería de reflejarlo, ya que no tengo conectada ninguna LCD al arduino y el único sitio donde puedo ver algún dato físico es en la pantalla del multímetro, el cual me muestra 0V.

Se supone que mientras haces esa prueba tu arduino esta corriendo el programa y lees los valores en el monitor serie o donde fuera que te los indique.

Estas haciendo parcialmente mal las pruebas que te indicamos. Dejaré a otro que te lo explique de un modo mas claro.

Qué significa ADC???

poniendo este código sí que me muestra 1023 en el monitor serie del ide de arduino

void setup() {
  Serial.begin(9600); // open serial port, set the baud rate as 9600 bps
}
void loop() {
  int val;
  val = analogRead(0); //connect sensor to Analog 0
  Serial.print("Valor del Pin A0: ");
  Serial.println(val); //print the value to serial port
  delay(1000);
}

Por lo que si pongo un cable entre el pin A0 y el pin GND del arduino, me muestra lo siguiente:

Pero si pongo el cable entre el pin A0 y el pin 5V del arduino, me muestra lo siguiente:

Creo que así está bien... lo que me extraña es que si dejo el arduino sin poner ningún cable entre ningún PIN me muestra los siguientes valores:

¿¿esos valores que me muestra son voltage??? porque no creo que cuando me muestre 1023 sean voltios.... y ¿porqué me muestra valores al tener el pin A0 al aire sin nada de nada conectado?

GRACIAS!

Hi,
Los valores de 5 voltios y el pin a ground son valores correctos. No puedes dejar el pin A0 sin coneccion. Eso es lo que se llama flotando y te va a dar valores erraticos. Pregunta que tu esperas si no tienes senal en pin A0? Otra pruba que pues hace es leer los 3.3 voltios para asi saber la linearidad del ADC. ADC = quiere decir analog to digital convertion o en el espanol es conversion analoga a digital.