El proceso de pruebas que se ha llevado a cabo ha permitido determinar el problema en las mediciones. Con los 4 sensores de temperatura conectados, se observa que los problemas de incremento de las temperaturas se dan en todas las sondas por igual. Tras consultar a fondo las hojas de características y diversos sitios en internet, se descubre que el problema radica en la interacción entre el conversor analógico-digital de arduino y los sensores de temperatura.
Problemas de multiplexación
El procesador Atmega 328 que incorpora el arudino incluye un único conversor ADC, el cual se multiplexa para permitir la lectura de las 7 entradas analógicas. Cambiar entre dos entradas hace que en la práctica, la señal se corte en la entrada original y se establezca en la nueva entrada seleccionada. En la mayoría de componentes (por ejemplo, en potenciómetros) esto no tiene ninguna repercusión en la señal, pero en el caso de los sensores de temperatura, se produce un problema relacionado con la arquitectura de los sensores.
Los circuitos que incluyen internamente los sensores de temperatura presentan, de cara a la interconexión con otros componentes, una muy alta impedancia. Esto provoca que al cambiar muy rápido a la entrada analógica de uno de ellos no de tiempo a estabilizar la señal, y por lo tanto las medidas salen falseadas. Dado que el sensor de humedad no se comporta de esta forma, no presenta el problema.
En los foros de soporte de arduino (http://www.arduino.cc) se plantean algunas soluciones para este problema, y la más extendida es la comentada en el tutorial de sensores de ladyada, donde se mencionan posibles problemas al conectar múltiples sensores y su solucion, la cual se basa en pausar las lecturas entre las entradas analógicas, haciendo el siguiente proceso:
- Cambiar a la entrada que se desea leer, mediante analogRead(entrada), sin asignarla a ninguna variable.
- Esperar algunos segundos, para permitir que se estabilice la señal.
- Hacer la lectura de la señal: variable=analogRead(entrada).
Este proceso se debe repetir para cada puerto de entrada analógico que vayamos a utilizar. Es importante tener en cuenta que esta pausa afecta al cambio de un puerto a otro, pero no es necesaria para realizar múltiples lecturas sucesivas de un mismo lector (mecanismo utilizado para obtener una lectura más estable usando la media de varias lecturas consecutivas).
Poniendo en práctica este sistema se han probado los 4 sensores de temperatura disponibles, haciendo sucesivas pruebas con diferentes tiempos de descanso entre los cambios de entrada. De los 20ms de espera en la configuración original, se han ido incrementando poco a poco las pausas, hasta llegar a los 120 segundos en el caso máximo. Efectivamente se logran mejorar las lecturas de los sensores de temperatura, y los valores en exceso medidos con anterioridad (2º de media) se han reducido, aunque la reducción ha sido muy pequeña (en torno a medio grado en el mejor de los casos). Como contrapartida, los tiempos de lectura conjuntos de todos los sensores superan los 10 minutos, de tal forma que hacen al sistema muy poco práctico, impidiendo de hecho la consulta de la temperatura en tiempo real.
Estos resultados obligan a replantear el sistema de medición de la temperatura, lo que ha desembocado finalmente en la elección de unos nuevos circuitos digitales. Estos cambios se detallan en el siguiente artículo.

