Arduino 2: Configuração do Arduino Nano

O Arduino que usaremos na oficina é um Arduino Nano. Tem dimensões de 43 x 15 mm. Ele possui uma entrada USB que permite a ligação direta a um computador (não precisa de adaptador), e que também fornece alimentação de 5V enquanto estiver conectado. Depois de programado e desconectado do computador, ele pode ser alimentado de forma independente por 7 a 12V aplicados nos pinos VIN (ligado ao positivo da bateria ou fonte) e GND (ligado ao negativo).

O Arduino Nano também possui saídas de tensão reguladas em 3,3 V (Pino 3V3) e 5V (Pino 5V). Os pinos A0 a A7 são de entrada analógica (recebem valores entre 0 e 5V), e D0 a D13 suportam entrada digital (reconhecem dois valores: 0V – nível lógico BAIXO ou 5V – nível lógico ALTO). A saída analógica é simulada via PWM apenas através dos pinos digitais D3, D5, D6, D9, D10 e D11. Os outros pinos digitais, e também os pinos A0 a A5, podem operar como saída digital. O diagrama abaixo ilustra a pinagem do Arduino Nano:

As especificações de corrente e tensão referem-se ao clone chinês CH340 do Arduino Nano que está incluído no kit, e não ao Arduino Nano original italiano (que são um pouco diferentes).

Algumas observações e cuidados importantes:

  • Os pinos do Arduino suportam no máximo 40mA (ligar em um circuito que deixa passar mais corrente pode queimar o pino). É necessário calcular resistores para limitar a corrente.
  • O Arduino inteiro fornece no máximo 200mA. Mas é possível controlar circuitos que consomem bem mais corrente, desde os sinais enviados e recebidos pelos pinos sejam intermediados por circuitos que reduzam as correntes e tensões a níveis suportados. Isto pode ser feito com resistores, capacitores, transistores, relés e outros dispositivos.
  • Também é necessário ter cuidado para não curto-circuitar as saídas (5V ou 3V3 ligadas diretamente em GND). Os pinos analógicos e digitais podem ser ligados diretamente em 5V ou 0V somente se forem usados como entradas. Esses valores são tratados como informação (nível lógico ALTO e BAIXO) pelo Arduino. Para usá-los como saídas, é necessário configurar essa funcionalidade na programação, e ter o mesmo cuidado que as saídas 5V e 3V3 (não ligar diretamente em GND), além de usar resistores para manter o fluxo de corrente dentro do limite.
  • O pino AREF é usado para ajustar a tensão de referência usada para os pinos analógicos. Ela está internamente conectada ao pino 5V, mas pode ser desligada via programação. Ligar uma tensão qualquer neste pino sem primeiro fazer essa alteração via código irá queimar o regulador de tensão (e provavelmente a entrada USB).

Um programa escrito para um tipo de Arduino pode ser usado em outro tipo de Arduino. Pode-se aproveitar programas prontos e fazer pequenas adaptações sem que seja necessário entender todo o código. Portanto, sabendo o mínimo da programação do Arduino, você pode baixar programas da Internet e adaptar para seus circuitos. É preciso garantir que os números de pinos, declarados no código dos programas, e os pinos reais, usados no circuito estejam de acordo. Em geral qualquer pino digital ou analógico pode ser usado. Eles podem até ser reprogramados. Alguns pinos têm capacidades especiais. Por exemplo, os pinos digitais 3, 5, 6, 9, 10 e 11, no Arduino Nano, permitem gerar saída analógica usando PWM.

Não se preocupe se você não entendeu tudo. São muitos conceitos e é sempre mais fácil entender com um ou mais exemplos. Nas próximas seções mostraremos como instalar e configurar o Arduino, e depois como usá-lo através de vários experimentos. Depois que você fizer os experimentos, releia esta seção. Vários conceitos irão ficar mais claros.

Preparação e teste do Arduino

Como vamos construir circuitos, e o Arduino Nano não possui soquetes onde podemos inserir terminais de componentes, precisamos usar o protoboard. Encaixe o Arduino com cuidado ocupando a parte central, de forma que possamos ter acesso a todos os seus pinos através dos pinos laterais. Da forma mostrada abaixo, cada pino terá dois a três furos.

O protoboard deve estar livre de outros circuitos (principalmente, não deve haver nenhuma fonte de energia conectado a ele).

Depois de encaixado o Arduino, encaixe uma das pontas do cabo USB no Arduino, e a outra em alguma saída USB do seu computador. O LED PWR do Arduino deverá acender, indicando que ele está sendo alimentado pela porta USB. Para haver comunicação, no entanto, é preciso instalar o driver.

Instalação do ambiente de desenvolvimento

Para habilitar um computador para programar o Arduino Nano do kit são necessárias duas etapas:

  1. Instalar o driver (programa que permite a comunicação com o Arduino via porta USB do computador) do adaptador USB-Serial (embutido no Arduino).
  2. Instalar o programa com o ambiente de programação (Arduino IDE).

A IDE (aplicação com ambiente gráfico para programação) é distribuída pelo site oficial do Arduino (arduino.cc) e existe para Mac, Windows e Linux. Roda de maneira praticamente idêntica nas três plataformas.

O driver é mais complicado de instalar, e pode variar dependendo do Arduino usado, se é um clone ou se é um autêntico italiano. O Arduino original (italiano) não requer a instalação de drivers no Mac, mas a instalação ainda pode ser necessária em algumas versões de Windows.

Instalação do driver

O Arduino Nano incluído no kit é um clone e usa um adaptador USB-Serial chinês (chip CH341). Para que ele seja reconhecido pelo computador, seja Mac, PC ou Linux, ele precisa ter o driver instalado antes. O driver é um programa de instalação que deve ser baixado do site do fabricante e executado. Ele não faz nada além disso. A instalação termina depois que o computador for reiniciado. Veja as instruções abaixo. Elas podem ser diferentes dependendo do sistema que você estiver usando.

Windows

Se você usa Windows 10 baixe o arquivo EXE disponível em

http://www.wch.cn/download/CH341SER_EXE.html

(clique no botão de Download), execute-o. Você deve ter as permissões para executar este programa no computador, pois ele vai gravar arquivos do sistema. Siga o passo-a-passo (em inglês). Depois é necessário reiniciar o computador para completar a instalação. Quando terminar e reiniciar, pule para a seção seguinte (IDE) para instalar o ambiente de programação.

Mac

Se usa Mac OS Sierra (10.12), baixe o arquivo ZIP em

http://www.wch.cn/download/CH341SER_MAC_ZIP.html

(clique no botão de Download) e abra o ZIP. Dentro dele há um arquivo CH34x_Install_V1.4.pkg. Execute esse arquivo e siga as instruções (em inglês). Depois é necessário reiniciar o computador para completar a instalação. Quando reiniciar, pule para a seção seguinte (IDE) para instalar o ambiente de programação.

Linux

E se você usa Linux baixe o arquivo localizado em

http://www.wch.cn/download/CH341SER_LINUX_ZIP.html

(clique no botão de Download). Abra o ZIP em uma pasta. Abra uma janela do terminal e execute as linhas abaixo:

sudo make
sudo make load

Instalação do ambiente de programação (IDE)

A programação do Arduino é feito na linguagem Processing, que é baseada na linguagem C e similar a linguagens de programação populares como C# e Java. Embora possam ser escritos programas bastante complexos usando essa linguagem, é possível fazer muita coisa escrevendo programas bem simples e fáceis de entender mesmo para quem é leigo em programação. Aprendendo o mínimo, você conseguirá baixar programas disponíveis na Internet e adaptar para rodar com seus circuitos. Para isto, precisamos instalar o ambiente de desenvolvimento integrado (IDE – Integrated Development Environment) do Arduino. Baixe o programa de instalação para o seu sistema operacional (Windows, Mac ou Linux) na página

https://www.arduino.cc/en/Main/Software

Execute o instalador e siga o passo-a-passo. Depois rode o programa. Ele deverá abrir a janela abaixo:

Comunicação do Arduino com o computador

Depois de instalados o driver e o IDE, é preciso ainda selecionar a placa usada e a identificar a porta de comunicação onde ela está conectada. Isto só precisa ser feito uma vez para cada placa diferente que você usar, mas requer que o Arduino esteja conectado. Portanto, se você ainda não conectou o Arduino a uma porta USB do seu computador, faça isto agora.

Selecione no menu Ferramentas (Tools), na opção Placa (Board). Na lista há várias placas. Selecione Arduino Nano.

Depois selecione a porta de comunicação. No Windows deve ser algo como COM4. No Linux e Mac, um caminho que inicia com /dev/cu.wchusbserial (ex: /dev/cu.wchusbserial123456).

Se você usar outro tipo de Arduino posteriormente, terá que modificar esses parâmetros ou a transferência do programa não será possível (o programa apresentará mensagens de erro informando isto). Alguns clones de Arduino são identificados diferentemente (ex: alguns clones chineses de LilyPad são identificados como Arduino Uno) e outros requerem a instalação de bibliotecas externas (que podem ser baixadas) para funcionar.

No próximo post iniciaremos a programação do Arduino e faremos um primeiro circuito.

Arduino 1: Introdução

Arduino é o nome de um projeto que consiste na especificação de uma linguagem de programação e de um circuito baseados em um microcontrolador, como uma plataforma eletrônica para facilitar a construção de dispositivos interativos que detectam e controlam objetos no mundo físico. É um projeto de fonte aberta: a especificação do hardware e software são livres, permitindo que qualquer um fabrique e venda placas Arduino sem pagar royalties a ninguém. A plataforma original foi criada em Ivrea, na Itália, por estudantes italianos e colombianos, com a intenção de facilitar o uso da eletrônica por artistas e designers.

Projetos artísticos com Arduino

Arduino é ideal para projetos artísticos, pois facilita muito o projeto e construção de circuitos eletrônicos, eliminando grande parte da sua complexidade. Muitos projetos que normalmente requerem o cálculo de circuitos elaborados com resistores, capacitores e transistores para usar um sensor, podem ser construídos usando apenas este sensor e um Arduino. É necessário, no entanto, programar o comportamento desejado em uma linguagem de computador.

Arduinos são usados em inúmeros projetos, dos mais simples aos mais complexos. Luzes que piscam ao ritmo da música, alarmes que disparam quando percebem movimento, robôs que interagem com o ambiente e controlam máquinas pela Internet, roupas, óculos e bolsas multimídia, instalações visuais, sensoriais, cinéticas e sonoras, sistemas de automação residencial, sistemas de irrigação, sistemas de realidade virtual, próteses controladas por voz, jogos, drones, controladores MIDI, impressoras 3D são alguns exemplos de projetos já criados com Arduino.

Nesta seção faremos uma breve introdução ao Arduino através de alguns circuitos e programas simples que você pode usar como base para projetos mais sofisticados. No final da apostila estão listados alguns sites com tutoriais mais detalhados sobre a linguagem de programação e a construção de circuitos com Arduino.

Arquitetura do Arduino

O circuito do Arduino é composto de um microcontrolador programável montado em uma placa, onde é configurado para operar e oferecer acesso seguro aos seus pinos de entrada e saída. Um microcontrolador é como um mini-computador. Ele tem memória, uma unidade central de processamento (CPU), entradas e saídas. Os programas gravados na memória de um microcontrolador controlam os sinais (correntes e tensões) enviadas e recebidas em seus pinos de entrada e saída, permitindo receber sinais de sensores externos e controlar dispositivos.

As entradas do Arduino recebem dados, que podem ser pulsos, tensões e outros sinais elétricos que ele interpreta como dados digitais (dois estados lógicos: ligado/ALTO ou desligado/BAIXO) ou analógicos (valores que variam). Os geradores desses sinais podem ser chaves, potenciômetros, sensores de luz, som e temperatura, outros circuitos, dispositivos conectados a redes, etc.

As saídas também produzem pulsos, tensões e sinais analógicos ou digitais, que podem ser usadas para diversas tarefas, como acender um LED, controlar um motor, ligar ou desligar um circuito, controlar um dispositivo externo, enviar um email.

O microcontrolador processa os dados de entrada para gerar os dados de saída. Todo o processamento é feito via software, ou seja, através de uma linguagem de programação.

Um programa usa instruções para ler o estado (nível de tensão, nível lógico alto ou baixo) em pinos de entrada, e produzir saídas (tensão, nível lógico alto ou baixo) nos pinos de saída, que poderão ligar, desligar ou controlar componentes e dispositivos. O programa é um arquivo de texto digitado em um computador, em seguida traduzido para linguagem de máquina e depois transferido para o microcontrolador (através de um circuito de comunicação que controla o acesso a pinos de comunicação serial), onde será gravado na memória do chip.

Uma vez gravado o programa, o microcontrolador pode ser desconectado do computador e usado em outro circuito para usar seus pinos de entrada/saída, ser alimentado por baterias, e funcionar de forma independente.

O microcontrolador usado pelo Arduino é um circuito integrado pertencente à família AVR. Microcontroladores AVR são populares em drones e impressoras 3D. Existem vários diferentes tipos, com diferentes capacidades de processamento e memória. Nos Arduinos, os mais populares são os ATMega e ATTiny. Eles têm diferentes formatos e tamanhos. A ilustração abaixo contém três circuitos integrados AVR usados em Arduinos (ATMega328 SMD, ATMega168, ATTiny85):

Um circuito mínimo do Arduino é simples e pode ser montado com um ATMega e meio-protoboard. Basicamente é um circuito que serve para alimentar o circuito integrado (pinos 7 e 8) e gerar os pulsos de relógio que o microprocessador precisa para operar. O ATMega328 do esquema abaixo usa um oscilador de cristal de quartzo nos pinos 9 e 10 para gerar 16 milhões de pulsos por segundo (16 mega Hertz). Este microcontrolador possui 14 pinos digitais (0 a 13) e seis analógicos (A0 a A6) que podem ser usados tanto como entrada ou saída (a finalidade é determinada via software).

O ATMega precisa ser alimentado por 5V. O circuito acima usa um regulador de tensão L7805 que permite alimentar o circuito com 7 a 35V, garantindo que apenas 5V seja enviado ao ATMega. O desenho abaixo ilustra um Arduino montado em protoboard. É igual ao esquema acima, mas acrescenta um LED entre 5V e GND que acende quando o Arduino estiver sendo alimentado.

O circuito acima é apenas uma plataforma básica para operar o Arduino. Ele não faz nada. Para isto é preciso que tenha na memória um programa contendo instruções dizendo o que deve fazer, e sejam conectados sensores e/ou dispositivos a serem controlados aos seus pinos de entrada e saída.

A transferência do programa para a memória do ATMega é feita através dos pinos RX0 (entrada) e TX1 (saída). Para realizar essa transferência a partir de um computador é preciso conectar esses (e alguns outros) pinos a um circuito adaptador USB-Serial. Este circuito pode ser comprado separadamente como uma pequena placa, e às vezes já vem embutido em alguns cabos adaptadores. O diagrama abaixo mostra um circuito de Arduino mínimo conectado a uma pequena placa adaptadora USB-Serial. Através da placa ele poderá ser conectado a um computador, que também fornecerá a alimentação de 5V):

Construir um Arduino desta forma é bom como exercício didático para entender como funciona, mas normalmente usamos placas prontas, que já contém um adaptador USB embutido e regulação de tensão (com saídas fixas de 3,3V e 5V), permitindo alimentar o Arduino com tensões variáveis (de 1,8 até 20V, dependendo do modelo). Essas placas vêm em vários tamanhos, são mais práticas, fáceis de usar, e às vezes até mais baratas que montar um circuito Arduino como mostrado acima.

Placas Arduino

Existem dezenas de diferentes tipos de placas que podem ser chamadas de “Arduino”. Todas, sejam as originais italianas ou clones, são baseadas nas famílias de chips AVR ATMega/ATTiny ou similar, e rodam programas escritos para a plataforma Arduino.

O Arduino Uno é um dos mais populares, e ideal para fazer protótipos, experimentar e programar. O Arduino Mega possui mais pinos, maior capacidade de processamento e memória e é indicado para projetos maiores (ex: impressoras 3D). Existem várias placas minúsculas como o Arduino Pro Mini, o DigiSpark ATTiny, ou o Arduino Nano (incluído no kit). Algumas não tem entrada USB (para economizar espaço e energia) e precisam de um adaptador USB-Serial para que sejam programadas.

O Arduino LilyPad é a principal placa usada em eletrônica para vestir (wearables). Nessa linha existem várias placas, a maioria em formato circular com pinos em forma de ilhas que podem ser amarradas com linha de costura condutiva, e costuradas em tecido. Exemplos incluem Arduino Gemma, AdaFruit Flora, Digispark LilyTiny.

No próximo post mostraremos como configurar o Arduino para permitir a sua programação através de um computador.

Circuitos integrados 10: usando um display de 7 segmentos

Um decodificador é um circuito que adapta dados de entrada codificados para uma saída esperada por um dispositivo. A codificação pode ser uma sequência de pulsos. Assim como o 4017, o 4026 também sabe contar pulsos, mas em vez de ligar uma dentre 10 saídas, ele liga duas a sete saídas de uma vez. Essas sete saídas correspondem aos LEDs de um display de sete segmentos, que pode ser usado para representar dígitos.

Experimento 23 (extra) – Contador de 0 até 9 com display de 7 segmentos e 4026

Este circuito é ainda mais simples que o anterior (basicamente ligar fios a terminais), e aproveita o gerador de pulsos automático criado acima.

Material necessário

  • Circuito temporizador 555 (construído na alteração do experimento anterior)
  • 1 capacitor de 1µF (substituindo o de 100nF, para que a contagem seja mais lenta)
  • 1 resistor de 10k Ω
  • 1 resistor de 470 Ω
  • Chave táctil de pressão
  • Display de 7-segmentos
  • Circuito integrado 4026
  • Protoboard, fios e jumpers
  • Fonte ou bateria de 9V

Monte o circuito a seguir. Observe que a parte do 555 é idêntica ao do circuito do experimento anterior com exceção do capacitor de 100nF que foi trocado por um de 1µF, para que a contagem seja mais lenta.

Veja detalhes sobre a pinagem do display e do 4026 na referência no final da apostila. Esta é uma possível implementação em protoboard.

Circuitos integrados 9: Contador de década com 4017

O circuito integrado 4017 é um contador de década. Basicamente ele sabe contar até 10 e dentre os seus 16 pinos possui 10 pinos que produzem uma saída em nível lógico ALTO ou BAIXO, dependendo dos controles que disparam sua contagem. Essas saídas podem ser usadas para ligar circuitos, acender LEDs, disparar cigarras, etc. A contagem é produzida por um pino de entrada que avança a contagem através do recebimento de um pulso (que pode ser produzido por uma chave, um sensor, um oscilador de cristal de quartzo ou gerado através de um temporizador como o 555).

Como o 555, o 4017 também é um circuito integrado muito antigo (tem quase meio-século de existência).

O experimento a seguir usa o 4017 para acender uma série de LEDs em sequência a cada pulso recebido. Uma alteração do experimento inclui o 555 para que os pulsos sejam gerados periodicamente.

Experimento 22 (extra): sequenciador de LEDs com o 4017

Este experimento parece complexo apenas porque tem muitos fios, mas na verdade é muito mais simples que os outros experimentos montados anteriormente. A principal complexidade é verificar com cuidado as polaridades e o posicionamento dos fios e componentes.

Material necessário:

  • 1 circuito integrado 4017
  • 10 resistores de 470 Ω
  • 10 LEDs
  • 1 resistor de 10k
  • 1 chave táctil de pressão
  • Fonte ou bateria de 9V
  • Fios e jumpers

Monte o circuito abaixo. Lembre-se que os pinos são contados em sentido anti-horário a partir do chanfro em um dos lados, ou do ponto, que indica o pino 1.

Esta é uma possível implementação com protoboard.

Você também pode posicionar os LEDs formando um círculo, assim a contagem não acaba nunca e o LED fica girando para sempre. Isto pode ser feito em uma placa ou superfície qualquer, soldando (ou amarrando) os terminais dos LEDs.

Alteração 22.1 – Sequenciador de LEDs automático com 555 e 4017

Este circuito adiciona um gerador de pulsos automático com 555, para o circuito anterior.

Material adicional necessário

  • Circuito integrado 555
  • Resistor de 680k Ω
  • Capacitor de 10nF
  • Capacitor de 100nF (104)

A função do 555 é apenas de produzir pulsos para a entrada do 4017. Você pode alterar os valores do capacitor (de 100nF) e do resistor (de 680k) para variar a frequência e fazer o LED se mover mais ou menos rapidamente.

Alguns protoboards têm uma interrupção no meio dos condutores laterais. O circuito abaixo assume essa possibilidade e faz a ligação entre as duas metades com um fio (na faixa positiva e negativa).

Circuitos integrados 8: controle de velocidade de um motor com PWM e 555

Material adicional necessário:

  • 1 transistor MOSFET de canal N de propósito geral (2N7000 ou equivalente)
  • 1 resistor de 47 Ω
  • 1 diodo Zener de 3,3V e 1W (1N4728 ou equivalente)
  • 1 diodo de propósito geral (1N4148 ou equivalente)
  • 1 motor de 3V (opera com 1 a 6V)

O circuito abaixo é uma adaptação do anterior. Nesta versão PWM é usado para variar a velocidade de um motor. O circuito possui várias adaptações necessárias para lidar com algumas limitações impostas pelo 555, transistor e pelo motor:

  • Pulsos de corrente gerados pelo motor: uma bobina (indutor) armazena corrente, que é liberada em um pulso durante transições (ao ligar ou desligar a energia sobre ela). Um pulso de corrente reversa muito alta pode queimar um componente. Por este motivo usamos um diodo de proteção posicionado de forma reversa e em paralelo com o relé em um experimento anterior, para que esse pulso seja curto-circuitado e não afete o resto do circuito. O mesmo vale para motores, transformadores e indutores em geral.
  • Demanda de corrente do motor: além de pulsos elevados, a demanda de corrente do motor pode ser maior que a suportada pelo 555 ou Arduino. Nestes casos, precisamos isolar o circuito com um transistor. Pode ser um transistor bipolar, mas a opção mais eficiente neste caso é usar um transistor MOSFET, que fornece um isolamento maior e quase não consome energia quando desligado (ele tem uma resistência interna altíssima na entrada).
  • Tensão máxima suportada pelo motor: o motor do kit tem uma faixa de operação que varia de 1 a 6V. Deixá-lo funcionando muito tempo em 9V pode queimá-lo, portanto é preciso garantir que a tensão sobre ele não passe de 6V. Não adianta limitar a tensão via PWM, pois ela é simulada (o pulso sempre irá produzir valores máximos de 9V). Um divisor de tensão com resistores também não garante essa redução, pois a resistência interna do motor varia durante a operação. Uma solução para regular a tensão é usar um diodo Zener. Esse tipo de diodo é construído para manter uma tensão reversa fixa sobre ele, mesmo com grandes variações de corrente. No kit temos o diodo 1N4728, que mantém uma tensão fixa de 3,3V. Colocado em série com o motor, de forma reversa, ele irá subtrair 3,3V da tensão máxima produzida na saída (ou seja, do pulso máximo), garantindo que o motor nunca receba uma tensão maior que 6V (para uma alimentação de 9V).

Transistores MOSFET não têm terminais base, emissor e coletor, mas Gate (G) – que tem função similar à base, Drain (D), similar ao coletor, e Source (S), que tem um papel similar ao emissor. No circuito abaixo, a saída do 555 controla o terminal G que controla a passagem de corrente de D para S que aciona o motor.

Uma possível implementação do circuito acima em um protoboard está ilustrado abaixo.

PWM funciona no experimento com motor devido à inércia, que impede que o motor pare completamente quando desligado. Portanto, o motor está sempre acelerando e desacelerando muito rapidamente, o que na prática produz uma velocidade constante reduzida.

Circuitos integrados 7: PWM com 555

Nos exemplos com 555 mostrados nos posts anteriores, é impossível ter um pulso de nível BAIXO que seja maior que um pulso de nível ALTO. De acordo com as fórmulas, qualquer aumento de R2 que aumenta a duração do pulso em estado BAIXO, também aumenta o pulso em estado ALTO:

ALTO = 0,7 x C x (R1+R2)
BAIXO = 0,7 x C x R2

O pulso em estado ALTO acontece durante a carga do capacitor, com a corrente fluindo pelos dois resistores. Já o pulso em estado BAIXO corresponde à descarga do capacitor através do resistor R2 e pino 7 (DIS). Uma forma de evitar que R2 influencie no pulso ALTO é fazer com que ele não participe da carga do capacitor, apenas da descarga. Isto é possível usando um diodo.

Um diodo só permite a passagem de corrente em um sentido. Colocando um diodo em paralelo com o resistor R2, podemos deixar a corrente passar pelo resistor apenas quando ele estiver descarregando. Durante a carga o resistor será ignorado porque o diodo se comporta como um circuito fechado.

O circuito abaixo ilustra essa configuração:

Agora é possível calcular a duração de cada pulso usando apenas um resistor, e assim escolher suas durações de forma independente:

ALTO = 0,7 x C x R1
BAIXO = 0,7 x C x R2

Existe uma variação do circuito acima que é mais comum por permitir variar a largura dos pulsos mantendo R1 fixo. Essa configuração é importante para o uso do 555 com PWM – uma técnica eficiente para simular saída analógica com o 555. Esta variação está mostrada abaixo:

As fórmulas para calcular a duração de caba pulso são:

ALTO = 0,7 x C x (R1 + Rc)
BAIXO = 0,7 x C x Rd

As fórmulas são aproximadas e não levam em conta a queda de tensão nos diodos (que é de aproximadamente 0,7V).

PWM – Pulse Width Modulation

PWM significa modulação de largura de pulso. É uma das principais técnicas usadas para simular uma saída analógica através de um circuito digital. Consiste em gerar pulsos digitais em alta frequência, variando sua largura para produzir uma valor médio de tensão variável. Ou seja, o PWM é um pisca-pisca que varia os tempos aceso e apagado muito rapidamente, produzindo a ilusão de que a intensidade está variando.

Por exemplo, se um pulso de onda quadrada de 5V fica metade do tempo ligado, e metade do tempo desligado (em 0V), o valor médio simulado é de 2,5V. Aplicando um sinal desses a um LED, ele piscará muito rapidamente ficando aceso metade do tempo, e irá aparentar ter metade do brilho que teria com um valor contínuo.

Se o pulso ficar 25% do tempo em 5V, o valor médio cai para 1,25V, e se ele ficar 75% do tempo em 5V e apenas 25% do tempo em 0, o valor médio aumenta para 3,75V. Comparada ao uso de um potenciômetro, que consome energia dissipando na forma de calor, PWM é uma técnica mais eficiente de variar tensão e corrente, já que a carga fica desligada (consumindo zero amperes) durante o tempo que o pulso é BAIXO.

Com PWM o 555 pode ser usado para implementar aplicações como controles de intensidade luminosa (dimmers) e controle de velocidade de motores. É bastante usado em circuitos com Arduino, que implementa suas saídas analógicas usando PWM.

Nem todo circuito funciona com PWM. Dispositivos que têm limite de tensão menor que o valor máximo produzido podem ser danificados com uma tensão simulada baixa (pois ela sempre alterna entre valores máximo e mínimo). Nessas situações é preciso construir um circuito retificador para converter as ondas quadradas em um valor contínuo.

Os gráficos a seguir ilustram o funcionamento de PWM descrito acima.

Para que o primeiro pulso possa ser menor que o segundo, é preciso usar a configuração mostrada anteriormente (usando dois diodos) para poder controlar isoladamente os tempos de carga e descarga do capacitor.

Nos experimentos a seguir, implementaremos PWM nessa configuração usando um potenciômetro, que irá permitir a variação do equilíbrio de resistências de um divisor de tensão, e desta forma variar os tempos de carga e descarga do capacitor, e consequentemente a largura dos pulsos na saída OUT (pino 3) do 555.

Experimento 21 (extra) – Dimmer usando PWM

Material necessário:

  • Fonte ou bateria de 9V
  • 1 resistor de 1k Ω
  • 1 resistor e 680 Ω
  • 1 potenciômetro de 100k Ω
  • 2 diodos de propósito geral (1N4148 ou equivalente)
  • 2 capacitores de 10nF
  • 1 LED de qualquer cor
  • 1 circuito integrado 555
  • Protoboard, fios, jumpers

O circuito abaixo controla a intensidade do brilho do LED de forma eficiente usando PWM, em vez de desperdiçar energia dissipando o excesso de corrente com um resistor limitador (como fizemos no experimento com LED RGB).

Com PWM o LED permanece desligado parte do tempo. O LED acende e apaga completamente muito rapidamente, portanto a redução de brilho é uma ilusão causada principalmente pela persistência da visão (é o mesmo efeito que ocorre quando assistimos um filme no cinema), embora parte do efeito também se deva ao fato de que a onda quadrada não é perfeita.

O potenciômetro varia a largura de pulso para mais ou para menos, fazendo com que o brilho aparente do LED varie. O LED é a carga do circuito, e pode ser substituído por outro dispositivo analógico ou circuito que funcione com PWM.

A ilustração abaixo é uma possível implementação para o circuito acima.

Circuitos integrados 6: oscilador sonoro com 555

Este experimento parece complexo, mas é apenas uma variação do anterior. A maior complexidade é posicionar os componentes corretamente no protoboard.

Experimento 20 (extra): Mini instrumento musical com 555

Material necessário:

  • Circuito integrado 555
  • 5 chaves tácteis de pressão
  • 1 resistor de 100k Ω
  • 1 resistor de 33k Ω
  • 2 resistores de 22k Ω
  • 2 resistores de 10k Ω
  • 2 resistores de 6,8k Ω
  • 2 resistores de 4,7k Ω
  • 2 resistores de 3,3k Ω
  • 2 capacitores de 10nF
  • 1 capacitor eletrolítico de 10µF
  • 1 alto-falante de 8 Ω
  • Fonte ou bateria de 9V
  • Fios, jumpers e protoboard

O circuito abaixo é uma versão do multivibrador astável em frequência audível, similar ao circuito que montamos com transistores. Mas criamos 5 trechos RC (resistor-capacitor) separados, variando o resistor R1, de tal forma a produzir frequências que correspondem aproximadamente a notas musicais. Para acionar cada trecho é preciso apertar o botão correspondente.

Este circuito utiliza vários resistores em série para produzir os valores necessários para obter as frequências desejadas. Todos os resistores usados estão disponíveis no kit distribuído para a oficina. Se você tiver outros resistores além dos resistores do kit, poderá usar os dados na tabela abaixo para tentar obter uma frequência mais próxima da esperada, ou usar menos resistores no circuito.

Cada botão, quando apertado, combina os resistores abaixo dele (em série) e faz o 555 apitar em uma frequência diferente, aproximadamente um tom ou semitom acima do botão anterior. As frequências calculadas são Lá(440Hz), Si(494Hz), Dó (523Hz), Ré (587Hz) e Mi (659Hz). Elas foram calculadas usando a fórmula:

1,44 / [ C x (R1 + 2 x R2) ]

As combinações R1-R2-C foram construídos de acordo com a tabela abaixo. Apenas R1 varia:

Nota Frequência esperada R1 (com resistores existentes no kit) R2 C Frequência calculada
Mi (5) 659 Hz 19,4k (4,7k+4,7k+10k) 100k 10nF 1,44 / (200k + 19,4k) * 10nF =
656 Hz
Ré (5) 587 Hz 44,7k (19,4k+22k+3,3k) 100k 10nF 1,44 / (200k + 44,7k) * 10nF =
588 Hz
Dó (5) 523 Hz 73,5k
(44,7+22k+6,8k)
100k 10nF 1,44 / (200k + 73,5k) * 10nF =
527 Hz
Si (4) 494 Hz 90,3k
(73,5k+10k+6,8k)
100k 10nF 1,44 / (200k + 90,3k) * 10nF =
496 Hz
Lá (4) 440 Hz 126,6k
(90,3k+33k+3,3k)
100k 10nF 1,44 / (200k + 126,6k) * 10nF =
441 Hz

O 555 produz na saída OUT uma onda quadrada e a fórmula usada não garante uma onda com pulsos de duração igual (o pulso de nível lógico ALTO sempre é igual ou maior que o pulso BAIXO, e geralmente é bem maior), portanto o som não é dos melhores.

Outra questão é a precisão dos resistores que é de 95%. Uma variação de 5% pode causar uma diferença de um semitom, que é significativa para a afinação. Mesmo assim, o som resultante deve ficar em uma frequência próxima da esperada. Você pode tentar melhorar o circuito incluindo um ajuste fino da afinação usando potenciômetros de 50k no lugar dos resistores.

A ilustração abaixo é uma possibilidade de montagem em protoboard:

Circuitos integrados 5: 555 em modo astável

Neste modo, o 555 funciona como um oscilador gerando na saída OUT uma sequência contínua de pulsos alternados em uma frequência determinada pelos dois resistores (R1 e R2) e capacitor (C), e pode ser usado para várias aplicações, por exemplo, piscar LEDs, produzir tons em um alto-falante, controlar a intensidade de LEDs e velocidade de um motor.

Pode-se usar um potenciômetro no lugar de R2 para variar a frequência dos pulsos gerados.

O mesmo capacitor é usado para acionar os pinos 6 (THR) e 2 (TRIG). Quando o capacitor carrega via R1 e R2 e atinge 2/3 de Vcc, THR (6) dispara e encerra o ciclo, iniciando a descarga via R2 e DIS (pino 7), e fazendo o pino 3(OUT) = nível lógico BAIXO. Quando a carga do capacitor cai abaixo de 1/3 de Vcc, TRIG é acionado e OUT passa a ter nível ALTO, fechando a chave DIS e permitindo o reinício da carga do capacitor.

A fórmula para determinar a frequência (ciclos por segundo) é

1,44 / [ C x (R1 + 2 x R2) ]

A duração de cada pulso depende principalmente de R2. Para R1 pode-se escolher um valor fixo (ex: 10k Ω). Fazendo-se o valor de R2 muito maior que R1 garante pulsos positivos e negativos com duração semelhante (mas evite valores de R1 muito menores que 1k Ω). A fórmula para a duração de cada pulso é:

ALTO = 0,7 x C x (R1+R2)
BAIXO = 0,7 x C x R2

Pelas fórmulas, a duração do pulso de nível lógico ALTO (chamado de “ciclo de trabalho” ou “duty-cycle”) sempre será um pouco maior que a duração do pulso BAIXO. Para obter pulsos iguais ou pulsos de nível logico baixo mais longos é preciso configurar o 555 de forma diferente (isto será mostrado mais adiante).

No final da apostila estão listados alguns sites que contém calculadoras para astáveis 555, onde você pode entrar com a frequência desejada, ciclo de trabalho desejado, e obter valores de capacitor e resistor. Também existem simuladores onde você pode experimentar alterar valores de capacitores e resistores na tela e ver a onda gerada na saída.

Experimento 19 – Pisca-pisca com LED usando 555

Material necessário:

  • Fonte de 9 ou 12V, ou bateria de 9V
  • Protoboard, fios e jumpers
  • Resistor de 10k Ω
  • Resistor de 680k Ω
  • Capacitor de 2,2µF
  • Resistor de 470 Ω (ou 560 Ω se fonte de 12V)
  • LED
  • Capacitor cerâmico de 10nF
  • Circuito integrado 555

O circuito abaixo acende e apaga um LED por tempo determinado. Como R2 é muito maior que R1, é possível calcular a duração aproximada de cada pulso (ligado ou desligado) ignorando-o no cálculo e usando 0,7 x C x R2.

A ilustração abaixo mostra uma possível montagem no protoboard:

Escolhendo valores menores de R2 e C, pode-se aumentar a frequência até atingir um valor audível (tipicamente entre 30 a 8000 pulsos por segundo, ou Hertz). Por exemplo, para produzir uma frequência de próxima de 440 Hz (frequência do diapasão usado para afinar instrumentos) pode-se usar um resistor de 47k Ω e um capacitor de 33nF, e ligar a saída do circuito a um alto-falante. Experimente usando os simuladores e calculadoras de astáveis 555 listados no final da apostila.

Circuitos integrados 4: temporizador sonoro com 555 acionando um relé

Este experimento é baseado no anterior.

Material adicional:

  • Relé de 5V, dois polos, duas posições
  • Diodo de propósito geral (1N4148 ou equivalente)
  • Cigarra de 5V
  • Resistor de 100 Ω (ou 220 Ω se fonte de 12V)

Finalmente o LED pode ser substituído por qualquer outro circuito. No exemplo abaixo, substituímos o LED por um relé de duas chaves e duas posições.

Um relé é uma chave acionada por um eletroímã e está descrito na referência no final da apostila. Ele tem oito terminais e deve ser posicionado no meio do protoboard, como os circuitos integrados. Internamente ele possui a seguinte estrutura:

Os pinos 1 e 2 são os terminais do eletroímã. O relé contém duas chaves, representadas pelos pinos 3-5-7 e 4-6-8. Os pinos 3-5 e 4-6 estão inicialmente conectados. Ao ligar o eletroímã (aplicando uma tensão de 4 a 10V nos terminais), os pinos 5 e 6 são desligados e a conexão muda para 3-7 e 4-8.

No circuito abaixo, o relé L foi colocado no lugar do LED. São usados os terminais conectados da primeira chave (3-5-7) para manter um LED aceso enquanto OUT estiver em nível lógico BAIXO (e consequentemente o relé estiver desligado). A segunda chave (4-6-8) conecta uma cigarra (buzzer) aos terminais inicialmente desconectados (4-8), que será ligada durante o período em que OUT mudar para nível lógico ALTO (e o eletroímã do relé estiver acionado).

O diodo D é importante pois indutores em geral (relés, motores, transformadores) armazenam corrente que podem fluir no sentido contrário ao ligar o circuito. Esse pulso de corrente pode ter um valor muito elevado e queimar um componente. O diodo só permite a passagem de corrente em um sentido. Colocando-o da forma mostrada no circuito, impede-se que essa corrente reversa flua, protegendo o circuito. Diodos de proteção devem sempre ser usados ao incluir relés, transformadores, motores e outros indutores no circuito.

A ilustração abaixo mostra uma possível montagem com o protoboard. Observe que a cigarra também tem uma polaridade. A cigarra distribuída no kit tem valor nominal de 5V e pode ser usada com tensões entre 3 e 8V e corrente de 30mA, por isto incluímos um resistor para reduzir a tensão e a corrente que passa por ele.

Circuitos integrados 3: temporizador acionado por som

Este experimento é baseado no anterior.

Material adicional:

  • Mini-microfone de eletreto
  • Resistor de 3,3k Ω
  • Capacitor de 1µF

O pulso que dispara o temporizador acontece quando o pino 2 (disparador) estiver em nível lógico BAIXO (tensão zero, ou negativa). O acionamento também pode ser causado por um sensor, como um LDR (luz), um termistor (temperatura), ou qualquer outro dispositivo ou circuito que abaixe a tensão no pino 2 até um valor próximo de zero.

No exemplo abaixo, substituímos o botão por um circuito que amplifica o sinal recebido por um microfone de eletreto. O resistor de 10k mantém ALTO (positivo) o nível lógico do pino 2, mas quando som é captado pelo microfone, um sinal é enviado através do capacitor e o transistor satura, comportando-se como uma chave fechada entre os seus terminais C e E, conectando a entrada do pino 2 ao negativo (nível lógico baixo), desta forma disparando o temporizador.

Observe que o microfone tem uma polaridade definida. (Pode ser necessário soldar terminais no microfone incluído no kit, se eles já não estiverem soldados, ou se forem muito pequenos. Veja o tutorial no final da apostila.)

Experimente gritar ou bater palmas perto do microfone. O som deve acionar o temporizador e fazer o LED acender por alguns segundos.

A ilustração abaixo mostra uma montagem possível usando o protoboard:

O capacitor de 1µF usado na base do transistor serve para que o componente de tensão contínua que alimenta o microfone não passe para o transistor. O capacitor não deixa passar corrente contínua, mas apenas transições e pulsos. Interessa amplificar o sinal recebido pelo microfone, mas ele sempre vem sobreposto à tensão do microfone, que produziria corrente para o transistor ligar mesmo não havendo som algum vindo do microfone. Usando o capacitor, apenas o sinal gerado pelo microfone passa para a base do transistor. Esse tipo de circuito é usado em muitas situações onde é preciso amplificar sinais e eliminar a componente contínua: