Departamento de Eletrônica/UFMG ELT 006 (Eng. Automação e Controle) Laboratório de Eletrônica Analógica e Digital Prof. Maurílio Nunes Vieira Título (conteúdo) pág Aula 01 – Apresentação; LTspice (conteúdo das práticas, projeto extra-classe, critérios de avaliação. Apresentação dos instrumentos do laboratório: multímetro, osciloscópio, fonte de alimentação e gerador de sinais. Uso do simulador LTspice); 1 Aula 02 – Circuitos com diodos (diodos de junção: polarização direta e reversa; LEDs; matriz de decodificação; circuitos lógicos; limitadores de tensão); 4 Aula 03 – Arduino1 (apresentação; saídas digitais, LEDs: polarização direta/reversa; controle de brilho com PWM; display de 7 segmentos; comunicação serial); 11 Aula 04 – Arduino2 (entradas digitais/chaves táteis, display LCD alfanumérico; entradas analógicas); 32 Aula 05 – Fontes de alimentação lineares (circuitos retificadores, filtro capacitivo, reguladores integrados); 44 Aula 06 – Transistor de junção bipolar (BJT) como chave (polarização, corte e saturação; sensores de luz; acoplador óptico); 51 Aula 07 – Arduino3 (controle de motores CC; ponte H; motor de passo; servos); 57 Aula 08 – Amplificadores Operacionais I (comparadores com e sem histerese; controlador liga-desliga); 71 Aula 09 – Amplificadores Operacionais II (circuitos lineares); 77 Aula 10 – Amplificadores Operacionais III (osciladores de relaxação); 84 Aula 11 – Amplificadores operacionais IV (filtros); 88 Aula 12 – Amplificadores operacionais V (conversor tensão-corrente: 0-5V 4-20 mA 92 Aula 13 – Amplificadores operacionais VI (osciladores senoidais) 95 2º. Sem 2014
99
Embed
Apostila de Práticas Eletrônica Analógica e Digital
Apostila de praticas da disciplina de Eletronica analogica e digital da UFMG. Cobre todas as práticas utilizadas em um semestre regular, totalizando 12 práticas.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Departamento de Eletrônica/UFMG
ELT 006 (Eng. Automação e Controle)
Laboratório de Eletrônica Analógica e Digital
Prof. Maurílio Nunes Vieira
Título (conteúdo) pág Aula 01 – Apresentação; LTspice (conteúdo das práticas, projeto extra-classe, critérios
de avaliação. Apresentação dos instrumentos do laboratório: multímetro, osciloscópio, fonte de alimentação e gerador de sinais. Uso do simulador LTspice);
1
Aula 02 – Circuitos com diodos (diodos de junção: polarização direta e reversa; LEDs; matriz de decodificação; circuitos lógicos; limitadores de tensão);
4
Aula 03 – Arduino1 (apresentação; saídas digitais, LEDs: polarização direta/reversa; controle de brilho com PWM; display de 7 segmentos; comunicação serial);
Aula 06 – Transistor de junção bipolar (BJT) como chave (polarização, corte e saturação; sensores de luz; acoplador óptico);
51
Aula 07 – Arduino3 (controle de motores CC; ponte H; motor de passo; servos); 57 Aula 08 – Amplificadores Operacionais I (comparadores com e sem histerese;
controlador liga-desliga); 71
Aula 09 – Amplificadores Operacionais II (circuitos lineares); 77
Aula 10 – Amplificadores Operacionais III (osciladores de relaxação); 84 Aula 11 – Amplificadores operacionais IV (filtros); 88 Aula 12 – Amplificadores operacionais V (conversor tensão-corrente: 0-5V 4-20 mA 92 Aula 13 – Amplificadores operacionais VI (osciladores senoidais) 95
2º. Sem 2014
Disciplina: ELT 006 – Eletrônica
Prof. Maurílio Nunes Vieira
Pág
ina1
Uso do simulador LTspice
Objetivos
1. Apresentação do software LTspice
2. Simulações em um circuitos RC
Introdução
O LTspice (Linear Technology Simulation Program with Integrated Circuit Emphasis)
é um software para edição e simulação de circuitos eletrônicos desenvolvido pela
empresa Linear Technology. O programa, gratuito e sem restrições funcionais, pode ser
obtido em www.linear.com onde também há documentação sobre o produto.
Orientações iniciais para instalação e uso estão em LTspiceGettingStartedGuide.pdf . De
forma resumida, as etapas básicas o uso são:
1) Iniciar um novo diagrama esquemático [New Schematic];
2) Inserir, movimentar e interligar os componentes. O nó de referência (“terra”)
deverá ser obrigatoriamente incluído. Para girar os componentes; [CNTR] + [R];
Para mudar valores: [Simulate → → mouse/direita ...]; Salvar o arquivo com um
nome apropriado;
3) Configurar os parâmetros da simulação desejada [Simulate → Edit Simulation
Command ...];
4) Executar a simulação [Simulate → Run]e visualizar formas de onda de corrente e
tensão.
Para detalhes, leia as páginas 13-38 do LTspiceGettingStartedGuide.pdf
A. Transitório CC (corrente contínua) circuito RC
No sistema de 1ª. ordem da Fig. 1, a fonte de tensão pode ser configurada de diversas
formas. Para uma fonte contínua ,V a tensão instantânea no capacitor será dada por:
)1( /t
c eVv (1)
onde = R∙C é a constante de tempo do circuito.
Questão:
Na Eq. 1, determine o tempo, em número de constantes de tempo, para a tensão
atingir 99%, do valor máximo (isto é, faça Vvc 99,0 e resolva para t).
Prof. Fernando Esquírio Torres e Prof. Maurílio Nunes Apostila criada para fins didáticos. Proibido qualquer reprodução ou uso não autorizado.
Pág
ina1
2
Tabela 1. Características principais do Arduino UNO. Outras características são arquitetura de 8 bits, 20 MIPS, 1 KB de EEPROM, conversor analógico/digital de 10 bits, comunicação serial
SPI / I2C / UART.
A placa do Arduino possui vários pinos de entrada/saída (I/0), que podem ser utilizados para
sinais analógicos ou digitais. Nos pinos de I/O (Figura 2), podemos conectar diversos componentes
externos, como LEDs, botões, relés, sensores, motores, etc.
A programação do Arduino é feito em um ambiente de desenvolvimento integrado (Integrated
Development Environment, IDE) disponibilizado gratuitamente (http://arduino.cc/en/Main/Software). O
software da IDE (arduino.exe) não requer instalação (portable) e está pronto para ser executado de
qualquer diretório. Por outro lado, o driver da placa deve ser previamente baixado do site oficial e
instalado no computador por um usuário com prerrogativas de administrador.
Prof. Fernando Esquírio Torres e Prof. Maurílio Nunes Apostila criada para fins didáticos. Proibido qualquer reprodução ou uso não autorizado.
Pág
ina2
6
Anexo I
A prática do Display de 7 segmentos será bem mais útil se criarmos uma biblioteca exclusiva
para ele e assim sempre que precisarmos reutilizar o código podemos copiar a biblioteca para a pasta
do nosso novo projeto. Para criarmos nossa biblioteca é importante que você siga todos os passos
listados abaixo atentamente, em caso de acontecer algum erro, refaça-os um a um com mais
atenção:
1º. Abra o programa do Arduino.
2º. Salve o sketch abre com um nome representativo, como por exemplo,
DISPLAY_7_SEG_BIBLIOTECA.
3º. Feche o programa Arduino. E vamos criar a nossa biblioteca. Começamos a criação de uma
biblioteca pelo arquivo cabeçalho (header file, arquivo com extensão .h). No arquivo
cabeçalho devemos colocar os protótipos das funções que criaremos e os defines que serão
usados.
4º. Vamos, então, criar nosso arquivo cabeçalho. Abra o bloco de notas o seu computador.
5º. Digite o código mostrado na Figura 25.
#include "Arduino.h" /****************************** D E F I N E S ********************************/ /* Hardware utilizado para ligar o display de segmentos */ //******************************// #define SEG_PONTO 2 // SEG_A // #define SEG_A 0 // ------- // #define SEG_B 1 // SEG_F | | SEG_B // #define SEG_C 3 // | SEG_G | // #define SEG_D 4 // ------- // #define SEG_E 5 // | | // #define SEG_F 6 // SEG_E | | SEG_C // #define SEG_G 7 // ------- // // SEG_D // //******************************// /*************** P R O T O T I P O S D E F U N Ç Õ E S ********************/ /****************************************************************************** * Função: void ConfiguraDisplay7seg (void) * Entrada: Nenhuma (void) * Saída: Nenhuma (void) * Descrição: Configura portas do Arduino que estão conectadas ao display de * 7 segmentos como saídas digitais e desliga todos os segmentos do display. *****************************************************************************/ void ConfigDisplay7Seg(); /****************************************************************************** * Função: void EscreveDisplay(char numero,char pto) * Entrada: char numero: valor decimal de 0 a 9 a ser apresentado no display * de 7 segmentos. Se esse valor estiver acima de 9 ou abaixo * de 0 será mostrado o símbolo de erro -. * char pto: pto decimal do display * HIGH - Desliga o ponto LOW - Liga o ponto * Saída: Nenhuma (void) * Descrição: Escreve valor decimal de 0 a 9 nos display de 7 segmentos. * Liga/desliga o ponto decimal. *****************************************************************************/ void EscreveDisplay(char numero, char pto);
Figura 25. Código do arquivo cabeçalho da biblioteca.
Introdução ao Arduino
Prof. Fernando Esquírio Torres e Prof. Maurílio Nunes Apostila criada para fins didáticos. Proibido qualquer reprodução ou uso não autorizado.
Pág
ina2
7
6º. Após digitar o código idêntico ao mostrado na Figura 25, clique no MENU Arquivo, em
seguida Salvar como. Na janela que irá se abrir, selecione o diretório onde você salvou o
sketch (DISPLAY_7_SEG_BIBLIOTECA) e salve o arquivo cabeçalho com o nome mostrado
na Figura 26. (MUITO IMPORTANTE: Certifique-se que o diretório onde você vai salvar seja
o diretório do seu projeto. O nome do arquivo deve ser salvo sem espaços e entre aspas
duplas “ ”).
Figura 26. Salvar arquivo cabeçalho.
7º. Uma vez criado o arquivo cabeçalho vamos criar o arquivo fonte com o código das funções
prototipadas no arquivo cabeçalho (.h).
Verifique se no diretório da sua prática (C:\Documentos\Arduino\
DISPLAY_7_SEG_BIBLIOTECA) lá estão os dois arquivos: um arquivo do seu sketch (.ino) e outros
arquivo do cabeçalho da sua biblioteca (.h).
Uma vez criado o arquivo cabeçalho (.h), precisamos criar o arquivo com as funções todas
definidas, arquivo .cpp. Siga os passos abaixo para criarmos esse arquivo.
1º. Abra novo arquivo em branco no seu bloco de notas. Digite o código mostrado na Figura 27.
Introdução ao Arduino
Prof. Fernando Esquírio Torres e Prof. Maurílio Nunes Apostila criada para fins didáticos. Proibido qualquer reprodução ou uso não autorizado.
Pág
ina2
8
#include "Arduino.h" #include "Display7Seg.h" /*************************************** * Função: void ConfiguraDisplay7seg (void) * Entrada: Nenhuma (void) * Saída: Nenhuma (void) * Descrição: Configura portas do Arduino conectadas ao display de 7 segmentos como saídas digitais e desliga todos os segmentos do display após a configuração. ****************************************/ void ConfigDisplay7Seg() //Configura cada pino como saída digital pinMode(SEG_A, OUTPUT); pinMode(SEG_B, OUTPUT); pinMode(SEG_C, OUTPUT); pinMode(SEG_D, OUTPUT); pinMode(SEG_E, OUTPUT); pinMode(SEG_F, OUTPUT); pinMode(SEG_G, OUTPUT); pinMode(SEG_PONTO, OUTPUT); //Apaga tudo (estado inicial) digitalWrite(SEG_A, HIGH); digitalWrite(SEG_B, HIGH); digitalWrite(SEG_C, HIGH); digitalWrite(SEG_D, HIGH); digitalWrite(SEG_E, HIGH); digitalWrite(SEG_F, HIGH); digitalWrite(SEG_G, HIGH); digitalWrite(SEG_PONTO, HIGH); // Fim da função ConfigDisplay /********************************************* * Função: void EscreveDisplay(char numero,char pto) * Entrada: char numero: decimal de 0 a 9 Se esse valor estiver for da faixa será mostrado o símbolo de erro -. char pto: pto decimal do display LOW - Liga o ponto HIGH - Desliga o ponto * Saída: Nenhuma (void) * Descrição: Escreve 0 a 9 no display. Liga/desliga o ponto decimal. *******************************************/ void EscreveDisplay(char numero, char pto) if (pto == LOW) digitalWrite(SEG_PONTO, LOW); else digitalWrite(SEG_PONTO, HIGH); switch(numero) //Apaga o display digitalWrite(SEG_A, HIGH); digitalWrite(SEG_B, HIGH); digitalWrite(SEG_C, HIGH); digitalWrite(SEG_D, HIGH); digitalWrite(SEG_E, HIGH); digitalWrite(SEG_F, HIGH); digitalWrite(SEG_G, HIGH); digitalWrite(SEG_PONTO, HIGH); default: digitalWrite (SEG_G, LOW); //”-“ break; // cases 0-9 na coluna ao lado
Prof. Fernando Esquírio Torres e Prof. Maurílio Nunes Apostila criada para fins didáticos. Proibido qualquer reprodução ou uso não autorizado.
Pág
ina2
9
2º. Após digitar o código idêntico ao mostrado na Figura 27, clique no MENU Arquivo, em
seguida Salvar como. Na janela que irá se abrir, selecione o diretório onde você salvou o
sketch (DISPLAY_7_SEG_BIBLIOTECA) e salve o arquivo cabeçalho com o nome mostrado
na Figura 28. (MUITO IMPORTANTE: Certifique-se que o diretório onde você vai salvar seja
o diretório do seu projeto. O nome do arquivo deve ser salvo sem espaços e entre aspas
duplas “ ”).
Figura 28. Salvar arquivo da biblioteca.
3º. Após a realização dos passos anteriores corretamente seu diretório
DISPLAY_7_SEG_BIBLIOTECA ficará com três arquivos, como mostrado na Figura 29.
Figura 29. Arquivo do diretório PRATICA_5.2_DISPLAY_7_SEG_BIBLIOTECA.
Agora podemos programar nosso código, ao abrir o sketch
(DISPLAY_7_SEG_BIBLIOTECA.ino) os arquivos cabeçalho (Display7Seg.h) e da biblioteca
(Display7Seg.cpp) também abrirão, como mostrado na Figura 30.
Introdução ao Arduino
Prof. Fernando Esquírio Torres e Prof. Maurílio Nunes Apostila criada para fins didáticos. Proibido qualquer reprodução ou uso não autorizado.
Pág
ina3
0
Figura 30. Sketch e arquivos cabeçalho e da biblioteca.
Reproduza o código mostrado na
Figura 31.
#include "Display7Seg.h" /* Função: void setup() * Entradas: Nenhuma (void) * Saídas: Nenhuma (void) * Descrição: Esta função é a primeira a rodar quando energizamos * o Arduino. Nela, fazemos as configurações do * hardware que utilizaremos em nosso programa. */
void setup() ConfigDisplay7Seg(); //Fim da void setup /* Função: void loop() * Entradas: Nenhuma (void) * Saídas: Nenhuma (void) * Descrição: Esta função é chamada após o término da função * função setup(). Ela contém a lógica principal do código. */
void loop() for(int i = 0;i<10;i++) EscreveDisplay(i,LOW); delay(1000); // Fim do for // Fim da void loop
Figura 31. Código do Display de 7 Segmentos com Biblioteca.
Introdução ao Arduino
Prof. Fernando Esquírio Torres e Prof. Maurílio Nunes Apostila criada para fins didáticos. Proibido qualquer reprodução ou uso não autorizado.
Pág
ina3
1
Salve o programa. Compile o código (MUITO IMPORTANTE: verifique se você usou os
nomes das funções e dos arquivos da biblioteca como mostrados na prática, caso contrário você terá
problemas para compilar seu código). Grave seu código no Arduino. (MUITO IMPORTANTE: retire o
fio de alimentação do Display [Pino 3 ou 8 do Display ligado ao pino de 5V do Arduino] antes de
gravar o código, senão o código não será gravado no seu Arduino).
Referências Bibliográficas
[1] ARDUINO HOMEPAGE, DISPONÍVEL EM: HTTP://WWW.ARDUINO.CC/, ACESSADO EM: JANEIRO DE 2014.
[2] BRIAN EVANS, BEGINNING ARDUINO PROGRAMMING, 1ª EDIÇÃO, APRESS, 2011. NEW YORK CITY.
[3] FRITZING-ELETRONIC MADE EASY, DISPONÍVEL EM: HTTP://FRITZING.ORG/HOME/, ACESSADO EM:
JANEIRO DE 2014.
[4] HAROLD TIMMIS, PRACTICAL ARDUINO ENGINEERING, 1ª EDIÇÃO, APRESS, 2011. NEW YORK CITY.
[5] JACK PURDUM, BEGINNING C FOR ARDUINO-LEARN C PROGRAMMING FOR THE ARDUINO, 1ª EDIÇÃO,
APRESS, 2012. NEW YORK CITY.
[6] JULIEN BAYLE, C PROGRAMMING FOR ARDUINO, 1ª EDIÇÃO, PACKT PUBLISHING, 2013. BIRMINGHAM.
[7] MICHAEL MCROBERTS, ARDUINO BÁSICO, 1ª EDIÇÃO, EDITORA NOVATEC. 2011. SÃO PAULO-SP.
[8] MASSIMO BANZI, PRIMEIROS PASSOS COM O ARDUINO, 1ª EDIÇÃO, EDITORA NOVATEC, 2011. SÃO
PAULO-SP.
[9] SPARKFUN, DISPONÍVEL EM: HTTPS://LEARN.SPARKFUN.COM/TUTORIALS/, ACESSADO EM: JANEIRO DE
2014.
[10] UNICAMP-COMPONENTES SEMICONDUTORES RÁPIDOS DE POTÊNCIA, DISPONÍVEL EM:
Pino 6: E – Pino de Sincronismo (Enable): Na borda de descida (↓), habilita a leitura/escrita
dos Dados pelo controlador do LCD.
A maioria dos controladores LCDs alfanuméricos é baseada no controlador Hitachi HD44780. Nele, o
modo de comunicação paralela pode ser feito de duas formas:
a. Modo 8 bits: 11 vias de comunicação (8 bits de dados e 3 bits de controle)
b. Modo 4 bits: 7 vias de comunicação (4 bits de dados e 3 bits de controle).
Vamos usar a comunicação no modo 4 bits. Neste modo, apenas as vias de dados D4 a D7 são
utilizadas. As vias D0 a D3 devem ser deixadas flutuando (sem conexão alguma). O caracter (8 bits) é
enviado em duas partes (nibble) com 4 bits cada. Economiza-se pinos digitais utilizados na
Displays LCD
Prof. Fernando Esquírio Torres e Prof. Maurílio Nunes Apostila criada para fins didáticos. Proibido qualquer reprodução ou uso não autorizado.
Pág
ina3
4
comunicação à custa de maior tempo na transmissão dos dados, o que pode ser insignificante em
diversas aplicações
Figura 6. Pinos utilizados no modo de comunicação 4 vias.
2. “Montagem” 01 – Display de LCD.
Siga os passos para realizar as conexões corretamente, certifique-se que a Placa Arduino
esteja desligada.
Chame seu professor para verificar sua ligação, antes de ligar o Arduino na porta USB, para
evitar danos ao display de LCD.
1º. Estude atentamente a montagem a ser feita (Figura 7).
2º. Insira o display no protoboard; fixe também a placa do Arduino (com uma fita elástica) ao
protoboard.
Figura 7. Esquemático do circuito LCD.
Laboratório de Eletrônica Analógica e Digital - Displays LCD – Display LCD
Prof. Fernando Esquírio Torres e Prof. Maurílio Nunes Apostila criada para fins didáticos. Proibido qualquer reprodução ou uso não autorizado.
Pág
ina3
5
3º. Conecte a alimentação (+Vcc e terra) do protoboard a partir do Arduino; utilize os
barramentos horizontais superior e inferior do protoboard para isso.
4º. Conecte a alimentação do display. Não inverta a polaridade!
5º. Conecte a alimentação do LED (luz de fundo) do display. Não inverta a polaridade!
6º. Ligue os pinos de controle RS, R/W e E; veja a função deles na Tabela 1.
7º. Conecte o barramento de dados do display (pinos D4, D5, D6 e D7) aos respectivos pinos de I/O do Arduino.
8º. Ligue o potenciômetro de 10 kΩ como indicado na Figura 7. Se necessário, identifique o
cursor (terminal móvel) do potenciômetro com um ohmímetro.
9º. Peça seu professor para verificar sua ligação, antes de continuar. Com a presença do professor, a montagem será energizada e o potenciômetro de controle da luz de fundo ajustada. Se não houver problema, o circuito está pronto para ser programado.
2.1. Montagem 01 – Configurando o LCD.
Será utilizada a biblioteca <LiquidCristal.h> do Arduino. Abra a IDE do Arduino e digite um código
semelhante ao mostrado na Figura 8. Em seguida, salve o programa com um nome representativo e
grave no seu Arduino.
Figura 8. Inicializando o display LCD.
Note que:
a) A biliblioteca utiliza conceitos de orientação a objetos.
b) É necessário criar um objeto do tipo LiquidCrystal: LiquidCrystal lcd(rs, enable, d4, d5, d6,
d7), onde os parâmetros passados são os pinos do Arduino utilizados para executar as
funções do disyplay LCD.
c) O comando lcd.begin(16,2) inicializa o display LCD de 16 colunas e 2 linhas.
d) O comando lcd.setCursor(0,0) posiciona o cursor do LCD na coordenada 0,0;
e) O comando lcd.print(" Seu nome ") imprime sua mensagem no display LCD.
Displays LCD
Prof. Fernando Esquírio Torres e Prof. Maurílio Nunes Apostila criada para fins didáticos. Proibido qualquer reprodução ou uso não autorizado.
Pág
ina3
6
Na biblioteca do LCD, há outros comando como:
LiquidCrystal() Inicializa o LCD e cria uma variável do tipo LiquidCrystal. LiquidCrystal(rs, enable, d4, d5, d6, d7) LiquidCrystal(rs, rw, enable, d4, d5, d6, d7) LiquidCrystal(rs, enable, d0, d1, d2, d3, d4, d5, d6, d7) LiquidCrystal(rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7)
begin() Define a dimensão do display (linhas e colunas) lcd.begin(cols, rows)
clear() Limpa o display e coloca o cursor no endereço 0. lcd.clear()
home() Coloca o cursor no endereço 0. lcd.home()
setCursor() Muda a posição do cursor para a próxima escrita. lcd.setCursor(coluna, linha)
print() Descrição: Escreve letras, números e textos no display. lcd.print(data)
cursor() Liga o cursor do display. lcd.cursor()
noCursor() Desliga o cursor do display. lcd.noCursor()
blink() Pisca o cursor do LCD. lcd.blink()
noBlink() Para de piscar o cursor do LCD lcd.noBlink()
display() Religa o display. lcd.display()
noDisplay() Desliga o display. lcd.noDisplay()
scrollDisplayLeft() Desloca a tela do display uma posição para esquerda. lcd.scrollDisplayLeft()
scrollDisplayRight() Desloca a tela do display uma posição para direita. lcd.scrollDisplayRight()
autoscroll() A cada caracter enviado o cursor será incrementado automaticamente. lcd.autoscroll()
noAutoscroll() Não incrementa automaticamente a cada caracter enviado. lcd.noAutoscroll()
leftToRight() Com o Autoscroll ligado, o cursor irá mover da esquerda para direita. lcd.leftToRight()
rightToLeft() Com o Autoscroll ligado, o cursor irá mover da direita para esquerda. lcd.rightToLeft()
createChar() Cria um novo caractere para ser escrito no display. lcd.createChar(num, data)
num – 0 a 7 data – vetor de byte com o caractere criado
2.2. Montagem 02 – Explorando o display LCD.
Estude o código da Figura 9.. Digite-o, compile, salve e execute com a montagem do item anterior.
Teste alterações que julgar interessante. Alguns comandos de posicionamento do cursor não são
necessários e são apresentados apenas para apresentar a biblioteca de manipulação de strings.
Laboratório de Eletrônica Analógica e Digital - Displays LCD – Display LCD
Prof. Fernando Esquírio Torres e Prof. Maurílio Nunes Apostila criada para fins didáticos. Proibido qualquer reprodução ou uso não autorizado.
Pág
ina3
7
Figura 10. Contador de cliques.
Figura 9. Explorando o display LCD.
2.3. Montagem 03- Contador de cliques de uma chave mecânica
Uma das maneiras mais simples de fornecer informações externas ao Arduino é através de
chaves. Elas podem ser usadas como sensores,
dispositivos de contagem, métodos de navegação
em menus, etc. Um exemplo é dado na Figura 10,
onde a chave S será ligada ao pino 8 do Arduino,
pino a ser programado como entrada digital). Com a
chave desligada, a entrada estará em nível lógico
baixo (LOW, ou terra). Ao ligar a chave
momentaneamente, a entrada D8 receberá nível
lógico alto (+V = 5V). A seguir, será tentado contar o
número de vezes que a chave é acionada.
1) Monte o circuito utilizando uma chave tátil de contato momentâneo;
2) Estude o código da Figura 11, digite-o, compile e verifique se ele funciona como
esperado. Certamente surgirão problemas como descrito a seguir.
LCD
Displays LCD
Prof. Fernando Esquírio Torres e Prof. Maurílio Nunes Apostila criada para fins didáticos. Proibido qualquer reprodução ou uso não autorizado.
Pág
ina3
8
Figura 11. Contador de cliques (precário).
Uma chave mecânica, ao ser acionada, apresenta transitórios que resultam em múltiplos
fechamentos, como indicado na Figura 12. Esse ruído é que o contador disparar. O problema pode
ser resolvido como indicado e comentado no código da Figura 13. A ideia é tornar a entrada sensível
à borda de subida do pulso (no caso),
impedindo o incremento da contagem em duas
situações: i) durante o tempo do transitório
mecânico e ii) enquanto a chave estiver
acionada. A primeira condição é bloqueada
através da função delay(), cujo atraso deve ser
ajustado em função da chave usada, enquanto
a segunda condição é bloqueada pelo while().
Figura 12. Ruído de trepidação (bounce)
Laboratório de Eletrônica Analógica e Digital - Displays LCD – Display LCD
Prof. Fernando Esquírio Torres e Prof. Maurílio Nunes Apostila criada para fins didáticos. Proibido qualquer reprodução ou uso não autorizado.
Pág
ina3
9
Figura 13. Contador de cliques (imune à trepidação da chave).
3) Estude o código da Figura 13, digite, salve, compile e verifique seu funcionamento. Faça
os ajustes necessários no tempo de atraso na função delay().
4) Atividade para casa: altere o código para que o contador seja reinicializado caso o botão
seja mantido pressionado por mais que 1 segundo.
2.4. Montagem 04- Ohmímetro simples/sensor de luz
Na Figura 14, o LDR (light dependent resistor) é um
componente cuja resistência varia com a intensidade da luz.
Esta resistência pode ser de ~10 Ω (no claro) a ~ 1 M Ω (no
escuro). O objetivo da montagem é obter a tensão sobre o
LDR e calcular a sua resistência para um dado nível de
iluminação.
1) Estude o circuito e obtenha expressões para
calcular a tensão (em volt) na entrada A5 do
Arduino. Lembre que as entradas analógicas do
Arduino são de 10 bits e, consequentemente, a
faixa de valor das leituras de 0-1023.
2) Com um ohmímetro, observe o comportamento da
resistência do LDR (fora do circuito) em função do nível de iluminação.
Figura 14. Ohmímetro simples
Displays LCD
Prof. Fernando Esquírio Torres e Prof. Maurílio Nunes Apostila criada para fins didáticos. Proibido qualquer reprodução ou uso não autorizado.
Pág
ina4
0
3) Para circuito da Figura 14, obtenha também uma expressão para calcular a resistência do
LDR a partir da leitura do sinal na entrada A5..
4) Em seguida, estude o código da Figura 15, edite, salve, compile.
5) Monte o circuito da Figura 14 e execute. Para melhor precisão, meça o valor da tensão de
alimentação (próximo a 5.0 V) e o valor da resistência R, inserindo os valores medidos no
código.
6) Faça alterações que julgar interessante. Por exemplo, acenda uma saída (o LED interno da
saída 13) quando a intensidade da luz estiver abaixo de um certo limiar.
Figura 15. Determinação da tensão sobre o LDR e de sua resistência.
Laboratório de Eletrônica Analógica e Digital - Displays LCD – Display LCD
Prof. Fernando Esquírio Torres e Prof. Maurílio Nunes Apostila criada para fins didáticos. Proibido qualquer reprodução ou uso não autorizado.
Pág
ina4
1
2.5. Trabalho de Casa/Estudo Dirigido: Noções de filtros digitais
No item 2.4, um sinal analógico foi lido através da entrada A5. Este sinal pode conter oscilações de
“alta” frequência que podem ser atenuadas com um filtro passa-baixas como o da Figura 17. O
circuito pode ser analisado no domínio da frequência angular , escrevendo-se a expressão para o
divisor de tensão formado por R e pela a reatância capacitiva de C , isto é ,
CRj
CjR
CjH
jX
Y
1
1
1
1
)()(
)( (1)
O módulo e fase da resposta em frequência do filtro estão exemplificados na Figura 16. Em
baixas frequências, isto é, 1)( RC , tem-se 1|)(| H . Por outro lado, em altas frequências,
ou seja, 1)( RC , 0|)(| H . Na frequência RC
1 , denominada frequência de corte, a
relação entre a tensão de saída e a de entrada é 2
1|)(| H . De forma equivalente, nesta
frequência, a relação entre as potências de saída e de entrada é 2
1|)(| 2 H e por isso a
frequência de corte é também chamada de frequência de meia potência.
O filtro da Figura 17 também pode ser analisado no domínio do tempo. Neste caso, pode-se
escrever que )()()( tytiRtx . Como dt
tdyCti
)()( , segue que
)()(
)( tydt
tdyRCtx (2)
Para realizar o filtro numericamente, é necessário discretizar da equação 2. De forma simples, isto
pode ser feito amostrando-se os sinais em intervalos pequenos em relação à constante de tempo do
Figura 16. Resposta em frequência: módulo
(linha cheia) e fase (linha tracejada) para R =
10kΩ, C = 100 nF.
Figura 17. Filtro analógico de 1ª. ordem.
Displays LCD
Prof. Fernando Esquírio Torres e Prof. Maurílio Nunes Apostila criada para fins didáticos. Proibido qualquer reprodução ou uso não autorizado.
Pág
ina4
2
circuito, isto é, em nTt , onde RCT (mostra-se que isto corresponde à equivalência das
respostas impulsivas em tempo contínuo e tempo discreto). Assim, a equação 2 pode ser escrita
como
][])1[(][
][ nTyT
TnynTyRCnTx
Isolando-se a saída ][nTy segue que
])1[(/1
/][
/1
1][ Tny
TRC
TRCnTx
TRCnTy
(3)
Definindo-se TRC /1
1 , tem-se TRC
TRC
/1
/1
e a equação (3) pode ser reescrita como
)]1[()1(][][ nynxny (4)
onde o intervalo de amostragem T foi omitido, como é usual em processamento digital de sinais.
Portanto, num dado instante n, a saída ][ny é uma combinação linear da entrada atual e da saída
anterior. A equação 4 pode ser representada no diagrama em blocos como mostrado na Figura 18.
A equação 4 (ou o diagrama da Figura 18), podem ser implementados em um código para Arduino,
como mostra o fragmento de código na Parte Experimental.
Parte Experimental
1) Monte o circuito da Figura 14, onde o LDR é o sensor de entrada. A tensão sobre o LDR possui
um valor médio e uma oscilação a ser filtrada.
2) Complete o código ao lado para implementar o código sugerido;
3) Com os valores de T e de alfa, qual seria a frequência de corte do filtro?
4) Para testar o circuito, movimente a lanterna de seu smartphone sobre o LDR de forma a causar
oscilações na intensidade de luz Estas oscilações são o “ruído” a ser filtrado.
Figura 18. Filtro digital de 1ª. ordem.
Laboratório de Eletrônica Analógica e Digital - Displays LCD – Display LCD
Prof. Fernando Esquírio Torres e Prof. Maurílio Nunes Apostila criada para fins didáticos. Proibido qualquer reprodução ou uso não autorizado.
Pág
ina4
3
Veja o que ocorre. O seu filtro deverá ignorar oscilações “rápidas” e responder a oscilações
“lentas”. Procure quantificar o que é “lento” e o que é “rápido”.
5) Faça modificações no parâmetro alfa e veja o que ocorre.
6) Para visualizar formas de onda em seu computador, instale o aplicativo SimPlot
(http://www.negtronics.com/simplot) ou similar. Adapte o programa de demonstração do SimPlot
para executar o filtro e visualizar o sinal de entrada x (leitura da entrada A5) e a saída filtrada y.
void Gira_H () /******************************************* Sequencia de fases para girar no sentido horário (Ver fig 12 do roteiro) TEMPO = delay(2): entre cada fase ******************************************/ /** Fase 1 **/ ORG_ON; YEL_OFF; PIK_OFF; BLU_OFF; TEMPO; /** Fase 2 **/ ORG_ON; YEL_ON; PIK_OFF; BLU_OFF; TEMPO; /** Fase 3 **/ ORG_OFF; YEL_ON; PIK_OFF; BLU_OFF; TEMPO; /** Fase 4 **/ ORG_OFF; YEL_ON; PIK_ON; BLU_OFF; TEMPO; /** Fase 5 **/ ORG_OFF; YEL_OFF; PIK_ON; BLU_OFF; TEMPO; /** Fase 6 **/ ORG_OFF; YEL_OFF; PIK_ON; BLU_ON; TEMPO; /** Fase 7 **/ ORG_OFF; YEL_OFF; PIK_OFF; BLU_ON; TEMPO; /** Fase 8 **/ ORG_ON; YEL_OFF; PIK_OFF; BLU_ON; TEMPO; void Gira_AH () /******************************************* Sequencia de fases invertida para girar no sentido anti-horário (Ver fig 12/roteiro) TEMPO = delay(2): entre cada fase ******************************************/ /** Fase 8 **/ ORG_ON; YEL_OFF; PIK_OFF; BLU_ON; TEMPO; /** Fase 7 **/ ORG_OFF; YEL_OFF; PIK_OFF; BLU_ON; TEMPO; /** Fase 6 **/ ORG_OFF; YEL_OFF; PIK_ON; BLU_ON; TEMPO; /** Fase 5 **/ ORG_OFF; YEL_OFF; PIK_ON; BLU_OFF; TEMPO; /** Fase 4 **/ ORG_OFF; YEL_ON; PIK_ON; BLU_OFF; TEMPO; /** Fase 3 **/ ORG_OFF; YEL_ON; PIK_OFF; BLU_OFF; TEMPO; /** Fase 2 **/ ORG_ON; YEL_ON; PIK_OFF; BLU_OFF; TEMPO; /** Fase 1 **/ ORG_ON; YEL_OFF; PIK_OFF; BLU_OFF; TEMPO;
Figura 13. Código para controle do motor de passo unipolar.
Laboratório de Eletrônica Analógica e Digital - Introdução ao Arduino (3) – ACIONAMENTO DE MOTORES
Prof. Fernando Esquírio Torres e Prof. Maurílio Nunes Apostila criada para fins didáticos. Proibido qualquer reprodução ou uso não autorizado.
Pág
ina6
5
3.2. Bibliotecas para controle de motor de passo Há inúmeras bibliotecas, como a <Stepper.h>, disponíveis para controle de motor de passo. Não há
dificuldades em encontrar a documentação, embora o entendimento possa ser um pouco confuso. As
bibliotecas utilizam definições particulares para as variáveis de controle.
4. “Montagem 04” – Ponte H com Motor DC
4.1. Introdução Ponte H é um circuito eletrônico que possibilita o controle do sentido de rotação do motor DC além de
fornecer a corrente necessária para seu funcionamento. Essencialmente, a ponte H é um conjunto de
4 chaves eletrônicas operadas aos pares (Figura 14). Ligando-se S1 e S4 simultaneamente (Figura
14, centro), a corrente circulará em um sentido pelo motor. Por outro lado, com S3 e S4 ligadas
(Figura 14, direita) a corrente circulará em sentido oposto e o giro do motor será no sentido oposto.
Figura 14. Desenho esquemático de uma Ponte H.
Existem vários shields ou circuitos de ponte H para uso com o Arduino. Em nossa prática, vamos
usar o módulo Ponte H L298N (Figura 15), que permite o controle de 2 motores DC ou um motor de
passo.
Tensão de Operação: 7~35v Tensão lógica 5V Corrente lógica 0~36mA Corrente de Operação máxima: 2A por canal Máxima potência dissipada: 25W Módulo de 2 Canais: – Sinal de controle de entrada: > Nível Alto: 2.3v ≤ Vin ≤ Vss > Nível Baixo: -0.3V ≤ Vin ≤ 1.5V – Temperatura de operação: -25°C ~ +130°C - Dimensões: 43mm x 43mm x 27mm - Peso: 30g
Figura 15. Módulo Ponte H L298N.
Arduino/Motores
Prof. Fernando Esquírio Torres e Prof. Maurílio Nunes Apostila criada para fins didáticos. Proibido qualquer reprodução ou uso não autorizado.
Pág
ina6
6
A Tabela 1 mostra as conexões do módulo da Ponte H L298N e algumas sugestões de onde liga-las
no Arduino.
Tabela 1. Conexões do módulo da Ponte H L298N.
Nome da Porta
Estado Descrição
+12V power - ATENÇÃO: Alimentação externa (5V a 35V).
Deve ser ligada ao pino de 5V do Arduino.
power GND - Conexão para o GND da fonte de alimentação externa.
Deve ser ligada ao pino GND do Arduino.
+5V power - ATENÇÃO: saída de 5V
ENA Entrada Habilita (1) /Desabilita (0) motor A – jumper disponível
IN1 Entrada Controle de direção do MOTOR A.
É um sinal PWM do Arduino
IN2 Entrada Sentido de giro do motor. É um sinal lógico fornecido pelo Arduino: HIGH = horário, LOW = anti-horário
ENB Entrada Habilita (1) /Desabilita (0) motor B – jumper disponível
IN3 Entrada Controle de direção do MOTOR B.
É um sinal PWM do Arduino.
IN4 Entrada Sentido de giro do motor. É um sinal lógico fornecido pelo Arduino: HIGH = horário, LOW = anti-horário.
OUT A
(2 pinos)
Saída Ligação do motor A
OUT A = OUT1, OUT2
OUT B
(2 pinos)
Saída Saída para o MOTOR B
OUT B = OUT3, OUT4
5V enable - Se o jumper estiver conectado no pino 5V_EN, o LM7805 irá fornecer 5V para alimentar o CI L298N. Caso
desconecte o jumper do pino será necessário fornecer 5V para o chip L298N.
4.2. Experimento
Vamos controlar um motor DC na saída A (output A) do Módulo da Ponte H L298N.
Para isso, siga os passos para realizar as conexões corretamente, certifique-se que a Placa
Arduino esteja desligada.
Chame seu professor para verificar sua ligação, antes de ligar o Arduino na porta USB, para
evitar danos ao Módulo da Ponte H L298N.
Laboratório de Eletrônica Analógica e Digital - Introdução ao Arduino (3) – ACIONAMENTO DE MOTORES
Prof. Fernando Esquírio Torres e Prof. Maurílio Nunes Apostila criada para fins didáticos. Proibido qualquer reprodução ou uso não autorizado.
Pág
ina6
7
1º. Estude atentamente o diagrama de conexões a ser feito entre o Arduino e o módulo de
Ponte H (Figura 16).
2º. Verifique se o jumper de 5V enable do módulo Ponte H está no local correto.
3º. Monte o circuito e peça ao professor para conferir.
4º. Em seguida, estude o código da Figura 17. Digite, compile, salve e execute o programa com
a montagem da Figura 16.
#define IN1 9 // I/O digital (saída PWM) = velocidade #define IN2 8 // I/O digital (lógico) = sentido de giro void setup() pinMode (IN2, OUTPUT); // configura pino delay(3000); // aguarda 3s // Fim da função setup void loop() digitalWrite(IN2, HIGH); // sentido horário analogWrite(IN1, 255); // velocidade máxima (0...255) delay(1000); // aguarda 1s analogWrite(IN1, 127); // meia velocidade delay(1000); // aguarda 1s analogWrite(IN1, 0); // velocidade zero delay(1000); // aguarda 1s digitalWrite(IN2, LOW); // sentido anti-horário analogWrite(IN1, 255); // velocidade máxima delay(1000); // aguarda 1s analogWrite(IN1, 127); // meia velocidade delay(1000); // aguarda 1s analogWrite(IN1, 0); // velocidade zero delay(1000); // aguarda
Figura 17. Código do Módulo da Ponte H L298N.
Figura 16.Ligações do Arduino ao módulo de Ponte H
Arduino/Motores
Prof. Fernando Esquírio Torres e Prof. Maurílio Nunes Apostila criada para fins didáticos. Proibido qualquer reprodução ou uso não autorizado.
Pág
ina6
8
5. Trabalho de Casa (LtSpice): Estudo dirigido (Ponte H)
5.1. Nas aulas anteriores, você usou um transistor NPN para chavear uma carga ligada a +Vcc. Na figura ao lado, um transistor PNP (BC327 ou BC 638) é usado para chavear uma
carga (R = 15) ligada ao terra.
Calcule a corrente de base e de coletor com V2 = 5V e V2 = 0V. Simule o circuito e compare os resultados com seus cálculos. Ilustre com formas de onda apropriadas.
No Ltspice, você pode adicionar formas de onda
com [mouse direita] Add plot panel
5.2. O circuito ao lado (push-pull) é alimentado por uma fonte simétrica (±Vcc) e a carga está ligada ao terra. Se V2 = -Vcc, Q1 conduz e acorrente circula em R
de +Vcc terra; se V2 = +Vcc, Q2 conduz e a corrente circula
em R de terra –Vcc.
Calcule a corrente de base e de coletor de Q1 e Q2 quando V2 = +Vcc e V2 = -Vcc. Simule o circuito e ilustre com formas de onda apropriadas.
5.3. O circuito abaixo é uma ponte H para uma carga resistiva R. As fontes Ve 2 V3 estão
em oposição de fase (V2 = ). Quando V2 = 0V e V3 = +5V, Q1 e Q4 conduzem, e a
corrente circula de ab. Por outro lado, com V2 = 5V e V3 = +0V, Q2 e Q3 conduzem, e a
corrente circula de ba.
Calcule a corrente em R quando um dos braços da ponte estiver conduzindo. Simule o circuito e ilustre com formas de onda apropriadas.
Laboratório de Eletrônica Analógica e Digital - Introdução ao Arduino (3) – ACIONAMENTO DE MOTORES
Prof. Fernando Esquírio Torres e Prof. Maurílio Nunes Apostila criada para fins didáticos. Proibido qualquer reprodução ou uso não autorizado.
Pág
ina6
9
5.4. No circuito ao lado, o transistor PNP Q1 (BC 327 ou BC 638) aciona uma carga indutiva
representada por sua resistência (15) e sua indutância (100 mH).
Simule o circuito com e sem a ligação do diodo D1, como sugere o desenho. Observe a tensão no coletor de Q1 nestas situações. Ilustre com formas de onda e comente.
5.5. A figura abaixo mostra apenas um braço (Q1 e Q4) de uma ponte H. O inversor Q_5 substitui a fonte V3 usada no item 5.3. Com V2 = +5V, Q1 e Q4 conduzem e a
corrente circula de A B. Por outro lado, com V2 = 05V, Q1 e Q4 estão cortados e não
há corrente na carga. Contudo, quando V2 muda de +5V 0V, a interrupção na corrente pela carga gera uma tensão reversa que pode danificar os transistores. Os diodos D2 e D3 criam um caminho que dá continuidade à corrente, dissipando a energia armazenada no indutor.
Simule o circuito (com e sem os diodos); configure os níveis de tensão do inversor no editor de atributos do componente [mouse direita]:
Apresente formas apropriadas e comente.
Arduino/Motores
Prof. Fernando Esquírio Torres e Prof. Maurílio Nunes Apostila criada para fins didáticos. Proibido qualquer reprodução ou uso não autorizado.
Pág
ina7
0
5.6. A figura abaixo mostra um circuito de ponte H completo para carga indutiva. O inversor Q_5 da figura 5.5 foi substituído pelo transistor Q5. Estude seu funcionamento, explicando a função de cada componente.
Simule o circuito (com e sem os diodos), ilustre com formas de onda apropriadas e comente.