terça-feira, 24 de junho de 2025

2EL- A - Projeto 03 - Contador de Moedas - Arduino.

P3 - CONTADOR DE MOEDAS COM ARDUINO: BEATRIZ RODRIGUES SANCHES, CAUÃ HENRIQUE ALVES MECENE, JULIA SILVEIRA DA SILVA e RENAN EDUARDO PENEDO LEMONIE.

Este projeto consiste em um contador de moedas usando um Arduino, LEDs, IRs (sensor de infra-vermelho) e um display LCD. Ele permite que você insira diferentes moedas e acompanhe o valor acumulado em um display LCD. A estrutura promove inserção de moedas, que pela força da gravidade deslizam sobre uma rampa inclinada, desenhada com cortes que promovem a seleção das moedas mediante os diâmetros específicos das moedas de 0,05/0,10/0,25 centavos e R$ 1,00.
A maioria dos classificadores separa as moedas com base no diâmetro. As moedas rolam ou deslizam por uma rampa com ranhuras de tamanhos diferentes. Do topo da rampa para a base, as ranhuras aumentam progressivamente. Uma moeda passará por qualquer ranhura que não se ajuste ao seu diâmetro e cairá na primeira ranhura que se ajustar. Cada ranhura leva a uma bandeja ou outro recipiente que comporta apenas um tamanho de moeda. 

Detalhes da estrutura
A estrutura que apoia a rampa possui duas inclinações: uma para deslizamento da moeda e outra para apoiá-la à rampa e melhor guiá-la.
O compartimento de passagem/queda de cada moeda(após seleção da rampa) é isolado dos demais, que internamente conta com um sensor de infra vermelho apontados e posicionados na mesma direção. 
Embora a classificação de moedas por tamanho possa ser facilmente feita mecanicamente, contá-las é uma tarefa para a qual a eletrônica é mais adequada. Este projeto utiliza sensores infravermelhos (IR) para contar as moedas à medida que elas caem das ranhuras para as bandejas. Os sensores se comunicam com um microcontrolador Arduino Uno, que soma o valor total de todas as moedas em todas as bandejas. 
O Arduino controla um display LCD que exibe a soma de todas as moedas atualmente no contador. O LCD também informa qual tipo de moeda foi detectado, quando uma bandeja de moedas está cheia e quando uma bandeja de moedas foi esvaziada. O Arduino também controla cinco LEDs e se comunica com cinco botões táteis. Quando qualquer bandeja de moedas estiver cheia, um LED mestre (vermelho) acenderá. Isso notifica o usuário de que uma das bandejas está cheia. Ao mesmo tempo, um LED secundário (verde, amarelo, transparente ou azul) também acenderá. A cor do LED secundário aceso indica qual das quatro bandejas de moedas está cheia. Quando uma bandeja de moedas estiver cheia, o contador de moedas não processará mais moedas de nenhum tipo até que a bandeja esteja cheia e o respectivo botão de reinicialização seja pressionado. Pressionar o botão de reinicialização de uma bandeja de moedas subtrairá o valor de quantas moedas estavam na bandeja.

Esquema de montagem e componentes utilizados neste projeto:
  • Arduino Uno;
  • Display LCD 16x2;
  • 5x Sensor de luz infra vermelho para detectar as moedas;
  • 5x Botão para resetar o valor acumulado de dinheiro;
  • Resistores, fios e componentes básicos de eletrônica;
  • Pack de 3x baterias auxiliares;
  • Rampa desenhada com impresssora 3D (Imagem 01);
  • Estrutura divisória, inclinada de acrílico(em construção) para separar as moedas;
Configuração do Projeto
  • Conecte o display LCD ao Arduino conforme o esquema de pinagem especificado no código.
  • Conecte o sensor de infra vermelho (IRs) aos pinos do Arduino para detectar as moedas.
  • Conecte um botão ao Arduino para permitir o reset do valor acumulado.
  • Carregue o código fornecido neste repositório para o Arduino usando a IDE do Arduino.
Funcionamento
Quando uma moeda passa pelo o sensor de infra vermelho, a luz IR é refletida, e o Arduino conta essa interrupção como uma moeda cujo os valores são definidos para cada sensor.
O display LCD mostra a mensagem inicial e o valor acumulado em dinheiro.
Você pode inserir moedas para incrementar o valor acumulado.
Pressione o botão conectado ao Arduino para resetar o valor acumulado.
O código de detecção de moedas é baseado na entrada de um dos nossos sensores infravermelhos, neste caso, o sensor de moedas de 25 centavos. O sensor emite um sinal alto constante quando não detecta nada. O sinal alto é cortado quando um objeto passa pelo sensor. Este código procura a transição do sinal baixo de "detecção" para o sinal alto de "sem detecção". Quando essa transição ocorre, o monitor serial exibe o número de moedas de 25 centavos, anuncia que uma moeda de 25 centavos foi detectada e adiciona 1 ao número de moedas contadas no classificador.
Quando o número de qualquer moeda atinge um valor predeterminado, mostrado aqui como 10 moedas de 25 centavos, a máquina transita para um estado específico para um classificador de moedas completo. Além disso, essa mudança de estado é reportada ao monitor serial, juntamente com o número daquela moeda no dispositivo, e os LEDs mestre e específico da moeda são acesos.
A função sum pega o número atual de cada moeda, armazenado como uma variável no Arduino, e o multiplica pelo valor da moeda. Em seguida, ela soma todas as moedas armazenadas e as exibe continuamente no LCD. Como este é inserido no loop e, como tal, se repete com frequência, qualquer alteração no número de qualquer moeda é exibida imediatamente.

A base deste projeto é o módulo sensor infravermelho é muito simples, consistindo em dois componentes principais: o primeiro é a seção transmissora de infravermelho e o segundo é a seção receptora do transmissor de infravermelho do Arduino. Na seção transmissora, um LED infravermelho é usado e, na seção receptora, um fotodiodo é usado para receber o sinal infravermelho. Após algum processamento e condicionamento do sinal, você obterá a saída.
Sensor infravermelho funcionando: Um sensor de proximidade IR funciona aplicando uma voltagem ao diodo emissor de luz infravermelho integrado, que por sua vez emite luz infravermelha. Essa luz se propaga pelo ar e atinge um objeto; depois disso, a luz é refletida no sensor fotodiodo. Se o objeto estiver próximo, a luz refletida será mais forte; se o objeto estiver distante, a luz refletida será mais fraca. Se você observar atentamente o módulo, quando o sensor se torna ativo, ele envia um sinal baixo correspondente através do pino de saída, que pode ser detectado por um Arduino ou qualquer tipo de microcontrolador para executar uma tarefa específica. A única coisa legal sobre este módulo é que ele possui dois LEDs integrados, um dos quais acende quando há energia disponível e o outro acende quando o circuito é acionado. O manual do sensor está disponível em Manual_IR_Sensor.

Descrição da funcionalidade do projeto
A operação do classificador de moedas é simples. Comece colocando qualquer moeda americana (ou seja, 25 centavos, 5 centavos, 10 centavos ou 10 centavos) ao longo da parte superior do trilho inclinado (nº 1 na figura). Conforme a moeda cai pelo seu slot correspondente (nº 2), ela passará pelo sensor infravermelho apropriado (nº 3) e o acionará. 
O valor individual da moeda será adicionado à soma total do classificador exibida no LCD (nº 4). As moedas serão coletadas nos compartimentos localizados na parte traseira da máquina. Quando o número de moedas armazenadas atingir um valor predefinido (dez moedas no caso deste projeto), o LED correspondente à moeda e um LED mestre acenderão, e o dispositivo não contará mais moedas de nenhum tipo. Nesse momento, deve-se remover as moedas da bandeja cheia do dispositivo e pressionar o botão de reinicialização apropriado, subtraindo o valor das moedas removidas e retomando a contagem. A reinicialização mestre zerará a soma total do classificador se você tiver decidido remover todas as moedas do dispositivo.
Cada sensor IR tem uma resistência interna de 9,9K ohm entre os pinos VCC e OUT, e uma resistência interna de 10K ohm entre os pinos VCC e GND (terra). Em cada sensor, há um resistor adicional de 100 ohm conectado ao pino terra, trazendo a resistência total entre VCC e GND para 10,1K ohm. Sem nem mesmo olhar para o próprio circuito do sensor IR, pode-se deduzir que a menor resistência que o sensor poderia ter é se as resistências de 9,9K e 10,1K fossem de alguma forma conectadas em paralelo. Somando os recíprocos de 9900 ohms e 10100 ohms e então tomando o recíproco dessa soma produz uma resistência equivalente de aproximadamente 5K ohm. Usando a Lei de Ohm, 5 V / 5000 ohm = 1 mA. Novamente, esse valor está dentro dos parâmetros dos pinos digitais, embora os sensores IR recebam energia de um trilho comum vindo do pino de alimentação de 5 V do Arduino.
O datasheet da placa Arduino UNO R3 está disponível em: Manual Arduino® UNO R3.
 O datasheet da placa de Sensor IR está disponível em: Manual módulo Sensor IR.
O último componente a ser considerado é o display LCD 16x2. Quando alimentado com 5 V, um LCD 16x2, I2C, consome cerca de 30 mA com a luz de fundo ligada e o display funcionando (de acordo com esta fonte: https://protosupplies.com/product/lcd1602-16x2-i2... ). Portanto, um pino digital configurado para saída seria suficiente para alimentar o pino VCC do LCD. No entanto, assim como os botões, o LCD recebe energia do pino de alimentação de 5 V.
O datasheet da placa de Display LCD está disponível em: Manual módulo Display LCD.

O desenho técnico da base do projeto está disponível em: 25_08_03 Base_Moedeiro_BCJR .
O desenho técnico do separdor do projeto está disponível em: 25_08_03 Separador_Moedeiro_BCJR .

Nenhum comentário:

Postar um comentário