1 Introduction
1.3 Methods/software used
Fabricadas pela companhia italiana Smart Projects, existem actualmente cerca de 11 versões diferentes do mesmo dispositivo, cada uma das quais com o seu tipo de microcontrolador e funcionalidades específicas. O Arduíno Duemilinove (Fig. 2.25) é comercializado no mercado com dois tipos de microcontrolador, o ATMega168 e oATMega328. O preço de compra deste dispositivo ronda os 20 a 25 euros.
- 36 -
Fig. 2.25 - Arduíno Duemilanove [18].
Mas antes de se abordar outros temas é necessário discutir um pouco as diferenças entre um microprocessador e um microcontrolador. A compreensão dessas diferenças é importante para a compreensão das subsecções seguintes.
Um microprocessador é constituído por um circuito integrado capaz de efectuar instruções, sendo a sua velocidade de processamento determinada através do seu tempo de clock. O tempo de clock é normalmente descrito em função da frequência e não em função do tempo.
A capacidade de processamento de um determinado microprocessador é influenciada pelas suas características, isto é, pela sua arquitectura, o tipo de instruções que é capaz de efectuar, o número de bits que utiliza, etc. Outro parâmetro de grande importância no desempenho de um microprocessador é ainda a memória externa, onde são armazenados todos os programas que serão executados por este.
Ao contrário de um microprocessador, um microcontrolador é construído de forma a integrar todos os componentes externos num único circuito integrado, permitindo que este tenha constante acesso e controlo de todos os periféricos.
A figura seguinte apresenta o exemplo de um microcontrolador, explicitando todos os componentes que nele poderão ser inseridos.
Fig. 2.26 - Exemplo de um microcontrolador e dos componentes que o constituem [18].
Através da análise da figura anterior torna-se óbvia a quantidade de componentes que podem constituir um microcontrolador, e a diferença em relação a um microprocessador.
A figura seguinte mostra o diagrama de blocos do microcontrolador ATMega328, sendo possível identificar todos os seus componentes.
- 37 -
Fig. 2.27 - Diagrama de blocos do microcontrolador ATMega328 [18,19].
A análise pormenorizada deste microcontrolador não é necessária para a compreensão do seu funcionamento, e como tal não será um dos objectivos desta tese.
2.8.1.1 TIPOS E QUANTIDADES DE MEMÓRIA DISPONÍVEIS.
A grande diferença entre os vários modelos de Arduínos disponíveis no mercado reside na memória do microcontrolador uma vez que esta é uma das suas características mais importantes, e como tal determinante no seu desempenho [18]. A tabela seguinte ilustra os vários tipos de memória que possuem os microcontroladores dos Arduínos disponíveis actualmente no mercado.
Tabela 2.3 - Quantidade de memória disponível em cada modelo de microcontrolador.
ATMega1280 ATMega328 ATMega168
Flash 128kBytes (4 kBytes Bootloader) 32kBytes (2 kbytes Bootloader) 16KBytes (2 kBytes Bootloader)
SRAM 8192 Bytes 2048 Bytes 1024 Bytes
EEPROM 4096 Bytes 1024 Bytes 512 Bytes
Através de uma breve análise da tabela anterior verifica-se claramente que o microcontrolador ATMega1280 é superior a nível de memória em relação aos outros modelos, sendo por isso utilizado na versão MEGA do Arduíno.
Refira-se que a memória Flash é utilizada para o armazenamento do programa que é carregado no microcontrolador para ser executado, bem como para o armazenamento do bootloader, ao passo que a memória SRAM (Static Random Access Memory) funciona basicamente de forma idêntica à memória RAM (Random Access Memory) dos
- 38 - computadores pessoais. Isto é, é nessa memória que os dados presentes na memória Flash são processados/modificados pelo microcontrolador. Note-se que tal como nos computadores pessoais, os dados contidos na memória SRAM são apagados sempre que é cortada a alimentação ao Arduíno, ao contrário da informação que se encontra na memória EEPROM (Electrically Erasable Programmable Read-Only Memory). A memória EEPROM é responsável pelo armazenamento de constantes (como por exemplo o número π) que podem ser acedidas através do uso de bibliotecas próprias [18].
2.8.1.2 PINS DE I/O
Nesta subsecção serão descritas os vários tipos de entrada e de saída de sinais num Arduíno Duemilanove. Tal descrição é fundamental pois descreve o tipo de sinais (analógicos e digitais) com que este pode trabalhar. A tabela seguinte mostra o resumo em termos de pins I/O disponíveis [18]:
Tabela 2.4 - Número de Pins I/O disponíveis no Arduíno Duemilanove..
Pins de I/O digitais 14 (Sendo que 6 deles possuem PWM (Pulse Wide Modulation)
Pins de I analógicos 6
Pins de massa/ground
(GND) 3
Pins de reset 1
Pins Analog Reference
(AREF) 1
Pins de 3,3V 1
Pins de 5V 1
Importa referir que a corrente suportada por cada pin analógico ou digital é de apenas 40mA, à excepção da saída de tensão de 3,3V cuja corrente máxima pode ir até aos 50mA [18]. Nas subsecções seguintes serão abordados alguns temas relacionados com estas entradas
2.8.1.2.1 MODULAÇÃO PWM
A modulação PWM (Pulse Width Modulation) é utilizada quando se pretende obter uma tensão analógica a partir de um sinal digital, isto é, através de um sinal que assume exclusivamente o estado lógico 1 (5V) ou 0 (0V). De forma a analisar-se o conceito de um sinal PWM, observe-se a seguinte equação [20]:
•«= ¬ (™)-™
d (2.52) em que Vdc é a tensão média, V(t) representa a tensão em função do tempo, ao passo que T representa o período. Um sinal PWM pode ser representado através da seguinte expressão:
- 39 -
(™) = ® ¯°}ˆ•0 ⇒ ™⇒ 0 ≤ ™ ≤ ™¥
¥ < ™ ≤ ´ µ (2.53) em que tP representa a duração do impulso e Vpulso representa a tensão do impulso do sinal PWM. A figura seguinte mostra a representação de um impulso PWM.
Fig. 2.28 - Representação de um impulso PWM.
Aplicando-se agora a equação (2.53) à equação (2.52), obtém-se a seguinte expressão:
•«= ¶¬ ·¸¯°}ˆ• -™ ž¹
d + ¬ 0 -™ž¹ º (2.54)
O que simplificando resulta em:
•«=™´ ×¥ ·¸¯°}ˆ• (2.55) Através da análise da equação anterior verifica-se que a tensão média é directamente proporcional ao duty cycle do sinal PWM. Este facto permite que se possa variar a tensão média de saída, numa saída digital, entre os 0 e os 5V (Níveis de tensão utilizados pelo Arduíno) [20].
2.8.1.2.2 CONVERSÃO ANALÓGICA-DIGITAL (A/D)
Para se efectuar a conversão de um sinal analógico para um sinal digital deve-se utilizar um conversor A/D. O conversor A/D efectua 3 passos na conversão. São eles a amostragem, a quantificação e a codificação [21]. Os 3 passos descritos anteriormente estão representados na figura seguinte.
Fig. 2.29 - Passos efectuados por um conversor A/D.
No primeiro bloco é efectuada a amostragem do sinal analógico
ᵡ
a(t), sendo o resultado dessa operação um sinal discreto, x(n), que não é mais do que uma sequência discreta criada a partir dos valores deᵡ
a(t) medidos em intervalos de tempo constantes, Ts. A taxa de amostragem utilizada deve estar directamente relacionada com a frequência do sinal analógico de entrada, ou seja, e segundo o Teorema de Nyquist, a- 40 - frequência de amostragem, fa, tem de ser pelo menos duas vezes maior que a frequência do sinal a amostrar [21]. Se essa relação for respeitada, o sinal original poderá ser integralmente recuperado.
Após a amostragem do sinal analógico de entrada, é necessário quantificar os valores de amplitude obtidos segundo os valores possíveis de amplitude, também eles discretos. Os valores de amplitude estão divididos em intervalos, determinados em função do número de bits e da tensão de referência utilizados na conversão. Note-se que quanto maior o número de bits maior precisão se irá obter em relação ao valor real.
A terceira e última fase do processo de conversão digital é a fase em que é atribuída a respectiva sequência binária para cada valor amostrado e quantificado.
Uma vez que o Arduíno Duemilanove tem a capacidade de converter os sinais analógicos, recebidos através de 6 pins, para digitais, torna-se necessário que se fale um pouco sobre como essa conversão é efectuada. Refira-se que o conversor A/D do Arduíno Duemilanove é um conversor de 10 bits, pelo que existirão 210=1024 níveis de tensão [18].
Tendo em conta que o nível de referência do referido conversor A/D é 5V, resulta uma resolução de 5/1024≈5mV para as medições analógicas. O valor da resolução irá determinar o valor mínimo de tensão que pode ser detectado pelo Arduíno, ou seja, um Arduíno só conseguirá detectar variações de tensão superiores a 5mV.
Para situações em que seja necessária uma resolução menor, pode-se recorrer ao pin de entrada designado de Analog Reference (AREF). Este pin de entrada do Arduíno Duemilanove permite mudar a referência analógica do valor standard de 5V. Isto é, e tomando como exemplo um sinal de 2V colocado na entrada AREF, obtém-se uma resolução de 2mV, mas ficando naturalmente a gama de medições limitada a 2V.