Baixe o app para aproveitar ainda mais
Prévia do material em texto
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 umafunção que apagará todos os segmentos do display void apaga() { digitalWrite(PinoA,HIGH); digitalWrite(PinoB,HIGH); digitalWrite(PinoC,HIGH); digitalWrite(PinoD,HIGH); digitalWrite(PinoE,HIGH); digitalWrite(PinoF,HIGH); digitalWrite(PinoG,HIGH); }
Compartilhar