Estoy tratando de construir un termostato con Arduino. Quiero alimentarlo con la batería/cargador del teléfono móvil, lo que hace que el voltaje del sistema sea bastante variable. En este momento uso Arduino Uno, pero una vez que esté completo, lo transferiré a Lilypad.
Primero traté de usar el sensor de temperatura TMP36 . Hasta ahora fue un completo fracaso. Si bien el sensor en sí parece ser muy estable, no puedo encontrar una manera de medir con precisión su voltaje.
El uso de una referencia de 5v incorporada para los sensores analógicos no funciona en absoluto; incluso los +5V de USB arduino son en realidad +4.8V (lo que cambia la temperatura medida unos pocos grados). Cuando la placa se alimenta con la batería, el voltaje cae a aproximadamente 4 V y la temperatura medida se dispara. También traté de usar +3.3V de la placa como referencia. Parece ser más estable cuando la placa se alimenta desde USB, pero su voltaje cae cuando se queda sin batería.
¿Hay alguna otra forma de medir de manera confiable el voltaje de salida del sensor?
Para la segunda etapa planeo usar termistores. Acabo de pedir un par de estos termistores de 20K .
Por lo que entiendo, estos deberían ser más fáciles de medir con precisión si construyo un divisor de voltaje y uso V_in como voltaje de referencia para ADC.
Un par de preguntas sobre ellos:
Parece que está al tanto del problema con el cambio de voltaje de referencia y si usa un dispositivo como el TMP36 (10mV/degC fijo) no hay nada que pueda hacer más que usar una referencia de voltaje de un chip para estabilizar las cosas.
Sin embargo, si está utilizando un RTD o un termistor, el problema no surgirá. Su ADC está realizando una medición radiométrica: compara la entrada del ADC con su voltaje de referencia PERO, si alimenta el RTD o el termistor (a través de una resistencia adecuada) desde el mismo voltaje de referencia, no afectará las lecturas. Si la referencia sube un 10%, también lo hace el voltaje en el ADC.
Creo que debería considerar usar un sensor de temperatura digital como DS18B20/ DS18S20 porque no depende de la precisión de su ATmega ADC para medir una señal analógica, usa un protocolo digital de 1 cable para informar la temperatura.
Consulte los siguientes tutoriales
http://playground.arduino.cc/Learning/OneWire
http://www.hobbytronics.co.uk/ds18b20-arduino
Su medida será tan buena como el voltaje de referencia para ADC. Arduino por defecto usa el voltaje de suministro como voltaje de referencia, pero en su caso, la forma correcta de hacerlo sería usar el pin Aref de arduino. Debe obtener un chip especial llamado "Referencia de voltaje" y conectarlo al pin Aref, luego configure ADC para usar la referencia externa en el código Arduino ( analogReference(EXTERNAL)
)
El voltaje de la referencia debe seleccionarse de manera que la oscilación completa de su sensor de temperatura se ajuste al voltaje de referencia. TMP36 emitirá ~1,5 V a 100 °C, por lo que deberá usar una referencia superior a 1,5 V para medir la temperatura hasta 100 °C. Desea que su referencia esté lo más cerca posible del voltaje máximo medido para obtener la mayor resolución posible.
Atmega328p tiene dos referencias internas que se pueden usar sin ningún componente externo. Uno es 1.1V, otro 2.56V. Por lo general, tienen una precisión un poco peor que la que obtendría al usar un componente externo dedicado. Consulte la documentación de Arduino para obtener información sobre analogReference y la hoja de datos de Atmega328p para conocer la precisión de la referencia interna.
Si realmente quiere volverse loco con diferentes rangos, puede usar varias referencias externas y cambiarlas usando un interruptor analógico como 74hc4051. O puede cambiar entre dos referencias internas.
Con los termistores obtendrá mejores resultados si configura una fuente de corriente constante en lugar de usar una resistencia tonta. Por otro lado, una resistencia tonta alimentada desde una referencia de voltaje estable funcionaría bien.
Al elegir una referencia externa, asegúrese de tener suficiente voltaje para adaptarse a su caída de voltaje cuando se alimenta con baterías y las baterías están agotadas. Vref+Vdropout < Vbat-min.
No tener una referencia ADC estable es en realidad un síntoma de otro problema en su circuito: no está suministrando un voltaje lo suficientemente alto a la placa. Esto se indica mediante la caída del suministro de 5 V a 4 V y la caída también de 3,3 V.
El regulador de voltaje (MC33269D-5.0 IIRC) en la placa Arduino tiene un voltaje de caída de ~1.0V, por lo tanto, debe suministrarle al menos 6V para obtener una salida estable de 5V. Las baterías AA comienzan con 1,5-1,6 V y están casi agotadas con 1,1 V, por lo que debe alimentar la placa con al menos 6 baterías AA para obtener una salida estable durante toda la vida útil de la batería.
Alimentado correctamente, puede usar la referencia interna de ADC o las líneas de 5V o 3.3V. Dado que el sensor de temperatura varía alrededor de 10 mV por grado Celsius, puede usar un divisor de voltaje para establecer el voltaje de referencia equivalente al voltaje de salida máximo esperado del sensor (por ejemplo, para 50 grados C). Esto le dará una medida más precisa.
Si desea utilizar menos de 6 pilas AA, pruebe con un convertidor elevador de CC-CC, por ejemplo, https://www.sparkfun.com/products/10968 . El ejemplo vinculado toma 1V - 4V y genera 5V. La salida se alimentaría directamente al pin de 5V del Arduino, sin pasar por su regulador.
Para que la placa funcione durante más tiempo con las baterías, ponga la MCU en reposo entre las lecturas del sensor. La biblioteca de bajo consumo Rocketscream es excelente para este propósito. ¡Pero solo es realmente útil cuando se usa un regulador eficiente / convertidor DC-DC ya que el regulador Arduino estándar usa 10 mA solo!
Responda a la pregunta ¿Hay alguna otra forma de medir de manera confiable el voltaje de salida del sensor?
ADC usa el voltaje de referencia para la conversión de analógico a digital. Entonces, si hay un cambio en el voltaje de referencia, los valores convertidos (es decir, el valor digital) cambiarán. El valor digital será diferente para la misma entrada analógica si cambia el voltaje de referencia.
Una opción fácil es usar el voltaje de referencia interno dentro del Arduino (es decir, el controlador Atmega).
Consulte el enlace a continuación donde se proporciona un código de muestra para usar el ADC interno (nombre de la función Arduino - analogReference (DEFAULT))
http://tronixstuff.com/2013/12/12/arduino-tutorials-chapter-22-aref-pin/
Creo que esto resolverá su problema y no es necesario cambiar a termistores.
geométrico
joe hass
Usov
Usov
Usov
cano64
forktestlab