- ADC0804 y Raspberry Pi:
- Sensor de temperatura LM35:
- Componentes requeridos:
- Circuito y explicación de trabajo:
- Explicación de programación:
En su mayoría, hemos cubierto todos los componentes básicos que interactúan con Raspberry Pi en nuestra serie de tutoriales de Raspberry Pi. Hemos cubierto todos los Tutoriales de manera sencilla y detallada, para que cualquiera, haya trabajado con Raspberry Pi o no, pueda aprender de esta Serie fácilmente. Y después de pasar por todos los tutoriales, podrá crear algunos proyectos de alto nivel utilizando Raspberry Pi.
Así que aquí estamos diseñando la primera aplicación basada en los tutoriales anteriores. La primera aplicación básica es la temperatura de la sala de lectura de Raspberry Pi. Y puede monitorear las lecturas en la computadora.
Como se discutió en tutoriales anteriores, no hay canales ADC proporcionados internamente en Raspberry Pi. Entonces, si queremos conectar cualquier sensor analógico, necesitamos una unidad de conversión ADC. Y en uno de nuestros tutoriales tenemos el chip ADC0804 interconectado a Raspberry Pi para leer un valor analógico. Así que revíselo antes de construir este termómetro de temperatura ambiente.
ADC0804 y Raspberry Pi:
ADC0804 es un chip diseñado para convertir señales analógicas en datos digitales de 8 bits. Este chip es una de las series más populares de ADC. Es una unidad de conversión de 8 bits, por lo que tenemos valores o valores de 0 a 255. La resolución de este chip cambia en función del voltaje de referencia que elijamos, hablaremos más de ello más adelante. A continuación se muestra el Pinout de ADC0804:
Ahora, otra cosa importante aquí es que el ADC0804 funciona a 5 V y, por lo tanto, proporciona una salida en una señal lógica de 5 V. En la salida de 8 pines (que representan 8 bits), cada pin proporciona una salida de + 5 V para representar el "1" lógico. Entonces, el problema es que la lógica PI es de + 3.3v, por lo que no puede dar una lógica de + 5V al pin GPIO de + 3.3V de PI. Si le da + 5V a cualquier pin GPIO de PI, la placa se daña.
Entonces, para reducir el nivel lógico de + 5V, usaremos un circuito divisor de voltaje. Hemos discutido el circuito divisor de voltaje, lo investigamos anteriormente para obtener más aclaraciones. Lo que haremos es usar dos resistencias para dividir la lógica de + 5V en lógicas de 2 * 2.5V. Entonces, después de la división, le daremos una lógica de + 2.5v a PI. Entonces, siempre que ADC0804 presente un '1' lógico, veremos + 2.5V en el Pin GPIO PI, en lugar de + 5V.
Sensor de temperatura LM35:
Ahora, para leer la temperatura de la habitación, necesitamos un sensor. Aquí vamos a utilizar el sensor de temperatura LM35. La temperatura generalmente se mide en "Centígrados" o "Fahrenheit". El sensor “LM35” proporciona salida en grados centígrados.
Como se muestra en la figura, LM35 es un dispositivo similar a un transistor de tres pines. Los pines están numerados como, PIN1 = Vcc - Alimentación (conectado a + 5V)
PIN2 = señal o salida (conectado al chip ADC)
PIN3 = Tierra (conectado a tierra)
Este sensor proporciona voltaje variable en la salida, según la temperatura. Por cada aumento de +1 centígrado en la temperatura, habrá un voltaje + 10 mV más alto en el pin de salida. Entonces, si la temperatura es 0 ° centígrados, la salida del sensor será 0 V, si la temperatura es 10 ° centígrados, la salida del sensor será + 100 mV, si la temperatura es 25 ° centígrados, la salida del sensor será + 250 mV.
Componentes requeridos:
Aquí estamos usando Raspberry Pi 2 Model B con Raspbian Jessie OS. Todos los requisitos básicos de hardware y software se discutieron previamente, puede buscarlos en la Introducción de Raspberry Pi, aparte de lo que necesitamos:
- Pines de conexión
- Resistencia de 1KΩ (17 piezas)
- Bote de 10K
- Condensador de 0,1 µF
- Condensador de 100 µF
- Condensador de 1000 µF
- ADC0804 IC
- Sensor de temperatura LM35
- Tabla de pan
Circuito y explicación de trabajo:
Las conexiones que se realizan para conectar Raspberry a ADC0804 y LM35 se muestran en el diagrama de circuito a continuación.
La salida del LM35 tiene muchas fluctuaciones de voltaje; por lo que se utiliza un condensador de 100 uF para suavizar la salida, como se muestra en la figura.
El ADC siempre tiene mucho ruido, este ruido puede afectar en gran medida el rendimiento, por lo que usamos un condensador de 0.1uF para la filtración de ruido. Sin esto, habrá muchas fluctuaciones en la producción.
El chip funciona en el reloj del oscilador RC (resistor-capacitor). Como se muestra en el diagrama de circuito , C2 y R20 forman un reloj. Lo importante a recordar aquí es que el condensador C2 se puede cambiar a un valor más bajo para una mayor tasa de conversión de ADC. Sin embargo, a mayor velocidad, disminuirá la precisión. Entonces, si la aplicación requiere mayor precisión, elija el capacitor con mayor valor y para mayor velocidad elija el capacitor con menor valor.
Como se dijo anteriormente, el LM35 proporciona + 10 mV por cada centígrado. La temperatura máxima que puede medir el LM35 es de 150º centígrados. Entonces tendremos un máximo de 1.5V en el terminal de salida LM35. Pero el voltaje de referencia predeterminado de ADC0804 es + 5V. Entonces, si usamos ese valor de referencia, la resolución de la salida será baja porque estaríamos usando un máximo de (5 / 1.5) 34% del rango de salida digital.
Afortunadamente, el ADC0804 tiene un pin Vref ajustable (PIN9) como se muestra en el diagrama de pin de arriba. Así que configuraremos el Vref del chip en + 2V. Para configurar Vref + 2V, necesitamos proporcionar un voltaje de + 1V (VREF / 2) en PIN9. Aquí estamos usando un potenciómetro de 10K para ajustar el voltaje en PIN9 a + 1V. Utilice el voltímetro para obtener el voltaje exacto.
Anteriormente hemos utilizado el sensor de temperatura LM35 para leer la temperatura ambiente con Arduino y con el microcontrolador AVR. También verifique la medición de humedad y temperatura usando Arduino
Explicación de programación:
Una vez que todo está conectado según el diagrama del circuito, podemos encender el PI para escribir el programa en PYHTON.
Hablaremos de algunos comandos que usaremos en el programa PYHTON, Vamos a importar el archivo GPIO de la biblioteca, la siguiente función nos permite programar los pines GPIO de PI. También estamos cambiando el nombre de “GPIO” a “IO”, por lo que en el programa siempre que queramos referirnos a los pines GPIO usaremos la palabra 'IO'.
importar RPi.GPIO como IO
A veces, cuando los pines GPIO, que estamos tratando de usar, pueden estar realizando otras funciones. En ese caso, recibiremos advertencias mientras ejecutamos el programa. El siguiente comando le dice al PI que ignore las advertencias y continúe con el programa.
IO.setwarnings (falso)
Podemos referir los pines GPIO de PI, ya sea por el número de pin a bordo o por su número de función. Como 'PIN 29' en la placa es 'GPIO5'. Entonces decimos aquí o vamos a representar el pin aquí por '29' o '5'.
IO.setmode (IO.BCM)
Estamos configurando 8 pines como pines de entrada. Detectaremos 8 bits de datos ADC por estos pines.
Configuración IO (4, IO.IN) Configuración IO (17, IO.IN) Configuración IO (27, IO.IN) Configuración IO (22, IO.IN) Configuración IO (5, IO.IN) Configuración IO (6, IO.IN) Configuración IO (13, IO.IN) Configuración IO (19, IO.IN)
En caso de que la condición entre llaves sea verdadera, las declaraciones dentro del ciclo se ejecutarán una vez. Entonces, si el pin 19 de GPIO se pone alto, entonces las declaraciones dentro del bucle IF se ejecutarán una vez. Si el pin 19 de GPIO no sube, las declaraciones dentro del bucle IF no se ejecutarán.
si (IO.input (19) == Verdadero):
El siguiente comando se usa como un ciclo para siempre, con este comando las declaraciones dentro de este ciclo se ejecutarán continuamente.
Mientras que 1:
En la sección de códigos a continuación se proporciona una explicación adicional del código.
Después de escribir el programa, es hora de ejecutarlo. Antes de ejecutar el programa, hablemos de lo que está sucediendo en el circuito como Resumen. El primer sensor LM35 detecta la temperatura ambiente y proporciona un voltaje analógico en su salida. Esta tensión variable representa la temperatura linealmente con + 10mV por ºC. Esta señal se alimenta al chip ADC0804, este chip convierte el valor analógico en valor digital con 255/200 = 1.275 recuentos por10mv o 1.275 recuentos por 1 grado. Este recuento lo toma el PI GPIO. El programa convierte el recuento en valor de temperatura y lo muestra en la pantalla. La temperatura típica leída por PI se muestra a continuación, De ahí que tengamos este monitor de temperatura Raspberry Pi.