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

Arduino DIY 电压表:Nokia 5110 屏幕显示,手把手教学

元器件清单

元器件数量备注
Arduino UNO1主控板
电压传感器模块 (0-25V)1分压电路,可自制
Nokia 5110 LCD 显示屏1PCD8544 控制器,84×48 像素
面包板1
杜邦线若干1

项目成本约 10 美元,极具性价比。

所需软件

项目简介

本教程详细讲解如何利用 Arduino UNO 和 Nokia 5110 LCD 制作一款直流电压表,测量范围 0-25V。通过这个项目,你将深入理解电压表原理、欧姆定律应用、分压电路设计,以及 Arduino 模拟量读取与图形显示技术。完成后可用于电池监测、电路调试等场景。

步骤 1:了解电压传感器模块

该模块本质是一个分压电路,仅包含两个电阻:

根据分压公式:Vout = Vin × R2 / (R1 + R2)

输入 25V 时,输出恰好为 5V(Arduino 模拟引脚最大耐压)。输入 0-25V 对应输出 0-5V,Arduino 10 位 ADC 分辨率约 25mV。警告:输入电压严禁超过 25V,否则烧毁 Arduino 模拟引脚!

如需更高精度,可使用 Arduino Due (12 位 ADC) 并自制 3.3V 逻辑电平的分压电路。

步骤 2:Nokia 5110 LCD 简介

步骤 3:硬件接线

电压传感器 (仅用 3 脚中的 2 脚)

传感器引脚Arduino 引脚
- (GND)GND
+ (VCC)悬空不接
S (信号)A0

Nokia 5110 LCD (8 根线)

LCD 引脚Arduino 引脚
RST12
CE11
DC10
DIN9
CLK8
VCC3.3V
LIGHTGND (接地开启背光)
GNDGND

步骤 4:核心代码逻辑

主程序包含两个文件:VoltMeter.ino (主逻辑) 和 ui.c (界面图形数据)。

电压读取核心函数

float readVoltage() {
  sensorValue = analogRead(sensorPin);           // 读取 ADC 值 (0-1023)
  vout = (sensorValue * 5.0) / 1024.0;           // 转换为电压 (0-5V)
  vin = vout / (R2 / (R1 + R2));                 // 反推输入电压 (0-25V)
  return vin;
}

若自制分压电路,只需修改 R1 和 R2 变量值即可。

主程序流程

  1. 初始化串口、LCD,显示启动画面 3 秒
  2. 显示主界面 UI (含电压单位、标尺等图形)
  3. 每秒读取一次电压,转为字符串并在 LCD 指定位置显示
  4. 同时串口输出数值,便于电脑端记录

完整代码 (VoltMeter.ino)

#include 
// 引脚: CLK=8, DIN=9, DC=10, RST=12, CE=11
LCD5110 lcd(8, 9, 10, 12, 11);

extern unsigned char BigNumbers[];  // 大号数字字体
extern uint8_t ui[];                // 主界面图形
extern uint8_t startScreen[];       // 启动画面

float voltage = 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;
float R2 = 7500.0;

void setup() {
  Serial.begin(9600);
  lcd.InitLCD();
  lcd.drawBitmap(0, 0, startScreen, 84, 48); // 启动画面
  lcd.update();
  delay(3000);
  lcd.setFont(BigNumbers);
  delay(1000);
}

void loop() {
  lcd.clrScr();
  lcd.drawBitmap(0, 0, ui, 84, 48); // 绘制主界面
  
  voltage = readVoltage();
  Serial.println(voltage);
  
  voltageString = String(voltage, 1); // 保留 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); break; // 如 "3.3"
    case 4: lcd.print(voltageString, 2, 19);  break; // 如 "12.5"
    default: lcd.print(voltageString, 2, 19); break;
  }
}

测试验证

作者使用可充电 AA 电池 (1.2V)、18650 锂电池 (3.7V)、12V 报警电池测试,读数与专业万用表非常接近,验证了项目的实用性。

Arduino DIY 电压表:Nokia 5110 屏幕显示,手把手教学
实测对比:自制电压表 vs 专业万用表

进阶建议

制造工艺

  1. 树莓派打造空气质量与气象站:InfluxDB+Grafana可视化
  2. 用 Arduino UNO 和 OLED 显示屏制作经典 Pong 游戏:分步教程
  3. 用 Arduino Nano 和 Nokia 5110 LCD 自制 20kHz 示波器:简易 DIY 指南
  4. Arduino 与智能手机打造智能电压表——简单易做的 DIY 项目
  5. Arduino Due 驱动 3.2″ TFT 实现温度监测与实时时钟
  6. 基于 Arduino Mega 与 Nextion 显示屏的交互式气象站
  7. Arduino DIY 电压表:Nokia 5110 屏幕显示,手把手教学
  8. 使用 Nextion 显示屏构建 Fridgeye 应用:分步指南
  9. Arduino 合成乐音:从零实现 88 键钢琴全音域
  10. Arduino GPS与TFT触摸屏扩展板:实时定位显示项目
  11. 高级智能电池充电器:多路复用与数字显示
  12. 信用卡大小 Arduboy 克隆机:Arduino Nano + I²C OLED 复古游戏机自制