亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

DIY 电压表与 Arduino 和诺基亚 5110 显示器

组件和用品

Arduino UNO
× 1
电压传感器(通用)
× 1
诺基亚 5110 LCD 显示屏
× 1
面包板(通用)
× 1
跳线(通用)
× 1

应用和在线服务

Arduino IDE

关于这个项目

在本教程中,我将向您展示如何构建电压表 使用 Arduino 的大型诺基亚 5110 LCD 显示屏。

制作电压表是一次很棒的学习经历。完成此项目的构建后,您将对电压表的工作原理有更好的了解,您将更新欧姆定律的知识,并且您将在实际操作中看到 Arduino 平台的强大功能。以本项目为基础,积累经验,以后可以轻松构建更复杂的项目。

您可以使用该项目来测量来自各种电子电路的直流电压或轻松监控 Arduino 项目的电池状态。此外,利用所获得的知识,您可以轻松构建自己的电压传感器,以创建满足您需求的自定义电压表。

事不宜迟,让我们开始吧!

第 1 步:获取所有零件

构建这个项目所需的部分是:

  • 一个 Arduino Uno
  • 电压传感器
  • 诺基亚 5110 液晶显示屏
  • 一个小面包板
  • 一些电线

该项目的成本非常低。大约是 10 美元。

第 2 步:电压传感器模块

让我们看看这个传感器模块是如何工作的。这种电压传感器非常简单,它可以测量 0-25V 的直流电压。它仅由两个电阻器组成! 如果您愿意,您可以轻松构建自己的传感器,或者如果您想要已经构建的东西,您可以花不到一美元的价格购买这个模块传感器。这就是它的工作原理。这个传感器实际上是一个分压器。分压器电路是一种非常常见的电路,它采用一对电阻器将较高的电压转换为较低的电压。计算输出电压的公式基于欧姆定律。请检查附件图片。

在这个模块中,R1 是 30.000 欧姆,R2 是 7500 欧姆。如果我们在输入端放置 25V 并进行计算,我们会在输出端得到 5V!这是 Arduino 的模拟引脚可以处理的最大电压。因此,如果我们在输入端超过 25V,我们将烧毁 Arduino 的模拟引脚。如果我们在输入端输入 0 伏电压,我们在输出端会得到 0V 电压。因此,如果我们在输入端放置 0-25V 的任何电压,我们将在输出端获得 0-5V 的电压。

Arduino Uno 有一个 10 位 ADC,因此我们可以使用该传感器实现的分辨率为 25mV。如果我们使用 Arduino Due,我们可以获得更好的分辨率,因为它具有 12 位 ADC。但是,当然,我们需要构建我们自己的电压传感器,因为 Arduino Due 板使用 3.3V 逻辑电平,任何超过该电压的电压都会破坏其模拟引脚。

第 3 步:诺基亚 5110 LCD

诺基亚 5110 是我最喜欢的 Arduino 项目显示器。

诺基亚 5110 是一款基本的图形 LCD 屏幕,最初用作手机屏幕。它使用 PCD8544 控制器,它是一种低功耗 CMOS LCD 控制器/驱动器。因此,该显示器具有令人印象深刻的功耗。它在开启时仅使用 0.4mA,但背光被禁用。它在睡眠模式下使用小于 0.06mA!这也是我最喜欢这款显示器的原因之一。

PCD8544 通过串行总线接口连接到微控制器。这使得显示器非常易于与 Arduino 一起使用。您只需要连接 8 根线并使用以下库:http://www.rinkydinkelectronics.com/library.php?id=47

这个令人印象深刻的库是由 Henning Karlsen 开发的,他付出了巨大的努力来帮助 Arduino 社区推进他的库。

我准备了一个详细的教程,介绍如何在 Arduino 上使用诺基亚 5110 液晶显示器。我在本教程中附上了该视频,它将提供有关显示的可能有用的信息,因此我鼓励您仔细观看。

现在,让我们继续前进!

第 4 步:构建电压表

现在让我们将所有部分连接在一起。

首先我们连接电压传感器。它只有 3 个引脚。其中,我们只需要连接 2 个。

连接电压传感器

  • - 引脚连接到 Arduino 的 GND
  • + Pin 保持未连接状态
  • S 引脚转到模拟引脚 0

下一步是连接诺基亚5110液晶显示器。

连接诺基亚 5110 液晶显示器

  • RST 转到 Arduino 的数字引脚 12
  • CE 转到 Arduino 的数字引脚 11
  • DC 连接到 Arduino 的数字引脚 10
  • DIN 转到 Arduino 的数字引脚 9
  • CLK 连接到 Arduino 的数字引脚 8
  • VCC 转至 Arduino 3.3V
  • LIGHT 连接到 Arduino GND(背光打开)
  • GND 到 Arduino GND

现在我们已经将所有部分连接在一起,我们所要做的就是加载代码。启动画面会显示几秒钟,然后我们就可以开始测量电压了。

第五步:项目代码

该项目的代码由 2 个文件组成。

  • ui.c
  • VoltMeter.ino

ui.c 代码 - 我们项目的图形

在第一个文件 ui.c 中,有诺基亚 5110 LCD 显示屏上显示的 2 个图标的二进制值。之后出现电压表的启动图标和用户界面。请观看我准备的附加视频,以了解如何将您的自定义图形加载到您的 Arduino 项目中。

VoltMeter.ino 代码 - 主程序

项目的主要代码非常简单。我们需要包含诺基亚 5110 库。接下来我们声明一些变量。我们初始化显示并显示启动画面 3 秒钟。之后,我们打印一次ui图标,每秒从传感器读取模拟值。

所有的魔法都发生在以下函数中:

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

上述方法从传感器读取值并将其转换为 0 到 25V 的电压。如果您使用定制的电压传感器,则必须更改 R1 和 R2 变量以反映传感器的电阻值。

从传感器读取值后,代码将值转换为字符串并显示在屏幕上。

我已将代码附加到本教程中。为了下载最新版本的代码,您可以访问该项目的网页:educ8s.tv/arduino-voltmeter-project/

F4FWJORIRXTXQG8.c FY005LHIRXTXQG9.ino

第 6 步:测试项目

现在代码已加载,我们可以用一些电池测试电压表。我用可充电的 AA 电池、18650 电池和 12V 报警大电池对其进行了测试。

正如您在附加照片中看到的那样,电压表工作正常。为了比较,我还使用了我的万用表。我们“手工制作的”电压表的读数与专业万用表的读数非常接近。很棒不是吗?

如您所见,该项目很好地展示了开源硬件和软件的功能。几分钟之内,您就可以构建出如此令人印象深刻的项目!这个项目非常适合初学者,正如我在开始时所说的,这个项目是一次很棒的学习体验。

我很想听听你对这个项目的看法。你觉得有用吗?这个项目有什么可以实施的改进吗?请在下面的评论部分发表您的意见或想法!

代码

  • Voltmeter.ino
  • ui.c
Voltmeter.inoC/C++
 ////////////////////////////////////////////// / Arduino 电压表项目 // // 使用诺基亚 5110 LCD //// http://www.edu8s.tv /////////////////////// ////////////////////#include  // 我正在使用的库是这样的:http://www.rinkydinkelectronics.com/library .php?id=47LCD5110 lcd(8,9,10,12,11);extern unsigned char BigNumbers[];extern uint8_t ui[];extern uint8_t startScreen[];浮动电压 =0.0;int sensorPin =A0;浮动传感器值 =0.0f;字符串电压字符串="0.0";int stringLength =0;float vout =0.0;float vin =0.0;float R1 =30000.0;浮动 R2 =7500.0;无效设置(){ Serial.begin(9600); lcd.InitLCD(); lcd.drawBitmap(0, 0, startScreen, 84, 48);液晶显示器更新();延迟(3000); lcd.setFont(BigNumbers);延迟(1000);}无效循环(){lcd.clrScr(); lcd.drawBitmap(0, 0, ui, 84, 48);电压 =readVoltage(); Serial.println(电压);电压字符串 =字符串(电压,1); stringLength =voltageString.length();显示电压(字符串长度);液晶显示器更新(); 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);休息;案例4:lcd.print(电压字符串,2,19);休息;默认值:lcd.print(电压字符串,2,19);休息; }}
ui.cC/C++
用户界面数据
#include const unsigned char ui []PROGMEM ={0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x31,F, 0xD1, 0x01, 0x01,0x81, 0xF1, 0x11, 0x11, 0xC1, 0xE1, 0x11, 0x11, 0x11, 0x31, 0xE1, 0xC1, 0x01,1,1,0x,1,0x,1,0x,1,0x,1,0x,1,0xF, 0x,1,0xF 0×11,0×11,的0xf1,的0xf1,0×11,0×11,0X31,0×01 0×01,0x01,0x01,0x81表示,0x61,0X31,的0xf1,0xC1,0×01 0×01 0×01,0xC1,0xE1,0×21,0×11,0×11,0×11, 0x31,0x31, 0x01, 0x11, 0xF1, 0xF1, 0x91, 0x91, 0x91, 0x31, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,0xC,0x1,0xC,0x1,0x1,0xC,0x1,0x1,0x1,0x0xC 0xC0、0xC0、0xC0、0xC0、0xC0、0xC0、0xC0、0xC0、0xC0、0xC3、0xCF、0xCC、0xC3、0xC0、0xC0、0xC0、0xC、0xC、0xC、0xC、0xC、0xC、0xC、0xC、0xC、0xC、0xC、0xC、0xC、0xC、0xC、0xC、0xC 0xC0、0xC8、0xCF、0xCF、0xC8、0xC8、0xC8、0xCC、0xC0、0xC0、0xC8、0xCF、0xCF、0xC8、0xC0、0xC0、0xC0、1xC、0xC、0xC、0xC、0xC、0xC、0xC、0xC、0xC、0xC、0 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, 0x,0,0,0x,0,00x,0,00000x,0x,0,0000为0x00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0×00,0x00,0x00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0×00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x,0,0x,0,0x,0,0,0x,0,0x,0,0x,0,0 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x20, 0x60, 0xE0, 0xE0,0x,0x,0x,0,0x,0,0x,0,0x,0,0x,0,0x,0,0x, 0, 0x, 0 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0,0 0x,0,0 0x,0,0 0x,0,0 0x,0,0 0为0x00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0×00,0x00,0x00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0×00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1F, 0x7F, 0xFF, 0xFF, 0xF8, 0xE0,0x00x00 0, 0x00, 0xC0, 0xF0, 0xFE, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,0xFF, 0x00, 0x00,0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0,0x,0,0,0x,0,0,0x,0,0x,0,0x,0,0为0x00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00,0x00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00, 0x00, 0x00, 0x00,0x01, 0x0F, 0x3F, 0xFF, 0xFF, 0xFC, 0xF0, 0xFE, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x,0,0FF,0x,0FF,0x,0,0FF,0x,0,0FF,0x,0FF,0,0,0 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,0,0x,08,0,0x,08,0 0x,08,0 0x,0x80,0x80,0x80 0x80、0x80、0x80、0x80、0x80、0x80、0x80、0x80、0x80、0x80、0x80、0x80、0x80、0x80、0x80、0x83、0x83、0x80 0x80, 0x80, 0x80, 0x80, 0x80,0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, };const unsigned char startScreen []PROGMEM ={0x,000,0x80,0x80,0x80,0x80,0x80 , 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0xFC, 0xFC, 0xFC,0xFC, 0x7C, 0x1C, 0x04, 0x00, 0x20, 0xE0, 0x,0,0x,0,0,0x,0,0,0x,0,0,0x,0,0,0x,0,0x,0 ,0x60的,为0x20,0x20的,为0x20,0x60的,将0xC0,0x80的,0×20,取0xE0,取0xE0 0x20用于为0x00,0x00时,0×00,0×00,0x00,0xE0,0x60的,0×20,取0xE0,取0xE0 0x20用于0x60的,取0xE0,为0x00 ,为0x00,0x00时,取0xE0,取0xE0,取0xE0,0x00时,0x00,0x00,0x80的,将0xC0,0x60的,为0x20,0x20的,为0x20,0x60的,取0xE0,0x00时,0×20,取0xE0,取0xE0 0x20用于为0x20,0x20,0x60,为0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFE, 0xFF, 0xFF,0xFF, 0x3F, 0x,00x,00x,000x,000x,0000x,0000x,0003 ,0×07,0x3F的,0x38,0x38,0x07,0x00,0x00时,为0x0F,0x1F的,的0x30,0x20的,为0x20,0x20的,的0x30,0x1F的,为0x0F,为0x20,0x3F的,0x3F的,为0x20,0x20,0x30,0x38,0x00时,0×00 , 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, 0x,0x,0x,00x,0x,00x,00x,00x,00x0,0x0,0x0,0x2 0xE0, 0xF8, 0xFE, 0xFF,0xFF, 0x3F, 0x0F, 0x83, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0x,0,0x,00x,00x,00x,00x,00x,00x,00x,00x,0 0x08时,0xF8的,为0x18,0xF8的,取0xE0,0x00时,取0xE0,为0x18,0xF8的,0xF8的,0x08,0x08,0xF8的,0xF8的,均为0x88,均为0x88,均为0x88,为0x18,0x00时,0×00,0x38,为0x18,0x08时,0xF8的,0xF8的, 0x08, 0x18,0x38, 0x08, 0xF8, 0xF8, 0x88, 0x88, 0x88, 0x18, 0x00, 0x00, 0x08, 0xF8, 0xF8, 0x88,0x8,0x8,0x8,0x8,0x8,0x8, 00x8,0x88,0x88,0x88 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x7C, 0x3F,0x3F, 0x3F, 0x1F, 0x1F, 0x1E, 0x0F, 0x0F, 0xF,0x7, 0xC, 0x7, 0xF, 0x7, 0xF, 0x7, 0x7 0x1F的,0×03,0x00时,0×00,0x00时,0×00,0x00时,0×00,0×00,0x08时,为0x0F,0x08时,0×00,0×07,0×07,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时,0×01,×03,0×06,0x0C,0x08时,0x08时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00,0x00,0x00时,0×00,0x00时,0×00 ,为0x00,0x00时,0×00,0x00时,0×00,将0xC0,将0xC0,0x80的,取0xE0,0xFE的,0x7F的,0x9F,87H的,0×81,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0×00 ,0x00时,0x00,0x00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00,0x00,0x00时,0×00,0x00时,0×00,0x00时,0×00 ,为0x00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0×00,0x00,0x00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0×00 ,为0x00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0×00,×03,0x7F的,0x7F的,0x3F的,0x1F的,为0x0F,0×03 0×01,0x00时,0×00,0×00 ,为0x00,0x00时,0×00,0x00时,0×00,0×00,0x00,0x00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,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, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 

制造工艺

  1. DIY 环境和空气质量监测器
  2. Arduino Pong Game - OLED 显示器
  3. 诺基亚 5110 LCD 上的 DIY 简单 20 kHz Arduino 示波器
  4. 使用 Arduino 和智能手机的 DIY 电压表
  5. Arduino 温度。使用 3.2 显示的监视器和实时时钟
  6. 玩 Nextion Display
  7. DIY 电压表与 Arduino 和诺基亚 5110 显示器
  8. 使用 Nextion Display 构建 Fridgeye 应用程序
  9. 如何用 Arduino 制作音乐
  10. 带 GPS 和 TFT 显示屏蔽的 GPS 位置显示
  11. 带智能显示屏的智能电池充电器多路复用器
  12. Arduboy Clone 与 Arduino Nano 和 I2C OLED 显示器