terça-feira, 13 de março de 2012

Portas Analógicas do Arduino

Uma descrição das portas analógicas de um chip Arduino (Atmega8, Atmega168, Atmega328, or Atmega1280).

Conversor A/D

Os microcontroladores Atmega usados para o Arduino contém embarcados 6 canais de conversão analógica-digital (A/D). O conversor do Arduino tem uma resolução de 10 bits, retornando inteiros entre 0 e 1023. Enquanto a função principal das portas analógicas para a maioria dos usuários do Arduino é ler sensores, as portas analógicas também tem a funcionalidade de entrada/saída de propósito geral (GPIO) (da mesma forma que as portas digitais 0~13).
Consequentemente, se o usuário precisar mais entradas/saídas de propósito geral, e todas as portas analógicas não estiverem em uso, estas podem ser usadas para GPIO.

Mapeamento de Portas

As portas analógicas podem ser usadas da mesma forma que portas digitais, utilizando apelidos A0 (para a porta analógica 0), A1 etc. Por exemplo, o código deverá parecer com o abaixo, configurando a porta analógica como saída (OUTPUT) e atribuindo o valor alto (HIGH):
pinMode(A0, OUTPUT);
digitalWrite(A0, HIGH);

Resistores de Elevação

As portas analógicas também tem resistores de elevação (pull-up), que funcionam exatamente da mesma forma que nas portas digitais. Eles são ativados por comandos como:
digitalWrite(A0, HIGH);  // set pullup on analog pin 0 
enquanto a porta for de entrada (INPUT).
Tome cuidado, entretanto, que ligar um resistor de elevação em uma porta analógica afetará os valores lidos pela função analogRead().

Detalhes e Avisos

O comando analogRead não funcionará direito se a porta não for corretamente configurada para saída (OUTPUT), então se esse é o caso, configure de volta a porta para entrada (INPUT) para usar a função analogRead. De forma similar, se a porta for configurada como HIGH e como saída, o resistor de elevação ficará ativado, mesmo voltando a porta para entrada.
O datasheet do Atmega também avisa sobre modular portas analógicas em uma proximidade temporal ao fazer leituras A/D (analogRead) em outras portas analógicas. Isso pode causar ruído elétrico e introduzir jiter no sistema analógico. Pode ser desejável, depois de manipular as portas analógicas (em modo digital), adicionar um atraso antes de começar a usar a função analogRead() para ler outras portas analógicas.

Traduzido do Original:

Para pt-BR por Renato Aloi


Arduino PWM

O Exemplo “Fading” (File>Example>Basics>Fade) demonstra o uso da saída analógica (PWM) para esvanecer um LED. Este exemplo está disponível no menu do Arduino: File->Sketchbook->Examples->Analog.

Modulação por Largura de Pulso, ou PWM (do inglês Pulse Width Modulation), é uma técnica de amostrar o sinal analógico em termos digitais. Controle digital é usado para criar uma onda quadrada, um sinal alternando entre ligado e desligado. Este padrão ligado/desligado pode simular voltagens entre totalmente ligado (5 Volts) e desligado (0 Volts), alternando a porção de tempo que o sinal gasta ligado contra o tempo que o sinal gasta desligado. A porção de tempo “ligada” é chamada de largura de pulso. Para variar valores analógicos, você muda, ou modula a largura de pulso. Se você repetir esse padrão ligado/desligado rápido suficiente com um LED, por exemplo, o resultado é como se o sinal fosse uma voltagem estável entre 0~5V, controlando o brilho do LED.
No gráfico abaixo, as linhas verdes representam um período regular de tempo. Esta duração, ou período, é o inverso da frequência do PWM. Em outras palavras, com a frequência do PWM do Arduino por volta de 500Hz, as linhas verdes devem medir 2 milissegundos, cada. Uma chamada na função analogWrite() está na escala de 0~255, tanto que analogWrite(255) aciona um ciclo de trabalho (duty cycle) de 100%, e analogWrite(127) é um duty cycle de 50% (na metade do tempo), por exemplo.

Uma vez que você executar esse exemplo, sacuda seu Arduino para frente e para trás. O que você está fazendo é essencialmente mapeando o tempo através do espaço. Para seus olhos, o movimento desfoca o piscar do LED em uma linha. No esvanecer do LED, ligando e desligando, essas linhas vão brilhar e encolher em comprimento. Agora você está vendo a largura de pulso.

Written by Timothy Hirzel

Traduzido para pt-BR por Renato Aloi