Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Voltímetro de bricolaje con Arduino y una pantalla Nokia 5110

Componentes y suministros

Arduino UNO
× 1
Sensor de voltaje (genérico)
× 1
Pantalla LCD Nokia 5110
× 1
Breadboard (genérico)
× 1
Cables de puente (genéricos)
× 1

Aplicaciones y servicios en línea

Arduino IDE

Acerca de este proyecto

En este tutorial, le mostraré cómo construir un voltímetro con una gran pantalla LCD Nokia 5110 usando Arduino.

Construir un voltímetro es una gran experiencia de aprendizaje. Cuando termine de construir este proyecto, comprenderá mejor cómo funcionan los voltímetros, actualizará su conocimiento de la ley de Ohm y verá en acción lo poderosa que puede ser la plataforma Arduino. Con este proyecto como base y la experiencia adquirida, podrá construir fácilmente proyectos más complejos en el futuro.

Puede usar este proyecto para medir el voltaje de CC de varios circuitos electrónicos o monitorear el estado de la batería de sus proyectos Arduino fácilmente. Además, con el conocimiento adquirido, puede construir fácilmente su propio sensor de voltaje para crear un voltímetro personalizado que se adapte a sus necesidades.

Sin más demora, ¡comencemos!

Paso 1:obtenga todas las piezas

Las piezas necesarias para construir este proyecto son las siguientes:

  • Un Arduino Uno
  • Un sensor de voltaje
  • Una pantalla LCD Nokia 5110
  • Una pequeña placa de pruebas
  • Algunos cables

El costo del proyecto es muy bajo. Cuesta unos 10 $.

Paso 2:el módulo del sensor de voltaje

Veamos cómo funciona este módulo sensor. Este sensor de voltaje es muy simple y puede medir voltaje DC de 0-25V. ¡Consta de solo dos resistencias! Puedes construir el tuyo propio fácilmente si lo deseas, o puedes comprar este sensor de módulo con menos de un dólar si quieres algo ya construido. Así es como funciona. Este sensor es en realidad un divisor de voltaje. Un circuito divisor de voltaje es un circuito muy común que toma un voltaje más alto y lo convierte en uno más bajo usando un par de resistencias. La fórmula para calcular el voltaje de salida se basa en la ley de Ohm. Por favor revise la imagen adjunta.

En este módulo, el R1 es de 30.000 ohmios, el R2 es de 7500 ohmios. Si ponemos 25V en la entrada y hacemos los cálculos, ¡obtenemos 5V en la salida! Y ese es el voltaje máximo que puede manejar un pin analógico de Arduino. Entonces, si superamos los 25V en la entrada, quemaremos el pin Analógico de Arduino. Si ponemos 0 voltios en la entrada, obtenemos 0 V en la salida. Entonces, si ponemos un voltaje de 0-25 V en la entrada, obtendremos un voltaje de 0-5 V en la salida.

El Arduino Uno tiene un ADC de 10 bits por lo que la resolución que podemos lograr usando este sensor es de 25mV. Si usamos un Arduino Due, podemos lograr una resolución aún mejor ya que tiene ADC de 12 bits. Pero, por supuesto, necesitamos construir nuestro propio sensor de voltaje, porque la placa Arduino Due usa niveles lógicos de 3.3V, y cualquier voltaje más allá de eso destruirá su pin analógico.

Paso 3:Nokia 5110 LCD

El Nokia 5110 es mi pantalla favorita para mis proyectos Arduino.

El Nokia 5110 es una pantalla LCD gráfica básica que originalmente fue diseñada como pantalla de teléfono celular. Utiliza el controlador PCD8544, que es un controlador / controlador CMOS LCD de baja potencia. Debido a esto, esta pantalla tiene un consumo de energía impresionante. Utiliza solo 0,4 mA cuando está encendido, pero la luz de fondo está desactivada. ¡Utiliza menos de 0.06mA cuando está en modo de suspensión! Esa es una de las razones por las que esta pantalla es mi favorita.

El PCD8544 se conecta a los microcontroladores a través de una interfaz de bus serie. Eso hace que la pantalla sea muy fácil de usar con Arduino. Solo necesita conectar 8 cables y usar la siguiente biblioteca:http://www.rinkydinkelectronics.com/library.php?id=47

Esta impresionante biblioteca fue desarrollada por Henning Karlsen, quien ha realizado un gran esfuerzo para ayudar a la comunidad de Arduino a avanzar con sus bibliotecas.

He preparado un tutorial detallado sobre cómo usar la pantalla LCD del Nokia 5110 con Arduino. He adjuntado ese video en este tutorial, proporcionará información útil sobre la pantalla, por lo que le animo a que lo vea con atención.

¡Ahora, sigamos adelante!

Paso 4:construcción del voltímetro

Conectemos ahora todas las partes.

Primero conectamos el sensor de voltaje. Solo tiene 3 pines. De esos, solo tenemos que conectar 2.

Conexión del sensor de voltaje

  • - El pin va al GND de Arduino
  • + Pin permanece desconectado
  • El Pin S va al Pin analógico 0

El siguiente paso es conectar la pantalla LCD del Nokia 5110.

Conexión de la pantalla LCD Nokia 5110

  • RST va al pin digital 12 de Arduino
  • CE va al Pin digital 11 de Arduino
  • DC va al Pin digital 10 del Arduino
  • DIN va al Pin digital 9 del Arduino
  • CLK va al Pin digital 8 de Arduino
  • VCC va a Arduino 3.3V
  • LIGHT va a Arduino GND (luz de fondo encendida)
  • GND va a Arduino GND

Ahora que hemos conectado todas las partes, todo lo que tenemos que hacer es cargar el código. Se muestra una pantalla de bienvenida durante un par de segundos y luego podemos comenzar a medir el voltaje.

Paso 5:el código del proyecto

El código del proyecto consta de 2 archivos.

  • ui.c
  • VoltMeter.ino

Código ui.c - Graphichs para nuestro proyecto

En el primer archivo ui.c, se encuentran los valores binarios de 2 iconos que se muestran en la pantalla LCD del Nokia 5110. Está el icono de bienvenida y la interfaz de usuario para el voltímetro que aparece después. Mire el video adjunto que he preparado para ver cómo cargar sus gráficos personalizados en su proyecto Arduino.

Código VoltMeter.ino - Programa principal

El código principal del proyecto es muy simple. Necesitamos incluir la biblioteca Nokia 5110. A continuación declaramos algunas variables. Inicializamos la pantalla y mostramos la pantalla de bienvenida durante 3 segundos. Después de eso, imprimimos el icono de la interfaz de usuario una vez y leemos el valor analógico del sensor cada segundo.

Toda la magia ocurre en la siguiente función:

  float readVoltage () {sensorValue =analogRead (sensorPin); vout =(sensorValue * 5.0) / 1024.0; vin =vout / (R2 / (R1 + R2)); return vin;}  

Este método anterior lee el valor del sensor y lo convierte a un voltaje de 0 a 25V. Si usa su sensor de voltaje personalizado, debe cambiar las variables R1 y R2 para reflejar los valores de resistencia de su sensor.

Después de leer el valor del sensor, el código convierte el valor en una cadena y lo muestra en la pantalla.

He adjuntado el código a este tutorial. Para descargar la última versión del código, puede visitar la página web del proyecto:educ8s.tv/arduino-voltmeter-project/

F4FWJORIRXTXQG8.c FY005LHIRXTXQG9.ino

Paso 6:prueba del proyecto

Ahora que el código está cargado, podemos probar el voltímetro con algunas baterías. Lo pruebo con una batería AA recargable, una batería 18650 y una batería de alarma grande de 12V.

Como puede ver en las fotos adjuntas, el voltímetro funciona bien. A modo de comparación, también he usado mi multímetro. Las lecturas de nuestro voltímetro "hecho a mano" están muy cerca de las de los multímetros profesionales. Genial, ¿no?

Como puede ver, este proyecto es una gran demostración de lo que es capaz de hacer el hardware y software de código abierto. ¡En pocos minutos se puede construir un proyecto tan impresionante! Este proyecto es ideal para principiantes y como dije al principio, este proyecto es una gran experiencia de aprendizaje.

Me encantaría conocer tu opinión sobre este proyecto. Lo encontraste util? ¿Hay alguna mejora que se pueda implementar en este proyecto? ¡Publique sus comentarios o ideas en la sección de comentarios a continuación!

Código

  • Voltímetro.ino
  • ui.c
Voltímetro.ino C / C ++
 ////////////////////////////////////////////////// / Proyecto de voltímetro Arduino // // con LCD NOKIA 5110 //// http://www.educ8s.tv /////////////////////////// //////////////////////// # include  // LA BIBLIOTECA QUE ESTOY UTILIZANDO ES ESTA:http://www.rinkydinkelectronics.com/library .php? id =47LCD5110 lcd (8,9,10,12,11); números grandes de caracteres sin firmar extern []; uint8_t ui extern []; pantalla de inicio uint8_t extern []; voltaje de flotación =0.0; int sensorPin =A0; flotador sensorValue =0.0f; String voltageString ="0.0"; int stringLength =0; float vout =0.0; float vin =0.0; float R1 =30000.0; flotar R2 =7500.0; configuración vacía () {Serial.begin (9600); lcd.InitLCD (); lcd.drawBitmap (0, 0, pantalla de inicio, 84, 48); lcd.update (); retraso (3000); lcd.setFont (BigNumbers); retardo (1000);} bucle vacío () {lcd.clrScr (); lcd.drawBitmap (0, 0, ui, 84, 48); voltaje =readVoltage (); Serial.println (voltaje); voltageString =String (voltaje, 1); stringLength =voltageString.length (); displayVoltage (stringLength); lcd.update (); delay (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); descanso; caso 4:lcd.print (voltageString, 2,19); descanso; predeterminado:lcd.print (voltageString, 2,19); descanso; }} 
ui.c C / C ++
Datos de la interfaz de usuario
 #include  const unsigned char ui [] PROGMEM ={0xFF, 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, 0x31, 0x01, 0x01, 0x11, 0x11, 0xF1, 0xF1, 0x11, 0x11, 0x31, 0x01, 0x01, 0x01,0x01, 0x81, 0x61, 0x31, 0xF1, 0xC1, 0x01, 0x01, 0x01, 0xC1, 0xE1, 0x21, 0x11, 0x11, 0x31,0x31, 0x01, 0x11, 0xF1, 0xF1, 0x91, 0x91, 0x91, 0x31, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,0x01, 0x01, 0x01, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,0xC0, 0xC3, 0xCF, 0xCC, 0xC3, 0xC0, 0xC0, 0xC0, 0xC3, 0xC7, 0xCC, 0xC0xC8, 0xC7, 0xCC, 0xC0xC8, 0xC 0xC0, 0xC8, 0xCF, 0xCF, 0xC8, 0xC8, 0xC8, 0xCC, 0xC0, 0xC0, 0xC8, 0xCF, 0xCF, 0xC8, 0xC0,0xC0, 0xC0, 0xC0, 0xC8, 0xCxC, 0xC0, 0xC8, 0xCxC, 0xC8, 0xCxC, 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, 0x20, 0x60, 0xE 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, 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, 0x 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, 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, 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, 0x20, 0xE0, 0xE0, 0x20, 0x00, 0x00, 0x20, 0x20, 0xE0, 0 , 0x60, 0x20, 0x20, 0x20, 0x60, 0xC0, 0x80, 0x20, 0xE0, 0xE0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,0xE0, 0x60, 0x20, 0xE0, 0xE0, 0x00x0x60 , 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0x00, 0x00,0x00, 0x80, 0xC0, 0x60, 0x20, 0x20, 0x20, 0x60, 0xE0, 0x00, 0x20, 0xE0, 0xE0, 0x20, 0x20,0x20, 0x20 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFE, 0xFF, 0xFF, 0xFF, 0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x07, 0x3F, 0x38, 0x38, 0x07,0x00, 0x00, 0x0F, 0x1F, 0x30, 0x20, 0x20, 0x20, 0x30, 0x1F, 0x0F, 0x20, 0x3F, 0x3F, 0x20, 0x20, 0x30, 0x20, 0x20,0x30, , 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 0xE0, 0xF8, 0xFE, 0xFF, 0xFF, 0x3F, 0x0F, 0x83, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0x00, 0x00, 0x00 0x08, 0xF8, 0x18, 0xF8, 0xE0, 0x00, 0xE0, 0x18, 0xF8, 0xF8, 0x08,0x08, 0xF8, 0xF8, 0x88, 0x88, 0x88, 0x18, 0x00, 0x00, 0xF8, 0x18 0x08, 0x18,0x38, 0x08, 0xF8, 0xF8, 0x88, 0x88, 0x88, 0x18, 0x00, 0x00, 0x08, 0xF8, 0xF8, 0x88, 0x88, 0x88,0xF8, 0x70, 0x00, 0x00, 0x00, 0x08 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x7C, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F, 0x1E, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x07x, 0xCFF, 0x07, 0x07x, 0xCFF, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0F, 0x08, 0x00, 0x07, 0x07, 0x00,0x08, 0x0F, 0x0F, 0x08, 0x0F, 0x08, 0x0F, 0x08, 0x0F, 0x08, 0x0F 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, 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, 0x03, 0x7F, 0x7F, 0x3F, 0x1F, 0x0F, 0x03, 0x01, 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, 0 x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}; 

Proceso de manufactura

  1. Monitor de calidad del aire y medio ambiente de bricolaje
  2. Juego Arduino Pong - Pantalla OLED
  3. DIY Osciloscopio Arduino simple de 20 kHz en Nokia 5110 LCD
  4. Voltímetro de bricolaje con Arduino y un teléfono inteligente
  5. Arduino Temp. Monitor y reloj en tiempo real con pantalla 3.2
  6. Jugando con Nextion Display
  7. Voltímetro de bricolaje con Arduino y una pantalla Nokia 5110
  8. Cree la aplicación Fridgeye con una pantalla Nextion
  9. Cómo hacer música con un Arduino
  10. Pantalla de ubicación GPS con protectores de pantalla GPS y TFT
  11. Multiplexor de cargador de batería inteligente con pantalla inteligente