Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Voltímetro DIY com Arduino e um visor Nokia 5110

Componentes e suprimentos

Arduino UNO
× 1
Sensor de tensão (genérico)
× 1
Visor LCD Nokia 5110
× 1
Breadboard (genérico)
× 1
Fios de jumpers (genérico)
× 1

Aplicativos e serviços online

Arduino IDE

Sobre este projeto




Neste tutorial, vou mostrar a você como construir um Voltímetro com um grande display LCD Nokia 5110 usando Arduino.

Construir um voltímetro é uma ótima experiência de aprendizado. Ao terminar de construir este projeto, você terá um melhor entendimento de como funcionam os voltímetros, atualizará seus conhecimentos sobre a lei de Ohms e verá em ação o quão poderosa pode ser a plataforma Arduino. Com este projeto como base e a experiência adquirida, você poderá construir facilmente projetos mais complexos no futuro.

Você pode usar este projeto para medir a tensão DC de vários circuitos eletrônicos ou monitorar o estado da bateria de seus projetos Arduino facilmente. Além disso, com o conhecimento adquirido, você pode construir facilmente seu próprio sensor de tensão para criar um voltímetro personalizado que atenda às suas necessidades.

Sem mais delongas, vamos começar!





Etapa 1:obtenha todas as peças


As peças necessárias para construir este projeto são estas:
  • Um Arduino Uno
  • Um sensor de tensão
  • Um display LCD Nokia 5110
  • Uma pequena placa de ensaio
  • Alguns fios

O custo do projeto é muito baixo. É cerca de 10 $.





Etapa 2:o módulo do sensor de tensão


Vamos ver como funciona esse módulo de sensor. Este sensor de tensão é muito simples e pode medir a tensão DC de 0-25V. Consiste em apenas dois resistores! Você pode construir o seu próprio facilmente, se desejar, ou pode comprar este sensor de módulo com menos de um dólar se quiser algo já construído. É assim que funciona. Este sensor é na verdade um divisor de tensão. Um circuito divisor de tensão é um circuito muito comum que pega uma tensão mais alta e a converte em uma mais baixa usando um par de resistores. A fórmula para calcular a tensão de saída é baseada na lei de Ohms. Por favor, verifique a imagem em anexo.

Neste módulo, o R1 é de 30.000 Ohms, o R2 é de 7500 Ohms. Se colocarmos 25 V na entrada e fizermos os cálculos, teremos 5 V na saída! E essa é a tensão máxima que um pino analógico do Arduino pode suportar. Portanto, se excedermos 25 V na entrada, iremos queimar o pino analógico do Arduino. Se colocarmos 0 V na entrada, teremos 0 V na saída. Portanto, se colocarmos qualquer tensão de 0-25 V na entrada, obteremos uma tensão de 0 a 5 V na saída.

O Arduino Uno tem um ADC de 10 bits, então a resolução que podemos alcançar usando este sensor é de 25mV. Se usarmos um Arduino Due, podemos obter uma resolução ainda melhor, pois ele tem ADCs de 12 bits. Mas, é claro, precisamos construir nosso próprio sensor de tensão, porque a placa do Arduino Due usa níveis lógicos de 3,3 V e qualquer tensão além disso destruirá seu pino analógico.





Etapa 3:Nokia 5110 LCD


O Nokia 5110 é meu monitor favorito para meus projetos Arduino.

O Nokia 5110 é uma tela LCD gráfica básica que foi originalmente projetada como uma tela de telefone celular. Ele usa o controlador PCD8544, que é um controlador / driver CMOS LCD de baixa potência. Por causa disso, esta tela tem um consumo de energia impressionante. Ele usa apenas 0,4 mA quando está ligado, mas a luz de fundo está desativada. Ele usa menos de 0,06 mA quando em modo de suspensão! Esse é um dos motivos que tornam este display o meu favorito.

O PCD8544 faz interface com microcontroladores por meio de uma interface de barramento serial. Isso torna a tela muito fácil de usar com o Arduino. Você só precisa conectar 8 fios e usar a seguinte biblioteca:http://www.rinkydinkelectronics.com/library.php?id=47

Esta biblioteca impressionante foi desenvolvida por Henning Karlsen, que se esforçou muito para ajudar a comunidade do Arduino a avançar com suas bibliotecas.

Preparei um tutorial detalhado sobre como usar o display LCD Nokia 5110 com o Arduino. Anexei esse vídeo neste tutorial, ele fornecerá muitas informações úteis sobre a tela, então eu o encorajo a assisti-lo com atenção.

Agora, vamos em frente!





Etapa 4:construir o voltímetro


Vamos agora conectar todas as partes juntas.

Primeiro, conectamos o sensor de tensão. Possui apenas 3 pinos. Destes, só precisamos conectar 2.

Conectando o Sensor de Tensão
  • - O pin vai para o GND do Arduino
  • + Pin permanece desconectado
  • S Pin vai para Analog Pin 0

A próxima etapa é conectar o display LCD do Nokia 5110.

Conectando o Nokia 5110 LCD Display
  • RST vai para o pino digital 12 do Arduino
  • CE vai para pino digital 11 do Arduino
  • DC vai para pino digital 10 do Arduino
  • DIN vai para pino digital 9 do Arduino
  • CLK vai para o pino digital 8 do Arduino
  • VCC vai para Arduino 3.3V
  • LIGHT vai para Arduino GND (luz de fundo ligada)
  • GND vai para Arduino GND

Agora que conectamos todas as partes, tudo o que precisamos fazer é carregar o código. Uma tela inicial é exibida por alguns segundos e então podemos começar a medir a tensão.





Etapa 5:O Código do Projeto


O código do projeto consiste em 2 arquivos.
  • ui.c
  • VoltMeter.ino

Código ui.c - Gráficos para nosso projeto

No primeiro arquivo ui.c, existem os valores binários de 2 ícones exibidos na tela LCD do Nokia 5110. Há o ícone splash e a interface do usuário para o voltímetro que aparece a seguir. Por favor, assista ao vídeo anexado que preparei para ver como carregar seus gráficos personalizados em seu projeto Arduino.

Código VoltMeter.ino - Programa Principal

O código principal do projeto é muito simples. Precisamos incluir a biblioteca do Nokia 5110. Em seguida, declaramos algumas variáveis. Inicializamos o display e exibimos a tela inicial por 3 segundos. Depois disso, imprimimos o ícone da interface do usuário uma vez e lemos o valor analógico do sensor a cada segundo.

Toda a mágica acontece na seguinte função:
  float readVoltage () {sensorValue =analogRead (sensorPin); vout =(sensorValue * 5.0) / 1024.0; vin =vout / (R2 / (R1 + R2)); return vin;}  

O método acima lê o valor do sensor e o converte para uma tensão de 0 a 25V. Se você usar seu sensor de tensão personalizado, terá que alterar as variáveis ​​R1 e R2 para refletir os valores do resistor de seu sensor.

Depois de ler o valor do sensor, o código converte o valor em uma String e o exibe na tela.

Anexei o código a este tutorial. Para baixar a última versão do código, você pode visitar a página do projeto:educ8s.tv/arduino-voltmeter-project/
F4FWJORIRXTXQG8.c FY005LHIRXTXQG9.ino





Etapa 6:Teste do projeto


Agora que o código está carregado, podemos testar o voltímetro com algumas baterias. Eu o testo com uma bateria AA recarregável, uma bateria 18650 e uma grande bateria de alarme de 12V.

Como você pode ver nas fotos em anexo, o Voltímetro funciona bem. Para efeito de comparação, também usei meu multímetro. As leituras do nosso voltímetro "feito à mão" são muito próximas às do multímetro profissional. Ótimo, não é?

Como você pode ver, este projeto é uma grande demonstração do que o hardware e software de código aberto são capazes. Em poucos minutos, pode-se construir um projeto tão impressionante! Este projeto é ideal para iniciantes e como disse no início, é um ótimo aprendizado.

Eu adoraria ouvir sua opinião sobre este projeto. Você acha isso útil? Existem melhorias que podem ser implementadas neste projeto? Por favor, poste seus comentários ou ideias na seção de comentários abaixo!

Código

  • Voltmeter.ino
  • ui.c
Voltmeter.ino C / C ++
 ////////////////////////////////////////////////// / / Projeto Voltímetro Arduino // // com NOKIA 5110 LCD //// http://www.educ8s.tv ///////////////////////////// //////////////////////// # include  // A BIBLIOTECA QUE ESTOU USANDO É ESTA:http://www.rinkydinkelectronics.com/library .php? id =47LCD5110 lcd (8,9,10,12,11); caracteres externos não assinados BigNumbers []; extern uint8_t ui []; extern uint8_t startScreen []; tensão flutuante =0,0; int sensorPin =A0; float sensorValue =0.0f; String voltageString ="0,0"; int stringLength =0; float vout =0,0; float vin =0,0; float R1 =30000,0; flutuante R2 =7500,0; void setup () {Serial.begin (9600); lcd.InitLCD (); lcd.drawBitmap (0, 0, tela inicial, 84, 48); lcd.update (); atraso (3000); lcd.setFont (BigNumbers); atraso (1000);} loop vazio () {lcd.clrScr (); lcd.drawBitmap (0, 0, ui, 84, 48); tensão =readVoltage (); Serial.println (voltagem); VoltagemString =String (voltagem, 1); stringLength =voltageString.length (); displayVoltage (stringLength); lcd.update (); atraso (1000);} float readVoltage () {sensorValue =analogRead (sensorPin); vout =(sensorValue * 5.0) / 1024.0; vin =vout / (R2 / (R1 + R2)); return vin;} void displayVoltage (int length) {switch (length) {case 3:lcd.print (voltageString, 14,19); pausa; caso 4:lcd.print (voltageString, 2,19); pausa; padrão:lcd.print (voltageString, 2,19); pausa; }} 
ui.c C / C ++
Dados da interface do usuário
 #include  const unsigned char ui [] PROGMEM ={0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x11, 0x31, 0xF1, 0xD1, 0x01, 0x01,0x81, 0xF1, 0x11, 0x11, 0xC1, 0xE1, 0x11, 0x11, 0x11, 0x31, 0xE1, 0xC1, 0x01, 0x01, 0x11, 0xF1,0xF1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x11, 0x11, 0xF1, 0xF1, 0x11, 0x11, 0x31, 0x01, 0x01, 0x01,0x01, 0x81, 0x61, 0x31, 0xF1, 0xC1, 0x01, 0x01, 0x01, 0xC1, 0xE1, 0x21, 0x11, 0x11, 0x11, 0x31,0x31, 0x01, 0x11, 0xF1, 0xF1, 0x91, 0x91, 0x91, 0x31, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,0x01, 0x01, 0x01, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,0xC0, 0xC3, 0xCF, 0xCC, 0xC3, 0xC0, 0xC0, 0xC0, 0xC3, 0xC7, 0xCC, 0xC8, 0xC8, 0xC8, 0xC7, 0xC8, 0xC8, 0xC7, 0xC8, 0xC8, 0xC7, 0xC3 0xC0, 0xC8, 0xCF, 0xCF, 0xC8, 0xC8, 0xC8, 0xCC, 0xC0, 0xC0, 0xC8, 0xCF, 0xCF, 0xC8, 0xC0,0xC0, 0xC0, 0xC0, 0xC8, 0xC1, 0xCB, 0xC1, 0xC1, 0xCB, 0xC1, 0xC1, 0xC, 0xC1, 0xC1, 0xC 0xCE, 0xC8, 0xC0, 0xC3, 0xC7, 0xCC, 0xC8, 0xC8, 0xC9, 0xCF, 0xC7, 0xC1, 0xC8, 0xCF, 0xCF, 0xC8, 0xC8, 0xC8, 0xCC, 0xC0, 0xC0, 0xC0,0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x20, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x20, 0x60, 0xE0, 0xE0, 0xE0, 0x60, 0x20, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1F, 0x7F, 0xFF, 0xFF, 0xF8, 0xE0,0x00, 0x00, 0x0 0, 0x00, 0xC0, 0xF0, 0xFE, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x01, 0x0F, 0x3F, 0xFF, 0xFF, 0xFC, 0xF0, 0xFE, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x83, 0x83, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80,0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF,}; const unsigned char startScreen [] PROGMEM ={0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x7C, 0x1C, 0x04, 0x00, 0x00, 0x20, 0xE0, 0xE0, 0x20, 0x00, 0x00, 0x20, 0xE0, 0x20, 0x80, 0xC0 , 0x60, 0x20, 0x20, 0x20, 0x60, 0xC0, 0x80, 0x20, 0xE0, 0xE0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0xE0, 0x60, 0x20, 0xE0, 0xE0, 0x20, 0x60, 0xE0, 0x00 , 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0x00, 0x00,0x00, 0x80, 0xC0, 0x60, 0x20, 0x20, 0x20, 0x60, 0xE0, 0x00, 0x20, 0xE0, 0xE0, 0x20, 0x20, 0x20,0x60, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x07, 0x3F, 0x38, 0x38, 0x07,0x00, 0x00, 0x0F, 0x1F, 0x30, 0x20, 0x20, 0x20, 0x30, 0x30, 0x1F, 0x0F, 0x20, 0x3F, 0x3F, 0x20, 0x20,0x30, 0x38, 0x00, 0x00 , 0x00, 0x00, 0x20, 0x3F, 0x3F, 0x20, 0x00, 0x00, 0x20, 0x38, 0x27, 0x04,0x04, 0x27, 0x3F, 0x 3C, 0x20, 0x0F, 0x1F, 0x30, 0x20, 0x20, 0x24, 0x3C, 0x3C, 0x04, 0x20, 0x3F, 0x3F, 0x22, 0x22, 0x22, 0x20, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xFE, 0xFF, 0xFF, 0x3F, 0x0F, 0x83, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0x38,0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xF8, 0x18, 0xF8, 0xE0, 0x00, 0xE0, 0x18, 0xF8, 0xF8, 0x08,0x08, 0xF8, 0xF8, 0x88, 0x88, 0x88, 0x18, 0x00, 0x00, 0x38, 0x18, 0x08, 0xF8, 0xF8, 0x08, 0x18,0x38, 0x08, 0xF8, 0xF8, 0x88, 0x88, 0x88, 0x18, 0x00, 0x00, 0x08, 0xF8, 0xF8, 0x88, 0x88, 0x88,0xF8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x7C, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F, 0x1E, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x07, 0xC3, 0xFF, 0xFF, 0xFF, 0x7F, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0F, 0x08, 0x00, 0x07, 0x07, 0x00,0x08, 0x0F, 0x0F, 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x08,0x0F, 0x0F, 0x08, 0x00, 0x00, 0x08, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08 , 0x0E, 0x00, 0x08, 0x0F, 0x0F, 0x08, 0x01, 0x03, 0x06, 0x0C, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x80, 0xE0, 0xFE, 0x7F, 0x9F, 0x87, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x7F, 0x7F, 0x3F, 0x1F, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0 x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}; 

Processo de manufatura

  1. Monitor de Ambiente DIY e Qualidade do Ar
  2. Jogo Arduino Pong - Tela OLED
  3. DIY Simple 20 kHz Arduino Oscilloscope no Nokia 5110 LCD
  4. Faça você mesmo voltímetro usando Arduino e Smartphone
  5. Arduino Temp. Monitor e relógio em tempo real com tela 3.2
  6. Brincando com Nextion Display
  7. Voltímetro DIY com Arduino e um visor Nokia 5110
  8. Crie o aplicativo Fridgeye com uma tela Nextion
  9. Como fazer música com um Arduino
  10. Tela de localização GPS com GPS e telas TFT