Projetar um circuito combinacional pode ser um pouco simples, mas passar o projeto do papel para o mundo real pode ser um pouco complicado a princípio. Portanto, vamos projetar um sistema digital e analisar as etapas necessárias para montá-lo.
Na aula anterior, aprendemos um método para facilitar a criação de um circuito combinacional.
Descrição do problema
A ideia deste post é criar e montar um sistema digital simples utilizando os CIs das portas lógicas. Para isto, considere o seguinte exemplo que criei:
É preciso monitorar alguns parâmetros de um reservatório/tanque de água como: temperatura, pressão e nível. Para isto, temos os seguintes indicadores:
- Temperatura interna > 20ºC. Será chamado de T20.
- Temperatura interna > 50ºC. Será chamado de T50.
- Pressão interna normal. Será chamado de PN.
- Boia superior. Será chamado de BS.
Veja a imagem abaixo que ilustra a situação:
Os indicadores serão as entradas do nosso sistema digital e eles possuirão lógica positiva. Isto é:
- T20 é 1 se a temperatura for maior que 20ºC.
- T50 é 1 se a temperatura for maior que 50ºC.
- PN é 1 se a pressão estiver normal.
- BS é 1 se o nível da água estiver na boia superior.
Por fim, é necessário criar um sistema digital com as seguintes características:
- O tanque opera em estado normal se a temperatura interna estiver entre 20º e 50ºC e se a pressão interna estiver normal.
- Deve haver uma saída digital ligada a uma bomba hidráulica. A bomba deve ser ligada se o estado do tanque for normal e se o tanque não estiver cheio (BS em 0).
- Deve haver outra saída ligada a uma luz de emergência indicando que o sistema não está em estado normal.
A primeira saída será chamada de B e a segunda de E.
Projetando o circuito combinacional
Para projetar o circuito combinacional corretamente, é fundamental fazer uma boa interpretação dos requisitos. Caso contrário, a tabela-verdade pode ser preenchida erroneamente. E, por consequência, o sistema ficará errado.
Como eu criei e descrevi o problema, fica óbvio para mim entender o que é para ser feito. Mas pode não ser o mesmo para você. Portanto, leia o tópico anterior com calma para entender como projetar este sistema.
Desconsiderando a interpretação, projetar o sistema utilizando o mapa de Karnaugh não costuma ser complicado. Portanto, não pretendo explicar todos os detalhes do processo, já que isto foi explicado na aula anterior.
Criando tabela-verdade
Conforme vimos, teremos, então, 4 entradas e 2 saídas. Farei a ordem das entradas na tabela de acordo com a ordem em que elas foram apresentadas: T20, T50, PN e BS.
Para preencher a tabela é importante obedecer às características do sistema. Por exemplo: se a temperatura interna está entre 20 e 50ºC, quer dizer que T20 é 1 e T50 é 0. Se combinar esses estados com PN=1, teremos o estado normal do tanque.
Um detalhe importante a ser mencionado é que: se a temperatura interna for maior que 50ºC, obrigatoriamente ela será maior que 20ºC. Portanto, as linhas da tabela onde T20=0 e T50=1 (abaixo de 20º e acima de 50º) podem ser tratadas como don’t care (X), já que são condições impossíveis de ocorrer.
Entretanto, você pode considerá-las para indicar uma emergência no sistema. Isso porque, se isto acontecer no mundo real, possivelmente quer dizer que um dos sensores estragou. E este tipo de informação é bastante relevante.
Enfim, abaixo está a tabela-verdade preenchida para as duas saídas. Em caso de dúvida, releia as características do sistema.
Criando mapas de Karnaugh
Para criar o mapa de Karnaugh, resolvi agrupar as entradas da seguinte forma: T20 e T50; PN e BS. Mas existem outras possibilidades sim.
E é necessário criar um mapa para cada saída. Desta forma, os mapas serão tabelas 4×4.
Saída B (Bomba)
Neste mapa, não é possível fazer nenhum agrupamento das saídas, pois, em só um quadrado, ela é 1.
Os quadrados com don’t care podem ser ignorados, mas também poderiam ser utilizados para agrupar as saídas. Como não dá para agrupar o 1 com algum don’t care, resta apenas extrair a expressão naquele quadrado:
Logo:
B = T20.(¬T50).PN.(¬BS)
Saída E (Emergência)
Já neste mapa, existem diversos agrupamentos que podem ser feitos. Lembrando que só podem ser duplas, quartetos, octetos… (baseados na potência de 2).
Veja os agrupamentos que fiz na imagem abaixo com a ajuda dos quadrados com don’t care (3 octetos). Eles não são redundantes, pois cada um engloba 1’s que não são englobados por outros.
Como os agrupamentos englobam diversas condições diferentes, é possível eliminar muitas entradas de uma expressão. Para explicar melhor, vamos considerar o agrupamento verde:
Dentro dele, as variáveis T20 e T50 mudam de valor, pois ele engloba todas as linhas. Além disto, a variável BS também muda de estado. Desta forma, a única entrada que mantém seu valor é PN. E, como PN é 0, ela deve ser barrada para obter a expressão final do agrupamento: (¬PN).
Para obter as outras expressões, basta seguir a mesma lógica. E por fim, para obter a expressão final da saída E, é só somar todas as expressões:
E = (¬T20) + T50 + (¬PN)
Desenhando o circuito combinacional
Antes de fazer a montagem é interessante fazer um desenho do circuito combinacional com as ligações entre as portas lógicas, as entradas e as saídas.
Para este propósito, vou utilizar o software Logisim, que permite inclusive simular o circuito.
Vou desenhar o circuito utilizando apenas portas lógicas de 2 entradas. Isto porque, os CIs mais comuns das portas lógicas são os com apenas 2 entradas. Veja o resultado abaixo:
O circuito funcionou como o esperado na simulação e, portanto, podemos passar para a montagem.
Escolhendo os CIs das portas lógicas
É extremamente importante ler a aula sobre os CIs das portas lógicas para entender o que eles são.
Para fazer a montagem, é importante conhecer quais são os CIs disponíveis para utilizarmos e como a ligação com eles é feita. Para isto, existe esta lista na Wikipedia mostrando todos os CIs da série 74XXX que é da família TTL.
Você pode escolher o CI de qualquer série ou família que desejar. No meu caso, optei pela série 74XXX, pois são fáceis de achar, são recomendados para aplicações simples e eu já possuía alguns no meu estoque.
Depois da sua escolha, você terá que ficar atento às características elétricas dos CIs da família (fan-out, níveis de tensão etc), conforme foi exposto na aula 4.2. E é importante ler o datasheet dos CIs para verificar outras informações mais específicas de cada um.
De qualquer forma, vou utilizar os CIs:
- 7404 – 6 portas NOT.
- 7408 – 4 portas AND de duas entradas.
- 7432 – 4 portas OR de duas entradas.
Conhecendo os CIs
Após escolher o CI, é importante recorrer ao datasheet (ou ao Google) para verificar a configuração de seus pinos. Para o meu caso, os CIs seguem o padrão de serem alimentados com 5v pelo pino 14 e com GND pelo pino 7.
Enfim, as imagens abaixo mostram como as portas lógicas estão ligadas dentro dos CIs, além de mostrar os pinos de alimentação:
Como o fan-out da família TTL é 10, não precisarei me preocupar com isto, pois cada CI está ligado a apenas um outro (saída de um na entrada do outro).
E o tempo de propagação neste caso não é um fator importante. Mesmo que fosse, ele está na casa dos nanosegundos, que é um tempo extremamente pequeno.
Montando o circuito combinacional
Como estamos montando um exemplo, pretendo fazer a montagem em uma protoboard. Entretanto, é possível criar o layout do circuito e montá-lo em uma placa de circuito impresso para ter um resultado mais profissional.
Se você não sabe utilizar uma protoboard, recomendo ler este post.
As ligações na protoboard serão feitas com fiozinhos retirados de um cabo de rede. Estes fios são bastante úteis para criar ligações em protótipos, como este caso. Veja um cabo aberto na imagem abaixo:
E, pretendo seguir um padrão de cor dos fios para ligação:
- Vermelho: 5V.
- Azul: GND.
- Verde: Entradas.
- Marrom: Saídas.
- Branco e marrom: Interligação entre CIs.
Desta forma, fica mais fácil de montar e identificar erros de ligação.
O ideal também seria criar um esquemático do circuito combinacional com as ligações apropriadas entre os componentes, mas não farei isso, pois o circuito é relativamente simples.
Entradas
Para simular as entradas, utilizei botões que foram retirados de mouses antigos. Entretanto, você pode usar qualquer push-button que encontrar.
A ideia do botão é que, ao ser pressionado, ele mande um sinal de nível alto (5V) para as portas lógicas apropriadas. Para isto, basta liga-lo, de um lado, nas portas lógicas, e, do outro lado, no 5V.
Além disto, para que a entrada não fique flutuando (estado indeterminado) quando o botão não for pressionado, é necessário colocar um resistor de pull-down em cada entrada. Veja a imagem abaixo para entender.
No início da minha montagem eu acabei invertendo a lógica anterior: ligando o botão no GND e colocando um resistor de pull-up (10kΩ). Mas, isto foi corrigido posteriormente. A imagem abaixo mostra a ligação dos botões com este erro:
Saídas
Para simular as saídas, utilizei LEDs: um azul para a saída da bomba e um vermelho para a saída de emergência.
O positivo dos LEDs foi ligado na saída dos CIs e o negativo foi ligado em um resistor de 220Ω. O resistor, por sua vez, foi ligado no GND.
Aprenda a calcular o resistor correto pro LED aqui.
Veja a ligação abaixo:
CIs
Depois de ter as entradas e as saídas com as devidas ligações e resistores, recomendo passar para os CIs.
Para começar a ligação, posicione os CIs e ligue primeiro os fios de alimentação. Veja a figura abaixo:
Por fim, é só realizar o restante das ligações: entre as entradas e os CIs; entre os próprios CIs; e entre os CIs e as saídas.
Resultados
Após fazer todas as ligações apropriadamente, alimentei o circuito para verificar se o mesmo estava funcionando.
A princípio ele não se comportou como o esperado. Como eu utilizei cores diferentes para indicas saídas, entradas etc, foi fácil verificar que o circuito estava correto.
O problema foi que esqueci de interligar a barra de alimentação esquerda com a direta do circuito (veja imagem para entender). Em algumas protoboards, esta ligação já vem feita e eu estava contando com isto.
Caso a sua montagem apresente algum erro, uma boa prática é testar a continuidade das ligações com um multímetro. Além disto, verificar os níveis de tensão da alimentação e da saída das portas lógicas também ajuda a identificar o erro.
Enfim, as duas imagens abaixo mostram a montagem completa, incluindo etiquetas nas entradas e saídas que coloquei para facilitar o entendimento do circuito.
Adiante está o vídeo demonstrativo do circuito combinacional.
Observações finais
Apesar da ideia do sistema ser relativamente simples, o processo de montagem do circuito na prática é um pouco complicado a princípio (e demorado). Entretanto, a medida que você vai aprendendo como ligar cada CI, o processo fica mais claro.
E, agora que você já é capaz de montar circuitos combinacionais, não há necessidade de recorrer sempre a um microcontrolador para criar um sistema digital.
Enfim, para finalizar esta parte de circuito combinacional, veremos, na próxima aula, a universalidade das portas NAND e NOR.
Universalidade das portas NAND e NOR – Aula 6.3 – ED
Excelente essa sequencia de posts sobre eletrônica digital, o conteúdo é muito bom e ao mesmo tempo simples de entender, parabéns pelo trabalho e obrigado por compartilhar!
Caramba, muito obrigado pelo comentário, Gustavo. É bom saber que o curso está ajudando. É por causa de comentários iguais ao seu que fico motivo a continuar, então valeu!
Ótima aula. Simples e bem explicado. Me fez viajar no tempo da escola técnica na Resende Rammel. aulas de Circuitos Digitais.
Estou gostando muito desse site.
Obrigado.
Olá, José. Caramba, que legal! Fico feliz de ouvir sua experiência positiva com o site. Agradeço o comentário e espero poder continuar ajudando! Abraço.
Parabéns! Excelente post. O que seria necessário fazer no sensor de temperatura ds18b20 para utilizar nesse seu circuito?
Muito obrigado, Felipe! Então, as entradas do circuito devem ser sinais binários de 1 digito (0 ou 1) e não seria possível interligar o ds18b20 diretamente. Uma possibilidade seria ligá-lo a um Arduino para que ele faça a leitura de temperatura. Após a leitura ser feita, você pode alterar o estado de 2 pinos do Arduino que serão correspondentes às condições “Temp > 20” e “Temp > 50”. Ou seja, os pinos digitais do Arduino seriam ligados às entradas do circuito digital mostrado no post. Desenvolver um circuito digital “do zero” que seja capaz de ler o ds18b20 é uma tarefa bem complicada, pois ele utiliza uma interface de comunicação chatinha chamada “1-Wire”.
Estou com problemas para montar esse circuito, poderia me ajudar?
Devido à escassez de profissionais que dominem os conceitos básicos de computação digital, a mineradora Miner Barro entrou em contato com a Unicesumar à procura de estagiários para auxiliar na construção e manutenção de alguns circuitos lógicos. Você se candidatou à vaga disponibilizada, informando em seu currículo que você domina a construção de circuitos com portas lógicas. Durante seus primeiros dias, você passou por um breve treinamento sobre como funciona a mineradora. O seu supervisor, explicou que existe um processo de refinamento de minérios extraídos de um rio, que leva em conta diversos equipamentos e maquinários distintos. Basicamente, existe um sistema que capta a água lamacenta e bombeia esse material bruto até a estação de refinamento por meio de uma bomba de ar pressurizado. Depois disso, uma série de robôs equipados com sensores e atuadores realizam o processo de triagem e separação dos resíduos e rejeitos. Uma vez que se tem o minério desejado, este é despejado em uma caldeira de alta temperatura, na qual existe um sensor de proximidade que impede colaboradores de chegarem muito próximos, por questões de segurança. Devido às altas temperaturas utilizadas no processo de mineração, a mineradora conta com um sistema de prevenção de incêndio.
Assim sendo, existe um colaborador que checa manualmente, a cada 4 horas, as seguintes condições, pois a mineradora só pode operar caso todas as condições sejam atendidas:
1) Para que o pressurizador e a bomba de ar funcionem, é preciso que haja energia elétrica suficiente (E) ou que o gerador de energia a combustão (G) esteja ligado. Não é admissível que ambos, energia elétrica esteja disponível e gerador a combustão esteja em funcionamento simultaneamente. Ou seja, apenas um deles deve estar disponível por questões financeiras.
2) Além da existência da energia (pela rede elétrica, ou por combustão), é preciso que esteja ligada a chave elétrica (C). Por isso, a chave elétrica determina quando a bomba e pressurizador, e também aturadores e sensores estão em operação.
3) Por fim, tanto o alarme de incêndio quanto os sensores de proximidade, devem estar ligados através do respectivo interruptor (I).
Sabendo disso, como um estagiário proativo, você deve desenvolver um circuito com portas lógicas que simule as automações das condições que atualmente são checadas manualmente.
Para isso, você deve considerar que:
E: é o sinal de entrada relacionado à disponibilidade de energia elétrica proveniente da rede elétrica;
G: é o sinal de entrada que indica se o gerador de energia a combustão está ligado, ou não;
C: é o sinal de entrada relacionado ao acionamento da chave da bomba, pressurizador, sensores e atuadores do processo de mineração;
I: é o sinal de entrada que indica se os sensores de proximidade e incêndio estão ligados;
S: é o sinal de saída que indica que a operação da mineradora pode prosseguir normalmente, desde que tenhamos energia, a chave esteja acionada e os sensores operantes.
Lembre-se que o valor lógico 1 (verdadeiro / ligado) corresponde ao acionamento do respectivo sinal de entrada/saída. Além disso, o valor lógico 0 (falso / desligado) corresponde à ausência de sinal.
Dessa forma, pede-se que o estudante elabore (desenhe) o circuito lógico elencando todas as entradas, saída, as portas lógicas utilizadas, bem como as conexões existentes necessárias para que o circuito funcione conforme o exposto acima. Além de apresentar o circuito lógico, o estudante deve elaborar a tabela verdade correspondente a expressão lógica que represente o circuito desenhado.
Olá, Marcio. Qual seria sua dúvida neste exercício?