ENCICLOPÉDIA DE RÁDIO ELETRÔNICA E ENGENHARIA ELÉTRICA Arduino. Operações de entrada-saída analógica, funcionam com um som. Enciclopédia de rádio eletrônica e engenharia elétrica Enciclopédia de eletrônica de rádio e engenharia elétrica / Designer de rádio amador Embora as operações de entrada e saída digital permitam resolver uma ampla gama de tarefas, a presença de um conversor analógico-digital (ADC) integrado no microcontrolador da placa Arduino e a capacidade de emitir sinais analógicos usando modulação por largura de pulso ( PWM) fornecem trabalho com sensores analógicos e todos os tipos de atuadores, afetando o objeto na proporção do sinal de controle. Estritamente falando, no modo de saída, todas as linhas de porta do Arduino podem transmitir apenas sinais discretos que possuem apenas dois estados. Mas o microcontrolador é capaz de mudar esses estados muito rapidamente, gerando pulsos retangulares. Se você aplicar esses pulsos a qualquer dispositivo que tenha propriedades inerciais, ele se comportará como se a tensão aplicada a ele fosse constante, igual ao valor médio do pulso, mudasse suavemente e não saltasse entre os níveis lógicos alto e baixo. No modo PWM, a porta gera um sinal de pulso de frequência constante e ciclo de trabalho variável (essa é a relação entre o período de repetição do pulso e sua duração). Freqüentemente, em vez do ciclo de trabalho, eles operam com o recíproco dele - o ciclo de trabalho, que pode ser alterado de 0 (sem pulsos) a 100% (os pulsos seguem, mesclando, sem pausas). Portanto, embora a tensão de saída seja alta ou baixa em um determinado momento, seu valor médio é proporcional ao ciclo de trabalho. Se você conectar um multímetro comum a esta saída, ele mostrará esse valor (claro, se a frequência de pulso for alta o suficiente). No Arduino UNO, as saídas D3, D5, D6, D9, D10 e D11 podem funcionar no modo PWM. Normalmente, no quadro, eles são marcados com os sinais "~" ou as abreviaturas "PWM". Deve-se notar que as placas Arduino de outras modificações podem ter mais ou menos essas saídas. No caso mais simples, o PWM pode ser usado para controlar o brilho de um LED. Este dispositivo é praticamente sem inércia, mas a visão humana tem inércia suficiente para que uma sequência de flashes rápidos de LED seja percebida como um brilho contínuo com um brilho dependente do fator de serviço. As saídas digitais compatíveis com PWM são configuradas para usar este modo por padrão, então você não precisa chamar a função pinMode() para fazê-las funcionar neste modo. Para definir o ciclo de trabalho de um sinal PWM, existe uma função padrão analogWrite(N, M), onde N é o número do pino, M é um número proporcional ao ciclo de trabalho necessário. Deve estar entre 0 e 255, sendo 0 ciclo de trabalho zero (saída baixa constante), 255 sendo ciclo de trabalho 100% (saída alta constante). Os diagramas de tempo da tensão de saída para alguns valores de M e, consequentemente, o ciclo de trabalho Kz são mostrados na fig. 1.
Por exemplo, considere a tabela fornecida em Table. 1 programa que aumenta gradativamente o brilho do led conectado na saída digital D9, e depois diminui gradativamente. Ele é baseado no exemplo padrão samples3.AnalogFading fornecido com o Arduino IDE. A enumeração dos valores do pulso duty cycle é implementada aqui com a ajuda dos operadores for loop já considerados em [1]. Tabela 1. Para receber sinais analógicos de dispositivos externos, o Arduino possui entradas A0-A5, que são configuradas para o estado desejado por padrão, portanto nenhuma inicialização adicional é necessária. O ADC embutido no Arduino UNO gera códigos binários de 10 bits e converte a tensão de entrada variando de 0 a +5 V para um número inteiro de 0 a 1023 (210-1). A função analogRead(N) é usada para ler o resultado da conversão, onde N é o número da entrada analógica. Uma variedade de sensores pode ser conectada às entradas analógicas do Arduino, cuja tensão de saída é proporcional ao valor medido (resistores variáveis, termistores, fotoresistores, etc.). No entanto, deve-se lembrar que apenas de 0 a +5 V pode ser aplicado à entrada analógica. Se a tensão de saída do sensor estiver em um intervalo diferente ou for de polaridade negativa, o sinal deve primeiro ser colocado no intervalo especificado . A entrada analógica é pesquisada em uma frequência inferior a 10 kHz [2], o que pode não ser suficiente para analisar alguns sinais que mudam rapidamente. A presença de entradas analógicas permite transformar o Arduino em um simples voltímetro digital que mede uma tensão constante de 0 a +5 V e transmite o resultado da medição para um computador. Para isso, basta baixar o programa mostrado na Tabela 2 no Arduino. XNUMX. Tabela 2 Observe que as constantes no programa são a tensão de referência ADC Uref (em milivolts) e o coeficiente para converter o código de saída ADC em tensão Ku. O valor do coeficiente é calculado dividindo a tensão de referência especificada por 1023. O coeficiente geralmente é um valor fracionário, portanto a constante Ki é do tipo float (número de ponto flutuante). A constante Uref tem o mesmo tipo para o cálculo correto do coeficiente. Como existem apenas constantes no lado direito da fórmula, não é o microcontrolador que calcula o coeficiente ao executar o programa, mas o próprio compilador na fase de sua tradução. Tudo isso permite aumentar a precisão do voltímetro medindo o valor exato da tensão de referência no pino Uref da placa Arduino com um multímetro e gravando-o no programa atribuindo a constante Uref. Outras formas de melhorar a precisão da conversão analógico-digital podem ser encontradas em [3, 4]. Quando o programa em questão está rodando, o LED TX pisca na placa, sinalizando a transferência de informações pela porta serial. O LED RX está desligado porque o computador não está transmitindo nada em resposta. O terminal Arduino IDE integrado exibe as informações recebidas (Fig. 2) - os resultados da medição da tensão da bateria galvânica 3332.
O Arduino pode fornecer não apenas luz, mas também sinais sonoros. Para isso, é necessário conectar um emissor de som piezo, por exemplo ZP-1, a uma de suas saídas (Fig. 3).
Para trabalhar com som, é fornecida uma função especial tone(N, F, T), onde N é o número do pino no qual os pulsos retangulares serão gerados; F - frequência do som, Hz; T - duração do som, ms. O último parâmetro é opcional. Na sua ausência, o som será contínuo. Para desligá-lo, a função noTone(N) é fornecida. Obviamente, um emissor de som piezocerâmico dificilmente pode ser chamado de dispositivo de reprodução de alta qualidade, e o sinal gerado pelo microcontrolador tem uma forma retangular; no entanto, o uso dessas funções permite tocar melodias simples. Um exemplo é dado na Tabela. 3. Este é um exemplo ligeiramente modificado do programa 02.Digital oneMelody incluído no Arduino IDE. Como é inconveniente definir manualmente a frequência de cada nota da melodia, o arquivo pitches.h é conectado ao programa em seu cabeçalho usando a diretiva #include. Esta operação equivale a incluir o texto completo deste arquivo no programa. Neste caso, contém uma lista de nomes de notas que podem ser tocadas e suas frequências. Tabela 3 O emissor de som deve ser conectado à saída D8. Para o programa, uma melodia é uma sequência de constantes do mesmo tipo (valores de frequência), que são convenientemente combinadas em uma matriz - uma lista numerada de elementos semelhantes. Ao declarar uma matriz, você deve enumerar todos os seus elementos ou especificar seu número total. Observe que a numeração dos elementos do array sempre começa do zero. Neste exemplo, dois arrays são usados: int melody[] contém os nomes das notas da melodia, int note Durations[] - sua duração em milissegundos. Para acessar um elemento de uma matriz, seu nome é especificado com um número de sequência entre colchetes. Para poder alterar facilmente o número de notas em uma melodia, ele é calculado usando as funções sizeof(V), que retornam o número de bytes ocupados por seu argumento (variável ou seu array) na memória do microcontrolador. Nesse caso, a matriz de melodia tem 16 bytes de comprimento e seus elementos int têm dois bytes. Portanto, a variável Note recebe o valor 8, e é quantas vezes o corpo do loop for será repetido, tocando as notas uma a uma. Se você adicionar várias notas à matriz melody[], o valor da nota será alterado de acordo. Apenas lembre-se de preencher o array noteDurations[] com as durações dessas notas. Como a melodia é tocada uma vez, todas as operações necessárias para isso são colocadas dentro da função setup(). Para reexecutar, você precisa reiniciar o microcontrolador pressionando o botão RESET na placa Arduino. Os programas para Arduino discutidos no artigo podem ser baixados em ftp://ftp.radio.ru/pub/2016/09/aninout.zip. Literatura
Autor: D. Lekomtsev Veja outros artigos seção Designer de rádio amador. Leia e escreva útil comentários sobre este artigo. Últimas notícias de ciência e tecnologia, nova eletrônica: Uma nova maneira de controlar e manipular sinais ópticos
05.05.2024 Teclado Primium Seneca
05.05.2024 Inaugurado o observatório astronômico mais alto do mundo
04.05.2024
Outras notícias interessantes: ▪ Combustível nanoelétrico para recarga infinita da bateria ▪ Robô aspirador Samsung POWERbot VR7000 ▪ Não o estresse é perigoso, mas a reação a ele ▪ Palavras e seu colorido emocional Feed de notícias de ciência e tecnologia, nova eletrônica
Materiais interessantes da Biblioteca Técnica Gratuita: ▪ seção do site Transporte pessoal: terrestre, aquático, aéreo. Seleção de artigos ▪ artigo A iluminação como componente da filmagem de vídeo. videoarte ▪ artigo Em qual cidade quase todos os moradores moram na mesma casa? Resposta detalhada ▪ artigo Laço de aperto. Dicas de viagem
Deixe seu comentário neste artigo: Todos os idiomas desta página Página principal | Biblioteca | Artigos | Mapa do Site | Revisões do site www.diagrama.com.ua |