A maior rede de estudos do Brasil

Grátis
8 pág.
Arduino - Siga a Sequência

Pré-visualização | Página 1 de 2

Sensor de temperatura com Display (Jogo) 
 Para desenvolvermos este projeto necessitaremos dos seguintes componentes 
eletrônicos: 
 Resistor 
 Display de 7 segmentos 
 Sensor LM35 
 Transistor PNP 
 
1. Conhecendo as componentes 
 
1.1. Resistor 
 
Resistores são componentes que têm por finalidade oferecer uma oposição à 
passagem de corrente elétrica. A essa oposição damos o nome de resistência elétrica, 
que possui como unidade de medida o ohm [Ω]. 
O código de cores que identifica o valor da resistência consiste em faixas 
coloridas no corpo do resistor. As primeiras três faixas servem para indicar o valor 
nominal e a última faixa, a porcentagem na qual a resistência pode variar, a leitura é 
feita de acordo com a tabela abaixo: 
 
 
 
 
Tabela 1.1 – Tabela de cores de resistores comuns 
 
Cor 1ª Faixa 2ª Faixa Multiplicador Tolerância 
Preto 0 0 x 1 Ω 
Marrom 1 1 x 10 Ω ± 1% 
Vermelho 2 2 x 100 Ω ± 2% 
Laranja 3 3 x 1K Ω 
Amarelo 4 4 x 10K Ω 
Verde 5 5 x 100K Ω ± 0,5% 
Azul 6 6 x 1M Ω ± 0,25% 
Violeta 7 7 x 10M Ω ± 0,1% 
Cinza 8 8 ± 0,05% 
Branco 9 9 
Dourado x 0,1 Ω ± 5% 
Prata x 0,01 Ω ± 10% 
 
 Figura 1.1 – Resistor comum de 560kΩ ± 10% 
 
1.2. Display de 7 segmentos 
 
Um display de sete segmentos, como seu nome indica, é composto de sete 
elementos, os quais podem ser ligados ou desligados individualmente. Eles podem ser 
combinados para produzir representações simplificadas de algarismos arábicos. 
Frequentemente, os sete segmentos são dispostos de forma oblíqua ou itálica, o que 
melhora a legibilidade. 
 
Figura 1.2 – Os segmentos individuais de um display de sete segmentos. 
Para a exibição de cada número/caractere usa-se um conjunto de segmentos diferentes. 
As mais comuns são: 
Simulação de um display LED de sete segmentos exibindo os 16 dígitos hex. 
 0 (Zero) - a, b, c, d, e, f 
 1 (Um) - b, c 
 2 (dois) - a, b, d, e, g 
 3 (três) - a, b, c, d, g 
 4 (quatro) - b, c, f, g 
 5 (cinco) - a, c, d, f, g 
 6 (seis) - a, c, d, e, f, g 
 7 (sete) - a, b, c 
 8 (oito) - a, b, c, d, e, f, g (todos) 
 9 (nove) - a, b, c, f, g 
 
Figura 1.3 – Estrutura do display com anodos comuns 
 
1.3. Sensor LM35 
 
O sensor LM35 é um sensor de precisão, fabricado pela National Semiconductor 
que apresenta uma saída de tensão linear relativa à temperatura em que ele se encontrar 
no momento em que for alimentado por uma tensão de 4-20Vdc e GND, tendo em sua 
saída um sinal de 10mV para cada Grau Celsius de temperatura, sendo assim, apresenta 
uma boa vantagem com relação aos demais sensores de temperatura calibrados em 
“KELVIN”, não necessitando nenhuma subtração de variáveis para que se obtenha uma 
escala de temperatura em Graus Celsius. 
 
Figura 1.4 – Sensor LM35 
1.4. Transistor PNP 
 
 O transistor PNP ao contratio do NPN permite passagem de energia do seu 
coletor para o emissor quando sua base for alimentada por tensão 0V (GND). 
 
Figura 1.4 – Sensor LM35 
2. O Projeto 
 
O diagrama abaixo é a representação esquemática do circuito. 
 
 
Figura 2.1 – Diagrama do Projeto 
Separe os Seguintes componentes: 
 Dois resistores de 560 
 Dois displays de 7 segmentos 
 Um sensor LM35 
 Dois transistores de junção PNP 
 
A figura seguinte é a placa Arduino conectada a protoboard com os respectivos 
componentes. 
Tente associar o esquema anterior com o desenho abaixo. 
 
Figura 2.2 – Interligando os componentes com a placa Arduino 
Digite o sketch abaixo e transfira para a placa Arduino. 
/* MULTIPLEXAMENTO DE DOIS DISPLAYS DE 7 SEGMENTOS COM ANODO COMUM 
Faculdade Anhanguera de Anápolis 
Curso: Engenharia Elétrica 
Aluno: Ulisses R. P. da Silva 
R.A.: 6653383781 
 
 NOTA: como neste projeto o anodo do display é comum e o comando é dado pelo 
catodo o nível lógico alto apaga o segmento do display, e o nível lógico baixo acende. O 
mesmo vale para o transistor de junção PNP. 
 
Simulação disponível em: https://goo.gl/uTtRPR 
*/ 
const int PinoA = 3; //Define o pino que ligará o catodo "A" do Display 
const int PinoB = 4; //Define o pino que ligará o catodo "B" do Display 
const int PinoC = 5; //Define o pino que ligará o catodo "C" do Display 
const int PinoD = 6; //Define o pino que ligará o catodo "D" do Display 
const int PinoE = 7; //Define o pino que ligará o catodo "E" do Display 
const int PinoF = 8; //Define o pino que ligará o catodo "F" do Display 
const int PinoG = 9; //Define o pino que ligará o catodo "G" do Display 
 
const int PinoMulti1 = 11; //Pino que comandará o anodo comum do display 1 (unidade) 
const int PinoMulti2 = 12; //Pino que comandará o anodo comum do display 2 (dezena) 
 
const int LM35 = A0; // Define o pino que irá ler a saída do sensor LM35 
 
int temperatura; // Variável que armazenará a temperatura medida 
int centena; // Variável que armazenará a centena da temperatura 
int dezena; // Variável que armazenará a dezena da temperatura 
int unidade; // Variável que armazenará a unidade da temperatura 
 
/*Cria um Array de 10 linhas e 7 colunas contendo a combinação de segmentos para 
mostrar cada número no display*/ 
int num[10][7] = { 
{PinoA,PinoB,PinoC,PinoD,PinoE,PinoF}, //NUMERO 0 
{PinoB,PinoC}, //NUMERO 1 
{PinoA,PinoB,PinoE,PinoD,PinoG}, //NUMERO 2 
{PinoA,PinoB,PinoC,PinoD,PinoG}, //NUMERO 3 
{PinoB,PinoC,PinoF,PinoG}, //NUMERO 4 
{PinoA,PinoC,PinoD,PinoG,PinoF}, //NUMERO 5 
{PinoA,PinoC,PinoD,PinoE,PinoF,PinoG}, //NUMERO 6 
{PinoA,PinoB,PinoC}, //NUMERO 7 
{PinoA,PinoB,PinoC,PinoD,PinoE,PinoF,PinoG}, //NUMERO 8 
{PinoA,PinoB,PinoC,PinoF,PinoG} //NUMERO 9 
}; 
 
void setup() { 
//Declaramos os pinos que vamos utilizar como saída 
pinMode(PinoA,OUTPUT); 
pinMode(PinoB,OUTPUT); 
pinMode(PinoC,OUTPUT); 
pinMode(PinoD,OUTPUT); 
pinMode(PinoE,OUTPUT); 
pinMode(PinoF,OUTPUT); 
pinMode(PinoG,OUTPUT); 
pinMode(PinoMulti1,OUTPUT); 
pinMode(PinoMulti2,OUTPUT); 
} 
 
 
void loop() { 
temperatura = int((float(analogRead(LM35))*5/(1023))/0.01); 
 
 
 if ((temperatura>1) && (temperatura<100)){ 
 // Caso a tempereatura estiver entre 0 e 99 ela é mostrada no display 
 
 //Separando as casas decimais 
 centena=(temperatura/100); 
 dezena=((temperatura-(centena*100))/10); 
 unidade=temperatura-((100*centena) + (10*dezena)); 
 
 //Escrevendo a Temperatura nos Displays 
 apaga(); //Apagamos os Displays 
 numero(unidade,1); //Imprimimos a unidade no display 1 
 apaga(); //Apagamos os Displays 
 numero(dezena,2); //Imprimimos a dezena no display 2 
 
 }else{ 
 //Caso a Temperatura não esteja entre 0 e 99 
 apaga(); 
 digitalWrite(PinoMulti1,LOW); //Ligamos o Display 1 
 digitalWrite(PinoMulti2,LOW); //Ligamos o Display 2 
 
 digitalWrite(PinoG,LOW); //Ligamos o pino G de ambos os displays 
 } 
} 
 
//Declaramos a função que acenderá cada segmento do display 
 void numero(int n, int m) { 
 
 if(m==1){ //Multiplexando os valores para o display 1 (unidade) 
 digitalWrite(PinoMulti2,HIGH); //apagamos o display 2 
 digitalWrite(PinoMulti1,LOW); //acendemos o display 1 
 
 for(int i=0;i<7;i++){ 
/*A variável ‘n’ nos fornece a linha do Array, a qual deve ser lida, 
que contém os pinos que formaram os números a serem impressos 
no display*/ 
 digitalWrite(num[n][i],LOW); 
 } 
 }else{ //Multiplexando os valores para o display 2 (dezena) 
 digitalWrite(PinoMulti1,HIGH); //apagamos o display 1 
 digitalWrite(PinoMulti2,LOW); //acendemos o display 2 
 
 for(int i=0;i<7;i++){ 
 digitalWrite(num[n][i],LOW); 
 } 
 
 } 
 delay(8); //Deixa o display aceso por 8 milissegundos 
 } 
 
//Declaramos uma