- ADC0804 e Raspberry Pi:
- Componentes necessários:
- Explicação do circuito:
- Explicação de programação:
- Trabalhando:
Raspberry Pi é uma placa baseada em processador de arquitetura ARM projetada para engenheiros eletrônicos e amadores. O PI é uma das plataformas de desenvolvimento de projeto mais confiáveis que existe agora. Com maior velocidade do processador e 1 GB de RAM, o PI pode ser usado para muitos projetos de alto perfil, como processamento de imagens e Internet das coisas.
Para fazer qualquer um dos projetos de alto nível, é necessário compreender as funções básicas do PI. Estaremos cobrindo todas as funcionalidades básicas do Raspberry Pi nestes tutoriais. Em cada tutorial, discutiremos uma das funções do PI. Ao final desta série de tutoriais do Raspberry Pi, você será capaz de realizar projetos de alto nível sozinho. Passe pelos tutoriais abaixo:
- Primeiros passos com Raspberry Pi
- Configuração Raspberry Pi
- LED piscando
- Interface de botão Raspberry Pi
- Geração Raspberry Pi PWM
- Controle do motor DC usando Raspberry Pi
- Controle de motor de passo com Raspberry Pi
- Fazendo a interface do registro de mudança com Raspberry Pi
Neste tutorial, faremos a interface de um chip ADC (Conversão Analógico para Digital) com o Raspberry Pi. Conhecemos todos os parâmetros do analógico, o que significa que variam continuamente ao longo do tempo. Digamos, por exemplo, a temperatura da sala, a temperatura ambiente varia continuamente com o tempo. Esta temperatura é fornecida com números decimais. Mas no mundo digital, não há números decimais, então precisamos converter o valor analógico em valor digital. Este processo de conversão é feito pela técnica ADC. Saiba mais sobre ADC aqui: Introdução ao ADC0804
ADC0804 e Raspberry Pi:
Os controladores normais têm canais ADC, mas para PI não há canais ADC fornecidos internamente. Portanto, se quisermos fazer a interface de qualquer sensor analógico, precisamos de uma unidade de conversão ADC. Então, para esse propósito, iremos fazer a interface ADC0804 com Raspberry Pi.
ADC0804 é um chip projetado para converter 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. Com uma tensão de medição de no máximo 5 V, teremos uma mudança a cada 19,5 mV. 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.
Saiba mais sobre os pinos GPIO de Raspberry Pi aqui e siga nossos tutoriais anteriores.
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
- Resistor 220Ω ou 1KΩ (17 peças)
- Pote de 10K
- Capacitor de 0,1 µF (2 peças)
- ADC0804 IC
- Tábua de pão
Explicação do circuito:
Ele funciona com tensão de alimentação de + 5v e pode medir uma faixa de tensão variável na faixa de 0-5V.
As conexões para fazer a interface do ADC0804 com o Raspberry PI são mostradas no diagrama de circuito acima.
O ADC sempre tem muito ruído, esse ruído pode afetar muito 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 do 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.
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 programa são fornecidas na seção de código abaixo.
Trabalhando:
Após escrever o programa e executá-lo, você verá '0' na tela. '0' significa 0 volts na entrada.
Se ajustarmos o pote de 10K conectado ao chip, veremos a mudança nos valores na tela. Os valores na tela continuam rolando continuamente, esses são os valores digitais lidos pelo PI.
Digamos que, se levarmos o potenciômetro ao ponto médio, temos + 2,5 V na entrada ADC0804. Portanto, vemos 128 na tela, conforme mostrado abaixo.
Para o valor analógico de + 5V, teremos 255.
Assim, variando o potenciômetro, variamos a tensão de 0 a + 5V na entrada do ADC0804. Com este PI, leia os valores de 0-255. Os valores são impressos na tela.
Portanto, fizemos a interface do ADC0804 com o Raspberry Pi.