Anda di halaman 1dari 13

CENTRO UNIVERSITÁRIO DE BELO HORIZONTE

TRABALHO DE ELETRÔNICA DIGITAL

ALUNOS:

LEONARDO MARCELINO MARTINS


RAFAEL LOPES ALMEIDA
VICTOR HUGO SIDIRLEI FERREIRA

BELO HORIZONTE,
24/06/2018
1. INTRODUÇÃO
No decorrer dos anos, os dispositivos eletrônicos vem assumindo um posição considerável no
nosso dia a dia em diversas aplicações, sendo no ramo da comunicação ou até mesmo em
sistemas mais sofisticados. Este avanço está ocorrendo em diversas áreas da sociedade,
variando desde um aparelho celular à um processo industrial, e independente do ramo de
atuação, a maioria dessas tecnologias nos traz uma maior flexibilidade, aplicabilidade,
eficiência, entre diversos outros fatores impactantes.

Com base nos resultados obtidos na implementação destes componentes/equipamento


eletrônico, a automatização de processos “manuais” está se tornando um foco das inovações,
e o aperfeiçoamento se torna uma meta para que o produto seja superado por uma versão
melhorada em aspectos consideráveis.

Um exemplo, é a criação da trena digital, equipamento abordado neste artigo, que consegue
aferir medições que podem chegar a longas distâncias com uma enorme facilidade quando se
compara à sua versão antiga, já que demonstra uso simples e o resultado possui uma
eficiência bastante satisfatória.
2. DESENVOLVIMENTO
2.1. TEMA PROPOSTO E ADEQUAÇÕES

O tema escolhido como referência para a construção do projeto foi: decodificadores. Nele o
objetivo era implementar um circuito digital que utilize pelo menos dois decodificadores
distintos na aplicação do circuito, e o desafio proposto está demonstrado abaixo.

Desafio: Acionamento de três displays de 7-segmentos usando Decodificadores 2:4 e


BCD conforme mostrado na Figura 3.1 de forma que sejam usadas apenas quatro vias (ou
quatro bits do código binário para ser convertido em decimal) compartilhadas para acionar
cada um dos três displays. Cada display será selecionado pelo decodificador 2:4 com os
correspondentes bits em ABCD (entradas do decodificador BCD) para representar o
número no qual se deseja exibir. Por exemplo, ao acionar o display à esquerda, a saída ‘3’
do decodificador 2:4 deverá acioná-lo e as entradas ABCD deve estar com os valores
binários correspondentes ao dígito decimal no qual se deseja exibi-lo. Em seguida, a saída
‘2’ do decodificador 2:4 acionará o display do meio e suas correspondentes entradas
ABCD devem estar atualizadas para que o número nesse display corresponda com o
aquele que se deseja exibir. Por fim, aplica-se a mesma lógica ao display da direita.

Figura 1 – Circuito de acionamento de três displays de 7-segmentos usando a linha binária


para os Decodificadores BCD compartilhada.

Para a construção do nosso produto utilizamos a mesma ideia, onde que exibimos informações
por meio de dois displays 7 seguimentos, juntamente com um decodificador BCD (CD4511)
para cada um, porém, no lugar do decodificador n:m, decidimos utilizar um demultiplexador
(74LS155).

Com o intuito de complementar o circuito base, optamos por incluir um contador, inserido
internamente no microcontrolador (arduino), onde que este contador será controlado por um
sistema manual, controlado por botões que irão somar, subtrair ou resetar os valores no
display, e um sistema automático, que é composto por um sensor ultrassônico (HC-SR04).

Resumindo todas as informações acima, o projeto possui dois modos de operação


(manual/automático) em que ambos controlam os valores que irão aparecer nos displays que
estão interligados para realizar uma contagem de 0 à 99, logo, este no modo automático
poderá ser comparado à uma trena digital, sendo que os detalhes deste funcionamento serão
abordados futuramente neste trabalho.

Com a finalidade de demonstrar o formato do circuito, foi disponibilizado abaixo um


esquemático, montado no software multisim, com todos os componentes, conexões e
alimentações utilizadas.

Figura 2 – Esquema no software multisim de conexão entre todos os componentes do projeto


Fonte: Elaborado pelo autor, 2018.
2.2. COMPONENTES
2.2.1. ARDUINO

O Arduino é uma plataforma eletrônica de código aberto baseada em hardware e software de


fácil acesso e manuseio. Seu Hardware traz entradas e saídas programáveis, conforme a
necessidade do projeto, através de um aplicativo próprio de linguagem JAVA simplificada.

O Arduino traz entradas digitais e analógicas, proporcionando uma grande variedade de


aplicações para seu usuário.

Este artigo apresentará a utilização de uma Arduino UNO para a leitura de um sensor
ultrassônico, convertendo os dados lidos para valores binários e levando-os para a saída
alimentando um decodificador BCD que fornecera os valores adequados à displays de 7
segmentos.

2.2.2. DISPLAY 7 SEGMENTOS

O display de 7 segmentos é um componente composto de 7 LEDs dispostos de maneira a se


formar os numerais compreendidos de 0 a 9 utilizando de suas possíveis combinações de
LEDs acessos e apagados.

O display de 7 segmentos é muito utilizado em relógios, mostradores de níveis de um


determinado recipiente, dentre outras aplicações que sejam necessárias as informações dadas
em numerais.

Para o seu correto funcionamento, é necessário o conhecimento de suas possíveis


combinações e ligações corretas, entretanto, além do tempo desprendido para fazer tais
ligações individuais, o espaço de aplicação deste display, bem como o circuito responsável
pelo seu funcionamento seriam desvantajosos se visto a complexidade e a quantidade de
ligações necessárias. Visando a redução destes contratempos listados, utiliza-se mais
comumente o CI CD4511, um Circuito Decodificador BCD de entrada binária e saída
especificamente para displays de 7 segmentos com catodo comum.

Figura 3– 7 Seguimentos catodo comum

2.2.3. CI 4511

O CI CD4511 é um Circuito Decodificador BCD de 4 bits, para aplicação em displays de 7


segmentos com catodo comum que utiliza a tecnologia CMOS (Complementary Metal-Oxide-
Semiconductor). Recebe em seus pinos de entrada (ABCD) os dados em sinal binário,
internamente os decodifica em decimal.

Abaixo vemos a relação entre suas entradas e saídas:

Figura 4– Entradas e saídas:do CI CD4511

Para a utilização deste Circuito Decodificador em projetos, é necessário o conhecimento de


suas características construtivas. Cada fabricante fornece o Datasheet específico para seu
componente. Varia-se a tensão e temperatura de operação, mas se mantém padrão a pinagem
com CI.

Figura 5– Pinagem do CI CD4511

O pino LT (Lamp Test) corresponde a uma entrada de teste de todos os segmentos do display
em sua saída. Devido a sua entrada conter um inversor, para que o funcionamento do CI se
normalize, basta manter este pino com sinal alto.
O pino BI (Blank Input) corresponde a uma entrada que apaga todos os segmentos do display
em sua saída. Devido a sua entrada conter um inversor, para que o funcionamento do CI se
normalize, basta manter este pino com sinal alto.
O pino LE (Latch Enable), corresponde a uma entrada que congela o último valor apresentado
pelo display quando se recebe um valor alto. Para que o funcionamento do CI se normalize,
basta manter este pino em sinal baixo.
2.2.4. CI 74LS155

Multiplexadores e Demultiplexadores são sistemas que processam de maneira digital as


informações a eles concedidas. Através de sinais lógicos fornecidos em suas chaves seletoras
pode-se alterar a entrada ou saída do circuito.

 Multiplexador

Um multiplexador consiste em um sistema onde há várias entradas e apenas uma saída,


através da qual será apresentado o valor da entrada selecionada pela linha de controle (Ver na
figura abaixo). A linha de controle funciona como um tipo de chave seletora que por meio de
sinais lógicos em formato binário, selecionará a entrada desejada.

Figura 6– Multiplexador

 Demultiplexador

Um Demultiplexador consiste em um sistema onde há várias saídas e apenas uma entrada e,


assim como o Multiplexador, apresenta uma linha de controle. Em um Demultiplexador, a linha
de controle fica responsável por selecionar qual saída irá receber a informação presente na
entrada.

Figura 7– Demultiplexador
 DM74LS155 - Duplo Demultiplexador 1 de 4

Este circuito integrado TTL é apresentado em invólucro DIL de 16 pinos, conforme mostra a
figura 8.

Figura 8– CI DM74LS155

O CI DM74LS155 conta com 2 demultiplexadores de 1 entrada e 4 saídas cada, e linhas de


controle independentes. Com este CI, pode-se chavear e alterar a saída para a qual a
informação da entrada será passada.

2.2.5. Sensor Ultrasônico

O sensor ultrassônico consiste em um emissor e um receptor de ondas sonoras em frequências


altas. As ondas provenientes do emissor quando atingem uma barreira à sua propagação, são
refletidas e recebidas pelo receptor, o qual é reponsável pela detectar a sua amplitude e assim,
analisar a distância do obstáculo,

Seu funcionamento se assemelha ao sonar um submarino, Enquanto o sonar é principalmente


utilizado debaixo da água, os transceptores de ultrassom podem ser utilizados no ambiente
terrestre, tendo o ar como meio de transmissão.

Figura 8– sensor ultrassônico HC-SR04


2.3. FUNCIONAMENTO

O trabalho contempla dois modos de funcionamento. O primeiro modo permite que seja
implementada a funcionalidade de trena digital, utilizado o arduino juntamente com o sensor
ultrassônico e mostrando a distancia encontrada em dois displays de 7 seguimentos.

O segundo modo que o trabalho contém é um contador utilizando três botões, um para
acréscimo, outro para decréscimo e um ultimo para reset na contagem. O valor atual da
contagem é exibido nos displays em tempo real.

Para que pudéssemos utilizar o arduino foi necessário o desenvolvimento de um algoritmo de


controle que será disponibilizado no apêndice deste trabalho.

É importante salientar que os displays são acionados pelos elementos de eletrônica digital,
demultiplexador e decodificadores. O arduino apenas envia sinais de nível lógico alto ou baixo.
3. CONCLUSÃO

Conclui-se que, o trabalho foi criado conforme o solicitado pelo professor, englobando todos os
passos, desde pesquisa a implementação. O circuito funcionou de maneira anômala no que
condiz ao funcionamento do CI BD4511 em conjunto com o arduino.

Os integrantes supõem que o arduino não possui corrente suficiente para comandar todos os
elementos do circuito, optando assim por apresentar outro protótipo em funcionamento.

O protótipo apresentado será um contador, como apresentado neste trabalho, porem utilizando
elementos da eletrônica digital pura.
4. REFERENCIA BIBLIOGRÁFICA

Demultiplexador - http://www.newtoncbraga.com.br/index.php/como-funciona/1214-art0159 e
www.fairchildsemi.com 24/06/18

CD 4511 e Display de 7 segmentos - https://www.embarcados.com.br/cd4511-decodificador-


display-7-segmentos/ 20/06/18 (Imagens de referência e textos)

Arduino - https://www.arduino.cc/en/Guide/Introduction 24/06/18

Sensor ultrassônico - http://www.newtoncbraga.com.br/index.php/como-funciona/5273-art691


e https://www.mecanicaindustrial.com.br/598-o-que-e-um-sensor-ultrassonico/ 20/04/18

Display de 7 segmentos - Http://www.prof2000.pt/users/lpa 24/06/18

Notas de aula;

TOCCI, Ronald J. Sistemas digitais: princípioa e aplicações. 11.ed. São Paulo: Pearson
Education do Brasil, 2011. 817p. ISBN 9788576059226.
5. APÊNDICE
5.1. ALGORITMO DE CONTROLE
/* Titulo: Type 29
Autor: Rafael Lopes Almeida
email: fael.rlopes@gmail.com
Data: 03/06/2018
*/
#include <Ultrasonic.h>
#define pino_trigger 4
#define pino_echo 5
Ultrasonic ultrasonic(pino_trigger, pino_echo);

#define Sel 3 // Seleção de Demux


#define A 6 // BCD A
#define B 7 // BCD B
#define C 8 // BCD C
#define D 9 // BCD D

#define mode 10 // Pino chave seletora


#define but1 11 // Pino botão 1 (UP)
#define but2 12 // Pino botão 2 (DOWN)
#define but3 13 // Pino botão 3 (RESET)

float cmMsec; // Variavel com o valor da distancia


long microsec;

int num; // Variavel da rotina]


int nubr; // Variavel da rotina
int d; // Variavel das Dezenas
int u; // Variavel das Unidades

int SW; // Variavel Seleção de modo


int cont; // Variavel Contador

void setup() //Configura pinos para saida


{
pinMode(A, OUTPUT),
(B, OUTPUT),
(C, OUTPUT),
(D, OUTPUT),
(Sel, OUTPUT);
pinMode (mode, INPUT),
(but1, INPUT),
(but2, INPUT),
(but3, INPUT);
}

void number(int nubr) // Rotina que converte numero em BCD


{
switch (nubr)
{
case 0:
digitalWrite (A, LOW);
digitalWrite (B, LOW);
digitalWrite (C, LOW);
digitalWrite (D, LOW);
break;

case 1:
digitalWrite (A, LOW);
digitalWrite (B, LOW);
digitalWrite (C, LOW);
digitalWrite (D, HIGH);
break;

case 2:
digitalWrite (A, LOW);
digitalWrite (B, LOW);
digitalWrite (C, HIGH);
digitalWrite (D, LOW);
break;

case 3:
digitalWrite (A, LOW);
digitalWrite (B, LOW);
digitalWrite (C, HIGH);
digitalWrite (D, HIGH);
break;
case 4:
digitalWrite (A, LOW);
digitalWrite (B, HIGH);
digitalWrite (C, LOW);
digitalWrite (D, LOW);
break;

case 5:
digitalWrite (A, LOW);
digitalWrite (B, HIGH);
digitalWrite (C, LOW);
digitalWrite (D, HIGH);
break;

case 6:
digitalWrite (A, LOW);
digitalWrite (B, HIGH);
digitalWrite (C, HIGH);
digitalWrite (D, LOW);
break;

case 7:
digitalWrite (A, LOW);
digitalWrite (B, HIGH);
digitalWrite (C, HIGH);
digitalWrite (D, HIGH);
break;

case 8:
digitalWrite (A, HIGH);
digitalWrite (B, LOW);
digitalWrite (C, LOW);
digitalWrite (D, LOW);
break;

case 9:
digitalWrite (A, HIGH);
digitalWrite (B, LOW);
digitalWrite (C, LOW);
digitalWrite (D, HIGH);
break;
}
}

void numbertodisplay(int nun) // Rotina que converte numero em BCD


{
d = (nun / 10); // Pega parte das Dezenas
u = (nun - (d * 10)); // Pega parte das Unidades

number(d); // Converte para BCD


digitalWrite (Sel, LOW); // Seleciona Display 1

number(u); // Converte para BCD


digitalWrite (Sel, HIGH); // Seleciona Display 2
}

void loop()
{
if (digitalRead(mode) == HIGH)
{
SW = 1;
}
else if (digitalRead(mode) == LOW)
{
SW = 0;
}

switch (SW)
{
case 0: //TRENA
microsec = ultrasonic.timing(); // Ultrasom
cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM); // Ultrasom em CM
numbertodisplay(cmMsec); // Converte para BCD

break;

case 1: //CONTADOR
if (digitalRead(but1) == HIGH) // Incremento de Contador
{
cont = ++cont;
numbertodisplay(cont); // Converte para BCD

if (cont == 99)
{
cont = 0;
numbertodisplay(cont); // Converte para BCD
}
}

else if (digitalRead(but2) == HIGH) // Diminuição do contador


{
cont = --cont;
numbertodisplay(cont); // Converte para BCD

if (cont < 0)
{
cont = 0;
numbertodisplay(cont); // Converte para BCD
}
}

else if (digitalRead(but3) == HIGH) // Reset do contador


{
cont = 0;
numbertodisplay(cont); // Converte para BCD
}
break;
}
}