Você está na página 1de 17

CONTADOR DE MOEDAS

GRUPO 4

São Paulo - 2021


Sumário

1. Sensor de peso ..............................................................................................................2


1.1. Ponte de Wheatstone ............................................................................................2
1.2. Strain gauge ............................................................................................................4
1.3. Como funciona? .....................................................................................................4
1.4. Pinagem...................................................................................................................5
1.5. Especificações técnicas ...........................................................................................5
1.6. Como usaremos no contador de moedas? ............................................................6
2. Módulo Conversor HX711 ............................................................................................6
2.1. Como funciona? ....................................................................................................6
2.2. Pinagem...................................................................................................................7
2.3. É necessário programar? .......................................................................................7
2.4. Por que não usar o amplificador de instrumentação? ..........................................8
2.5. Especificações Técnicas ..........................................................................................8
3. Arduino .........................................................................................................................8
3.1 O que é e para que serve? ......................................................................................8
4. Módulo I2C ...................................................................................................................9
4.1 Como o circuito desse módulo funciona? .............................................................10
5. LCD ...............................................................................................................................16

1
1. Sensor de peso: A célula de carga irá deformar com o peso da moeda.
2. HX711: O amplificador irá amplificar a saída do sensor de peso e converter para digital.
3. Arduino UNO: receberá a informação em binário, realizará os cálculos necessários e
enviará para o display LCD.
4. Módulo I2C: demultiplexará os 16 pinos do LCD para apenas dois digitais e dois
analógicos.
5. LCD: mostrará as informações no display.

1. Sensor de peso

1.1 Ponte de Wheatstone

Ponte de Wheatstone é um tipo de circuito elétrico que pode ser utilizado para medir a
resistência elétrica de um resistor desconhecido, com grande precisão.

Ela consiste em dois ramos contendo dois resistores cada um e interligados por um
galvanômetro. Todo conjunto deve ser ligado a uma fonte de tensão elétrica. Variando-se a
resistência do reostato, pode-se obter um ponto em que a indicação no galvanômetro fica nula,
que indica que a ponte está equilibrada.

2
Dos resistores R1, R2, R3, um deles é o desconhecido, cujo valor desejamos determinar
e os outros dois são resistores conhecidos.

Coma ponte equilibrada:

Como UCD = 0

Temos:

Dividindo uma equação pela outra temos:

Numa ponte equilibrada, há uma igualdade em cruz do produto das resistências


elétricas.

Colocando tudo isso em poucas palavras, teremos:

A ponte de Wheatstone é um circuito formado por quatro resistores ligados em série e


paralelo, conectados por um galvanômetro, sendo que ela pode ser usada para determinar uma
resistência elétrica desconhecida. Para fazer isso, é necessário que a ponte esteja em equilíbrio,
isto é, a corrente entre os dois ramos deve ser nula. Se ela estiver equilibrada, então podemos
igualar o produto cruzado das resistências.

https://brasilescola.uol.com.br/fisica/ponte-wheatstone.htm

https://mundoeducacao.uol.com.br/fisica/ponte-wheatstone.htm

3
1.2 Strain gauge

Strain Gauges são elementos resistivos analógicos (350, 700 e 1000 ohms) fixados na
estrutura de célula de carga que variam a resistência dependendo da força de compressão ou
tensão que a estrutura da célula de carga recebe.

O fio resistivo mostrado na figura acima, altera sua resistência de acordo com o
“alongamento” da superfície em que está colocado, gerando dessa maneira sinais elétricos que
são interpretados pela placa de aquisição, transformando os valores em deformação. Esses, por
sua vez, podem ser convertidos em tensão mecânica.

A eletrônica por trás das medições:

O estresse é uma força exercida sobre um objeto, enquanto a tensão é a deformação


que um objeto sofre sob estresse. Os strain gauges são sensíveis o suficiente para identificar
deformações minúsculas que o olho não pode ver. Na construção, deve-se prender folha de
metal ou fio ao material de suporte flexível e afixá-lo no objeto que deseja monitorar. Quando
esse objeto se deforma, a folha ou fio faz o mesmo, fazendo com que sua resistência aumente.
Se o objeto estica o fio ou a folha quando ocorre a compressão, a resistência diminui.

http://pt.scienceaq.com/Electronics/100401115.html

https://ensus.com.br/extensometria-strain-gauge-o-que-e-quando-utilizar/

1.3 Como funciona?

Célula de carga é o dispositivo responsável por medir uma deformação ou flexão de um


determinado corpo, o qual transforma a força exercida em um sinal elétrico. No caso, a
deformação do corpo será proporcional ao peso aplicado a ele, ou seja: quanto maior a
alteração, maior o peso ou massa aplicada sobre a superfície.

Existem vários tipos de Células de carga, mas a que nosso grupo irá utilizar no projeto,
será a célula de carga single point com tecnologia de strain gauge, pois são altamente precisas
e podem pesar cargas descentralizadas enquanto ainda fornecem um alto nível de precisão.

4
As células de carga com strain gauge levam internamente quatro extensômetros ligados
entre si conforme o conceito da ponte de Wheatstone que foi mencionado acima. A saída de
uma célula de carga com essa tecnologia é expressa em termos de mV / V e é diretamente
proporcional à entrada.

É através da medição do desbalanceamento da ponte de Wheatstone que se obtém o


valor da força aplicada. Além disso, a forma geométrica, o material do corpo da célula de carga
e a intensidade da força/carga a ser medida e as condições ambientais devem ser objeto de um
meticuloso estudo quanto à escolha da célula de carga, por isso nós escolhemos a single point,
pois apresentam maior facilidade para medir o peso de uma moeda devido sua alta precisão.

Como mencionado anteriormente, o aço ou alumínio do strain gauge é levemente


deformado sob o efeito da carga, mas então volta à sua posição inicial, com uma resposta
elástica a cada carga.

https://blog.weightech.com.br/2017/06/voce-sabe-como-funciona-uma-celula-
de.html

https://www.toledobrasil.com/blog/voce-sabe-como-funciona-uma-celula-de-carga

1.4 Pinagem

Fio preto: Esse fio será destinado à alimentação negativa da célula de carga.

Fio vermelho: Esse fio será destinado à alimentação positiva da célula de carga.

Fio Branco: Esse fio será destinado ao negativo da tensão de saída.

Fio Verde: Esse fio será destinado ao positivo da tensão de saída.

https://www.youtube.com/watch?v=-qLfybfvsHw

1.5 Especificações técnicas

Olhando as especificações do sensor de peso que iremos utilizar, teremos:

CARACTERÍSTICAS:

5
- Célula de Carga 100g;

- Compatível com Arduino, Raspberry Pi, ESP32 e outros;

- A tensão de saída varia conforme o peso;

- É necessário utilizar um amplificador de sinal.

ESPECIFICAÇÕES:

- Modelo: CC01;

- Carga nominal: 0 a 100g;

- Material: Liga de alumínio;

- Sinal de saída: 0.6mv/v;

- Precisão: 0.05% fs;

- Excitação: 5 ~ 12V DC;

https://www.usinainfo.com.br/sensor-de-peso-arduino/celula-de-carga-100g-para-
arduino-sensor-de-peso-5875.html

1.6 Como usaremos no contador de moedas?

Ao colocarmos a moeda acima da superfície da balança, o sensor de carga terá uma


deformação em seus fios resistivos. O Strain Gauge lerá essa deformação, e gerará uma tensão
na faixa de mV.

A célula de carga será fixada um pouco acima da base da balança para que facilite a
deformação.

2. Módulo Conversor HX711

2.1 Como funciona?

O módulo conversor HX711 é um conversor analógico digital de 24 bits de resolução,


que também funciona como um amplificador, assim mantendo o nível de sinal dentro da faixa
de operação do conversor.

6
Quando a célula de carga transformar a deformação exercida em tensão, ela será
amplificada pelo amplificador interno do Módulo Conversor HX711, colocando-a em uma faixa
de tensão possível de ser lida.

Após amplificar, será necessário realizar a conversão para digital, para isso o pino SCK
envia 25 pulsos sendo que o 24º pulso indica o fim da conversão e o 25º pulso indica que a
próxima conversão tem que ser no canal A com ganho de 128.

Quando o pino SCK envia o 24º bit, temos a informação já convertida em digital no pino
DT (DOUT), indicando que a conversão terminou, e então, o pino DOUT vai para nível lógico alto.
No 25º pulso, ele vai para nível lógico baixo, o que significa que o mesmo está pronto para uma
conversão, aguardando o primeiro pulso do SCK para que ela seja iniciada.

https://pdf1.alldatasheet.com/datasheet-pdf/view/1132222/AVIA/HX711.html

2.2 Pinagem:

E+: pino que alimentará a célula (+);

E-: pino que alimentará a célula (-);

A+: sinal da célula de carga;

A-: sinal da célula de carga;

VCC: alimentação positiva;

GND: alimentação negativa;

DOUT: conectada ao pino digital do Arduino;

SCK: conectada ao pino digital do Arduino.

http://blog.baudaeletronica.com.br/conversor-hx711-para-balanca-eletronica/

https://www.youtube.com/watch?v=-qLfybfvsHw

2.3 É necessário programar?

Não é necessário programar, entretanto será necessário realizar a calibração da balança


via Arduino e utilizar a biblioteca <hx711.h> na programação do contador de moedas. Para isso,
pode se usar exemplos de programações de balanças normais disponíveis nos exemplos abaixo:

http://blog.baudaeletronica.com.br/conversor-hx711-para-balanca-eletronica/

https://www.robocore.net/tutoriais/celula-de-carga-hx711-com-arduino

https://www.automalabs.com.br/modulo-para-leitura-de-celulas-de-carga-hx711/

7
2.4 Por que não usar o amplificador de instrumentação?

Na verdade, o Módulo HX711 trata-se essencialmente de um amplificador de


instrumentação de duas entradas multiplexadas incorporado a um conversor A/D de 24 bits. O
que permite uma resolução muito superior à que seria obtida ligando um amplificador de
instrumentação diretamente a uma entrada analógica do Arduino, cujo conversor A/D é de 10
bits.

https://www.automalabs.com.br/modulo-para-leitura-de-celulas-de-carga-hx711/

2.5 Especificações técnicas:

Tensão de trabalho: 2,6V ~ 5,5VDC;

Corrente de trabalho: abaixo de 10mA;

Diferencial de tensão de entrada: +/- 40mV;

Frequência de atualização: 80 Hz;

Conversor A/D com resolução de 24Bits;

Número de Canais: 2;

Dimensão: 35 x 20 x 2,7 mm;

Datasheet: Módulo Conversor Célula de Carga - HX711;

https://www.youtube.com/watch?v=wk906FPmrgM

https://www.easytronics.com.br/modulo-hx711

3. Arduino

Usaremos o Arduino UNO devido ao custo-benefício.

3.1 O que é e para que serve?

As placas Arduino possuem funcionamento semelhante ao de um pequeno computador,


no qual, pode-se programar a maneira como suas entradas e saídas devem se comportar em
meio aos diversos componentes externos que podem ser conectados nas mesmas, mas para isso
é necessário programá-lo.

Programação nada mais é que falar ao controlador quais decisões devem ser tomadas
em cada circunstância. Para isso, escrevemos um código que segue uma sequência lógica de
tomada de decisões que leva em conta as variáveis que serão lidas e/ou controladas.

Para programar essas placas, ou seja, ensiná-las a desempenharem a as funcionalidades


que você deseja, basta utilizarmos a sua IDE (ambiente integrado de desenvolvimento), que por
sua vez, é um software onde podemos escrever um código em uma linguagem semelhante a
C/C++, o qual, será traduzido, após a compilação, em um código compreensível pela nossa placa.

Como já conhecemos o Arduino, não vamos nos preocupar com ele nesse momento,
embora já estejamos nos aprofundando nas programações que em breve serão colocadas aqui.

8
https://portal.vidadesilicio.com.br/o-que-e-arduino-e-como-funciona/

4. Módulo I2C

Como foi abordado em discussões anteriores, o LCD ocupa grande parte dos pinos do
Arduino, o que atrapalharia na hora de colocar um dispositivo como a nossa célula de carga.
Pensando na resolução desse problema, vimos que é necessário o uso de um módulo I2C que
seja o demultiplexador dos 16 pinos do LCD para apenas dois pinos digitais.

O protocolo I²C foi desenvolvido visando conectar diversos periféricos utilizando apenas
as duas linhas de dados SDA (Serial Data) e SCL (Serial Clock). A ideia principal é definir um
endereço hexadecimal para cada dispositivo e no momento de comunicação somente o
dispositivo solicitado responderá.

• O jump da esquerda permite ligar ou desligar a luz de fundo (backlight) do LCD (com
Jump: LED aceso e sem jump: LED apagado). Ainda assim, mesmo com jump instalado ainda
precisamos controlar o backlight via programação com o código “lcd.setbacklight(HIGH)”.

• O trimpot azul serve para regular o contraste da tela.

• GND, VCC, SDA e SDL são as conexões para comunicação I2C da placa.

• As ilhas A0, A1, A2 são o endereço desta placa no barramento I2C. Estas placas
possuem o endereço 0x3Fh com os 3 jumps abertos e 0x38h com os três jumps fechados (através
de uma soldagem)

9
Os endereços acima são criados a partir da soldagem dos pinos, isto é, se todos os pinos
(A0, A1, A2), que são representados por (1, 2, 3), forem curtos-circuitados, teremos um
endereço de 0x38, agora se nenhum deles foram, terá o endereço de 0x3F.

Muito embora, seja importante ressaltar que mesmo fazendo o endereçamento


corretamente, ainda será necessário adicionar a biblioteca LiquidCrystal_I2C no IDE do Arduino
(O que será explicado no final deste documento).

4.1 Como o circuito desse módulo funciona?

Para entender melhor o funcionamento desse módulo, vamos analisar apenas o CI


PCF8574 dentro de seu datasheet:

INFORMAÇÕES DO DATASHEET PCF8574 (https://pdf1.alldatasheet.com/datasheet-


pdf/view/177289/TI/PCF8574.html)

8 bits remotos de entrada ou saída expansível para barramento I2C (demultiplexador).

Informações do componente do datasheet:

Tensão de alimentação: 2.5 a 6 V

Corrente máxima consumida de 10uA

Descrição

O PCF8574 prove vários controles para muitas famílias dos microcontroladores através
de duas linhas de barramentos bidirecionais. Sendo que, esse CI consome uma baixa corrente,
e conta com saída com uma corrente alta com direcionamento para LED’s. Ele também possui
uma linha de interrupção (INT) que pode ser conectada com a lógica de interrupção do
microcontrolador. Evitando uma interrupção de sinal nessa área, o PCF8574 pode informar ao
microcontrolador se há entrada de dados nessas entradas sem ter de se comunicar pelo
barramento I2C. Isso significa que o PCF8574 pode ser um dispositivo escravo simples.

10
Característica do barramento I2C:

O barramento I2C é para dois caminhos ou duas linhas de comunicações diferentes


entre os CI’s ou módulos. As duas linhas são uma linha de dados serial (SDA) e uma linha de clock
serial (SCL). Ambas as linhas devem ser conectadas a uma alimentação positiva por um resistor
de Pull-up quando conectadas aos estágios de saída. A transferência de dados pode ser iniciada
somente quando o barramento não está ocupado.

Transferência de bit

Um dado em bit é transferido a cada pulso de clock. Os dados na linha SDA devem
permanecer estável durante o período alto de pulso de clock, bem como mudanças na linha de
dados nesse tempo será interpretada como controle de sinais.

Condições de início e parada

Ambas as linhas de clock e de dados permanecem em nível alto quando o barramento


não está ocupado. Uma transição de nível alto para baixo da linha de dados, quando o clock está
alto é definido como uma condição de início (S). Uma transição de baixo para alto da linha de
dados enquanto o clock está alto é definido como a condição de parada.

Configuração de sistema

Um dispositivo que gera uma mensagem é um “transmissor”, um dispositivo que recebe


é o ‘receptor’. O dispositivo que controla a mensagem é o mestre e os dispositivos que são
controlados pelo mestre são os escravos.

Reconhecimento

O número de bytes de dados transferidos entre as condições de início de parada do


transmissor para o receptor não é limitado. Cada byte de oito bits é seguido por
reconhecimento. O bit reconhecido é um nível alto colocado no barramento pelo transmissor

11
onde como o mestre gera um pulse de clock extra e reconhecido. Um escravo receptor que é
endereçado deve gerar o bit reconhecido depois da recepção de cada byte. Um mestre também
deve gerar um reconhecimento depois da recepção de cada byte que foi cronometrado no
escravo transmissor. O dispositivo que reconhece que tem de puxar para baixo a linha SDA
durante o pulso de clock reconhecido, assim que a linha SDA está estável no nível lógico baixo,
o período alto do pulso de clock relatado e conhecido, configurado e tempos de espera devem
ser tomados em consideração.

Um mestre receptor deve sinalizar um final de dados para o transmissor por não gerar
um reconhecimento no último byte que foi cronometrado para o escravo. Nesse evento, o
transmissor deve deixar a linha de dados em nível lógico alto para habilitar o mestre a gerar uma
condição de parada.

Cálculo dos Resistores de Pull-up

Para calcular o resistor de Pull-up para o barramento I²C, ambos os cálculos usam como
base a capacitância do barramento (10Pf) e a capacitância máxima tolerada (400pF) acima disto
é necessário usar “repetidores” ou “hubs” para gerenciar mais dispositivos. Quanto maior o
número de dispositivos e a distância entre eles maior será a capacitância, pois o comprimento
do fio influencia na capacitância do barramento.

O cálculo dos resistores, normalmente é utilizado um resistor de 10KΩ para propósitos


simples, também pode se adotar: 10KΩ para frequência de 100KHz e 2KΩ para 400KHz até
1MHz, ou colocar um valor intermediário de 4,7KΩ.

Um dos modos de cálculos é fornecido pela Texas Instruments que é um dos maiores
fabricantes de chips dos EUA. Você pode ver no site em anexo:

https://xprojetos.net/download/calculo-para-resistore-i2c-manual/

Neste documento é fornecido uma série de fórmulas para cálculo, porém só duas irão
nos interessar que é a do Rp(min) e Rp(max) que é o valor máximo e mínimo que pode ser
adotado para o resistor de Pull-up, o resistor que você escolher deve estar entre estes dois
valores. A seguir segue o Rp(min):

Onde: Vcc é a tensão de alimentação do sistema.

Vol(max) é a tensão máxima registrada como baixa pelos pinos I2C do dispositivo ou
microcontrolador.

Iol é a corrente do sinal em nível baixo (bit 0)

Para o Rp(max) temos a seguinte formula:

12
Onde:

• tr é o tempo de subida aceitável das linhas SDA e SCL para a taxa de transmissão
desejada. Esta informação normalmente está nos datasheets dos dispositivos (normalmente
300ns para frequências acima de 100KHz e 1000ns para frequências abaixo de 100KHz)

• Cb é a capacitância do barramento. Esse limite é de 400 pF. Caso deseje adicionar


mais dispositivos é necessário um chip de buffer para I2C.

Abaixo, temos o esquema elétrico do módulo I2C, que leva em consideração os dados
do datasheet do PCF854, com relação ao resistor de pull-up, os transistores necessários e
capacitores, logo, não será necessário realizar os cálculos indicados no datasheet, o que
simplificará grandemente o circuito.

Considerando o esquema, é possível identificar que os pinos em aberto são os de


endereçamento, e por isso é necessário soldar caso queira um endereço específico. Além disso,
é possível enxergar pelo circuito e ao ler o datasheet, o porquê é necessário conectar o pino SDA
e SCL do módulo com o A4 e A5 do Arduino, pois é dessa maneira que o CI PCF8574 passa a
informação, ou seja, por esses dois barramentos de dados.

Como seria a ligação entre o Arduino UNO e o Módulo I2C?

13
Continuando com o tema anterior e considerando a figura acima, é visível que é
necessário a conexão da alimentação do Arduino no 5V e GND, porque segundo o datasheet do
CI utilizado no módulo, sua tensão de alimentação está entre 2,5V e 6V, logo os 5V é uma tensão
que satisfaz essa exigência. Os outros dois fios que saem do SDA e do SCL devem ir para os pinos
apropriados para os dados e o clock (A4 e A5 do Arduino) por causa da comunicação por esses
dois barramentos.

Mas como podemos saber em qual endereço o LCD estará?

Inicialmente, para saber com certeza qual o endereço configurado, é necessário baixar
o sketch disponível em: https://drive.google.com/file/d/1MpaTS5dSHf7mNvZ74nVYYtVA4E-
Znb03/view

Após isso, é necessário carregar esse sketch no Arduino, para que se possa identificar
em qual endereço está. (Ferramentas > Porta > COM12).

Após carregar, é necessário abrir o monitor serial para ver em qual endereço esse
display está configurado.

Irá iniciar o processo de Scan para encontrar o endereço, e ele será dado em
hexadecimal.

Nesse vídeo, explica-se com clareza como será esse procedimento:

https://www.youtube.com/watch?v=5OSPk5oHhVM

Agora, vamos ver como incluir uma biblioteca no Arduino utilizando um tutorial
disponível no site da RoboCore: https://www.robocore.net/tutoriais/adicionando-bibliotecas-
na-ide-arduino

Disponível na IDE do Arduino existe um Gerenciador de Bibliotecas onde você pode


adicionar rapidamente uma biblioteca que está compactada no formato .ZIP ou até mesmo a
pasta. Para isso deve-se na IDE abrir o menu: Sketch > Incluir Biblioteca (Include Library) >
Adicionar Biblioteca .ZIP (Add .ZIP Library...) conforme a imagem abaixo.

14
Selecione a Biblioteca desejada, no caso a SerialRelay-master.zip na pasta onde foi feito
o download no primeiro passo do tutorial. Lembrando que é possível extrair e adicionar uma
pasta e não necessariamente o arquivo zipado. Caso tenha seguido todos os passos
corretamente verá uma mensagem "Biblioteca adicionada às suas bibliotecas." Para abrir um
exemplo da Biblioteca instalada é só ir em: Arquivo > Exemplos > RoboCore - SerialRelay > Blink
conforme a imagem abaixo.

Outros sites utilizados:

15
https://omecatronico.com.br/blog/lcd-serial-i2c-pcf8574/

https://xprojetos.net/pcf8574-i2c-para-lcd/

https://www.robocore.net/tutoriais/primeiros-passos-com-modulo-i2c

5. LCD

Como o LCD foi um componente muito estudado no terceiro ano, vampos apenas fazer
um apanhado geral nesse momento:

Um monitor de cristal líquido (liquid crystal display; LCD) é um monitor muito leve e fino,
sem partes móveis. Consiste em um líquido polarizador da luz, eletricamente controlado, que se
encontra comprimido dentro de celas entre duas lâminas transparentes polarizadoras. Os eixos
polarizadores das duas lâminas estão alinhados perpendicularmente entre si.

Para não termos problemas com a soldabilidade dos 16 pinos do LCD, utilizaremos o LCD
com módulo I2C embutido.

https://www.oficinadanet.com.br/artigo/1262/o_que_e_lcd_liquid_crystal_display

16

Você também pode gostar