Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE PAULISTA Engenharia de Controle e Automação Atividades Práticas Supervisionadas MANAUS - AM 2022 Sumário 1. INTRODUÇÃO ...................................................................................................................... 4 1.1. Objetivos gerais ...................................................................................................................... 4 1.2. Objetivos específicos .............................................................................................................. 4 2. DESENVOLVIMENTO ....................................................................................................... 5 2.1. FUNDAMENTAÇÃO TEÓRICA .......................................................................................... 5 2.1.1. Circuito somador .......................................................................................................... 5 2.1.2. Circuito subtrator ......................................................................................................... 6 2.1.3. Circuitos lógicos ............................................................................................................. 6 2.1.4. Construção ..................................................................................................................... 7 2.1.5. Mapa de karnaugh ......................................................................................................... 7 2.1.6. Arduino .......................................................................................................................... 8 2.2. DESCRIÇÃO DO PROBLEMA ........................................................................................... 10 2.3. CÓDIGO EMBARCADO NO MICROCONTROLADOR .................................................. 12 2.4.1. Descrição do diagrama elétrico.................................................................................. 15 2.4.2. Descrição do Circuito lógico ...................................................................................... 21 3. CONCLUSÃO ..................................................................................................................... 37 ANEXOS ..................................................................................................................................... 39 1. INTRODUÇÃO A palavra digital vem da forma como os computadores realizam operações, contando números. Hoje, as tecnologias digitais são usadas em muitos campos além da computação. Ao longo dos anos, a tecnologia digital evoluiu de circuitos de tubo de vácuo, circuitos de transistores discretos para circuitos integrados complexos, alguns dos quais contêm milhões de transistores. George Boole nasceu em Lincoln, Inglaterra, em 2 de novembro de 1815. Autodidata, iniciou sua própria escola aos 20 anos e se dedicou ao estudo da matemática. Em 1840 ele publicou seu primeiro trabalho original, e em 1844 foi premiado com a Medalha de Ouro da Royal Society por seu trabalho em cálculo de operadores. Para descrever circuitos que podem ser construídos a partir de portas lógicas combinatórias, é necessário um novo tipo de álgebra em que variáveis e funções só podem ter os valores 0 e 1. Tal álgebra é chamada de álgebra booleana, em homenagem ao seu descobridor. O matemático britânico George Boole . Assim como existem funções na álgebra comum, existem funções na álgebra booleana. [FERREIRA, 219]. Os circuitos lógicos são componentes que utilizam operações booleanas ou binárias (0s e 1s, verdadeiro ou falso, ou alto e baixo), a saber: AND (e), OR (ou), NOT (não). O Logic IC (Integrated Circuits) é um componente com um conjunto de portas lógicas em seus componentes, capaz de identificar e executar a lógica booleana (Boolean Logic), inserindo a tensão no pino, identificando os valores alto e baixo no pino . E o correspondente A resposta é enviada para o pino de saída [MOL, 2019]. Com o decorrer das décadas, a tecnologia vem avançando cada vez mais, com isso nas contemporaneidades essas práticas vêm sendo aprimorada. Para elaborar uma prototipagem mais avançada, utilizam-se microcontroladores como ARM Cortex-M, Atmel AVR / AVR 32, Intel 8051, Arduino, entre outros. Neste relatório o microcontrolador a ser utilizado é o Arduino Mega para elaboração de uma máquina copiadora que será citada no decorrer do mesmo. 1.1. Objetivos gerais O presente relatório tem como objetivo elaborar um circuito elétrico, circuito lógico, esquema elétrico, expressão booleana e sua simplificação através do mapa de K e obter os resultados concretos da tabela verdade de acordo com um enunciado que é citado no mesmo. 1.2. Objetivos específicos • Criar uma tabela verdade através do enunciado utilizando Don’t care. • Calcular expressão booleana. • Simplificar a expressão booleana obtivida através da tabela verdade utilizando o mapa de K. • Elaborar circuito lógico. • Criar um esquema elétrico. • Programar o microcontrolador. • Montar o circuito obtido no Arduino. • Testar o projeto para comprovar os resultados teóricos. 2. DESENVOLVIMENTO 2.1. FUNDAMENTAÇÃO TEÓRICA Circuito Aritmético é um tipo de circuito combinatório que executa operações de subtração, adição, multiplicação, divisão, operações lógicas (and/or) ou qualquer outra função que possa ser implementada em um circuito combinatório. São chamadas de ULA (unidade lógica aritmética) ou ALU do inglês. 2.1.1. Circuito somador Adição Binária é a operação mais simples de Circuitos Aritméticos. A adição binária (0 1) é executada da mesma forma que a decimal (0 1 2 3 4 5 6 7 8 9), inclusive no "vai um" (Carry Out, de saída, e Carry In, de entrada) como pode ser entendida no exemplo dado abaixo. Quando somamos dois números binários começamos pela coluna menos significativa e continuamos na ordem crescente de significatividade (analogamente aos números decimais, em que começamos com a unidade e continuamos com a dezena, centena, e assim por diante) 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10 (0 e “vai” 1) 2.1.2. Circuito subtrator Subtratação binária Na subtração procede-se da mesma maneira que na subtração decimal, porém o "vai um" é colocado no algarismo de baixo. Aqui podemos ver uma subtração de 2 bits que acaba resultando em 4 possibilidades. 0 – 0 = 0 0 – 1 = 1 1 – 0 = 1 1 – 1 = 0 2.1.3. Circuitos lógicos Os circuitos digitais ou circuitos lógicos são definidos como circuitos eletrônicos que empregam a utilização de sinais elétricos em apenas dois níveis de corrente (ou tensão) para definir a representação de valores binários. Circuitos lógicos baseiam seu funcionamento na lógica binária, que consiste no fato de que toda informação deve ser expressa na forma de dois dígitos (tanto armazenada, como processada), sendo tais dígitos 0 (zero) ou 1 (um). A partir disto surge a nomeação “digital” (dois dígitos). Este fato auxilia para a representação de estados de dispositivos que funcionam em dois níveis distintos, sendo estes: ligado/desligado (on/off), alto/baixo (high/low), verdadeiro/falso (true/false) entre outros. Os computadores, telefones celulares e leitores de DVD ou blu-ray são alguns exemplos de aparelhos que baseiam parte do seu funcionamento em circuitos digitais (Figura 1). Figura 1 - Exemplo de circuitos lógicos 2.1.4. Construção Circuitos são constituídos pela associação de blocos lógicos. Os blocos lógicos são divididos em 7 classes: • E (AND) • OU (OR) • NÃO (NOT) • NE (NAND) • NOU (NOR) • OU EXCLUSIVO (XOR) • NÃO-OU EXCLUSIVO (XNOR) • A partir destes blocos lógicos é possível construir praticamente todas as outras associações necessárias. Exemplos: 1. Contadores Binários (flip-flops). 2. Unidades lógico-aritméticas (ULA,em inglês, ALU). 2.1.5. Mapa de karnaugh O mapa de Karnaugh - as vezes chamado de diagrama - é uma técnica para simplificação de expressões booleanas, surgindo basicamente para contrapor as técnicas de simplificação através da álgebra booleana, que são exaustivas, demandam profundo conhecimento de todas as regras e muito fácil de errar; por sua vez, a simplificação através do mapa de Karnaugh é um método sistemático bastando seguir todos os seus passos para obter o resultado. É um conceito muito relacionado à tabela verdade, pois costuma-se, na prática, elaborar o mapa de Karnaugh a partir da tabela verdade, dada a facilidade que isso traz a solução e a facilidade de se construir a tabela verdade a parte de qualquer expressão booleana. O resultado do mapa de Karnaugh, quando executado corretamente, sempre será a expressão mais simples nos formatos soma de produtos ou produto de somas, dependendo de como o mapa é resolvido, ambos não canônicos. Aplicação O mapa de Karnaugh pode ser utilizado para simplificar qualquer expressão booleana, ou seja, quando você está desenvolvendo um circuito lógico você pode primeiro fazê-lo funcionar, sem se preocupar muito com números de portas lógicas utilizadas e depois aplicar o mapa de Karnaugh ao sistema e reduzir ao máximo seu circuito, diminuindo assim, custo do projeto, atraso na resposta e potência elétrica consumida. Outra aplicação possível é a redução de operações lógicas executadas pela ULA para verificar uma expressão no seu código. Se você possui um if com uma expressão demasiadamente complexa, você pode utilizar o mapa de Karnaugh para simplificá-la. Construção e resolução O mapa de Karnaugh funciona muito bem para expressões lógicas com 2 a 5 variáveis. Acima disso a resolução do mapa acaba se tornando exaustivo demais e geralmente inviabiliza seu uso. A título de exemplo para a resposta, sempre consideraremos as letras de A a E como sendo as variáveis da expressão lógica e S como sendo o valor de saída (Figura 2). Figura 2 - Exemplo Mapa de Karnaugh 2.1.6. Arduino Arduino é uma plataforma de prototipagem eletrônica open source. Na prática, ele é formado por uma placa eletrônica expansível que pode ser utilizada para o desenvolvimento https://blog.betrybe.com/tecnologia/prototipagem/ de protótipos, ou seja, para adicionar inteligência em qualquer coisa e até controlá-la remotamente. Ele também conta com uma IDE — Integrated Development Environment — para o desenvolvimento do software que será inserido na placa para realizar as atividades programadas. O Arduino surgiu na Itália, em 2005, por um grupo de pesquisadores que queriam desenvolver um dispositivo eletrônico com baixo custo para que estudantes e pessoas interessadas pudessem desenvolver suas experiências de forma simples e barata. Por isso, sua plataforma é de código aberto. Dessa forma, a comunidade de pessoas desenvolvedoras também pode contribuir para a evolução do projeto. A linguagem Arduino é semelhante a qualquer outra linguagem de programação, mais especificamente a linguagem C++, pois essa é a sua base principal. Na prática, ela contém estruturas de controle, diversos tipos de operadores, funções, tipos de dados etc. Além disso, ela contém dois blocos principais que são necessários em todos os programas Arduino (Figura 4). São eles: • setup(): função utilizada para adicionar as configurações iniciais do programa, como definição de variáveis, determinação de como as portas serão utilizadas e muito mais; • loop(): função para executar o que queremos que a placa faça. Os comandos inseridos no loop serão repetidos até que alguma condição de parada aconteça, como apertar um botão. Figura 3 - Arduino https://blog.betrybe.com/tecnologia/ide/ https://blog.betrybe.com/tecnologia/codigo-aberto/ 2.2. DESCRIÇÃO DO PROBLEMA A figura abaixo mostra quatro chaves que fazem partes do circuito de controle de uma máquina copiadora (Figura 5). As chaves estão localizadas ao longo do caminho que o papel passa pela máquina. Cada uma das chaves está normalmente aberta, e quando o papel passa pela chave, ela é fechada. O objetivo é projetar um circuito que produza uma saída em ALTO quando duas ou mais chaves estiverem fechadas ao mesmo tempo. O circuito criado deve ser programado pelo computador e montado em uma placa protoboard, usando o Arduino. Os resultados serão conferidos e os resultados analisados. Figura 4 - Exemplo de um código fonte para Arduino Figura 5 - Circuito de controle de uma máquina copiadora Condições: • Deve-se usar o Mapa de Karnaugh e aproveitar as condições DON’T CARE • É impossível que as chaves SW1 E SW4 estejam fechadas ao mesmo tempo. • A saída será alta (1) quando duas ou mais chaves estiverem fechadas Tabela verdade O valor 0 foi atribuído quando as chaves estiverem abertas, e valor 1 quando estiverem fechadas. Portanto a saída será 1 quando houver duas ou mais chaves com valor 1, no entanto quando as chaves SW1 E SW4 tiverem valor 1 simultaneamente, esse valor entrará nas condições Don’t care. Ou seja, não importa. Assim, representado pelo símbolo x. aos outros casos restantes obtém-se 0 como saída. SW1 SW2 SW3 SW4 S 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 0 0 0 1 0 0 1 x 1 0 1 0 1 1 0 1 1 x 1 1 0 0 1 1 1 0 1 x 1 1 1 0 1 1 1 1 1 x Utilizando o Mapa de Karnaugh (Figura x), chegou-se na expressão apresentada posteriormente (Figura 6): Os maiores agrupamentos possíveis foram de quartetos, considerando x como 1 quando fosse favorável, para se obter a menor expressão resultante. Expressão booleana obtida através do mapa de karnaugh: Montagem do circuito no Arduino: Com a expressão booleana, deve-se transformá-la em linguagem de programação, para poder embarcá-la em um circuito logico no Arduino e testar os resultados. 2.3. CÓDIGO EMBARCADO NO MICROCONTROLADOR Para que um algoritmo seja elaborado pela lógica da expressão e sua tabela verdade obtida através do mapa de K neste relatório, as condições necessárias estão descritas a seguir: • É impossível que as chaves SW1 E SW4 estejam fechadas ao mesmo tempo. • A saída será alta (1) quando duas ou mais chaves estiverem fechadas Nesses casos podemos utilizar as portas lógicas representada na programação pelos símbolos que estão de acordo com a tabela a seguir. PORTA SÍMBOLO E (AND) && NÃO (NOT) ! OU (OR) || SW3.SW4+SW2.SW4+SW2.SW3+SW1.SW3+SW1.SW2 Figura 6 - Mapa de K No presente relatório, foi sutilizado a linguagem de programação C++, onde seu conceito é abordado nos capítulos anteriores. Portanto, foram declaradas as variáveis “sw1”, “sw2”, “sw3” e “sw4” e “s” do tipo inteira onde receberam os valores respectivamente 2, 3, e 5 (Figura 1). Para configurar os pinos de entrada ou saída (INPUT ou OUTPUT), que estão relacionados ao Arduíno, foi necessário criar uma função chamada “setup()” do tipo “void”, onde são feitas suas configurações, onde é chamada quando um sketch inicia e suas bibliotecas. A função setup() será executada apenas uma vez, após a placa ser alimentada ou acontecer um reset (Figura 8). Após a inicialização da função setup(), seus valores iniciais são atribuídos, a função loop() inicia seu ciclo, e repete-se consecutivamente enquanto a placa estiver ligada, para que o programa possa modificar constantemente e responder a essas alterações. É usada para controlar ativamente uma placa Arduino. //Declaração de variáveis int sw1 = 2; int sw2 = 3; int sw3 = 4; int sw4 = 5; int s; //Configurando os pinos de Entrada e Saída através da função setup() void setup () { pinMode (sw1, INPUT); pinMode (sw2, INPUT); pinMode (sw3, INPUT);pinMode (sw4, INPUT); pinMode (13, OUTPUT); } Figura 7 - Declaração de variáveis Figura 8 - Configuração dos pinos de Entrada e Saída No trecho do código a seguir, o “digitalRead()” lê o valor de um pino digital especificado, que pode ser HIGH ou LOW. As variáveis “a”, “b”, “c” e “d”, do tipo booleana, estão recebendo a entrada de um dado que passa por parâmetro as variáveis de entrada “sw1”, “sw2”, “sw3” e “sw4” (Figura 9). Para que a expressão booleana sw3.sw4+sw2.sw4+sw2.sw3+sw1.sw3+sw1.sw2 seja convertida na linguagem C, é necessário levar em consideração sua simbologia citada anteriormente. Utilizando-a resultou em: “(c&&d) || (b&&d) || (b&&c) || (a&&c) || (a&&b)”. No entanto, para que a tabela verdade seja testada na prática, foi necessário atribuir essa expressão à variável “s”, onde posteriormente é utilizada em uma condição chamada “if”(se), que é uma instrução, onde dependendo se o resultado for verdadeiro, será executada o que está entre suas chaves, que se encontra no trecho “digitalWrite (13, HIGH);”(o digitalWrite Aciona um valor HIGH ou LOW em um pino digital) tendo como resultado 1 (alto). Se essa estrutura não for satisfeita, então serão feitas as instruções do “else” (senão) após o fechamento de chaves do if, que dentro dessa outra condição se encontra no trecho “digitalWrite (13, LOW);” resultando em 0 (baixo). De acordo com a Figura 10 a seguir O código descrito acima, em prática e compilado no Arduino IDE juntamente conectada a seu próprio microcontrolador, que resultou na tabela verdade a seguir. //inicialização de uma função de ciclos void loop () { boolean a = digitalRead(sw1); boolean b = digitalRead(sw2); boolean c = digitalRead(sw3); boolean d = digitalRead(sw4); //inicialização de uma função de ciclos s = (c&&d) || (b&&d) || (b&&c) || (a&&c) || (a&&b); if (s == 1) { digitalWrite (13, HIGH); } else { digitalWrite (13, LOW); } } Figura 9 - Função loop Figura 10 - Condição if TABELA VERDADE 2.4.CIRCUITO LÓGICO E DIAGRAMA ELÉTRICO 2.4.1. Descrição do diagrama elétrico Diagrama elétricos ou esquemas elétricos são representações dos circuitos elétricos graficamente através de desenhos e simbologias. A partir das representações e interpretações deste esquema, que os projetos são elaborados, executados e possivelmente a manutenção de instalações elétricas. Com a intepretação e leitura devida do diagrama, a fundamentação é igual, independente do lugar empregado, diferindo apenas da escrita. Em alguns casos, no ato das instalações pode haver algumas variações e estes estão descritos no diagrama elétricos. Com estas informações, os esquemas elétricos podem ser classificados e quatros tipos, como: • Diagrama funcional; • Diagrama multifilar; • Diagrama unifilar; • Diagrama trifilar. Diagrama elétrico funcional SW1 SW2 SW3 SW4 S 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 0 0 0 1 0 0 1 0 1 0 1 0 1 1 0 1 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 O diagrama elétrico funcional é basicamente utilizado para explicar o funcionamento e não o posicionamento de componentes, nem medidas de cabos e percursos. Este diagrama tem um tipo de representação onde os componentes do circuito são descritos e desenhados o mais perto possível, permitindo interpretar com agilidade e clareza o funcionamento. É empregado para informar pequenos esquemas de ligação e sua finalidade é mais didática. Vejamos 2 exemplos da implementação deste diagrama. De a cordo com as figuras 11 e 12 a seguir. Figura 12 - Diagrama elétrico funcional 2 Diagrama Multifilar Este outro tipo de diagrama é utilizado em sistemas de comandos elétricos e maquinas trifásicas, onde os circuitos iram ser representados ao mesmo tempo, na maioria do tempo com os componentes e seus contatos indicados de forma próxima e alinhados, fazendo assim sua empregação em circuito mais complexo de difícil leitura. De a cordo com a figura13 a seguir. Figura 11 - Diagrama elétrico funcional 1 Figura 13 - Diagrama multifilar Diagrama unifilar No diagrama unifilar, a representação dos circuitos onde são simplificação de forma unipolar,a apenas um fio. Fios ou cabos são definidos usando um traço que representa o caminho de cabos, focando somente nos principais componentes do circuito, sendo descripitivamente utilizado para rápida interpretação de circuitos grandes e complexos. De a cordo com a figura a seguir. Figura 14 - Diagrama unifilar Diagrama trifilar Neste diagrama elétrico, a sua apresentação é dada pela separação onde os circuitos de força e comando são separados, em grande parte com componentes e seus contatos não sendo destacados na mesma página. Este é p diagrama mais utilizado devido sua aplicação em circuitos complexos e de fácil interpretação para achar falhas. De a cordo com a figura a seguir. Figura 15 - Diagrama trifilar Diagrama- Simbologia Além de representação de cabos, os diagramas são também compostos por símbolos. Estes símbolos fazem a representação gráfica e desenhada dos componentes presentes na instalação. A vários símbolos, eles são especificados para cada um dos componentes dos circuitos, porém há algumas simbologias que são utilizadas como: • Tomadas; • Condutores; • Quadro de distribuição; • Caixa de passagem; • Luminárias; • Interruptores. Tomadas: são pontos de conexão que fornecem energia elétrica para um determinado aparelho eletrônico. Veremos quatro simbologias para tomadas existentes. De a cordo com a figura 16 a seguir. Condutores: estes componentes são responsáveis por conduzir a energia elétrica e interligar componentes e dispositivos elétricos. Há simbologias para todos os tipos de condutores, vejamos eles. De a cordo com a figura 17 a seguir. Figura 16 - Tomadas Figura 17 - Condutores Quadro de distribuição: o quadro de distribuição recebe os condutores do medidor e realiza separação dos circuitos, e ainda armazena os dispositivos de proteção da instalação elétrica. De a cordo com a figura 18 a seguir. Caixas de Passagem: a caixa de passagem é usada como de derivdação para os eletrodutos, também como meio de facilitar a passagem dos cabos por longas distancias, sendo que apenas são usadas para derivação, não tendo nenhuma tomada ou interruptor. De a cordo com a figura 19 a seguir. Luminárias: são especificamente suportes de lâmpadas composta por um ou mais receptores, usado para realizar conexão das lâmpadas. A simbologia das luminárias conte várias informações. De a cordo com a figura 20 a seguir. Figura 18 - Quadro de distribuição Figura 19 - Caixas de Passagem Interruptores: os interruptores são componentes elétricos usados para ligar ou desligar determinado circuito, podendo ter diferenciadas simbologias. De a cordo com a figura a seguir. No presente relatório para o diagrama elétrico, utilizamos o diagrama trifilar, onde o mesmo é de melhor leitura e interpretação. De a cordo com a figura 22 a seguir. Figura 20 - Luminárias Figura 21 - Interruptores Figura 22 - Diagrama elétrico do projeto Aplicação no microcontrolador De a cordo com o diagrama mostrado anteriormente, foi construído na prática no microcontrolador Arduino Mega. De acordo com a figura a seguir. 2.4.2. Descrição do Circuito lógico Os Circuitos Lógicos são componentes que apresentam a forma lógica mais simples e de baixo nível na eletrônica, onde o seu entendimento se faz necessário para o aprendizado de diversas áreas, como programação, eletrônica, comandoselétricos e até mesmo em programações de CLP’s. Os circuitos lógicos são componentes que trabalham com operações booleanas ou binárias (0 e 1, verdadeiro e Falso ou High e Low), sendo elas : Porta AND(E) Figura 23 - Circuito elétrico no Arduino Figura 24 – Circuitos: Chipset Se e, somente se, todas as entradas estiverem em estado lógico alto, ou seja, uma tensão positiva e diferente de 0 V for aplicada nos pinos de entrada do CI, a saída do circuito será energizada. Esta lógica é conhecida como lógica multiplicativa, pois, no mundo da eletrônica, temos que o pino energizado equivale ao número 1 e o pino desenergizado temos como 0. Deste modo temos que a multiplicação das entradas no circuito AND é equivalente ao estado do pino de saída. De a cordo com a figuras 25 e 26 a seguir. Matematicamente, temos que a multiplicação de qualquer número por 0 é 0, logo basta uma única entrada ser 0 para termos a saída 0 nas portas AND. Figura 25 – Porta AND Figura 26 - CI 74HC08n Circuito Lógico AND Figura 27 - Exemplo da porta END Porta OR(OU) Se qualquer um dos pinos de entrada forem energizados, temos uma saída energizada. Conhecida como lógica aditiva, pois a soma das entradas equivale ao estado da saída. Diferente da lógica multiplicativa, temos na lógica aditiva que a soma de qualquer número mais 1 é alguma coisa maior que 0, então teremos a saída do sistema diferente de 0, logo basta somente uma das entradas estarem em um nível lógico alto para termos a saída em nível lógico alto. Lógica OR – Tabela Verdade Entrada A Entrada B Saída Lógica Aditiva Baixo – 0 Baixo – 0 Baixo 0 + 0 = 0 Baixo – 0 Alto – 1 Alto 0 + 1 = 1 Alto – 1 Baixo – 0 Alto 1 + 0 = 1 Alto – 1 Alto – 1 Alto 1 + 1 = 1 Figura 28 – Porta OR Figura 29 - CI 74HC32n Circuito Lógico OR Figura 30 - Exemplo: Porta OR Porta NOT(NÃO). A porta lógica NOT é conhecida como porta inversora. Esta porta possui apenas uma entrada e uma saída em seu circuito. Esta porta inverte o estado lógico de entrada em sua saída, logo temos que (Figuras 31 e 32): Lógica NOT – Tabela Verdade Entrada A Saída Lógica Inversora Baixo – 0 Alto -1 0=1 Alto – 1 Baixo – 0 1=0 Figura 32 - Porta NOT Figura 31 - CI 74HC04n Circuito Lógico NOT Em Circuitos Digitais, temos como uma entrada invertida a simbologia dela “barrada” em cima ( Figura 33). Figura 33 - Exeomlo: Porta NOT Em alguns casos espeficos as derivadas das portas básicas: NOR A porta Lógica NOR é a inversão da porta OR, onde teremos a saída da porta OR ligada em uma porta NOT. Para simplificar sua representação, temos uma porta OR com uma bolinha inversora em sua ponta, representando a NOR (Figura 34). Nesta porta, temos a seguinte lógica: Lógica NOR – Tabela Verdade Entrada A Entrada B Saída Baixo – 0 Baixo – 0 Alto Baixo – 0 Alto – 1 Baixo Alto – 1 Baixo – 0 Baixo Alto – 1 Alto – 1 Baixo Figura 34 - Exemplo: Porta NOR NAND Na porta NAND, seguindo a lógica da NOR, é uma porta AND com inversão. A NAND é representada por uma AND com a bola inversora na sua porta lógica. Na sua lógica temos: Lógica NAND- Tabela Verdade Entrada A Entrada B Saída Baixo – 0 Baixo – 0 Alto Baixo – 0 Alto – 1 Alto Alto – 1 Baixo – 0 Alto Alto – 1 Alto – 1 Baixo XOR e XNOR Estas portas possuem uma lógica mais complexa, visto que elas são a junção de outras portas lógicas. No caso da XOR, temos a lógica de que a saída será 5 V se, e somente se, uma única entrada for 5 V. No caso de duas entradas forem 5 V ou as duas forem 0 V, temos a saída em nível lógico baixo, ou seja , 0. Na porta XNOR, temos a inversão da saída da XOR (Figura 35). TABELA VERDADE Tabela verdade é um método utilizado para descrever como a saída de um circuito lógico se comportara com os níveis lógicos presentes nas entradas do circuito, oferecendo todas as combinações possíveis. Ela é utilizada para documentar o projeto de circuitos lógicos combinacionais, além disso pode ser utilizada para extrair as informações necessárias para uma expressão booleana (Figura 36). Figura 35 - Exemplo: XOR e XNOR CI´s Os CI’s (Circuitos Integrados) lógicos são componentes que possuem um agrupamento de portas lógicas em seu componente, capazes de identificar e executar a lógica de Boole (Lógica Booleana), através da tensão nos pinos de entrada, identificando os valores altos ou baixos nos pinos e enviando a resposta correspondente ao pino de saída. Circuitos lógicos na prática Na prática, temos um circuito integrado com uma saída que depende da sua lógica (AND, OR ou NOT) e do nível de sinal nas entradas, que podem ser de 5 V ou 0 V (GND). Abaixo tem se a montagem de um circuito genérico da família 74HC (74HC08n e 74HC32n no nosso caso) que operam com duas entradas e uma saída. Em caso de circuitos lógicos de outros fabricantes, devemos sempre pesquisar as propriedades e se atentar ao datasheet do CI em questão. A alimentação do circuito será feita com 5 V para esse caso. No circuito tem-se, um LED para indicar a saída e é usando duas chaves do DIP switch para testar as entradas. No DIP switch utilizado, tem a chave ativada quando abaixamos a alavanca, e desativada quando levantamos (Figura 37). Figura 36 - Analise de uma tabela verdade Figura 37 - Circuito genérico Portas logicas e associações Se colocar a saída de uma porta lógica na entrada de outra, irá gerar novas lógicas e novas expressões booleanas, através da criação de um circuito lógico. Todo circuito lógico gera uma expressão booleana, da qual é formada pela interligação das portas lógicas básicas. Um exemplo disto é a porta lógica XOR (Figura 38), onde pode simplificar sua lógica para A.B + A.B . No circuito tera esta porta, onde teremos a associação de mais de uma porta lógica para gerar uma expressão booleana. Figura 38 - Circuito lógico a partir de uma expressão Agora a lógica aditiva, multiplicativa e inversora irá fazer um pouco mais de sentido, observa-se que se consegue criar expressões com ela. Ao juntar uma entrada em um circuito lógico, teremos uma saída correspondente a sua lógica, que irá gerar uma expressão booleana. Nesse caso da porta lógica AND, obtera a saída igual a entrada A vezes a entrada B (A.B), na OR teremos A + B, e na NOT teremos a inversão, representada por A . Agora, se colocar entrada A na porta NOT e a saída da NOT na entrada de uma AND e na outra entrada AND onde ficara a entrada B? O resultado e a expressão onde a entrada A foi invertida vezes a entrada B não invertida (Figura 39): A.B Figura 39 - A.B A união de portas lógicas é muito útil para criar lógicas especificas para situações específicas. Em uma situação real, o ideal é as entradas e saídas estarem pré-definidas e através destes obterá que encontrar o circuito lógico. Para tal, dever-se utilizar da Tabela Verdade e a associação das saídas para chegar em um circuito lógico. Para saber como um circuito lógico funciona com todas as possíveis possibilidades, podemos utilizar uma tabela verdade, pois ela permite uma análise minuciosa da lógica, além de possuir uma tabela documentada para consultas posteriores. Analisando a imagem abaixo, temos um circuito com portas lógicas e três entradas A, B e C, onde a saída "X" é desconhecida. Para tentar descobrir o comportamento deste circuito, é preciso implementar uma tabela verdade, adicionando as entradas, portas lógicas e a saída conforme o diagrama do circuito. Obtivendo tabela completa, separamos todas as saídas que são verdadeiras ou 1, e escrevemos algebricamente seus produtos e somas. As linhas da tabela com saídas verdadeiras são descritas como um produto, "A . B . C", e a união destes produtos são realizadas com uma soma, onde "A . B . C + A . B . C...". conhecidacomo "expressão booleana em forma de soma-de-produtos". Com a expressão booleana pronta, pode-se aplicar a álgebra booleana para simplificar este resultado. Conforme a expressão abaixo, podendo aplicar a fatoração dos termos, onde as somas de A e !A, C e !C são iguais à um, zerando esses termos da expressão. Seguindo esses comandos, reduzimos a expressão booleana almejando a mesma lógica do circuito proposto (Figura 40). Figura 40 - Circuito com portas lógicas e três entradas Simplificação de expressão booleana Usando a álgebra booleana é possível simplificar expressões Como cada circuito corresponde a uma expressão, simplificações de expressões significam em simplificações de circuitos. Há duas formas para simplificar expressões Fatoração Consiste na aplicação dos postulados e propriedades da álgebra booleana, com o objetivo de simplificar a expressão.Por exemplo: S = A.B.C + A.C’ + A.B’ = A.(B.C + C’ + B’) distributiva = A.(B.C + (C’ + B’)) associativa = A.(B.C + ( (C’ + B’)’ )’) identidade do complemento = A.(B.C + (C.B)’) De Morgan = A.(B.C + (B.C)’ ) comutativa = A.(1) identidade da adição (D+ð=1) = A identidade da multiplicação 16 Fatoração; Portanto, A.B.C + A.C’ + A.B’ = A Essa expressão mostra a importância da simplificação de expressões e a consequente minimização do circuito, sendo o resultado final igual ao da variável A Figura 41 - Circuito Antes e Depois da simplificação Formas Normais (Canônicas) Toda expressão booleana pode ser escrita em uma forma padronizada, denominada forma normal ou forma canônica Duas formas normais são (Figura 42): Forma Normal Conjuntiva (FNC), Produto de Somas ou Produto de Maxtermos; Forma Normal Disjuntiva (FND), Soma de Produtos ou Soma de Mintermos. Maxtermos e Mintermos Maxtermos (ou maxitermos): é variável com valor 0 é deixada intacta. • Variável com valor 1 é alterada pela sua negação • Variáveis de uma mesma linha são conectadas por + (adição) Mintermos (ou minitermos) • Variável com valor 1 é deixada intacta • Variável com valor 0 é alterada pela sua negação • Variáveis de uma mesma linha são conectadas por . (multiplicação) Forma Normal Disjuntiva Mintermo (ou minitermo) é o termo produto associado à cada linha da tabela verdade, no qual todas as variáveis de entrada estão presentes. Dado um dado mintermo, se substituirmos os valores das variáveis associadas, obteremos 1.Porém, se substituirmos nesse mesmo mintermo quaisquer outras combinações de valores, obteremos 0. Dessa forma, se quisermos Figura 42 - Maxtermo e Mintermo encontrar a equação para uma função a partir de sua tabela verdade, basta montarmos um OU entre os mintermos associados aos 1s da função. FND: Exemplo S é uma função das variáveis de entrada A, B e C. Os valores de (A,B,C) para os quais S=1 encontram-se nas situações 2, 3, 5 e 6. Os mintermos associados a essas condições (ou seja, os mintermos 1) são mostrados na tabela ao lado. Logo, a expressão em soma de produtos (FND) para S será o OU entre estes produtos (Figura 43). Forma Normal Conjuntiva. Maxtermo (ou maxitermo) é o termo soma associado à cada linha da tabela verdade, no qual todas as variáveis de entrada estão presentes. Dado um dado maxtermo, se substituir os valores das variáveis associadas, obteremos 0. entretanto, se substituirmos nesse mesmo maxtermo quaisquer outras combinações de valores, obteremos 1. Por tanto, se quisermos encontrar a equação para uma função a partir de sua tabela verdade, basta montarmos um E entre os maxtermos associados aos 0s da função. FNC: Exemplo S é uma função das variáveis de entrada A, B e C. Os valores de (A,B,C) para os quais S=0 encontram-se nas situações 0, 1, 4 e 7. Os maxtermos associados a essas condições (ou Figura 43 - FND seja, os maxtermos 0) são mostrados na tabela ao lado. Logo, a expressão em produto de somas (FNC) para S será o E entre estas somas S = (A+B+C) . (A+B+ C). ( Ā+B+C) . ( Ā + B +C ). De acordo com a Figura 44 a seguir. Simplificação a partir da Forma Normal. Uma vez obtida a forma normal de uma função booleana, é possível simplificá-la por meio de manipulação algébrica, respeitando os postulados e propriedades da álgebra booleana, com visto anteriormente Mapas de Veitch-Karnaugh Alternativamente ao método de simplificação algébrico por fatoração, há outro método de simplificação baseado na identificação visual de grupos de mintermos que podem ser simplificados. Para tanto, é necessário que os mintermos sejam dispostos de maneira conveniente, em tabelas conhecidas como diagramas ou mapas de Veitch-Karnaugh Diagrama de Veitch-Karnaugh para 2 Variáveis Em um mapa de Veitch-Karnaugh, há uma região própria para cada linha da tabela verdade. Essas regiões são os locais ondem devem ser colocados os valores que a expressão S assume nas diferentes possibilidades. Para obter a expressão simplificada por meio do diagrama. Agrupar as regiões onde S=1 no menor número possível de pares (diagonais não são permitidas no agrupamento de pares) .As regiões onde S=1 que não puderem ser agrupadas em pares são consideradas isoladamente (Figura 45). Figura 44 - FNC Diagrama de Veitch-Karnaugh para 3 Variáveis De forma análoga para 2 variáveis, com 3 variáveis também há uma região própria para cada linha da tabela verdade em um mapa de Veitch-Karnaugh. Para obter a expressão simplificada por meio do diagrama. Agrupar as regiões onde S=1 no menor número possível de quadras. Em seguida, agrupar as regiões onde S=1 no menor número possível de pares. As regiões onde S=1 que não puderem ser agrupadas em quadras ou pares são consideradas isoladamente (Figura 46, 47 e 48). Figura 45 - Diagrama de Veitch-Karnaugh para 2 Variáveis Figura 46 - Quadras Figura 47 - Pares(1/2) Figura 48 - Pares(2/2) Figura 49 - Quadras e pares nas extremidades 3. CONCLUSÃO De acordo com o objetivo proposto no projeto pelo professor orientador, desenvolvemos um protótipo de um circuito de controle de uma máquina de copiar usando um protoboard e com ajuda de uma placa Arduino, através de pesquisas e discursões, a temática sobre os princípios de funcionamento do Arduino, bem como sua composição e particularidades, nos possibilitou elaborar a fundamentação teórica e execução na prática deste projeto, na qual foi construído atendendo todas orientações e normas estabelecidas no projeto 1. No protoboard foi feito a construção do projeto usando os componentes eletrônicos, sendo possível com a ajuda dos jumpers fazer a ligação entre os botões, resistores e o led, ainda com a ajuda dos jumpers, o protoboard foi diretamente ligado a portas da placa Arduino, sendo os botões nas portas 2, 3, 4, 5 e o led na porta 13, o Arduino foi ligado ao computador com o auxílio de um cabo USB para ser feito a sua programação. Para a programação da placa foi usado um o software chamado Arduino IDE, na qual introduzimos nele o código da linguagem de programação referente ao que foi pedido no projeto 1, podendo assim o código alcançar o protoboard e ser feito a conclusão do projeto, também foi possível analisar os resultados referentes a tabela verdade. A implementação ocorreu de acordo com o planejado e foi simulado corretamente o que foi proposto e conseguimos colocar em prática nosso aprendizado que foi aprofundado no atual semestre, realizando um trabalho em equipe, desenvolvendo novas condutas e conhecimentos aprendidos e enriquecendo nossos conhecimentos em geral. 4. REFERÊNCIAS _____________. O que são diagramas elétricos? - Aprendendo Elétrica. Disponível em: https://aprendendoeletrica.com/o-que-sao-diagramas-eletricos/. Acesso em 25 de maio de 2022. MATTEDE, Henrique. Diagramas elétricos, tipose simbologias! - Mundo da Elétrica. Disponível em: https://www.mundodaeletrica.com/diagramas-eletricos-tipos-e- simbologias/. Acesso em 25 de maio de 2022. MOL, Rian. Circuitos Lógicos – Lógica Booleana em CI’s (2019). Disponível em: https://www.filipeflop.com/blog/circuitos-logicos-logica-booleana-em-cis/. Acesso em 25 de maio de 2022. FERREIRA, Ricardo K. L. Álgebra Booleana - Brasil Escola (2019). Disponível em: https://brasilescola.uol.com.br/informatica/algebra-booleana.htm. Acesso em 25 de maio de 2022. __________. Como descrever um circuito lógico algebricamente. Disponível em: https://tecdicas.com/como-descrever-um-circuito-logico- algebricamente/#:~:text=Os%20sistemas%20digitais%20s%C3%A3o%20compostos,facilmen te%20a%20sa%C3%ADda%20do%20circuito. Acesso em 25 de maio de 2022. __________. Circuitos Lógicos - Lógica Booleana em CI's – FilipeFlop. Disponível em: https://www.filipeflop.com/blog/circuitos-logicos-logica-booleana-em-cis/. Acesso em 25 de maio de 2022. ANEXOS
Compartilhar