Display de 7 segmentos no Arduino com multiplexação
No post de hoje, vamos aprender a trabalhar com os displays de 7 segmentos, esse tipo de display é muito comum é uma vasta gama de equipamentos eletrônicos. As vantagens desse display são o seu baixo custo, simplicidade de implementação, excelente resistência mecânica e excelente visibilidade. Como exemplo, a partir desse tipo de display podemos implementar uma interface homem-máquina, um termômetro digital, um voltímetro, um contador de pulsos e outras aplicações.
Display de 7 segmentos
O display de 7 segmentos possui um formato característico, apresentado na figura 2. Para os displays desse tipo, existem diversas tecnologias que podem ser empregadas em sua fabricação, o que confere diferentes características, como por exemplo, os displays baseados em LED, cristal líquido (LCD), filamento, e eletromecânico.
Funcionamento de um display de 7 segmentos de LED
Um display de 7 segmentos de LED pode apresentar duas configurações básicas. Catodo comum, onde o catodo de cada LED do display é interligado, desta forma, tem-se um ponto comum para todos os LED’s do display, o mesmo ocorre para os displays de anodo comum. Lembre-se que para polarizar um LED de maneira correta temos:
- Anodo do LED: terminal positivo.
- Catodo do LED: terminal negativo.
A figura 3, ilustra o arranjo típico dos LEDs, para os dois tipos de display.
Cada segmento do display é identificado por uma letra, conforme a figura 2. Portanto, devemos combinar quais segmentos (a,b,c,d,e,f,g, dp) iremos polarizar a fim de formar um número, letra ou sinal. A tabela 1 indica as combinações de segmentos para formar os números de 0 a 9.
NÚMERO | SEGMENTOS DO DISPLAY | ||||||
a | b | c | d | e | f | g | |
0 | on | on | on | on | on | on | off |
1 | off | on | on | off | off | off | off |
2 | on | on | off | on | on | off | on |
3 | on | on | on | on | off | off | on |
4 | off | on | on | off | off | on | on |
5 | on | off | on | on | off | on | on |
6 | on | off | on | on | on | on | on |
7 | on | on | on | off | off | off | off |
8 | on | on | on | on | on | on | on |
9 | on | on | on | on | off | on | on |
Observe que para controlar apenas um único display desse tipo é necessário controlar 7 LEDs de forma individual, portanto para cada digito, necessitamos de 7 conexões. Agora, imagine controlar 4 displays desse tipo, para contar de 0 até 9999, teríamos que dispor de 28 conexões e caso queria controlar o ponto decimal de cada display, esse número de conexões cresce para 32. Observe que controlar mais de um display desse tipo com um microcontrolador se torna inviável, pois, seria necessário um microcontrolador com um grande número de portas I/O para controlar apenas um conjunto de displays. No entanto, existe uma excelente técnica para controle de displays de 7 segmentos que reduz consideravelmente o número de conexões necessárias.
Multiplexação de displays de 7 segmentos, uma técnica muito interessante
A multiplexação de displays de 7 segmentos, é uma técnica utilizada em qualquer aparelho que use dois ou mais displays desse tipo, por exemplo, um forno de micro-ondas possui um display de 7 segmentos com 4 dígitos. As principais vantagens, desta técnica, são o menor consumo de energia pelo circuito e um menor número de conexões entre o display e o microcontrolador.
A multiplexação consiste, basicamente, em ligar todos os segmentos de cada display em paralelo, deste modo, perfazendo um barramento. O terminal em comum aos segmentos de cada display, ânodo ou cátodo, é controlado de maneira independente a fim de que cada display possa ser acionado em um instante de tempo específico. Ou seja apesar de todos os displays, em um barramento, receberem os dados para cada segmento (a,b,c,d,e,f,g), apenas um único display é acionado por vez, sendo assim, é possível apresentar, em cada display do barramento, um número diferente.
A técnica de multiplexação ocorre de maneira muito rápida, isto é, a velocidade com que cada display é acionado é superior ao nosso limite de percepção da visão, este fenômeno é conhecido como persistência da visão. Portanto, enxergamos como se todos os displays do barramento estivessem acesos ao mesmo tempo, mas como cada display é acesso e em sequência apagado, é possível ter um número em cada display. Observe que essa técnica só é possível por conta do fenômeno de persistência da visão.
Multiplexando 4 displays de 7 segmentos com o Arduino
Agora que você já sabe o que é a multiplexação de displays e como ela funciona, vamos montar um circuito prático a fim de comprovar na prática como tudo isso funciona.
Lista de materiais
- Arduino UNO R3.
- protoboard 830 furos.
- 4 displays de 7 segmentos de catodo comum.
- diversos jumpers MxM (macho x macho).
- 4 resistores de 330 Ω.
Diagrama de montagem
Observe a figura 4 com o diagrama de montagem. Nesta etapa é importante executar a montagem com calma para evitar fazer conexões erradas, sobretudo conexões que possam gerar curto-circuito entre os terminais do seu Arduino.
Código fonte
Concluída a montagem do protótipo, na sua protoboard, é a hora de carregarmos o código fonte para testar a montagem. Copie e cole esse código fonte na IDE do Arduino, não se esqueça de baixar, no gerenciador de bibliotecas, a biblioteca SevSeg. Após carregar o código o seu Arduino deve contar no display de 0 ate 8888 e reiniciar a contagem.
/* Copyright 2017 Dean Reading */ #include "SevSeg.h" SevSeg sevseg; //Instantiate a seven segment controller object void setup() { byte numDigits = 4; byte digitPins[] = {2, 3, 4, 5}; byte segmentPins[] = {6, 7, 8, 9, 10, 11, 12, 13}; bool resistorsOnSegments = false; byte hardwareConfig = COMMON_CATHODE; bool updateWithDelays = false; bool leadingZeros = false; bool disableDecPoint = true; sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments, updateWithDelays, leadingZeros, disableDecPoint); sevseg.setBrightness(85); } void loop() { static unsigned long tempo = millis(); static int contador = 0; if (millis() - timer >= 500) { timer += 500; contador++; if (contador == 8888) { contador=0; } sevseg.setNumber(contador, 1); } sevseg.refreshDisplay(); }
Não deixe de tirar suas duvidas, aguarde os próximos posts do blog da Módulo Eletrônica. Aproveite para seguir o Instagram da nossa loja @moduloeletronica.
Rafael Valsani Leme Passos
Sobre o autor: Rafael Valsani Leme Passos é técnico em eletrônica pela ETEC Bento Quirino e graduando em Engenharia de Alimentos pela Universidade Estadual de Campinas.
VEJA TAMBÉM
Regador automático de plantas com Arduino
Aprenda neste artigo, como automatizar a rega de suas plantas, utilizando o Arduino NANO. Este projeto, além do baixo custo, pode ser montado em menos de uma hora e irá garantir que as suas plantas sempre tenham água disponível, garantido um crescimento adequado e...
Datalogger com cartão SD. Registre: temperatura, umidade, luminosidade e tensão)
Neste post, vamos aprender a como montar datalogger, para registrar em um cartão SD, temperatura, umidade relativa, tensão e nível de luminosidade. Esse tipo de dispositivo é extremamente útil para fazer análises de fenômenos que dependem do tempo. Por exemplo,...
Fita de LEDs RGB endereçáveis WS2812B e a biblioteca fastLED
No post de hoje, vamos conhecer a fita de LEDs WS2812B endereçáveis e como utilizá-la com o Arduino UNO. Essa fita de LEDs se destaca, em relação as outras do mercado, pelo fato de que seus LEDs podem ser controlados de maneira individual, permitindo que o...
NEWSLETTER
Assine nossa newsletter e receba as novidades.
0 comentários