P4 - 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.
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.
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 ú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.
Nenhum comentário:
Postar um comentário