AULA 2 - Microcontroladores - Engenharia: mudanças entre as edições

De IFSC
Ir para navegação Ir para pesquisar
imported>Fargoud
Sem resumo de edição
imported>Fargoud
Linha 200: Linha 200:
Neste projeto vamos criar um display 3x3, com texto que corre na tela, usando o arduino.
Neste projeto vamos criar um display 3x3, com texto que corre na tela, usando o arduino.
O projeto também pode ser expandido para um display maior, por exemplo, 8x10, mas aí utilizando um contador 40
O projeto também pode ser expandido para um display maior, por exemplo, 8x10, mas aí utilizando um contador 40
CÓDIGO:
// anodes
int row[] = {8,9,10};
// cathodes
int col[] = {5,6,7};
 
void setup()
{
  for (int i=0;i<3;i++)
  {
    pinMode(row[i], OUTPUT);
    pinMode(col[i], OUTPUT);
  }
  allOff();
}
void loop()
{
  for(int i=0;i<3;i++)
  {  digitalWrite(row[i], LOW);
    for(int j=0;j<3;j++)
    {
      digitalWrite(col[j],HIGH);
      delay(500);
      digitalWrite(col[j],LOW);
    }
    digitalWrite(row[i], HIGH);
  }
}
 
void allOff()
{
  for (int i=0;i<3;i++)
  {
    digitalWrite(row[i], LOW);
    digitalWrite(col[i], HIGH);
  }
}


[https://thecustomizewindows.com/2015/08/diy-led-dot-matrix-display-for-arduino-scrolling-text/ Display com tela de rolagem 3x3]
[https://thecustomizewindows.com/2015/08/diy-led-dot-matrix-display-for-arduino-scrolling-text/ Display com tela de rolagem 3x3]

Edição das 14h55min de 20 de fevereiro de 2019

<< Página do curso


PLANO DE AULA


CARGA HORÁRIA: 5 h
CARGA HORÁRIA TEÓRICA: 2 h CARGA HORÁRIA PRÁTICA: 3 h

MATERIAIS

Por aluno:

  • 1 placa Arduino Uno
  • cabo de comunicação/alimentação USB
  • 1 computador PC com software Arduino IDE instalado
  • 1 proto shield para montagens
  • 10 leds vermelhos;
  • 1 display BCD 7 segmentos catodo comum;
  • 1 componente TTL 7447 ou CMOS 4511
  • 1 resistor de 200 Ω
  • 10 resistores de 150 Ω
  • cabos fêmea-macho

METODOLOGIA

  • Exposição dialogada dos conteúdos disponíveis, em projetor multimídia.
  • Navegação assistida em outros sites e portais, de conteúdos relacionados.
  • Montagens práticas e desenvolvimento em computador de aplicativos.
  • Testes de verificação e validação.


Arquitetura do Arduíno

Principais blocos:

Unoarq3.jpg


Como é estruturado o Hardware:

  • 0-5 (azul) - pinos de entradas analógicas.

Entradas para o ADC, podem ser usados como I/O digital.

  • 0-13 (verde) - pinos de I/O digitais . Pinos 0 e 1

também são utilizados para a comunicação serial.

  • AREF(laranja) - referência analógica do ADC.
  • S1 (azul) - botão de inicialização.
  • ICSP (ciano) - conector de gravação In-Circuit.
  • USB (amarelo) - usado para gravar o Arduino ou

energizá-lo.

  • X1 (rosa) - fonte de alimentação externa

(9-12VDC, após diodo estará também em Vin).

Unoarq01.jpg

Mais detalhadamente:

Unoarq2.jpg



Escrita nas portas digitais

Vimos no primeiro exemplo, que o pino digital 13 está ligado diretamente a um LED de sinalização da placa e, portanto, nenhum LED externo foi necessário, para testar a escrita nas portas digitais.

Porém, se quisermos acender um LED externo à placa, podemos conectá-lo diretamente a outra porta digital qualquer, inclusive à própria porta 13.

Podemos utilizar um LED de 5mm que acende com aproximadamente 2,1 V.

O problema, nesse caso, se dá por conta da porta digital: ela assume tensão 0V (nível lógico LOW), ou a tensão 5V (nível lógico HIGH), e caso coloquemos 5V no LED ele irá queimar.

Para solucionar esse problema precisamos ligar algum outro componente que seja responsável por dividir parte dessa tensão com o LED, para que ele não queime, então utilizaremos um resistor.

Portanto, ligamos um resistor de 120 ohms em série com o LED, o resistor à porta 13 e o LED à porta GND (ground ou terra), como na Figura abaixo.

Blink1.jpg


Não precisamos fazer nenhuma alteração no software para que esse circuito funcione: basta ligar o Arduino na porta USB do computador, para que o computador forneça alimentação ao circuito, e então veremos o LED externo piscar, juntamente com o LED interno.

Em vez do LED, poderíamos controlar outros componentes ou equipamentos digitais, como motores, eletrodomésticos, etc.

O componente LED

LED, ou light emitter diode' é um diodo emissor de luz que, quando alimentado corretamente, permite o fluxo de energia apenas em um sentido.

É um componente polarizado (com pólos positivo e negativo) e deve ser corretamente conectado para funcionar.

Note que o polo positivo possui uma perna maior (terminal maior) que a outra (veja a figura abaixo).


Já o polo negativo possui a menor perna (terminal menor).

Led1.jpg

Obs.: alguns LED's apresentam o polo negativo chanfrado (plano) no seu exterior.

Há vários tipos de LED's, que variam tanto em cor, quanto em tamanho. Cada led utiliza uma tensão nominal, suficiente para fazê-lo emitir a luminância adequada e uma corrente máxima, que ele pode suportar.

Tabela de tensões e correntes para cada tipo de led:
Tabelaled.jpg


Cálculos de resistência

Para chegar ao valor de 120 ohms acima, é necessário fazer-se alguns cálculos(e arredondamentos).

Vamos aprender agora a calcular o valor dos resistores que precisamos utilizar.

Se precisarmos acender um LED verde, que é alimentado com tensão de 2,1 V e corrente de 20mA através do Arduino, precisaremos de um resistor, como já vimos, já que o Arduino só consegue fornecer ou 0V ou 5V.


Colocaremos o resistor em série com o LED, e com isso podemos concluir que:

  • A tensão total (soma das tensões no resistor e no LED) será de 5V, ou seja: VLED + VR = 5V
  • A corrente total que deve passar pelo resistor e pelo LED (já que eles estão em série, é a mesma) será de 20mA, ou seja: ILED = IR = 20mA
  • Precisamos colocar uma tensão de 2,1 V no LED, ou seja: VLED = 2,1 V

Sabendo desses detalhes, podemos concluir que a tensão no resistor será de:

VR =( 5V - VLED ) 
VR = 5V - 2,1 V 
VR = 2,9V  

Como IR = 20mA e VR = 2,9 V , podemos calcular o valor da resistência R do resistor que iremos utilizar através da Lei de Ohm:

V = R.I

Assim, temos:

2,9 V = R. 0,020A 
R = 2,9 V/0,020A 
R = 145 ohms

Depois de feito o cálculo, podemos generalizar com a seguinte equação:

R = (Vfonte - VLED)/IR


Para o LED verde, precisamos de um resistor de 145 ohms, porém não existem resistores com esse valor para venda (os valores, chamados de valores comerciais são pré-definidos).

Dada essa situação, temos duas alternativas:

  • Utilizar um resistor de maior resistência e limitar mais a corrente (que fará com que o LED brilhe menos, mas que é responsável, para aumentar a vida útil do LED);

ou

  • Associar dois ou mais resistores em série ou paralelo para conseguir o valor desejado.

Geralmente escolhemos um resistor de valor próximo, já que uma alteração pequena de corrente não causará danos ao dispositivo, porém em alguns casos precisaremos combinar resistores de valores diferentes para conseguir o valor equivalente.

Pela tabela abaixo, podemos ver que nosso problemas estaria resolvido se utilizássemos um resistor de 120 a 150 ohms, ou dois resistores de 68 ohms em série, por exemplo.

Tabela de Cores de Resistores

Resistcom.jpg

Para maiores informações: Alimentando corretamente seus leds

Alimentação do circuito

Internamente, o circuito do Arduino é alimentado com uma tensão de 5V.

Quando ligamos o Arduino em uma porta USB do PC, o próprio PC, através do cabo USB, alimenta o Arduino.

Porém nem sempre temos um PC por perto; para esses casos, podemos utilizar uma outra fonte de energia de 5V (a fonte deve ser ligada diretamente nos pinos 5V e GND do Arduino).

Como não possuímos pilhas/baterias em abundância no mercado com tensão de 5V, é complicado alimentar um Arduino dessa forma alternativa (se dispusermos uma tomada de 127/220VAC por perto, poderíamos ligar uma fonte AC/DC ).

Para resolver esse problema, o Arduino possui um regulador de tensão que aceita tensões de 7 a 12V (na verdade, ele consegue funcionar com tensões entre 6 e 20V, apesar de não ser recomendado). Com o regulador de tensão podemos combinar pilhas em série, utilizar uma bateria de 9V ou mesmo baterias de carros, motos e no-breaks (12V).


Alimentacao.jpg

Exercícios:

  1. Altere o código para acender sequencialmente leds ligados aos pinos digitais 5 e 10 do Arduíno. Solução do Exercício 1 - Aula 2
  2. Altere o código para que a porta digital 12 acione 3 LEDs vermelhos em série. O que deverá ser mudado?
  3. Pesquise sobre a corrente/potência que cada saída digital do Arduíno pode fornecer.
  4. O que deveria ser feito, para poder-se acionar equipamentos que drenassem maior potência, corrente, além dos ~40mA que o Arduíno pode fornecer?
  5. Mostre a letra "F" em um display BCD 7 seg, catodo comum, utilizando sete saídas digitais do Arduino.
  6. Utilize o componente TTL 7447 Datasheet 7447 ou o CMOS 4511 Datasheet 4511 para mostrar os números de 0 a 9, em um intervalo de 2 segundos cada, em um display BCD 7 seg, utilizando apenas 4 saídas digitais. Solução do Exercício 6 - Aula 2


Outro exemplo:

Utilizando o Arduino para acionar um display de 4 BCDs 7 seg

Projeto Display deslizante, usando matriz de leds

Neste projeto vamos criar um display 3x3, com texto que corre na tela, usando o arduino. O projeto também pode ser expandido para um display maior, por exemplo, 8x10, mas aí utilizando um contador 40

CÓDIGO:

// anodes
int row[] = {8,9,10};
// cathodes
int col[] = {5,6,7};
 
void setup()
{
 for (int i=0;i<3;i++)
 {
   pinMode(row[i], OUTPUT);
   pinMode(col[i], OUTPUT);
 } 
  allOff();
}

void loop()
{
  for(int i=0;i<3;i++)
  {  digitalWrite(row[i], LOW);
    for(int j=0;j<3;j++)
   { 
      digitalWrite(col[j],HIGH);
      delay(500);
      digitalWrite(col[j],LOW);
   }
   digitalWrite(row[i], HIGH);
  }
}
 
void allOff()
{
 for (int i=0;i<3;i++)
 {
   digitalWrite(row[i], LOW);
   digitalWrite(col[i], HIGH);
 }
}

Display com tela de rolagem 3x3


Outro projeto, agora usando módulos de led:

Display com tela de rolagem, usando módulos de led MAX7219 e arduino


<< Página do curso

Introdução aos Microcontroladores AULA 2 - Arquitetura do Arduíno Leitura das portas digitais>>