- ADC0804 e Raspberry Pi:
- Sensor de temperatura LM35:
- Componentes necessários:
- Circuito e explicação de funcionamento:
- Explicação de programação:
Cobrimos principalmente todos os componentes básicos que fazem interface com o Raspberry Pi em nossa série de tutoriais do Raspberry Pi. Cobrimos todos os tutoriais de maneira simples e detalhada, para que qualquer pessoa, trabalhe ou não com o Raspberry Pi, possa aprender facilmente com esta série. E depois de passar por todos os tutoriais, você será capaz de construir alguns projetos de alto nível usando Raspberry Pi.
Portanto, aqui estamos projetando o primeiro aplicativo com base nos tutoriais anteriores. A primeira aplicação básica é um Reading Room Temperature do Raspberry Pi. E você pode monitorar as leituras no computador.
Conforme discutido em tutoriais anteriores, não há canais ADC fornecidos internamente no Raspberry Pi. Portanto, se quisermos fazer a interface de qualquer sensor analógico, precisamos de uma unidade de conversão ADC. E em um de nossos tutoriais, fizemos a interface do chip ADC0804 com o Raspberry Pi para ler um valor analógico. Portanto, analise-o antes de construir este termômetro de temperatura ambiente.
ADC0804 e Raspberry Pi:
ADC0804 é um chip projetado para converter o sinal analógico em dados digitais de 8 bits. Este chip é uma das populares séries de ADC. É uma unidade de conversão de 8 bits, então temos valores de 0 a 255 valores. A resolução desse chip muda com base na tensão de referência que escolhemos, falaremos mais sobre isso mais tarde. Abaixo está a pinagem de ADC0804:
Agora, outra coisa importante aqui é que o ADC0804 opera a 5V e, portanto, fornece saída em sinal lógico de 5V. Na saída de 8 pinos (representando 8 bits), cada pino fornece saída de + 5 V para representar a lógica '1'. Portanto, o problema é que a lógica do PI é de + 3,3 V, então você não pode dar lógica de + 5 V ao pino GPIO de + 3,3 V do PI. Se você fornecer + 5V a qualquer pino GPIO de PI, a placa será danificada.
Portanto, para reduzir o nível lógico de + 5V, usaremos um circuito divisor de tensão. Já discutimos o Circuito Divisor de Tensão, examiná-lo anteriormente para obter mais esclarecimentos. O que faremos é usar dois resistores para dividir a lógica de + 5 V em lógicas de 2 * 2,5 V. Então, após a divisão, daremos lógica de + 2,5 V ao PI. Portanto, sempre que a lógica '1' for apresentada pelo ADC0804, veremos + 2,5 V no pino PI GPIO, em vez de + 5 V.
Sensor de temperatura LM35:
Agora, para ler a temperatura ambiente, precisamos de um sensor. Aqui vamos usar o sensor de temperatura LM35. A temperatura é geralmente medida em “Centígrados” ou “Fahrenheit”. O sensor “LM35” fornece saída em graus centígrados.
Conforme mostrado na figura, o LM35 é um dispositivo semelhante a um transistor de três pinos. Os pinos são numerados como, PIN1 = Vcc - Alimentação (conectado a + 5V)
PIN2 = Sinal ou Saída (conectado ao chip ADC)
PIN3 = Terra (conectado ao solo)
Este sensor fornece tensão variável na saída, com base na temperatura. Para cada aumento de +1 centígrado na temperatura, haverá uma tensão + 10mV mais alta no pino de saída. Então se a temperatura for 0◦ centígrados a saída do sensor será 0V, se a temperatura for 10◦ centígrados a saída do sensor será + 100mV, se a temperatura for 25◦ centígrados a saída do sensor será + 250mV.
Componentes necessários:
Aqui, estamos usando o Raspberry Pi 2 Model B com o Raspbian Jessie OS. Todos os requisitos básicos de hardware e software foram discutidos anteriormente. Você pode consultá-los na introdução do Raspberry Pi, exceto o que precisamos:
- Pinos de conexão
- 1KΩresistor (17 peças)
- Pote de 10K
- Capacitor 0,1µF
- Capacitor 100µF
- Capacitor 1000µF
- ADC0804 IC
- Sensor de temperatura LM35
- Tábua de pão
Circuito e explicação de funcionamento:
As conexões feitas para conectar o Raspberry a ADC0804 e LM35 são mostradas no diagrama de circuito abaixo.
A saída do LM35 tem muitas flutuações de tensão; então, um capacitor de 100uF é usado para suavizar a saída, conforme mostrado na figura.
O ADC sempre tem muito ruído, esse ruído pode afetar bastante o desempenho, então usamos um capacitor de 0,1uF para filtragem de ruído. Sem isso, haverá muitas flutuações na produção.
O chip funciona com relógio oscilador RC (resistor-capacitor). Conforme mostrado no diagrama de circuito , C2 e R20 formam um relógio. O importante a lembrar aqui é que o capacitor C2 pode ser alterado para um valor inferior para uma taxa mais alta de conversão ADC. No entanto, com velocidade mais alta, haverá diminuição na precisão. Portanto, se a aplicação requer maior precisão, escolha o capacitor com maior valor e para maior velocidade escolha o capacitor com menor valor.
Como dito anteriormente, o LM35 fornece + 10mV para cada centígrado. A temperatura máxima que pode ser medida pelo LM35 é 150º centígrados. Portanto, teremos um máximo de 1,5 V no terminal de saída do LM35. Mas a tensão de referência padrão do ADC0804 é + 5V. Portanto, se usarmos esse valor de referência, a resolução da saída será baixa porque estaríamos usando no máximo (5 / 1,5) 34% da faixa de saída digital.
Felizmente, o ADC0804 tem um pino Vref ajustável (PIN9), conforme mostrado em seu diagrama de pinos acima. Portanto, definiremos o Vref do chip para + 2V. Para definir Vref + 2V, precisamos fornecer uma tensão de + 1V (VREF / 2) no PIN9. Aqui estamos usando o potenciômetro de 10K para ajustar a tensão no PIN9 para + 1V. Use o voltímetro para obter a tensão precisa.
Anteriormente, usamos o sensor de temperatura LM35 para ler a temperatura ambiente com o Arduino e com o microcontrolador AVR. Verifique também a medição de umidade e temperatura usando Arduino
Explicação de programação:
Depois que tudo estiver conectado de acordo com o diagrama de circuito, podemos ligar o PI para escrever o programa em PYHTON.
Vamos falar sobre alguns comandos que vamos usar no programa PYHTON, Vamos importar o arquivo GPIO da biblioteca, a função abaixo nos permite programar os pinos GPIO do PI. Também estamos renomeando “GPIO” para “IO”, portanto, no programa, sempre que quisermos nos referir aos pinos GPIO, usaremos a palavra 'IO'.
importar RPi.GPIO como IO
Às vezes, quando os pinos GPIO, que estamos tentando usar, podem estar executando algumas outras funções. Nesse caso, receberemos avisos durante a execução do programa. O comando abaixo diz ao PI para ignorar os avisos e prosseguir com o programa.
IO.setwarnings (falso)
Podemos referir os pinos GPIO do PI, tanto pelo número do pino a bordo quanto pelo número da função. Como 'PIN 29' na placa é 'GPIO5'. Portanto, dizemos aqui que vamos representar o pino aqui por '29' ou '5'.
IO.setmode (IO.BCM)
Estamos definindo 8 pinos como pinos de entrada. Detectaremos 8 bits de dados ADC por esses pinos.
IO.setup (4, IO.IN) IO.setup (17, IO.IN) IO.setup (27, IO.IN) IO.setup (22, IO.IN) IO.setup (5, IO.IN) IO.setup (6, IO.IN) IO.setup (13, IO.IN) IO.setup (19, IO.IN)
Caso a condição entre colchetes seja verdadeira, as instruções dentro do loop serão executadas uma vez. Portanto, se o pino 19 do GPIO for alto, as instruções dentro do loop IF serão executadas uma vez. Se o pino 19 do GPIO não for alto, as instruções dentro do loop IF não serão executadas.
if (IO.input (19) == Verdadeiro):
O comando abaixo é usado como um loop permanente, com este comando as instruções dentro deste loop serão executadas continuamente.
Enquanto 1:
Mais explicações sobre o código são fornecidas na seção de código abaixo.
Depois de escrever o programa, é hora de executá-lo. Antes de executar o programa, vamos falar sobre o que está acontecendo no circuito como um Resumo. O primeiro sensor LM35 detecta a temperatura ambiente e fornece uma tensão analógica em sua saída. Esta tensão variável representa a temperatura linearmente com + 10mV por ºC. Este sinal é alimentado ao chip ADC0804, este chip converte o valor analógico em valor digital com 255/200 = 1,275 contagem por 10mv ou 1,275 contagem para 1 grau. Essa contagem é feita pelo PI GPIO. O programa converte a contagem em valor de temperatura e o exibe na tela. A temperatura típica lida por PI é mostrada abaixo, Por isso, temos este monitor de temperatura Raspberry Pi.