Matriz de LEDs - Páginas Pessoais

Propaganda
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
DEPARTAMENTO ACADÊMICO DE INFORMÁTICA
GUILHERME DA SILVA VIOLADA
LEONARDO MESQUITA DA SILVA
RAFAEL DE FARIAS MEURER
Matriz de LEDs sensores
Oficina de Integração 2
CURITIBA
2011
GUILHERME DA SILVA VIOLADA
LEONARDO MESQUITA DA SILVA
RAFAEL DE FARIAS MEURER
Matriz de LEDs sensores
Monografia apresentada à disciplina de
Oficina de Integração II do 4º período
do
curso
Computação
de
Engenharia
da
Universidade
Tecnológica Federal do Paraná.
Orientador:
Juliano Mourão Vieira
Curitiba
2011
de
Lista de figuras
Figura 1 Representação bidimensional da rede cristalina de silício ...... 7
Figura 3 Silício dopado com arsênio...................................................... 9
Figura 4 Figura 3 Silício dopado com boro .......................................... 10
Figura 5 Representação de um diodo.................................................. 10
Figura 6 Diodo inversamente polarizado. ............................................ 11
Figura 7 Diodo diretamente polarizado. ............................................... 11
Figura 8 Alguns modelos de LEDs ...................................................... 12
Figura 9 Representação simbólica do LED.......................................... 12
Figura 10 LED RGB. ............................................................................ 13
Figura 11 Polarização reversa em um LED ......................................... 14
Figura 12 Primeiro modelo da matriz de LEDs .................................... 17
Figura 13 Problema com a primeira Matriz de LEDs ........................... 18
Figura 14 Segundo modelo de matriz de LEDs ................................... 19
Sumário
1 Proposta ............................................................................................. 5
2 Motivação ........................................................................................... 5
3 Objetivos ............................................................................................. 5
4 Fundamentação teórica ...................................................................... 6
4.1 Condutores, semicondutores e isolantes ..................................... 6
4.2 Semicondutores dopados............................................................. 8
4.2.1 Semicondutor tipo n ............................................................... 9
4.2.2 Semicondutor tipo p ............................................................... 9
4.3 Diodos ........................................................................................ 10
4.3.1 Diodos emissores de luz (LEDs).......................................... 11
4.4 LEDs polarizados reversamente ................................................ 13
5 Metodologia ...................................................................................... 15
5.1 Plataforma Arduino..................................................................... 15
5.2 LEDs .......................................................................................... 15
5.3 Montagem ...................................................................................... 16
7 Conclusões ....................................................................................... 20
6 Referências ....................................................................................... 21
Apêndices ............................................................................................ 22
Código fonte do programa utilizado no projeto................................. 22
5
1 Proposta
Este projeto tem como proposta a verificação e manipulação de
propriedades pouco exploradas dos diodos emissores de luz, ou LEDs. Serão
exploradas basicamente: A utilização da característica capacitiva que passa a
adquirir ao ser polarizado reversamente e a geração de foto-corrente para
diminuição do tempo de descarga de tal capacitor, explorando estes dois
fatores pretendemos ligar um LED, por exemplo, apenas apontando uma
lanterna em sua direção.
Atingindo-se tal objetivo passaremos a uma nova fase do projeto, na
qual será implementada uma pequena matriz de LEDs de alto brilho onde
possibilitaremos que sejam “desenhados” diferentes formas sobre a superfície
à medida que o usuário desloque a lanterna sobre os LEDs.
2 Motivação
Temos por motivação um projeto semelhante ao apresentado
anteriormente na mesma disciplina intitulado “Interface Humano-Computador
Baseada em LEDs”. O projeto tinha por objetivo ligar um LED se utilizando das
mesmas características citadas anteriormente na Proposta, no entanto, não
atingiu plenamente seus objetivos encontrando empecilhos em vários pontos
no decorrer do semestre, como por exemplo, na escolha do micro controlador
adequado, ficando incompleto na sua conclusão, apesar das conquistas
obtidas. Tendo despertado nosso interesse e munidos dos diversos erros e
acertos do projeto anterior a nossa equipe passou a desejar concluí-lo assim
como expandi-lo com a adição de novas ideias dos integrantes.
3 Objetivos
1) Verificação de conceitos físicos referentes à utilização de diodos
emissores de luz como sensores de luz capacitivos, assim como a
6
influência de uma foto corrente gerada por uma pequena fonte de
luz no tempo de sua descarga;
2) Ativar um LED utilizando-se justamente da medida do tempo de
descarga do capacitor citado no item 1;
3) Implementar uma matriz de LEDs RGB na qual o usuário poderá
selecionar a cor que deseja e “desenhar” sobre a superfície, ou
seja, os LEDs serão ativados juntamente com o deslocamento da
fonte luminosa dando a sensação de se estar desenhando com luz.
4 Fundamentação teórica
4.1 Condutores, semicondutores e isolantes
Nesta seção utilizaremos o elemento silício para exemplificarmos
alguns conceitos. Para isso, necessitamos saber sua configuração eletrônica.
O silício possui 14 prótons e 14 elétrons. Sua distribuição eletrônica é: 2
elétrons na primeira camada, 8 na segunda e, na terceira, possui 4 elétrons.
Esta ultima, é a camada de valência.
Essas camadas referem-se à quantidade de energia que um elétron
possui. Quanto maior a energia de um determinado elétron, maior o nível que
ele ocupa e mais distante se localiza do núcleo do átomo. O fornecimento de
mais energia acarretará em uma maior excitação do elétron, que “pulará” uma
quantidade de níveis relativos à energia adquirida. Nessa passagem de um
nível para outro superior, o elétron deixa um espaço vazio na camada a qual
pertencia, este espaço é denominado de lacuna. Ao voltar para seu estado
original, a energia adicional que ele possui deve ser liberada, tal liberação pode
ocorrer sob forma de calor, luz ou outra forma de radiação
Em um cristal, as órbitas de um átomo se misturam com as órbitas de
outro átomo. Isso faz com que se forme uma região de encontro entre os níveis
e uma órbita acaba interferindo nas outras. Essas regiões são chamadas de
nuvens ou bandas. Podemos ver estas bandas na Figura 1
7
Figura 1 Representação bidimensional da rede cristalina de silício
Fonte: http://www.sc.ehu.es/sbweb/electronica/elec_basica/tema2/Paginas/Pagina3.htm
Há três configurações que estas bandas podem possuir. Elas podem
estar totalmente preenchidas, parcialmente preenchidas ou vazias. Esta
configuração da banda de valência determina as propriedades de condução em
um sólido cristalino. Quando a banda de valência está totalmente preenchida, a
banda acima dela será chamada de banda de condução. Quando ela esta
parcialmente preenchida, a própria banda de valência será a banda de
condução.
A diferença entre condutores, semicondutores e isolantes está na
configuração da banda de valência. Quando ela está parcialmente preenchida,
é mais fácil fazer com que um elétron passe para um nível maior. É assim que
acontece nos condutores, como exemplo, o cobre. [1]
Um material isolante, por outro lado, tem uma banda de valência cheia
e o espaço entre a banda de valência e a de condução é grande. Esse espaço
é denominado de band gap, termo em inglês que significa intervalo entre
bandas. [2] Com isso, os elétrons não podem adquirir energia facilmente de um
campo elétrico e, portanto, participarem da condução elétrica.
Os semicondutores são sólidos onde o band gap é pequeno. Caso
sejam resfriados ao zero absoluto, os elétrons ocuparão os níveis energéticos
mais baixos possíveis. A banda de condução estará completamente vazia e o
material será um isolante perfeito. Porém, à temperatura ambiente, alguns
8
elétrons podem ser termicamente excitados e levados da banda de valência
para a banda de condução e nessa condição o material pode conduzir
eletricidade. A condutividade observada situa-se entre a dos condutores e dos
isolantes, sendo denominado, portanto um semicondutor, a exemplo do que é o
silício. [2] A Figura 2 mostra esta diferença entre condutores, semicondutores e
isolantes onde temos, no condutor, a banda de valência parcialmente
preenchida, no isolante a banda está totalmente preenchida e com band gap
alto. No semicondutor vemos a banda totalmente preenchida e um band gap
mais baixo.
Figura 2 Relação entre as bandas de condução e de valência em vários materiais
Fonte: http://www.cesarzen.com/FIS1057Lista16.pdf
4.2 Semicondutores dopados
A dopagem consiste em colocar, em um cristal, átomos de um
elemento diferente. Isso torna um cristal puro, chamado de intrínseco, em um
cristal extrínseco, com impurezas. Como em uma rede cristalina pura não há
elétrons livres suficientes para formar uma corrente utilizável, utiliza-se a
9
dopagem para aumentar o número de elétrons livres ou o número de lacunas.
[3]
4.2.1 Semicondutor tipo n
Uma forma de dopagem ocorre quando utilizamos uma impureza que
tem mais elétrons na camada de valência em relação ao elemento a ser
dopado. Esta dopagem é feita quando se pretende conseguir mais elétrons na
banda de valência. Como exemplifica a Figura 3, pode-se dopar silício com
átomos pentavalentes (5 elétrons na camada de valência) de arsênio. Quando
as ligações entre os elétrons dos dois elementos se formam, temos um elétron
do arsênio sobrando. Esse elétron é forçado a pular para a banda de
condução. Quando o silício é dopado desta maneira, ele é chamado de
semicondutor tipo n, onde n significa negativo, já que temos um excesso de
cargas negativas. Neste caso, os elétrons são denominados de portadores
majoritários e as lacunas de portadores minoritários. Outros elementos que
podem ser usados são o antimônio e o fósforo. [3]
Figura 3 Silício dopado com arsênio
Fonte: http://educacao.uol.com.br/fisica/ult1700u61.jhtm
4.2.2 Semicondutor tipo p
Outra forma de dopagem ocorre quando utilizamos uma impureza que
possui menos elétrons na camada de valência em relação ao elemento a ser
dopado. A Figura 4 mostra a rede cristalina de silício sendo dopada com um
átomo de boro, que possui 3 elétrons na camada de valência (átomo trivalente).
Neste caso, 3 elétrons do boro fazem ligações com elétrons adjacentes de
10
silício, mas, um quarto elétron de silício não faz ligação. Assim, temos uma
lacuna formada em cada átomo de boro. Assim, temos um semicondutor do
tipo p, onde p significa positivo, pois temo excesso de lacunas. As lacunas
serão os portadores majoritários e os elétron serão os minoritários. Alumínio e
gálio são outros elementos que podem ser usados neste tipo de dopagem. [3]
Figura 4 Figura 3 Silício dopado com boro
Fonte: http://educacao.uol.com.br/fisica/ult1700u61.jhtm
4.3 Diodos
É possível produzir um cristal com dopagem parte tipo p e parte tipo n,
denominado cristal p-n ou diodo.
Figura 5 Representação de um diodo.
Fonte: [4]
A tendência, quando não temos um potencial elétrico externo aplicado
sobre o diodo, é que as cargas da parte negativa da junção sejam atraídas pela
parte positiva e vice-versa. Isso faz com que uma região “equilibrada” se forme
entre os semicondutores, onde o número de portadores livres é pequeno. Esta
região é chamada de região de depleção. Como visto na Figura 5, um campo
elétrico E se forma, opondo-se ao movimento destas cargas, Assim, temos
uma “barreira de potencial” que estabiliza este processo de combinação de
cargas. [4] Esta região de depleção cresce quando aplicamos um potencial
11
elétrico no diodo na forma mostrada na Figura 6. Assim, a corrente que passa é
próxima a zero e dizemos que o diodo está inversamente polarizado.
Figura 6 Diodo inversamente polarizado.
Fonte: [4]
Por outro lado, pode-se diminuir a região de depleção quando
aplicamos um potencial externo na forma mostrada na Figura 7. Assim, essa
região “quebra” e ocorre o fluxo livre de cargas. Tem-se, então, uma corrente
passando pelo diodo, e diz-se que ele está diretamente polarizado.
Figura 7 Diodo diretamente polarizado.
Fonte: [4]
4.3.1 Diodos emissores de luz (LEDs)
Do inglês, Light-emitting diode, estes diodos são amplamente utilizados
no mundo. Por ser um diodo, os LEDs não passam de um conjunto de junções
pn. Mas como essa junção pode emitir luz? Quando um elétron na base da
banda de condução de um semicondutor cai em uma lacuna no topo da banda
de valência, uma energia é liberada. Essa energia pode ser transformada em
energia interna da rede cristalina em vibração. Isso geralmente acontece em
semicondutores de silício. Porém, em alguns materiais semicondutores, a
energia emitida pode aparecer como uma radiação eletromagnética. [5]
LEDs comerciais projetados para a região visível do espectro são
normalmente baseados em material semicondutor que é um composto de gálioarsênico-fósforo. Ajustando-se a razão entre o fósforo e o arsênico, a largura
12
do band gap e, consequentemente, o comprimento de onda da luz emitida,
pode ser alterada.
Figura 8 Alguns modelos de LEDs
Fonte: http://www.infoescola.com/eletronica/led-diodo-emissor-de-luz/
Se luz é emitida quando um elétron passa da banda de condução para
a banda de valência, então a luz daquele mesmo comprimento de onda será
absorvida quando um elétron se mover no outro sentido. Com esse conceito é
possível verificar que, para aumentar a corrente no sentido reverso da
polarização é necessário emitir uma luz que tenha o mesmo comprimento da
qual está sendo gerada pelo LED. Para evitar que os fótons emitidos sejam
absorvidos, é necessário um grande excesso de elétrons e lacunas. É por esse
motivo que se usa uma junção pn. Um simples semicondutor intrínseco não
pode ser usado em LEDs. [5]
A representação simbólica do LED está representada na Figura 9. ‘A’
indica anodo, ‘P’ positivo, ‘N’ significa negativo e ‘C’ catodo.
Figura 9 Representação simbólica do LED.
Fonte: http://tienemigalacosa.blogspot.com/2009/03/como-funciona-diodoled.html
13
Vale citar, também, dois tipos de LEDs que foram utilizados em nosso
projeto. O primeiro é o LED de alto brilho. A diferença dele com o comum é
que, além de ter a cápsula transparente, é revestido internamente com um
silicone funcionando como lente para concentrar a luz emitida pela cápsula. O
segundo tipo é o LED de alto brilho RGB, que é o padrão de cores Red
(vermelho), Green (verde), Blue (azul), em um mesmo LED. Isso acontece
porque há as três cores dentro do encapsulamento e para cada cor há um
ânodo, sendo apenas um cátodo para os três, como mostra a Figura 10.
Figura 10 LED RGB.
Fonte: http://blog.bsoares.com.br/wp-content/uploads/2009/04/5mm_rgb_ledcolor-especification.jpg acesso 26/04/2011
4.4 LEDs polarizados reversamente
A base do nosso projeto é um conceito ainda pouco explorado.
Os
diodos
quando
polarizados
inversamente
possuem
uma
propriedade capacitiva (acúmulo de cargas) e, nos LEDs, a incidência de luz
altera esta propriedade. Esta capacitância é muito pequena, por este motivo,
estabelecer uma relação entre a incidência luminosa e a capacitância torna-se
difícil. Porém, na polarização inversa, o LED se comporta como um capacitor
em paralelo com uma fonte de corrente dependente da incidência luminosa,
como mostrado na Figura 11. Um aumento na incidência de luz sobre LED gera
um aumento da corrente, que por sua vez descarrega o capacitor equivalente
mais rapidamente. [6]
14
Figura 11 Polarização reversa em um LED
Fonte: [6]
Uma maneira de quantificar a intensidade luminosa percebida pelo LED
é medindo o tempo de descarga da tensão armazenada nele quando
polarizado inversamente.
Inicialmente, o LED é polarizado inversamente, o que equivale a
carregar o capacitor. O capacitor ficará carregado com a tensão do cátodo do
LED. Depois, a porta onde está o cátodo do LED deve ser levada à alta
impedância, e assim o capacitor descarregará através da fonte de corrente
dependente da luz sem interferência do circuito externo. Quanto maior a
incidência de luz sobre o LED, mais rapidamente o capacitor será
descarregado, e mais rapidamente cairá a tensão no cátodo do LED.
Usando uma espécie de temporizador, que nada mais é que uma
variável incrementada continuamente é possível medir o “tempo” que a tensão
no cátodo (ou seja, a tensão do capacitor) demora para ir do valor inicial até um
valor praticamente nulo. Ou seja, primeiro o capacitor é carregado na
polarização inversa do LED. Em seguida, o cátodo do LED é levado a alta
impedância, e nesse instante o temporizador é iniciado, e monitora-se a tensão
no cátodo. Quando essa tensão for menor ou igual a um valor estipulado, o
temporizador é parado. Quanto maior for a incidência de luz no LED, mais
intensa será a foto corrente, mais rapidamente o capacitor será descarregado e
o tempo medido será menor. Ou seja, o tempo de descarga do LED é
inversamente proporcional à incidência de luz.
15
5 Metodologia
Nesta parte faremos uma breve apresentação dos materiais e
componentes utilizados, bem como, a descrição dos testes realizados ao longo
do semestre.
5.1 Plataforma Arduino
É uma plataforma de prototipação eletrônica flexível e de fácil
utilização. A plataforma possui um circuito eletrônico que pode ser ligado ao
computador por meio da porta USB.
O hardware é baseado no microcontrolador ATmega e contém pinos de
entradas/saídas digitais, sendo que algumas podem ser utilizadas como saída
PWM (Pulse Width Modulation), entradas analógicas, conectores USB e de
energia, botão reset e uma barra de pinos ICSP (In-Circuit Serial
Programming).
Possui uma IDE (Integrated Development Environment) baseada em
Processing e desenvolvida para pessoas não tão familiarizadas com
programação, onde é possível editar código, compilar e transferir firmware
serialmente para o hardware. Pode ser utilizada em sistemas operacionais
como Windows, Linux e MacOS. A linguagem de programação (open-source) é
derivada do Wiring, uma linguagem semelhante ao C. Uma das grandes
vantagens de utilizar o Arduino é a facilidade tanto para conectar vários
sensores às entradas do circuito quanto para controlá-los ou monitorá-los. [7]
5.2 LEDs
Para realizar os testes usamos três tipos de LEDs, com invólucro
colorido, alto brilho e RGB. Com cada um fizemos os testes para analisar o tipo
de comportamento.
16
5.3 Montagem
Nesta seção, para um melhor entendimento, disponibilizamos o código
do programa que escrevemos na seção de apêndices. O código está
comentado, facilitando a leitura.
Inicialmente, fizemos alguns testes com um LED de invólucro colorido.
Optamos, inicialmente, por este LED pelo seu baixo custo, buscando analisar
seu comportamento capacitivo quando aplicado sobre ele polarização reversa.
Nosso principal objetivo nesses testes era verificar o tempo de descarga do
LED. Utilizamos para isso o Arduino.
Vimos que não era possível medir o tempo da descarga, propriamente
dito, devido a valores que atingiam escalas de tempo surpreendentemente
baixas, mas, no entanto, seria possível utilizar de uma variável com o objetivo
de estimar tal tempo, incrementando-a constantemente até que a tensão na
porta de saída se tornasse zero, o que corresponderia à descarga total do
capacitor.
Incidindo luz, quando o LED estava polarizado reversamente,
percebemos que esse valor reduzia, sendo assim, o valor obtido variava de
acordo com a intensidade de luz incidindo sobre o LED.
Com o valor sendo alterado com a luz, resolvemos testar se a
resistência, que estava em série com o LED, teria influência no tempo da
descarga. Colocando valores distintos de resistências, o valor da variável não
era alterado, verificando a validade dos conceitos já descritos anteriormente
sobre polarização reversa aplicada em LEDs.
Concluídos os testes iniciais, que serviram para verificar os conceitos
básicos, iniciamos a montagem da matriz. Ela foi elaborada como mostra a
Figura 12, com vários LEDs na mesma porta dos catodos e anodos. Seria
necessário observar
o comportamento
dos
LEDs
RGB.
Inicialmente,
polarizamos todas as entradas do LED reversamente. A primeira cor a ser
testada foi o vermelho. Incidindo luz nele pudemos comprovar que era
necessária uma intensidade menor de luz. Pensamos que esta diferença era
devida ao encapsulamento. Por ser transparente, faria com que a incidência de
luz fosse menor, mas, ao realizarmos testes com azul e verde, percebemos
17
uma diferença entre eles. O vermelho é o mais sensível a luz, seguido do verde
e azul. Esse fato demonstra exatamente o que foi dito na seção 4.3.1, onde
para circular uma maior corrente no sentido inverso era necessário emitir luz no
mesmo comprimento de onda. A luz que usamos era branca, que contém
todos os comprimentos de onda, isso fez com que nós pudéssemos provar o
conceito, pois o vermelho que necessita de um menor comprimento de luz foi o
mais sensível enquanto que o azul temo comprimento de onda maior. Para a
montagem da matriz utilizamos o formato apresentado na Figura 12. Optamos
por esse estilo pelo fato de ser a mais utilizada em matrizes de LEDs. Nessa
montagem, o número de portas digitais e de fios é menor pelo fato de termos
apenas um ânodo e um cátodo para vários LEDs. Desse modo, a utilização do
LED RGB seria viável. Para esse modelo é necessário que o loop do
microcontrolador seja suficientemente rápido para que os olhos humanos não
percebam o LED piscando.
Figura 12 Primeiro modelo da matriz de LEDs
Fonte: Autoria própria
18
Ao iniciarmos a montagem, era preciso colocar todas as portas em
nível alto, para que outros LEDs não fossem carregados e não influenciassem
na entrada da porta. Porém, mesmo considerando esse fato, como nossa
análise da variável era feita na porta do cátodo, ao declararmos a porta em
modo de entrada ela iria para zero (nível baixo). Por esse motivo, a porta de
entrada nunca chegava a zero por causa das correntes que passavam pelos
outros LEDs.
A Figura 13 exemplifica o problema comentado, onde, para verificar o
LED na posição (1,1) é necessário colocar a porta no modo input e o ânodo em
zero, e ao fazermos isso há a passagem de corrente, em vermelho, que vão
diretamente à porta de entrada, fazendo com que a porta de entrada nunca
chegasse ao um valor zero.
Figura 13 Problema com a primeira Matriz de LEDs
Fonte: Autoria própria
Ao falarmos com o professor orientador, achamos a solução de colocar
um circuito integrado que geraria alta impedância nos outros ânodos, mas ao
19
ler mais sobre o Arduino vimos que ele mesmo podia gerar esta alta
impedância nas portas.
Munidos deste artifício, realizamos novos testes em nossa matriz e
obtivemos bons avanços. Porém, esbarramos em outro obstáculo. Pelo grande
número de portas sendo alteradas, o microcontrolador não possuía velocidade
suficiente para que fosse feita a varredura da matriz sem que o olho humano
percebesse que, na verdade, os LEDs estavam piscando.
Para resolvermos o problema tivemos que implementar outro tipo de
matriz, apresentado na Figura 13. Esse método utiliza mais portas e fios, mas
funciona perfeitamente, pois o loop será somente para verificar se há luz
incidida em cada LED individualmente, quando há luz incidida o LED acende e
não torna a apagar até ser inicializada novamente a matriz. Isso ocorre porque
tratamos aqui os LEDs de forma independente.
Com isso, tivemos que tomar outros rumos no projeto.
Utilizaremos apenas LEDs de alto brilho azul, economizando portas
digitais e possibilitando um aumento no tamanho da matriz.
Figura 14 Segundo modelo de matriz de LEDs
Fonte: Autoria própria
20
Ao iniciarmos a montagem da matriz da figura 14, vimos que, com o
aumento do seu tamanho, a varredura ficava muito lenta. Após vários testes
vimos que ao colocar um break, dentro do while que fazia a contagem na porta
do catodo até zerar, a varredura ficava mais rápida, isso fez com que nós
retornássemos ao primeiro modelo de matriz. Depois de mais testes,
conseguimos fazer que a varredura fosse suficiente para que os olhos não
pudessem ver os LEDs piscando. Mas isso só é possível quando a matriz for
de no máximo 4x4 para LEDs de alto brilho verde. Observamos no experimento
em sala que em uma matriz de 7x4 os LEDs piscavam.
Com as matrizes funcionando, implementamos uma de LEDs de alto
brilho verde e azul. Vimos que com o mesmo valor do value sendo comparado,
os LEDs verdes acendiam e com o azul nada acontecia. Ao alterarmos o valor
da comparação do value, um valor maior, os LEDs azuis acendiam
normalmente. Esse aumento no value faz com que o tamanho da matriz seja
alterado. Isso porque, com um valor maior do value, mais contagens são feitas
dentro do while gastando mais tempo.
7 Conclusões
Concluindo, vimos que para a montagem de matriz de LEDs sensores
é necessário estar atento em cada detalhe, e realizar inúmeros testes, pois
como não é um conceito muito utilizado tivemos que passar por várias etapas
até a conclusão do projeto.
Fica como uma idéia de continuação do projeto a utilização de um
microcontrolador que tenha uma velocidade maior e mais portas, para que mais
LEDs possam ser incluídos. Pode-se também trabalhar com LEDs RGB
fazendo com que o usuário escolha a cor que gostaria que o LED emitisse.
21
6 Referências
[1] VASCONCELLOS, Prof. César Augusto Zen. Lista temática e de
problemas nº 16 - Teoria de bandas em física do estado sólido. Teoria
de bandas. Universidade Federal do Rio Grande do Sul. Disponível em:
< http://www.cesarzen.com/FIS1057Lista16.pdf> Acessado em: 02/06/2011
[2] LEE, John David. Química Inorgânica não tão concisa. Editora Edgard
Blücher. 5ª Edição, 1999.
[3] CARRILHO, Prof. Eduardo. Introdução aos semicondutores. Instituto
Militar de Engenharia. Disponível em:
<http://www.ime.eb.br/~aecc/FundEngEle/Semicondutores.pdf>
Acessado em: 02/06/2011
[4] SOARES, Marco. Diodos semicondutores I. Disponível em:
< http://www.mspc.eng.br/eletrn/semic_210.shtml> Acessado em: 04/07/2011.
[5] HALLIDAY, DAVID; RESNICK, ROBERT; WALKER, JEARL. Fundamentos
de Física. Editora LTC. 5ª Edição. Vol. 4, 2004
[6] DIETZ, P. H.; YERAZUNIS, W. S.; LEIGH, D. Very low-cost sensing and
communication using bidirectional leds. In: Ubicomp. [S.l.: s.n.], 2003. p.
175–191.
[7] ARDUINO. Disponível em: <http://arduino.cc/>. Acessado em: 04/07/2011
[8] ANDREATTA, Caio Nogara; PAIVA, Lucas Campiolo; RIBEIRO, Luiz G. C.
Interface Humano-Computador Baseada em LEDs, Monografia, 2008.
22
[9] MILLMAN, JACOB; HALKIAS, CHRISTOS C. Eletrônica Dispositivos e
Circuitos. Volume 1. Editora Mcgraw Hill, 1981.
Apêndices
Código fonte do programa utilizado no projeto
/*
MATRIZ DE LEDs SENSORES
Guilherme da Silva Violada
Leonardo Mesquita da Silva
Rafael de Farias Meurer
*/
// inicializa as portas dos anodos e catodos.
int anodos[] = {9,8,7,6,};
int catodos[] = {26,12,11,10};
// matriz auxiliar para dizer já foi inserido luz.
int on[4][4];
// variável auxiliar para verificar se no LED foi inserido luz.
int value;
void setup()
{
_SFR_IO8(0x35) |= 4;
_SFR_IO8(0x35) |= (1<<4);
// inicializa as portas e a matriz auxiliar em 0.
for(int i = 0; i < 4;i++)
{
pinMode(anodos[i],OUTPUT);
}
for(int a = 0;a < 4;a++)
{
pinMode(catodos[a],OUTPUT);
}
for(int i = 0;i < 4;i++)
for(int j = 0;j < 4;j++)
on[i][j] = 0;
// inicia todas as portas em ALTO.
for(int a=0;a<4;a++)
{
digitalWrite(anodos[a],HIGH);
}
for(int a=0;a<4;a++)
23
{
digitalWrite(catodos[a],HIGH);
}
Serial.begin(9600);
}
void loop()
{
// dois 'for' para percorrer a matriz
for(int a = 0; a < 4; a++)
{
for(int c = 0; c < 4; c++)
{
value = 0; // a cada passagem do for o value volta a ser zero.
if(on[a][c] == 0) // se o LED da posição a, c não foi inserido
luz entra no if.
{
// inicializa todos os anodos em modo de entrada que zera
uma alta impedancia, menos o qual está sendo utilizado no LED
// isso serve para que nenhuma corrente atrapalhe o
descarregamento do LED.
for(int k = 0; k<4; k++)
{
if( k != a)
{
pinMode(anodos[k],INPUT);
}
}
// inicializa o anodo da posição em BAIXO, para carregar o
LED, já que o catodo
// está em ALTO, não precisa ser alterado.
digitalWrite(anodos[a], LOW);
// inicializa o catodo do LED em input para medir o
descarregamento
pinMode(catodos[c],INPUT);
// while que executa até o valor da porta do catodo ser
zero.
while(digitalRead(catodos[c]) != 0)
{
// incrementa o value para analisar o valor da porta
value++;
// se o valor for maior que 43 sai do while, porque
para verificar se foi inserido luz ou não
// o valor do value tem que ser menor do que 40, então
não é necessário um valor maior do que isso.
if(value > 43)
{
break;
}
}
// o anodo volta a estar em ALTO
digitalWrite(anodos[a], HIGH);
24
// catodo volta a estar no modo de saída
pinMode(catodos[c],OUTPUT);
// coloca todos os catodos que estavam em modo de entrada
(alta impedância) para modo de saída.
for(int k = 0; k<4; k++)
{
pinMode(anodos[k],OUTPUT);
}
// compara se o valor do value é menor do que 40, se for
quer dizer que luz foi inserida no LED.
if( value < 40)
{
// muda o valor da posição do LED na matriz auxiliar
para 1 para que ele possa ser ligado.
on[a][c] = 1;
}
}
// caso não seja 0 no if entra no else, fazemos isso para
acender o LED.
else
{
// para que não haja outros LEDs sendo ligado, colocamos
todos os outros anodos em BAIXO
for(int k = 0; k<4; k++)
{
if( k != a)
{
digitalWrite(anodos[k],LOW);
}
}
// liga o LED por um instante de tempo, o suficiente para ver que
está completamente aceso e depois o apaga
digitalWrite(anodos[a], HIGH);
digitalWrite(catodos[c], LOW);
delay(0.99999998);
digitalWrite(anodos[a], HIGH);
digitalWrite(catodos[c],HIGH);
}
}
}
}
Download