Intermediário - Projeto 12

Cronômetro com pause, sensor infravermelho e reset - Arduino

Objetivo

Criar um cronômetro utilizando o módulo TM1637 (opcional) e/ou o display LCD com pause controlado por leds infravermelhos (emissor e receptor). Ao pressionarmos o botão,  o cronômetro é disparado, mostrando os valores de minutos, segundos e centésimos de segundo no display LCD e os valores de minutos e segundos no display TM1637. Para pausarmos o cronômetro, utilizaremos leds infravermelhos (emissor e receptor). Os leds emissor infravermelho e receptor criam uma barreira invisível que ao ser interrompida por algum obstáculo para automaticamente a contagem do cronômetro.

Obs.: O cronômetro sugerido é limitado até 60 minutos.

Referências:

I03 - Utilizando leds infravermelhos como sistema de alarme - Arduino

Projeto 79 - Interrupção por timer no Arduino - disparo de alarme com sensor de toque

Projeto 64 - Cronômetro com display TM1637 e Arduino

Projeto 63 - Usando o módulo TM1637 (display 4 dígitos) com Arduino

Projeto 48 - Como controlar um display LCD com o módulo I2C

Projeto 38 - Controlando um display LCD (instalação e comandos básicos) - Caso opte por usar o LCD sem o módulo I2C

Definições

Led Emissor Infravermelho (IR): Led que emite um sinal IR (infrared ou infravermelho) que pode ser reconhecido por um componente receptor IR. Projetado para emitir sinais infravermelhos em dispositivos remotos e se conectarem em uma placa microcontroladora. A faixa de luz emitida pelo led emissor, cujo comprimento de onda é de aproximadamente 940nm, não é perceptível ao olho humano.

Led Receptor (IR) - Fototransistor: Componente eletrônico que atua como um fotodiodo, permitindo a passagem de corrente elétrica somente com a presença de luz. O fototransistor é parecido com um transistor tradicional, possuindo 2 terminais sendo um o coletor e o outro o emissor, entretanto, a sua base base é ativada pela incidência de radiação infravermelha e não por um sinal digital.

Módulo TM1637 é constituído por 4 displays de 7 segmentos em conjunto (4 dígitos). O módulo TM1637 é de fácil integração com o Arduino, pois sua tensão de alimentação é de 5V e seu controle é feito apenas por 2 conexões com o microcontrolador. Os outros 2 pinos são utilizados para a alimentação do componente. Ideal para projetos com relógio (possui uma identificação central com dois pontos) e contadores que necessitem de um display de fácil visualização.

Obs: Caso tenha optado em utilizar este componente no projeto, precisará utilizar uma biblioteca específica para o módulo TM1637 que disponibilizaremos junto com o sketch.

Módulo TM1637 com display 4 dígitos

 

A interrupção por timer (Timer Interrupts), embora semelhante à interrupção externa, ocorre através do tempo e não por uma ação externa do hardware. Assim, a cada período podemos executar uma função independente, sem que a contagem do tempo seja interferida pelos demais comandos do programa. A interrupção por timer substitui as funções: delay(), millis() e o controle de loop for, gerando um intervalo de tempo independente. Neste projeto, a cada 10.000 microssegundos, ou seja, a cada centésimo de segundo, a função de contagem de tempo é executada.

Obs.: Para utilizarmos o recurso da interrupção por timer no Arduino precisaremos instalar a biblioteca TimerOne, conforme mostraremos durante o tutorial do projeto.

Aplicação

Para fins didáticos e projetos de alarmes e cronômetros para aplicações automatizadas.

Componentes necessários

Referência

Componente

Quantidade

Imagem

Observação

Protoboard

Protoboard 830 pontos 1 Resultado de imagem para protoboard 830v

No mínimo utilizar protoboard com 400 pontos

Jumpers Kit cabos ligação macho / macho 1  
Led emissor IR

Led emissor IR 3mm ou 5mm

1

–Tensão de operação: 1,2 a 1,4VDC
–Corrente de operação: 20mA
–Comprimento da onda: 940nm

Fototransistor

Fototransistor 3mm ou 5mm

1

– Tensão de operação: 1,1 a 1,4VDC
– Corrente de operação: 10mA
– Potência máxima: 60mW
– Comprimento da onda: 940nm

Display LCD Display LCD 16X2 1

DISPLAY LCD 16X2

LCD que utilize o controlador HD44780 (veja na descrição ou datasheet do componente)

O display poderá ser de qualquer cor (fundo verde, azul ou vermelho)

Módulo I2C para display LCD

Módulo I2C com CI PCF8574

(opcional

1 Módulo I2C display LCD Arduino

O módulo I2C poderá vir separado ou já soldado no display LCD

(datasheet)

Se você não possui um módulo I2C para display LCD, poderá adaptar o projeto para o display LCD sem o adaptador.

Módulo TM1637 Módulo TM1637 - quatro dígitos (anodo comum) 1 Módulo TM1637 com display 4 dígitos - Controlador TM1637
- Alimentação: 3.3 à 5V DC
- Display 7 segmentos 4 dígitos anodo comum

datasheet

Resistor Resistor 2

1 Resistor de 150Ω ou superior

(usar no led emissor e no led)

 

1 Resistor de 4,7KΩ a 10KΩ

(usar no fototransistor)

Push Button Push button 6X6X5mm 1

1 Resistor de 4,7KΩ a 10KΩ

(usar no fototransistor)

 

Arduino UNO R3 Arduino UNO 1

Você poderá utilizar uma placa Arduino UNO original ou similar

Observação: Você poderá adquirir os componentes acima na loja: Baú da Eletrônica.

Montagem do Circuito

Conecte os componentes no Protoboard como mostra a figura abaixo. Verifique cuidadosamente os cabos de ligação antes de ligar seu Arduino. Lembre-se que o Arduino deve estar totalmente desconectado da força enquanto você monta o circuito.


Atenção

1. Neste projeto vamos utilizar um display LCD 16x2 com controlador HD44780, que se adapta aos mais diversos projetos com vários modelos de placas e microcontroladores. Este display possui 16 colunas por 2 linhas com backlight (luz de fundo) verde, azul ou vermelha e tem 16 pinos para a conexão. Atenção: Utilize um display LCD com os pinos soldados.

DISPLAY LCD 16X2

2. Para a montagem do display com adaptador, entenda a estrutura do módulo I2C para display LCD 16x2 / 20X4:

Módulo I2C - Detalhes

2.1. Na lateral do adaptador encontramos 4 pinos, sendo: 2 pinos para alimentação (Vcc e GND) e 2 pinos para conexão com a interface I2C (SDA e SCL) que deverão estar conectados nos pinos analógicos A4 (SDA) e A5 (SCL) do Arduino Uno ou nos pinos A20 (SDA) e A21 (SCL) do Arduino Mega 2560. Veja a tabela abaixo com onde temos as principais placas Arduino e suas conexões com o I2C.

2.2. Para controlar o contraste do display, utilize o potenciômetro de ajuste de contraste. O jumper lateral, quando utilizado, permite que a luz do fundo (backlight) seja controlada pelo programa ou permaneça apagada.

 

2.3. A seleção de endereço do adaptador I2C para display LCD, na maioria dos módulos fornecidos no mercado já vêm configurados com o com o endereço 0x27. Se o display LCD não funcionar e você não sabe qual endereço que o seu módulo I2C está configurado, leia Projeto 48 - Como controlar um display LCD com o módulo I2C.

2.3.1 Nos casos em que módulo I2C estiver configurado com uma faixa de endereços diferente do endereço 0X27 altere a alinha de programação -> LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3, POSITIVE); com o endereço correto.

3. Se você optar por utilizar o display LCD sem o módulo I2C, siga as instruções do Projeto 38 - Controlando um display LCD (instalação e comandos básicos).

4. Monte o botão (push button) sem o resistor, pois através da programação vamos habilitar o resistor pull-up interno do arduino. Desta forma, quando o botão estiver pressionado, o Arduino retornará "LOW" ou "0". Veja o projeto Projeto 02b - Led apaga com push button pressionado (pull-up interno do Arduino) ou Como usar push button com Arduino (programação).