Escolha uma Página

Display de 7 segmentos no Arduino com multiplexação

25 set - 2020

 

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.

Figura 2: Observe que cada segmento é identificado por uma letra, essa informação é muito importante ao trabalhar com esse tipo de display.

 

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.

Figura 3: Arranjos típicos para displays de 7 segmentos de LED, ânodo comum ou cátodo comum.

 

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ÚMEROSEGMENTOS DO DISPLAY
abcdefg
0ononononononoff
1offononoffoffoffoff
2ononoffononoffon
3ononononoffoffon
4offononoffoffonon
5onoffononoffonon
6onoffononononon
7onononoffoffoffoff
8ononononononon
9ononononoffonon

 

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

 

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.

Figura 4: Esquema de montagem do circuito na protoboard.

 

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

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. 

0 comentários

Enviar um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Facebook

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...

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.

ATENDIMENTO

(19) 3579-7189