sábado, 27 de março de 2021

Softwares para desenvolvimento e simulação de circuitos lógicos

 

Olá a todos!

Como visto anteriormente neste blog, na eletrônica existem várias portas lógicas que podem ser combinadas para montar circuitos lógicos. O processo de desenvolvimento de circuitos lógicos pode ser muito demorado e maçante, principalmente quando o circuito é muito grande. Por este motivo, diversos softwares que permitem a construção e simulação de circuitos eletrônicos foram desenvolvidos. Infelizmente, muitos deles são vendidos a preços extremamente altos, mas alguns são gratuitos e outros oferecem uma versão de demonstração com algumas das funcionalidades da versão completa. Abaixo, veremos alguns exemplos de programas interessantes para fazer a simulação de circuitos com portas lógicas assim como prós e contras de cada um (também é possível clicar nos nomes de cada um para ir para o site do software).

 

CADe SIMU 

Este programa é gratuito e muito utilizado para o desenvolvimento de diagramas de comandos elétricos, mas também possui suporte para o desenvolvimento e simulação de circuitos eletrônicos.


Prós:

É gratuito e possui uma interface fácil de entender e de visualizar. Além de permitir o desenvolvimento de circuitos eletrônicos também possui um enorme suporte para diagramas eletromecânicos, com motores, contatores, temporizadores e até mesmo CLP. É um ótimo programa para diagramas elétricos.

 

Contras: 

Possui vários bugs que muitas vezes dificultam o trabalho. Durante a simulação de qualquer tipo de circuito, ao encontrar algum erro, torna-se necessário verificar se o erro foi causado por alguma real falha no circuito ou por algum bug do programa. Muitas vezes, a ação de mover, remover ou selecionar um ou vários componentes também apresenta problemas, podendo causar um certo desânimo durante o desenvolvimento de circuitos maiores. As portas lógicas são também apresentadas seguindo a norma IEC, o que pode ser ligeiramente desconfortável para quem se acostumou a utilizar as portas desenhadas seguindo a ANSI. Porém, é sempre necessário levar em conta que este é um software gratuito e como nenhum destes bugs causa problemas muito sérios nos circuitos (na maioria das vezes), é possível relevar.

Proteus

É um software muito conhecido e bastante usado para desenvolver circuitos eletrônicos. É um software pago e extremamente caro, porém é possível adquirir uma versão de demonstração com todas as funcionalidades e componentes disponíveis, porém sem a capacidade de salvar os projetos desenvolvidos.



Prós:

Possui uma quantidade enorme de componentes e pode ser utilizado para desenvolver diagramas eletrônicos e até mesmo PCBs, além de possuir um ótimo suporte para portas lógicas e apresenta-las seguindo a norma ANSI.

Contras:

Extremamente caro, podendo chegar a custar até 8003 dólares e com um preço mínimo de 248 dólares, caso a pessoa interessada em comprar decida montar seu próprio pacote escolhendo os módulos a serem instalados.

 

Agora que já analisamos alguns softwares de computador, acredito que seja interessante analisar alguns aplicativos de celular, visto que grande parte das pessoas utiliza mais o dispositivo móvel do que computadores. Para isso selecionei dois aplicativos que apesar de bastante parecidos são muito interessantes (lembrando que todos foram baixados e testados em um celular Android).

Logic Circuit Simulator Pro

Este é um aplicativo muito interessante e que possui muitos componentes, além de ter uma interface bonita e que não cansa a visão. É possível baixar gratuitamente, porém para utilizar todas a funcionalidades disponíveis, é necessário comprar o aplicativo.



Prós:

Possui vários componentes, desde portas lógicas comuns até ICs e displays, passando por multiplexadores e demultiplexadores, flip-flops, latches, geradores e portas lógicas de 3 entradas. Possui vários tutoriais, fazendo com que quem o utiliza não tenha duvidas de como fazer a utilização do software e apenas tenha que se preocupar em desenvolver seus circuitos. Possui uma ótima interface e desenhos muito bem feitos, o que facilita a utilização por usuários que não estejam muito familiarizados com os dispositivos móveis

Contras:

Por ser um aplicativo pago, nem todas as funcionalidades estão disponíveis na versão gratuita. Não é possível desenvolver circuitos muito grandes, por exemplo, pois a versão gratuita apresenta uma limitação na quantidade de componentes que podem ser inseridos no diagrama.

 

Smart Logic Simulator

É um aplicativo muito parecido com o anterior, porém este possui uma conexão muito maior com o celular da pessoa que o utiliza. 

 



Com ele é possível não só desenvolver circuitos utilizando portas lógicas como também é possível utilizar as mesmas para ativar coisas no próprio celular, como a lanterna por exemplo.


Na imagem acima, quando os dois botões vermelhos são pressionados (seguindo o funcionamento da porta AND), a lanterna do celular é ativada

Prós:

Após algum tempo se torna fácil de utilizar, possui uma qualidade visual muito grande e ainda permite uma interação bem grande com o dispositivo propriamente dito. Embora a versão gratuita também tenha algumas limitações, não são tão restritivas quanto as do Logic Circuit Simulator Pro.

Contras:

Pode ser ligeiramente difícil de utilizar no início, por não possui tantos tutoriais, mas após mexer um pouco, este problema desaparece. Sua versão gratuita possui algumas limitações, mas não muitas.


Todos estes são softwares muito bons e úteis na vida de alguém que deseja desenvolver circuitos eletrônicos. Espero que este post tenha sido interessante. Até a próxima :)

sábado, 20 de março de 2021

Portas lógicas e seus circuitos

Para que possam ser efetuadas tarefas utilizando eletrônica, é necessário fazer o uso das chamadas portas lógicas. Estas portas lógicas recebem sinais de entrada e os interpretam, emitindo um sinal de saída (que, claro, depende dos sinais de entrada). Existem várias portas lógicas que fazem operações diferentes, e isto é uma das coisas que veremos neste post. As portas abordadas aqui serão: NOT, AND, OR e XOR. Todas estas portas funcionam graças à utilização de transistores, que são "interruptores" que podem ser ligados ou desligados utilizando sinais elétricos:


Na imagem acima, podemos perceber que o transistor possui 3 terminais: C, B e E. Caso se tenha um sinal positivo e uma carga conectados no terminal C e o terminal E esteja conectado ao terminal negativo, o transistor não vai permitir que passe corrente através dele caso não haja um sinal no terminal B.

Na imagem, caso o botão S1 seja pressionado, a corrente pode passar pelo transistor, fazendo com que o LED seja ligado

Todas as portas lógicas são feitas utilizando este componente. A seguir, veremos algumas portas lógicas, seu funcionamento e como elas são construídas utilizando transistores.


Porta NOT

Primeiramente, iremos analisar o funcionamento da porta lógica chamada "NOT", também conhecida como inversora. A simbologia desta porta é a seguinte: 


Esta porta é capaz de inverter o sinal de entrada. Ou seja, caso tenhamos um sinal 1 na entrada, ela irá emitir na saída um sinal 0. É possível entender melhor observando a tabela verdade:

IO
01
10


Podemos analisar o funcionamento dela utilizando o circuito abaixo:


No exemplo, o botão S1 seria responsável por enviar um sinal a porta NOT. Caso o botão esteja pressionado (enviando assim um sinal 1 para a porta, o LED estará desligado (pois a porta enviará um sinal 0). A seguir, iremos analisar o funcionamento desta porta através de transistores.

O circuito é o que se segue: 


O funcionamento é o seguinte:


Quando o botão S1 não está sendo pressionado, o transistor se comporta como uma chave aberta, e o único caminho que a corrente pode seguir é o que contém o LED.

Quando o botão S1 é pressionado, um sinal chega na base, fazendo com que o transistor se comporte como um curto, fazendo com que toda a corrente passe pelo transistor e não chegue ao LED, mantendo o mesmo desligado


Porta AND

A próxima porta a ser analisada é a porta "AND" ou "E". Esta porta tem como função receber dois ou mais sinais e só permitir que a saída seja alta (1) quando todos os sinais forem iguais a 1. A simbologia da porta é a seguinte:



ABO
000
100
010
111



Podemos analisar o funcionamento da porta com mais detalhes no exemplo abaixo:


Apenas se S1 E S2 forem pressionados o LED será acionado

O circuito com transistores e seu funcionamento: 


Este circuito é bastante simples. São dois transistores em série. Caso algum deles não receba sinal na base (terminal B), o circuito estará "aberto" (pois um dos transistores estará sem sinal na base ( fazendo com que se comporte como uma chave aberta)


Apenas quando os dois transistores recebem sinal na base o circuito fica completo, permitindo que o LED acenda


Porta OR

A próxima porta a ser analisada é a porta "OR" ou "OU". Esta porta também recebe dois ou mais sinais, mas, caso um dos sinais seja igual a 1, a saída já será 1.



ABO
000
10 1
011
111



Quando S1 OU S2 forem pressionados (ou os dois) o LED acende

O circuito neste caso também é muito simples:

Se trata de um circuito com os transistores em paralelo. Se qualquer um dos dois for acionado, o circuito se fecha, permitindo que a corrente passe pelo LED.


ou



Porta XOR

A próxima e última porta que será analisada neste post é a porta XOR (também conhecida como XOU, "exclusive or" ou "ou exclusivo"). Esta porta é muito parecida com a porta "ou", mas desta vez a saída será 1 apenas quando uma das entradas for igual a 1. Caso ambas sejam 0 ou ambas sejam 1, a saída será 0.




ABO
000
10 1
011
110


O circuito que forma esta porta é um pouco mais complexo do que as anteriores:

A parte marcada em vermelho funciona da mesma forma que a porta "ou" enquanto a parte marcada em azul funciona da mesma forma que a porta "e"


O transistor circulado na imagem acima está normalmente acionado, graças ao sinal conectado na base do mesmo. Com isso, caso A ou B sejam sinais "1", o sinal pode passar pelos transistores superiores e ter contato direto com o GND:



Porém, caso A e B sejam pressionados ao mesmo tempo, os transistores mais a esquerda do circuito  se comportam como um curto, fazendo com que o sinal que antes ia para a base do transistor agora vá direto para o GND, fazendo com que o transistor seja desligado e impedindo que a corrente que passaria pelo LED chegue até o GND:


Dessa forma, caso A ou B seja acionado, o LED liga, mas caso ambos sejam pressionados simultaneamente, o LED permanece desligado.

Para quem tem conhecimentos em inglês e se interessa pelo assunto, recomendo muito o canal do YouTube "Ben Eater", que faz vídeos demonstrando o funcionamento de componentes eletrônicos levando em conta cada pequena peça que o compõe. Este canal foi utilizado como fonte para obter as informações deste post. Deixarei abaixo o link para o canal no YouTube assim como alguns vídeos interessantes de alguns projetos desenvolvidos por ele:

Canal do YouTube: https://www.youtube.com/user/eaterbc

Portas lógicas feitas com transistores (este vídeo foi utilizado para obter as informações deste post): https://www.youtube.com/watch?v=sTu3LwpF6XI

Desenvolvimento de uma placa de vídeo em uma protoboard: https://www.youtube.com/watch?v=l7rce6IQDWs

Programa para escrever "Hello world" usando apenas protoboards e um microcontrolador: https://www.youtube.com/watch?v=LnzuMJLZRdU

Demonstração de como computadores fazem adição: https://www.youtube.com/watch?v=wvJc9CZcvBc


Espero que este post tenha sido interessante. Até a próxima! :)

sábado, 13 de março de 2021

Codificadores

Em nossa sociedade, códigos são usados o tempo todo por todos nós para nos comunicarmos. Estes códigos nada mais são do que a linguagem que usamos para conversar com as pessoas em nosso dia a dia. Porém, as palavras não são o único tipo de código existente. Na realidade, no mundo da computação, as letras são usadas apenas para que nós, seres humanos, possamos entender o que está havendo e possamos nos "comunicar" com as máquinas. Os computadores, como vimos no último post, funcionam utilizando números binários e, assim como nós usamos várias línguas diferentes, os computadores também usam códigos diferentes para funções específicas. Neste post, vamos conhecer um pouco sobre alguns destes códigos.

Um código extremamente usado por nós diariamente e que muitos de nós nem sabemos da existência é o código ASCII. Este é um código binário de 7 bits responsável por codificar 128 sinais. Estes sinais são nada mais nada menos do que todas as letras do alfabeto latino, sinais matemáticos, pontuações e números. Sendo assim, se não fosse por este código, eu não poderia escrever este texto e vocês, do outro lado, não teriam como o ler.

Outro código muito interessante é o código Gray. Recebeu este nome por ter sido inventado por Frank Gray e possui a vantagem de apenas um bit mudar de um número para outro. Ex: 0 = 0000, 1 = 0001, 2 = 0011 (no código binário normal, 2 = 0010. Perceba que dois bits precisariam mudar, enquanto no código Gray, apenas um muda). Este código foi inventado em um tempo em que os circuitos lógicos eram desenvolvidos usando dispositivos eletromecânicos, que faziam muito barulho a cada mudança de bit. Além disso, as tecnologias da época não permitiam mudanças rápidas de todos os bits, então, ao passar de um número para o outro, nem todos os bits mudavam ao mesmo tempo. Sendo assim, uma mudança de 1 para 2 em binário, por exemplo, ao invés de acontecer como 0001 - 0010, seria um processo como 0001 - 0011 - 0010. Com a mudança de apenas um bit por vez, este problema foi solucionado.

Existe também o código BCD, que representa os números usando 4 bits por vez. Este código representa apenas os números de 0 (0000) a 9 (1001) e infelizmente ignora os outros 6 números possíveis usando 4 bits. Este código é muito utilizado para converter os sinais binários em números decimais em displays de 7 segmentos, que mostram apenas 9 números.

Um código interessante é o chamado código Johnson, utilizado nos chamados "contadores Johnson". Este contador possui uma capacidade de 2n (com n sendo o número de bits). Lembra um pouco o código Gray, visto que apenas um bit é modificado a cada número.


Código Johnson - imagem retirada do site Wikilivros - Eletrônica digital / Códigos numéricos

 Estes são apenas alguns dos muitos códigos usados na eletrônica e na computação. Abaixo, se encontra um mapa mental com todos os códigos citados aqui, algumas de suas vantagens e desvantagens (clique para ampliar):



Espero que este post tenha sido interessante. Até a próxima! :)

sábado, 6 de março de 2021

Conversão numérica


Os números são extremamente importantes para a sociedade humana. Sem eles, não seríamos capazes de desenvolver muitas das coisas que utilizamos hoje em dia (isso se fossemos capazes de sequer desenvolver algo). O sistema numérico mais utilizado por nós é o sistema decimal, que possui o número 10 como base. Isso significa que temos 10 números diferentes (0, 1, 2, 3, 4, 5, 6, 7, 8 e 9) e que com eles, podemos escrever todos os números que precisamos. Após o 9, por exemplo, escrevemos 10 (juntando o 1 e o 0), após o 10, escrevemos o 11 (juntando o 1 com outro 1) e assim por diante. Algo muito importante de se notar é que a posição dos números é muito importante. Observe:

Se temos o número 1 e 0 (10), o 0 a direita (10) representa a unidade. Isso significa que ele muda a cada novo número adicionado. Por exemplo: 10 + 1 = 11 (o zero da direita se tornou 1). Já o 1 (10) representa as dezenas, ou seja, ele só irá mudar a cada 10 números adicionados. Ex: 10 + 10 = 20 (perceba que o 1 da esquerda se tornou um 2)

Podemos representar isso usando potências, onde o número mais da direita representa 100 (1) e o número da esquerda representa 101 (10). Isso poderia continuar para sempre. Se tivéssemos mais um número a esquerda (como no número 100, por exemplo), o número 1 (em 100) seria representado como 10² (100). Caso algum desses números não fosse 1 (como no número 419, por exemplo), seria necessário apenas multiplicar o valor da localização do número pelo número que ocupa a posição. No caso do exemplo, ficaria assim: 4×102 + 1×101 + 9×100 = 4×100 + 1×10 + 9×1 = 419.

Saber disso é muito importante para que possamos compreender como funcionam outros sistemas numéricos. O sistema decimal não é o único sistema existente, embora seja muito útil para nós, seres humanos. Em alguns casos o sistema decimal não é muito eficiente, como é o caso de computadores, por exemplo. Usar o sistema decimal para programar computadores é inviável, pois, como eles funcionam a base de eletricidade, seriam necessários 10 valores diferentes de tensão, por exemplo, para simbolizar os 10 algarismos do sistema decimal. Isso poderiam não ser um problema tão grande se fosse possível utilizar valores de tensão extremamente precisos, o que não é o caso, visto que os valores de tensão podem sofrer variações. Sendo assim, os computadores utilizam o sistema binário, composto por apenas dois algarismos: 0 e 1. Porém, se conhecemos o funcionamento do sistema decimal, fica extremamente fácil entender o sistema binário, pois os dois funcionam da mesma forma. A única diferença é que, agora, ao invés de utilizar base 10, será utilizada a base 2.

Vamos observar alguns exemplos. O número 0 em decimal seria 0 também em binário, assim como o número 1. Porém quando chegamos ao número 2, encontramos uma novidade: temos apenas 0 e 1 em binário e estes dois números já foram usados. Então, já precisamos criar uma nova posição para escrever o número 2. Ficaria assim: 102 (este número representa a base) (2 em decimal). Neste exemplo, o número 1 (em 10) ocupa a posição 21 (que nada mais é do que o próprio 2) e o número 0 (em 10) ocupa a posição 20 (que seria 1). Porém, a posição 20 está sendo multiplicada por um 0, o que faz com que ela valha exatamente 0, enquanto a posição  21 está sendo multiplicada por 1 (que faz com que ela valha 2 mesmo). Sendo assim, temos 1×21 + 0×20 = 210.

Este exemplo foi usado apenas para demonstrar as semelhanças entre os sistemas numéricos e mostrar que a conversão entre eles não é tão complexa quanto se parece de início. Caso ainda esteja parecendo um pouco complexo, não se preocupe! No vídeo abaixo, algumas conversões serão feitas passo a passo e irão provar que a conversão de unidades é bastante simples. Existem outros sistemas numéricos além do decimal e do binário. Existe por exemplo o sistema hexadecimal, que possui base 16 e o octal, que possui base 8. Porém, a forma de conversão entre eles é exatamente a mesma, então é só alegria!



Projeto utilizando lógica sequencial e combinacional: Garra automática

Olá a todos! A postagem de hoje aqui no blog será um pouco diferenciada. Hoje iremos utilizar todos os nossos aprendizados para desenvolver ...