Você está na página 1de 6

Exercícios

Eduardo Tocchetto
21 de Junho de 2021

1 Introdução
1.1 Descrição
A eletrônica divide-se em dois tipos de sinais: digital e analógico. Os sinais
digitais estão limitados a dois estados: High (1) ou Low (0). Na prática, significa
que o Arduino reconhecerá uma de duas tensões: 5V ou 0V, respetivamente.
Por sorte, nem tudo em nosso redor pode ser descrito de uma forma tão simples.
Por exemplo, ao usarmos um sensor de distância, provavelmente pretendemos
saber a distância exata de um obstáculo, e não apenas informações básicas como:
obstáculo detetado/sem obstáculo.
Tal sensor, na sua saída, pode fornecer uma tensão proporcional à distância
do obstáculo. Então, a medição consiste em ler a tensão numa faixa de 0 a 5V.
Esta abordagem é analógica. Portanto, nos exemplos seguintes, vamos usar os
periféricos apropriados do Arduino, que permitem medir a tensão fornecida às
entradas especiais do sistema.
ATENÇÃO: Lembre-se que as entradas do Arduino só são compatíveis com
tensões incluídas na seguinte faixa: 0-5V. Outras tensões poderão danificar a placa
e até o computador ao qual ligar o circuito.
Para o processamento de sinais analógicos, é utilizado o chamado ADC: con-
versor analógico-digital. Este é um dos periféricos mais populares encontrados em
microcontroladores. O seu trabalho é converter uma tensão aplicada numa entrada
do sistema num formato digital. Por exemplo (transdutor linear): Tensão => Valor
lido no ADC
V (arredondado)
0 => 0
1 => 51
2 => 102
3 => 154
4 => 205

1
5 => 255

Neste caso, apresentamos um conversor de 8 bits, já que o valor lido poderia


ter 256 combinações (começando em 0). Na verdade, podemos encontrar vários
transdutores, por exemplo de 12 ou 16 bits. O conversor que possui mais bits é o
mais preciso, porque seu o valor máximo é maior (funciona no mesmo intervalo,
mas com uma resolução mais alta).
Como curiosidade, é interessante saber que os conversores analógico-digitais
operam de forma relativamente lenta. Naturalmente, não vai verificar isso nos seus
programas, pois, mesmo sendo “lentos” são inacreditavelmente rápidos (até 10.000
medições por segundo). No entanto, comparando o ADC a outros periféricos do
microcontrolador, é a “ovelha negra”.
Os ADCs são, também, muito caros de produzir. Como se deve lembrar,
na segunda lição do curso, verificamos que o Arduino UNO possui 6 entradas
analógicas (A0-A5). De facto, na placa, existe apenas um conversor analógico-
digital, que consegue medir a tensão das seis entradas.
Basta de teoria (para já!), vamos passar para os exercícios práticos!

1.2 Exercício 1
1.2.1 código
int valorLido = 0;

void setup() {
Serial.begin(9600);//Configuração da velocidade de transmissão
}

void loop() {
valorLido = analogRead(A5);//Ler valor da tensão na entrada A5
Serial.println(valorLido);//Enviar sinal para o monitor série
delay(200);//Esperar 200ms
}

1.2.2 circuito
1.2.3 Questões
Ao girar o potenciômetro do circuito da figura 1, obtemos valores de 0 a 1023
no monitor série. Isto significa que o conversor analógico-digital integrado no
Arduino UNO, é de 10 bits.
Figura 1: circuito teste.

O exercício apresenta na serial um valor, esse valor corresponde ao valor da


tensão de saída do potenciômetro, esse valor apresentado na serial é um valor de
tensão?
Será que estes valores são úteis para nós?

1.3 Exercício 2 - Voltímetro


Esta tarefa é fácil, basta usar o circuito da figura 1 criado anteriormente. O
exercício consiste apenas na conversão apropriada do valor lido. Sabemos que a
tensão de entrada varia numa faixa de 0 a 5V, e o maior número que podemos obter
do ADC é 1023. Portanto, eis o cálculo:

1023x → 5V
1 → xV
1023x = 1 ∗ 5V
1 ∗ 5V
x = = 0.0049V
1023
(1)

Simplificando, qualquer aumento na tensão de entrada de 0.005V aumentará a


leitura do ADC em um.
1.3.1 código Exemplo
Assim, para obter um resultado em volts basta adicionar uma linha:

int valorLido = 0;//Ler valor do ADC


float tensão = 0;//Valor convertido em volts (V)

void setup() {
Serial.begin(9600);//Configuração da taxa de transmissão
}

void loop() {
valorLido = analogRead(A5);//Ler valor da tensão na entrada A5
tensão = valorLido * (5.0/1023.0); //Converter valores em volts
Serial.println(tensão);//Enviar tensão medida para monitor série
delay(200);//Esperar 200ms
}

Note que a declaração de tensão foi feita através de uma variável float, para
que seja possível armazenar valores/números racionais.
Deverá conseguir ver no monitor série valores entre 0 e 5V. Acabamos de
construir um voltímetro muito simples!

1.4 Exercício 3
1.4.1 circuito
Implemente o circuito da figura 2 e desenvolva um sketch para que o arduino
aumente o tempo que o led fique ligado e desligado com o aumento da tensão que
o potenciômetro envia para o arduino.
Figura 2: circuito teste.

1.4.2 exercício 4
Agora, está na hora de um projeto mais extenso. Neste exercício, dependendo
da posição em que o potenciômetro se encontre, um LED vai ser ligado. Utilizando
o circuito da figura 3.
A tarefa é simples, basta dividir o valor máximo que podemos ler do ADC
(1023) por 5 e, com base nisso, criar condições para a ativação individual dos
LEDs.

1.4.3 circuito
OBS pode ser utilizado a instrução map. Esta função permite, rapidamente,
dividir por escalas um determinado valor. O primeiro argumento, é o valor a ser
dividido, que neste caso, são informações dadas pelo ADC. O segundo e terceiro
parâmetros são o intervalo do valor de entrada, enquanto os dois últimos são o
intervalo do valor de saída (após divisão).
Figura 3: circuito teste.

Você também pode gostar