Neste projeto estamos utilizando o conceito de ADC (Conversão Analógico para Digital) no ARDUINO UNO. Usaremos um sensor de efeito Hall e o Arduino uno para medir a intensidade do campo de um ímã. O sensor que usamos aqui é UGN3503U. Este é um sensor Hall que detecta a intensidade do campo magnético e fornece uma voltagem variável na saída proporcional à intensidade do campo. Este sensor capta a intensidade do campo nas unidades de ' GAUSS '.
Portanto, com este sensor teremos a intensidade do campo como voltagem variável. Ao usar o recurso ADC, converteremos essa tensão em um número. Este número representa a intensidade do campo e é mostrado no LCD.
O Arduino tem seis canais ADC. Nestes, qualquer um ou todos eles podem ser usados como entradas para tensão analógica. O UNO ADC tem resolução de 10 bits (portanto, os valores inteiros de (0- (2 ^ 10) 1023)). Isso significa que ele mapeará tensões de entrada entre 0 e 5 volts em valores inteiros entre 0 e 1023. Então, para cada (5/1024 = 4,9 mV) por unidade.
Em tudo isso vamos conectar um potenciômetro ou potenciômetro ao canal 'A0' e mostrar o resultado do ADC em um display simples. As exibições simples são unidades de exibição 16x1 e 16x2. A unidade de exibição 16x1 terá 16 caracteres e está em uma linha. O 16x2 terá 32 caracteres no total 16in 1 r linha e outro 16 em 2 nd linha. Aqui deve-se entender que em cada caractere há 5x10 = 50 pixels, então para exibir um caractere todos os 50 pixels devem funcionar juntos, mas não precisamos nos preocupar com isso porque há um outro controlador (HD44780) na unidade de exibição que faz o trabalho de controlar os pixels (você pode ver isso na unidade de LCD, é o olho roxo atrás).
Componentes necessários
Hardware: ARDUINO UNO, fonte de alimentação (5v), JHD_162ALCD (16x2LCD), capacitor 100uF (2 peças), UGn3503U.
Software: IDE arduino (Arduino noturno)
Diagrama de Circuito e Explicação
A figura acima mostra o diagrama de circuito para medição de campo magnético usando o arduino uno.
No LCD 16x2, existem 16 pinos ao todo, se houver uma luz de fundo, se não houver luz de fundo, haverá 14 pinos. Pode-se ligar ou deixar os pinos da luz de fundo. Agora, nos 14 pinos, há 8 pinos de dados (7-14 ou D0-D7), 2 pinos de fonte de alimentação (1 e 2 ou VSS e VDD ou GND e + 5v), 3º pino para controle de contraste (VEE-controla a espessura dos caracteres mostrado) e 3 pinos de controle (RS & RW e E).
No circuito acima, você pode observar que peguei apenas dois pinos de controle, o bit de contraste e READ / WRITE não são usados com frequência, então eles podem estar em curto com o aterramento. Isso coloca o LCD em maior contraste e modo de leitura. Precisamos apenas controlar os pinos ENABLE e RS para enviar caracteres e dados de acordo.
As conexões que são feitas para LCD são fornecidas abaixo:
PIN1 ou VSS para aterrar
PIN2 ou VDD ou VCC para alimentação de + 5v
PIN3 ou VEE para aterrar (oferece contraste máximo, melhor para um iniciante)
PIN4 ou RS (Registrar Seleção) para PIN8 de ARDUINO UNO
PIN5 ou RW (leitura / gravação) para aterrar (coloca o LCD no modo de leitura facilita a comunicação para o usuário)
PIN6 ou E (habilitar) para PIN9 de ARDUINO UNO
PIN11 ou D4 a PIN10 de ARDUINO UNO
PIN12 ou D5 a PIN11 de ARDUINO UNO
PIN13 ou D6 a PIN12 de ARDUINO UNO
PIN14 ou D7 a PIN13 de ARDUINO UNO
O ARDUINO IDE permite ao usuário usar o LCD no modo de 4 bits. Este tipo de comunicação permite ao usuário diminuir o uso de pin no ARDUINO, ao contrário de outros o ARDUINO não precisa ser programado separadamente para ser usado no modo 4 it porque por padrão o ARDUINO está configurado para se comunicar no modo 4 bits. No circuito você pode ver que usamos comunicação de 4 bits (D4-D7). Portanto, pela mera observação da tabela acima, estamos conectando 6 pinos do LCD ao controlador, em que 4 pinos são pinos de dados e 2 pinos para controle.
Trabalhando
Para fazer a interface de um LCD com o ARDUINO UNO, precisamos saber algumas coisas.
|
Em primeiro lugar, os canais UNO ADC têm um valor de referência padrão de 5V. Isso significa que podemos fornecer uma tensão de entrada máxima de 5 V para conversão ADC em qualquer canal de entrada. Como alguns sensores fornecem tensões de 0-2,5 V, com uma referência de 5 V obtemos menos precisão, portanto, temos uma instrução que nos permite alterar esse valor de referência. Portanto, para alterar o valor de referência, temos (“analogReference ();”)
Como padrão, obtemos a resolução máxima do ADC da placa que é 10bits, esta resolução pode ser alterada usando a instrução (“analogReadResolution (bits);”). Essa mudança de resolução pode ser útil em alguns casos.
Agora, se as condições acima forem definidas como padrão, podemos ler o valor do ADC do canal '0' chamando diretamente a função "analogRead (pino);", aqui "pino" representa o pino onde conectamos o sinal analógico, neste caso, ser “A0”. O valor do ADC pode ser convertido em um número inteiro como “int ADCVALUE = analogRead (A0); ”, Por esta instrução o valor após ADC é armazenado no inteiro“ ADCVALUE ”.
AGORA vamos falar um pouco sobre o LCD 16x2. Primeiro, precisamos habilitar o arquivo de cabeçalho ('#include
Em segundo lugar, precisamos dizer à placa que tipo de LCD estamos usando aqui. Uma vez que temos tantos tipos diferentes de LCD (como 20x4, 16x2, 16x1 etc.). Aqui, faremos a interface de um LCD 16x2 com o UNO, então obteremos 'lcd.begin (16, 2);'. Para 16x1, obtemos 'lcd.begin (16, 1);'.
Nesta instrução vamos dizer à placa onde conectamos os pinos. Os pinos que estão conectados devem ser representados na ordem como “RS, En, D4, D5, D6, D7”. Esses pinos devem ser representados corretamente. Como conectamos RS ao PIN0 e assim por diante, conforme mostrado no diagrama de circuito, representamos o número do pino à placa como “LiquidCrystal LCD (0, 1, 8, 9, 10, 11);”.
Depois de acima tudo que resta é enviar dados, os dados que precisam ser exibidos no LCD devem ser escritos como “cd.print (" hello, world! ");”. Com este comando, o LCD exibe 'hello, world!'. Como você pode ver, não precisamos nos preocupar com mais nada, apenas temos que inicializar e o UNO estará pronto para exibir os dados. Não precisamos escrever um loop de programa para enviar os dados BYTE por BYTE aqui.
Uma vez que um ímã é aproximado do sensor, o sensor representa uma tensão na saída proporcional ao campo, este valor é obtido por Uno e mostrado no LCD. O funcionamento deste projeto de medição de campo magnético é explicado posteriormente através do código C abaixo.