使用 Arduino 和智能手机的 DIY 电压表
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
关于这个项目
演示
如果您是 Arduino 新手,您可以开始学习 Arduino 新手教程。
工作原理
我们可以使用 Arduino 模拟输入引脚来测量电压。但是,最大可测量电压为5V。
为了增加可测量的电压,我们需要使用分压器
理论
我们有:
V_measure =(R1 + R2) / R2 * V_in
比率 =(R1 + R2) / R2
=> V_measure =比率 * V_in
如果我们选择 R1 =10 * R2,我们有:
V_measure =11 * V_in
由于允许的 V_in 最大值为 5V => 可测量电压的最大值为 55V
为了限制电流通过Arduino的管脚,可能会损坏Arduino,我们需要选择尽可能大的电阻值。
我选择R1 =1 Mohm, R2 =100Kohm
实践中
那里 是实践中的一些问题
- R1 和 R2 的值有错误。误差导致V_measure的误差
- Arduino 的电源可能不稳定。它使模拟输入的 V_REF 不稳定。因此,它会导致V_in.的计算错误 => 它会导致 V_measure 的计算错误
这些问题在校准部分得到解决
校准
1.衡量的真实价值 (R1 + R2) / R2
这个只需要做一次就可以得到比率
如下图接线:
ratio =(R1 + R2) / R2 =V_measure / V_in =A1_read_value / A0_read_value
比率 =A1_read_value / A0_read_value
此校准的代码 => 参见代码部分中的 ResisterCalibration.ino
2.供电不稳定
电源不稳定导致模拟引脚电压参考不稳定。导致电压计算错误。
为了解决这个问题,我们需要经常测量参考电压。
如何测量参考电压?
将 3.3V 连接到引脚 A1
参考电压是根据 A1 中的值间接测量的:
V_reference=1023 * 3.3 / A1_value
如何计算 V_measure:
V_in =mapFloat(A0_value, 0, 1023, 0, V_reference);V_measure =ratio * V_in;
主要接线:
如何
- 接线为“电阻校准接线”电路
- 上传 ResistorCalibration.ino
- 打开串行绘图仪
- 复制比率值
- 在 Voltmeter.ino 的第 5 行替换此值
- 重新布线为“主布线”
- 上传 Voltmeter.ino
- 上传网页用户界面 (voltmeter.php 和 voltmeter_body.jpg ) 到 PHPoC 盾
- 访问网页 http://phpoc_shield_ip_address/voltmeter.php 以查看电压。
您可以通过以下方式在智能手机上查看电压:
接线提示:
适合初学者的最佳 Arduino 入门套件
查看适合初学者的最佳 Arduino 套件
代码
- ResistorCalibration.ino
- Voltmeter.ino
- 电压表.php
ResistorCalibration.inoArduino
- 接线如校准部分所述- 运行此代码一次
- 打开串行绘图仪
- 复制比率值
- 在 Voltmeter.ino
double ratio;int analogReadAverage(int pin, int read_time){ unsigned long read_value =0; 的第 5 行替换此值// 读取模拟值 read_time 次: for(int i =0; iVoltmeter.inoArduino
这是主要代码。在上传此代码之前,我们需要:
- 上传 ResistorCalibration.ino
- 打开串行监视器
- 复制此代码第 5 行中的比率值和替换值double V_measure;double V_in; double V_reference;double ratio =11.59;double mapFloat(double x, double in_min, double in_max, double out_min, double out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;}int模拟读取平均值(int pin,int read_time){ unsigned long read_value =0; for(int i =0; ivoltmeter.phpPHP
此文件是 Web 用户界面。它需要与背景图片 voltmeter_body.jpgPHPoC Shield - VOLTMETER <样式>html {height:100%;}body {width:100%;高度:100%;;文本对齐:居中;}.container {宽度:100%;最小高度:99%;最大高度:100%;}canvas { 背景:url(voltmeter_body.jpg);背景大小:包含;字体系列:'Segment7Standard';字体粗细:粗体;字体样式:斜体;}
示意图
需要上传到PHPoC Shield制造工艺
- 使用 Arduino Nano RP 2040 的 DIY Photoshop 编辑控制台
- 使用 Arduino 和 RFID 和 Python 的考勤系统
- 使用 Arduino、1Sheeld 和 Android 的通用远程控制
- 使用 Arduino DIY 红外线心跳传感器
- 使用 Arduino 的频率和占空比测量
- DIY 电压表与 Arduino 和诺基亚 5110 显示器
- Sonar 使用 arduino 并在处理 IDE 上显示
- MobBob:由 Android 智能手机控制的 DIY Arduino 机器人
- 使用 Bolt 和 Arduino 控制 LED 亮度
- 使用 Arduino 的简单智能机械臂
- 使用 Arduino 和 RDA8057M 的 FM 收音机
- 本地和远程可编程机械臂