Arduino: Entradas e Saidas: mudanças entre as edições
Sem resumo de edição |
|||
Linha 114: | Linha 114: | ||
[[Arquivo:DivisorTensao.png]] | [[Arquivo:DivisorTensao.png]] | ||
;Quedas de tensão ao longo da malha (2<sup>a</sup> Lei de Kirchhoff): | |||
V = I.R<sub>1</sub> + I.R<sub>2</sub> | V = I.R<sub>1</sub> + I.R<sub>2</sub> | ||
:Isolando I: | :Isolando I: | ||
I = V / (R<sub>1</sub>+R<sub>2</sub>) | I = V / (R<sub>1</sub> + R<sub>2</sub>) | ||
:Mas | :Mas: | ||
V<sub>1</sub> = R<sub>1</sub>.I | V<sub>1</sub> = R<sub>1</sub>.I | ||
:Substituindo I temos: | |||
V<sub>1</sub> = R<sub>1</sub>/(R<sub>1</sub> + R<sub>2</sub>) . V | V<sub>1</sub> = R<sub>1</sub>/(R<sub>1</sub> + R<sub>2</sub>) . V | ||
:O mesmo para V<sub>2</sub>: | :O mesmo para V<sub>2</sub>: | ||
V<sub>2</sub> = R<sub>2</sub>/(R<sub>1</sub> + R<sub>2</sub>) . V | V<sub>2</sub> = R<sub>2</sub>/(R<sub>1</sub> + R<sub>2</sub>) . V | ||
Edição das 22h45min de 31 de maio de 2017
Minicurso: Arduíno e eletrônica
Este minicurso tem como objetivos realizar uma introdução ao microcontrolador Arduíno e a eletrônica a partir de atividades teóricas e práticas.
O minicurso está organizados em módulos, cada um deles trabalhando conceitos específicos sobre o microcontrolador Arduíno e os correspondentes conceitos de eletricidade e eletrônica envolvidos.
Características do microcontrolador Arduíno
Saídas digitais
- O Arduíno UNO possui 14 Entradas/Saídas Digitais
- As entradas/saídas digitais estão localizadas nos pinos 0 a 13.
- Estas entradas/saídas operam com valores digitais LOW e HIGH, os quais correspondem aos valores de tensão 0 V e 5 V, respectivamente..
- Cada pino fornece corrente de até 20 mA, sendo que qualquer corrente solicitada acima de 40mA pode danificar o Arduíno.
- pinMode
- Comando da linguagem de programação do Arduíno que configura o pino digital como entrada (INPUT) ou saída (OUTPUT).
- Exemplo:
pinMode(13, OUTPUT);
- digitalWrite
- Comando para escrever na saída digital.
digitalWrite(13, HIGH/LOW);
Laboratório 1: Saída digital
- digitalWrite
- Carregar no Arduíno o programa exemplo Arquivo/Exemplos/Basic/Blink para piscar o led do pino 13, mantendo acesso por 1 seg e em seguida apagada por 1 seg. O led do pino 13 é um led instalado na própria placa do Arduíno.
- Modificar o tempo (delay) e verificar a mudança na frequência do piscar do led.
Leds
Um led é um diodo emissor de luz (light emitting diode). Ele se comporta como um Diodo, conduzindo apenas quanto polarizado diretamente.
Para utilizar um led é necessário alguns conceitos de Eletricidade Básica.
Um led não pode receber tensão diretamente em seus terminais sob risco de colocar o componente em curto-circuito. A corrente elétrica no led deve ser limitada, tipicamente entre 15 mA a 30 mA por um resistor externo.
A queda de tensão direta nos leds depende da cor do led. De modo simplificado, tipicamente se usa-se queda de tensão de 2 V.
- Exemplo cálculo do resistor de proteção de um circuito com led
Soma das tensões ao longo da malha (2a Lei de Kirchhoff):
V = Vled + R.I
- Isolando R:
R = (V - Vled) / I
- Atribuindo valores:
V = 5V, Vled = 2V, I = 10mA (Prefixos SI)
- Calculando:
R = (5 - 2)/10 . (1/10-3) = 3/10 . 103 = 300Ω
- Valores comerciais:
270Ω ou 330Ω
Laboratório 2: Semáforo automatizado com leds
- Semáforo
- Montar hardware para acionamento de 3 leds (vermelho, verde e amarelo), comandados por 3 saídas digitais independentes do Arduíno, utilizando resistores de proteção adequados.
- Modificar programa Arquivo/Exemplos/Basic/Blink para acionar os leds como um semáforo, com temporização adequada para cada cor.
Entradas digitais
Um pino digital do Arduíno pose ser definido como entrada (INPUT).
pinMode(2, INPUT);
- digitalRead
- Comando para ler o estado de uma entrada digital.
int estadoPino; estadoPino = digitalRead(2);
Neste caso o Arduíno vai ler se o estado do pino é LOW (0 V) ou HIGH (5 V).
Chave digital
Uma chave digital fornecerá 0 V (LOW) ou 5 V (HIGH) caso estiver aberta ou fechada.
- Caso a chave estiver aberta, não haverá corrente no o resistor e a tensão entregue ao pino do Arduíno será 0 V.
- Caso a chave estiver fechada, haverá corrente no resistor e a tensão entregue ao pino do Arduíno será 5 V.
- Corrente no resistor:
V = R I (Lei de Ohm)
- Isolando I:
I = V / R
- Atribuindo valores:
V=5V, R=10k(Ω) (Prefixos SI)
- Calculando:
I = 5/10 . (1/103) = 0,5 . 10-3 = 5 mA
Laboratório 3: Chave digital
- digitalRead
- Montar hardware com chave (push botton), utilizando resistores de proteção de 10 KΩ.
- Carregar programa exemplo Arquivo/Exemplos/Digital/Button para ligar ou desligar led em função de pressão em chave digital.
- Carregar programa exemplo Arquivo/Exemplos/Basic/DigitalReadSerial para verificar no terminal serial o valor da chave digital.
Laboratório 4: Coreografia com leds
Implementar uma coreografia de luzes com 6 leds e 2 chaves digitais, de forma que, a cada combinação de chaves acionadas uma coreografia de luzes seja executada.
Entradas Analógicas
- O Arduíno UNO possui 6 entradas analógicas
- As entradas analógicas utilizam um processo de Conversão Analógico Digital (ADC) para obter valores digitais correspondentes a cada entrada.
- As entradas analógicas são nomeadas de A0 até A5.
- Cada entrada analógica recebe valores analógicos entre 0 V e 5 V.
- Os valores analógicos são convertidos para valores digitais com 10 bits de resolução (valores entre 0 (0000000000) a 1023 (1111111111).
- analogRead
- Comando para ler entrada analógica.
int valorPino; valorPino = analogRead(A0);
Divisor de Tensão
Quando uma tensão é aplicada sobre resistores em série, a tensão total sobre os dois resistores é igual a somas das quedas de tensão sobre cada resistor.
- Quedas de tensão ao longo da malha (2a Lei de Kirchhoff)
V = I.R1 + I.R2
- Isolando I:
I = V / (R1 + R2)
- Mas:
V1 = R1.I
- Substituindo I temos:
V1 = R1/(R1 + R2) . V
- O mesmo para V2:
V2 = R2/(R1 + R2) . V
- Simulação do funcionamento do Divisor de Tensão
- Circuits -> Basic -> Voltage Divider
Potenciômetros
São resistências variáveis através de um cursor.
- Na figura, através de um potenciômetro é possível implementar um divisor de tensão com uma tensão variável Vx obtida a partir do terminal central do potenciômetro.
- Simulação do funcionamento do Potenciômetro Divisor de Tensão
- Circuits -> Basic -> Potentiometer Divider
Laboratório 5: Leitura de entrada analógica
- analogRead
- Montar hardware com utilizando o ponto central de um potenciômetro conectado a entrada analógica A0 (com os demais terminais conectados ao GND e 5V, respectivamente).
- Carregar programa exemplo Arquivo/Exemplos/Basic/AnalogReadSerial e verificar o valor da entrada analógica no monitor serial.
- Carregar programa exemplo Arquivo/Exemplos/Basic/ReadAnalogVoltage e verificar o valor da entrada analógica em Volts no monitor serial.
- Carregar programa exemplo Arquivo/Exemplos/Analog/AnalogInput e verificar o valor da frequência do pulsar do led em função do valor do potenciômetro.
Sensores baseados em resistência variável para Arduíno
Sensores de luminosidade (LDR) e sensores de temperatura (como o NTC) possuem um resistor variável em função da grandeza que estão medindo.
Laboratório 6: Sensor de luminosidade LDR
- LDR
- Montar hardware com o sensor LDR, conforme mostrado no link do exemplo Arquivo/Exemplos/Analog/AnalogInput, e verificar o valor da frequência do pulsar do led em função do valor da luminosidade.
Laboratório 7: Sistema indicador de luminosidade
- LDR
- Montar hardware com sensor LDR e três leds (vermelho, amarelo e verde), utilizando divisor de tensão para o sensor e resistores de proteção adequados para os leds.
- Construir programa para acender led verde com alta luminosidade, led amarelo com média luminosidade e led vermelho com baixa luminosidade.
Saídas Analógicas
O Arduíno emula saídas analógicas através de modulação PWM (Pulse Width Modulation).
O sinal PWM é uma onda quadrada, com frequência constante, mas a fração de tempo em que o sinal é HIGH (5V) (duty cycle) pode variar entre 0 e 100%, fornecendo uma média de tensão variável na saída [1].
As 6 Saídas PWM são identificadas pelo sinal ~ e fornecem saídas analógicas através de pulsos PWM de 8 bits, possibilitando, portanto, 256 valores diferentes de tensão analógica entre 0V e 5V, com passos de 0 a 255.
Laboratório 8: Saída analógica
- analogWrite
- analogRead
- map;
- Montar hardware para acionamento de led conectado ao pino 9, escolhendo resistor de proteção adequado;
- Carregar programa exemplo Arquivo/Exemplos/Basic/Fade e verificar a variação da luminosidade do led da porta 9.
- Montar hardware com utilizando o ponto central de um potenciômetro conectado a entrada analógica A0 (com os demais terminais conectados ao GND e 5V, respectivamente).
- Carregar programa exemplo Arquivo/Exemplos/Analog/AnalogInOutSerial e verificar a variação da luminosidade do led da pino 9 em função do potenciômetro.
Comunicação Serial
A comunicação serial permite enviar dados do computador ao Arduíno pela interface serial.
Laboratório 9: Comunicação serial
- Carregar programa exemplo Arquivo/Exemplos/Communication/PhysicalPixel e acionar o led do pino 13 a partir de comandos H e L enviados pelo terminal serial.
- Montar hardware para acionamento de led conectado ao pino 9, escolhendo resistor de proteção adequado;
- Carregar programa exemplo Arquivo/Exemplos/Communication/Dimmer e controlar a intensidade do led do pino 9 a partir do envio de valores entre 0 e 255 pelo terminal serial.
Led RGB
Um led RGB apresenta em um único led a possibilidade de fornecer todas as cores, obtidas a partir da mistura das cores primárias luz, ou cores primárias aditivas, que são vermelho (Red), verde (Green) e azul (Blue).
As cores primárias não resultam da mistura de nenhuma cor. A cor branca é a soma das três cores primárias. A cor preta é a ausência de cores. As demais cores requerem mistura das três cores primárias em quantidades específicas.
Os leds RGB são encontrados em duas estruturas:
- Anodo comum;
- Catodo comum.
Tabela de mistura das cores primárias
A tabela abaixa mostra a mistura das cores primárias utilizada na Linguagem HTML com uma paleta de 256 cores RBG.
A tabela mostra a quantidade de cada cor em valores de 8 bits, expressos em hexadecimal (00 a FF) (ou de 0 a 255 em decimal):
- A quantidade de cada cor RGB está expressa em hexadecimal, por exemplo, o amarelo é #FFFF00, ou seja, é o resultado da mistura do vermelho (FF ou 255) e do verde (FF ou 255), sem nada de azul (00 ou 0) .
Laboratório 3: Led RGB
- Cores primárias
- digitalWrite.
- Montar hardware para led RGB anodo comum utilizando resistores de proteção adequados.
- Modificar programa blink para piscar cores vermelho (R), verde (G) e azul (B) alternadamente;
- Variar a frequência do piscar de leds RGB nos seguintes valores:
- 1 Hz
- 10 Hz
- 100 Hz
- 1000Hz
- Verificar o resultado nas cores observadas.
- Misturando as cores primárias
- analogWrite
- Montar hardware para led RGB anodo comum utilizando os pinos 3, 5 e 6 respectivamente.
- Carregar programa exemplo Arquivo/Exemplos/Communication/ReadASCIIString e misturar as cores do led RGB utilizando quantidades de RGB de 0 a 255.
Referências
--Evandro.cantu (discussão) 16h33min de 12 de setembro de 2016 (BRT)