Grandezas Digitais e Analógicas e PWM

423 Flares Twitter 0 Facebook 423 Google+ 0 423 Flares ×

Antes de iniciarmos o desenvolvimento de aplicações práticas com o Arduino, é necessário que saibamos diferenciar uma grandeza analógica de uma grandeza digital. Além disso, também é importante que aprendamos como o Arduino trabalha com essas grandezas e os conceitos básicos envolvidos no processo de conversão entre elas.

Digital x Analógico

Grandezas digitais são aquelas que não variam continuamente no tempo, mas sim em saltos entre valores bem definidos. Um exemplo são os relógios digitais: apesar do tempo em si variar continuamente, o visor do relógio mostra o tempo em saltos de um em um segundo. Um relógio desse tipo nunca mostrará 12,5 segundos, pois, para ele, só existem 12 e 13 segundos. Qualquer valor intermediário não está definido.

Grandezas analógicas são aquelas que, ao contrário das grandezas digitais, variam continuamente dentro de uma faixa de valores. O velocímetro de um carro, por exemplo, pode ser considerado analógico, pois o ponteiro gira continuamente conforme o automóvel acelera ou freia. Se o ponteiro girasse em saltos, o velocímetro seria considerado digital.

Outra analogia interessante pode ser feita comparando uma escada com uma rampa: enquanto uma rampa sobe de forma contínua, assumindo todos os valores de altura entre a base e o topo, a escada sobe em saltos, com apenas alguns valores de altura definidos entre a base e o topo. A escada representa, portanto, uma grandeza digital, enquanto a rampa representa uma grandeza analógica. A quantidade de degraus em uma escada define quais posições podemos escolher. Por exemplo se uma escada tem um degrau em 1,00 m de altura do solo e o próximo está a 1,50 m nós não podemos ocultar a posição 1,38 m do solo porque não existe um degrau lá. Quanto mais degraus adicionamos em um intervalo de altura menor mais perto da rampa nos aproximamos.

EscadaXRampa

Os circuitos e equipamentos elétricos ditos digitais trabalham com apenas dois valores de tensão definidos:

Um nível lógico alto, que no caso do Arduino é 5V;
Um nível lógico baixo, que no caso do Arduino é 0V.

Na prática existem faixas de valores próximos a esses números em que o circuito digital entende como nível alto ou baixo. Também existe uma faixa intermediária não definida que pode gerar resultados inesperados e que, portanto, deve ser evitada.

As placas Arduino possuem uma clara divisão entre os pinos de entrada e saída digitais/analógicos, porém em algumas placas como o Arduino Uno qualquer pino pode ser utilizado como entrada ou saída digital

Características de uma Entrada Digital

Quando configuramos um pino como entrada digital ele apresentará uma característica chamada alta impedância. Isso significa que uma pequena corrente consegue fazer com que seu estado mude. Podemos usar essa configuração, por exemplo, para ler botões, fotodiodos entre outros e a partir do estado lido ou das mudanças desses estados concluir o que está acontecendo no mundo externo e então tomar ações baseadas nessas medidas. Caso o pino seja configurado como entrada mas sem estar conectado a nada, ele poderá alterar seu estado aleatoriamente por ser afetado pelo ruído elétrico do ambiente. Para evitar esse problema podemos utilizar um resistor de pull up ou pull down. Esses resistores farão com que a tensão em nossa entrada esteja bem definida quando o mesmo não esteja conectado a nada. As figuras mostram três ligações de um botão a um pino do microcontrolador configurado como entrada digital. Para cada caso temos:

  • Figura 1: O estado do pino não estará bem definido fazendo com que este esteja suscetível a ruído.
  • Figura 2: Neste caso devido à presença do resistor de pull-down seu estado está bem definido e ele enxergará GND consequentemente definindo seu estado como baixo.
  • Figura 3: Neste caso devido à presença do resistor de pull-up seu estado está bem definido e ele enxergará +5 V consequentemente definindo seu estado como alto.

nenhumComNumeropulldownComNumero

pullupComNumero

 

Os microcontroladores presentes nas placas Arduino possuem resistores de pull-up construídos internamente que podem ser acessados por software.

Características de uma Saída Digital

Quando configurados nesse estado os pinos podem fornecer 0 ou 5 V fazendo com que eles drenem ou forneçam corrente. O valor máximo dessa corrente varia de placa para placa, mas, em geral, é de 30mA. Essa corrente é mais do que suficiente para ligar um LED de alto-brilho e alguns sensores, porém não é suficiente para ligar a maioria dos relés e motores. Caso uma corrente maior que o limite passe por um pino, este poderá ser danificado.

Entradas e saídas analógicas

Se observarmos um pouco, o mundo é quase todo formado por variáveis analógicas, tais como posição, temperatura e pressão, de forma que é necessário saber trabalhar com esses tipos de grandezas. O Arduino possui um conjunto de pinos destinados a serem utilizados como entradas analógicas e outros pinos que podem ser usados como saídas PWM (Simulam uma saída analógica). Como tudo no Arduino é processado de forma digital, é necessário converter as grandezas analógicas em digitais e vice-versa. Esses conversores já estão embutidos no Arduino, de forma que é necessário apenas que você compreenda o básico do processo de conversão para poder utilizar essas portas analógicas. De volta no exemplo da escada e da rampa, a quantidade de degraus que temos em uma escada nos podemos associar o conceito de resolução. A resolução de um conversor indica o número de valores discretos (degraus) que ele pode produzir. Quanto mais intervalos conseguimos produzir mais perto do sinal analógico nos chegamos. A resolução de um conversor analógico digital e vice-versa é geralmente expressa em bits, portanto um conversor de 8 bits é um conversor que consegue representar 2^8 degraus.

Entradas Analógicas

Como o conversor analógico-digital do Arduino possui uma resolução de 10 bits, o intervalo de tensão referência, que no nosso caso é 0 a 5 V, será dividido em 1024 pedaços (2^10) e o valor discreto mais próximo da tensão no pino será atribuído a essa tensão. Com 10 bits de resolução e um intervalo de 0 a 5V de tensão podemos representar tensões em degraus de (5-0)/1024 volts. Supondo uma tensão de 3,25 V o valor retornado pela conversão será:

 3,25 x 1024 / 5 = 665,6

O resultado deve ser inteiro para que nosso conversor consiga representá-lo, logo o valor 666 será escolhido por ser o degrau mais próximo. Esse valor representa a tensão 3,251953125 inserindo um erro de 0,001953125 em nossa medida devido a limitação de nossa resolução.

Saídas PWM

PWM (Pulse Width Modulation – Modulação por Largura de Pulso) é uma técnica para obter resultados analógicos por meios digitais. Essa técnica consiste na geração de uma onda quadrada em uma frequência muita alta em que pode ser controlada a porcentagem do tempo em que a onda permanece em nível lógico alto. Esse tempo é chamado de Duty Cycle e sua alteração provoca mudança no valor médio da onda, indo desde 0V (0% de Duty Cycle) a 5V (100% de Duty Cycle) no caso do Arduino.

PWM2

O duty cycle é a razão do tempo em que o sinal permanece na tensão máxima (5V no Arduino) sobre o tempo total de oscilação, como está ilustrado na figura abaixo:

Duty Cycle (%) = (x/x+y)*100% = (x/T)*100%

Vmédio = Vmax*Duty Cycle(%)

 

O valor do Duty Cycle usado pelo Arduino é um inteiro armazenado em 8 bits, de forma que seu valor vai de 0 (0%) a 255 (100%).

423 Flares Twitter 0 Facebook 423 Google+ 0 423 Flares ×

Ronan Largura

Estudante de engenharia elétrica e integrante do PET elétrica Ufes.

You may also like...