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

DIY 自动量程电容表 (10 pF – 10 μF) – Arduino Nano 简易制作

项目动机

普通数字万用表多不具备测电容功能,专用电容表或高端万用表价格昂贵。本项目利用 Arduino Nano 实现一款自动量程电容表,测量范围 10 pF – 10,000 μF,仅需几元器件,适合电子爱好者自制实验室工具。

工作原理

基于 RC 充电时间常数法:

  1. 已知电阻 R 给未知电容 C 充电
  2. 单片机测量电压从 0 充至 63.2% (1–1/e) 供电电压所需时间 τ = R×C
  3. 代码中以 ADC 读值 644 (约 3.3V × 0.632) 作为判断点
  4. 根据充电时间自动切换两档量程:

上电自动零点校准,测量前需确保被测电容已放电。

硬件清单

元器件数量规格/备注
Arduino Nano R31主控,紧凑体积
1602 字符 LCD116×2,含 I²C 模块更简洁
电阻1MΩ、10kΩ、1kΩ 各 11MΩ 充电/10kΩ 放电/1kΩ 大电容充电
10kΩ 单圈电位器1LCD 对比度调节
焊接工具、面包板/万用板、外壳若干组装用

接线说明

LCD (并口模式)          Arduino Nano
RS  → D12
E   → D11
D4  → D5
D5  → D4
D6  → D3
D7  → D2
VSS → GND
VDD → 5V
VO  → 电位器中间脚 (两端接 5V/GND)
RW  → GND
A   → 5V (背光+)
K   → GND (背光-)

测量电路:
A0 (ADC) ──┬── 被测电容正极
           │
        1MΩ/1kΩ (由 D7/D8 控制切换)
           │
          GND

放电路径: D7/D8 同时拉低 → 经 10kΩ 放电

核心代码 (已整理注释)

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // RS,E,D4,D5,D6,D7

void setup() {
  lcd.begin(16, 2);
  pinMode(A0, INPUT);
}

unsigned long time0, time1, time2;
float c, null0;
byte kn, mk, i;

void loop() {
  lcd.setCursor(15, 0);
  lcd.print("*");               // 心跳指示

  // mk=0 用 1MΩ (nF档), mk=1 用 1kΩ (μF档)
  if (mk == 0) {
    pinMode(8, OUTPUT); digitalWrite(8, HIGH); // 充电
    pinMode(7, INPUT);                         // 另一端高阻
  } else {
    pinMode(7, OUTPUT); digitalWrite(7, HIGH);
    pinMode(8, INPUT);
  }

  time0 = micros();
  // 等待充电至 63.2% (ADC ≈ 644)
  while (analogRead(A0) < 644) {
    time2 = micros() - time0;
    if (time2 >= 1000000 && mk == 0) { // nF档超时 1s → 切 μF档
      mk = 1;
      time0 = 100000000; // 强制跳出
      break;
    }
  }
  time1 = micros() - time0; // 充电耗时 μs

  // 放电
  pinMode(7, OUTPUT); digitalWrite(7, LOW);
  pinMode(8, OUTPUT); digitalWrite(8, LOW);
  while (analogRead(A0) > 0); // 等待完全放电

  // μF档若时间极短则切回 nF档
  if (mk == 1 && time1 < 1000) mk = 0;

  // 显示
  lcd.setCursor(1, 0);
  c = time1 / 1000.0 - null0; // 换算 nF, 减零点漂移
  c = abs(c);

  if (time1 >= 10000000) {
    lcd.print(" TEST uF ");
  } else {
    lcd.print(c, 2);
    if (mk == 0) lcd.print(" nF ");
    else         lcd.print(" uF ");
  }

  // 首次运行记录零点偏移
  if (i == 0) { i++; null0 = c + 0.02; }
  delay(100);
}

精度与误差分析

外壳与成品化建议

  1. 将电路焊接在万用板或绘制简单 PCB
  2. 测量端子采用镀金针孔或弹簧夹,方便插拔电容
  3. 加装电池盒 (2×18650 或 9V) 实现便携
  4. 外壳预留 USB 口可给 Nano 供电兼充电
  5. 面板贴标签标明量程、极性、放电警示

扩展思路

原理图

DIY 自动量程电容表 (10 pF – 10 μF) – Arduino Nano 简易制作

制造工艺

  1. 智能缺水报警器 – DIY植物土壤湿度监测装置
  2. 用 Arduino Nano 和 Nokia 5110 LCD 自制 20kHz 示波器:简易 DIY 指南
  3. DIY ADXL335 地震检测仪 — 低功耗三轴加速度计项目
  4. 意大利语单词时钟:Arduino Nano + NeoPixel 144 灯珠 + LCD + RTC 打造
  5. 自制简易红外避障传感器:IR LED + 光电二极管 + Arduino
  6. 基于Arduino MKR Fox 1200构建可靠Sigfox千瓦时电表
  7. DIY 高频频率计 - Arduino Nano 实测 6.5MHz,三档测量时间可选
  8. 蓝牙温度监测仪:Arduino Nano + NTC 热敏电阻 + HC-06 无线传输
  9. 非接触手势门锁:APDS-9960 + Arduino 实现安全门禁
  10. Arduino Nano 多功能伴侣套件 —— 电阻/电容测量、二极管测试、RTC时钟一体化
  11. 为Arduino构建隔离模拟输入电路
  12. Arduino UNO 精准视觉反应时间测试仪