Embora os microcontroladores sejam dispositivos puramente digitais que funcionam em tensões lógicas0 e lógica1, eles são comumente encontrados em interface com sistemas ou circuitos analógicos. O microcontrolador pode ler a tensão de entrada analógica amostrando-a e convertendo-a em seus valores digitais com a ajuda do Conversor Analógico para Digital (ADC). O microcontrolador também pode gerar uma tensão analógica em qualquer dispositivo externo com a ajuda de ondas moduladas por largura de pulso (PWM). A maioria dos microcontroladores possui módulo PWM integrado e módulos ADC que os auxiliam na leitura de entradas de tensão analógica e na geração de saídas de tensão analógica em um dispositivo externo. Aqueles que fizeram alguns experimentos básicos com os módulos PWM e ADC sabem como é complexo configurá-los, inicializá-los e fazê-los funcionar corretamente juntos. Todas essas coisas são simplificadas em uma placa Arduino de tal forma que até mesmo um iniciante pode interligá-la rapidamente com dispositivos de entrada e saída analógica. O arduino pode ser usado como uma placa autônoma, cuja saída ou entradas podem ser retiradas das placas ou fornecidas à placa usando conectores convenientes. Entradas e saídas digitais e analógicas estão disponíveis em todas as placas Arduino. As placas Arduino podem se comunicar com outros dispositivos usando portas de comunicação padrão de entrada/saída digital, como USART, IIC e USB, etc.
Neste projeto é utilizada a placa arduino pro-mini que é programada com a ajuda do arduino IDE versão 1.0.3 no sistema operacional Windows.
Fig. 2: Placa Arduino Pro-Mini típica
Fig. 3: Janela do software Arduino IDE
Outro hardware que pode realizar a conversão de USB para TTL é usado para carregar o programa na placa Arduino.
4: Placa conversora USB para TTL externa para programação Arduino e comunicação serial
Presume-se que o leitor tenha passado pelo projeto como começar com arduino e fiz todas as coisas discutidas nele. A placa arduino pro-mini pode ter no máximo oito pinos analógicos que podem ser configurados como pinos de entrada analógica. Os pinos estão marcados na placa como A0, A1, A2,… A7. Na verdade, eles são os canais de entrada do ADC integrado, que pode ler o valor analógico e convertê-lo no equivalente digital. Algumas placas pró-mini possuem menor número de pinos analógicos. Neste projeto específico, o pino analógico 0 e o pino analógico 1 estão usando apenas um deles como entrada analógica e o outro como saída analógica. O pino variável de um potenciômetro é conectado ao pino analógico; neste projeto o pino A0. Os outros dois pinos do potenciômetro são conectados ao VCC e GND para que, à medida que a variável se move, ela possa dividir toda a tensão de alimentação e fornecê-la como tensão de entrada analógica para a placa Arduino.
A placa arduino pro-mini normalmente possui seis pinos de saída analógica que podem ser usados para gerar tensão de saída analógica. Os pinos marcados na placa como 3, 5, 6, 9, 10 e 11 podem atuar como saída analógica. Na verdade, eles são os canais de saída do módulo PWM integrado que pode gerar as tensões de saída analógica. Um LED é conectado ao pino de saída analógica através de um resistor limitador de corrente; neste projeto ele está conectado ao pino 5. O código lê continuamente o valor do potenciômetro e escreve o valor correspondente para alterar o brilho do LED conectado ao pino 5.
O CÓDIGO
constintanalogInPin = A0; // Pino de entrada analógica ao qual o potenciômetro está conectado
constintanalogOutPin = 5; // Pino de saída analógica ao qual o LED está conectado
valor interno = 0;
valor de entrada = 0;
configuração nula
{
;
}
loop vazio
{
// lê o valor analógico:
valorpot = analogRead(analogInPin);
// mapeia-o para o intervalo da saída analógica:
valor de saída = mapa (valor do pote, 0, 1023, 0, 255);
// altera o valor da saída analógica:
analogWrite(analogOutPin, valor de saída);
// espera 2 milissegundos antes do próximo loop
// para o conversor analógico-digital se estabilizar
// após a última leitura:
atraso(2);
}
Os detalhes da função setup , loop já estão explicados no projeto como começar com o arduino. Os detalhes das outras funções básicas como delay são explicados separadamente no projeto como usar entrada digital e saída digital do arduinó. Existem funções no código acima que podem realizar leitura e gravação analógica, nomeadamente analogRead eanalogWrite respectivamente. Os detalhes das funções são discutidos na seção a seguir.
leitura analógica
Esta função pode ler um valor analógico de um pino analógico mencionado em seu argumento e retornar esse valor. Suponha que se houver uma variável 'var' na qual o valor do pino analógico A0 precisa ser lido, pode-se usar a função analogRead conforme mostrado abaixo;
var = leituraanalógica(A0);
A instrução acima habilitará o ADC integrado do microcontrolador do Arduino, que então converte o valor analógico em seu equivalente digital de 10 bits e então armazena na variável ‘var’. Espera-se que a variável 'var' seja do tipo inteiro.
escrita analógica
Esta função pode escrever um valor analógico em um pino de saída analógica mencionado em seu argumento para gerar a tensão equivalente nesse pino. Por exemplo, pode-se usar a função analogWrite para gerar uma tensão equivalente ao valor 100 em um pino 5 de saída analógica, conforme mostrado abaixo;
analogWrite(5, 100);
A instrução acima irá, na verdade, escrever o valor 100 em um módulo PWM de 8 bits que irá gerar uma forma de onda modulada em largura correspondente no pino número 5, de modo a gerar a tensão equivalente no dispositivo conectado a esse pino.
mapa
O map é uma função integrada que pode ser usada para mapear o valor de um intervalo para outro. Por exemplo, o ADC do arduino gera valores de 10 bits, mas o módulo PWM do arduino pode produzir formas de onda equivalentes a 8 bits. Se houver necessidade de escrever diretamente o valor da entrada analógica na saída analógica, pode-se usar a função map da seguinte maneira;
var = mapa(potvalor, 0, 1023, 0, 255);
A instrução acima irá converter o valor que está no intervalo de 0 a 1023 (a saída do ADC de 10 bits) no intervalo de 0 a 255 (o intervalo de entrada do PWM de 8 bits) e o armazenará em uma variável 'var'. A variável 'var' pode ser do tipo inteiro ou caractere.
Agora, uma vez concluída a codificação, pode-se verificar e fazer upload do código para a placa Arduino conforme explicado no projeto Começando com Arduino e pode-se observar que o brilho do LED varia conforme a variável do potenciômetro se move.
Código fonte do projeto
### /*============================ EG LABS ===================================// Demonstration on how to use analog input and output of an arduino board The circuit: * Potentiometer attached to analog input A0 * one side pin (either one) to ground * the other side pin to +5V * LED anode (long leg) attached to digital output 5 * LED cathode (short leg) attached to ground through a 1K resistor //============================ EG LABS ===================================*/ const int analogInPin = A0; // Analog input pin that the potentiometer is attached to const int analogOutPin = 5; // Analog output pin that the LED is attached to int potvalue = 0; int outputvalue=0; void setup { ; } void loop { // read the analog in value: potvalue = analogRead(analogInPin); // map it to the range of the analog out: outputvalue = map(potvalue, 0, 1023, 0, 255); // change the analog out value: analogWrite(analogOutPin, outputvalue); // wait 2 milliseconds before the next loop // for the analog-to-digital converter to settle // after the last reading: delay(2); } ###
Diagramas de circuito
Diagrama de circuito usando entrada analógica, saída analógica e placa Arduino |
Componentes do Projeto
- Arduino ProMini
- LIDERADO
- Resistor
Vídeo do projeto