极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1439|回复: 1

ADS1115 4CH 電壓表

[复制链接]
发表于 2019-7-24 15:43:37 | 显示全部楼层 |阅读模式
本帖最后由 galaxy 于 2019-7-24 15:48 编辑

使用 arduino nano + ADS1115 + 2004 LCD
電壓表
使用4種不同誤差的電阻 5% , 1% , 0.1% , 0.01%
校正儀表 HP 34401A 6位半電表

電阻的測量使用 6位半電表來測量 (只使用兩線測量),
有空再用四線來測量,看精確度會不會再提高



//0022 可過
//ADS1115 模組定義已清楚分開

#include "LiquidCrystal.h"
LiquidCrystal lcd(2,3,4,5,6,9,10);
#include <Wire.h>
#include <Adafruit_ADS1015.h> // ads1115 使用的庫, 同ads1015
Adafruit_ADS1115 ads(0x48);

  Adafruit_ADS1115 ads1115;
  float Volt0 = 0.0;
  float Volt1 = 0.0;
  float Volt2 = 0.0;
  float Volt3 = 0.0;
  
  float tempV0 = 0.0;
  float tempV1 = 0.0;
  float tempV2 = 0.0;
  float tempV3 = 0.0;
  
  float Vr01=5089500; //5% 分壓電阻 50K,實際用電表測量為   50.8950K
  float Vr02=99259;  //5% 分壓電阻 1K,際用四?式電表測量為  0.99259K
  
  float Vr11=5097500; //1% 分壓電阻 50K,實際用電表測量為   50.9750K
  float Vr12=99432;  //1% 分壓電阻 1K,際用四?式電表測量為  0.99432K  
  
  float Vr21=5017400; //0.1% 分壓電阻 50K,實際用電表測量為   50.1740K
  float Vr22=100140;  //0.1% 分壓電阻 1K,際用四?式電表測量為 1.00140K
  
  float Vr31=5600200; //0.01% 分壓電阻 50K,實際用電表測量為 56.0020K
  float Vr32=99990;  //0.01% 分壓電阻 1K,際用四?式電表測量為 0.99990K  
                        
// float I3 = 0.0;
// float tempI3 = 0.0;

void setup() { ads1115.begin();}
void loop(void) {
  int16_t adc0, adc1, adc2, adc3;
  float Volt0, Volt1, Volt2, Volt3;
  
  { adc0 = ads1115.readADC_SingleEnded(0);
   Volt0 = (adc0 * 0.1875)/1000;     
   tempV0 = Volt0 ;
   Volt0 = tempV0 / (Vr02/(Vr01+Vr02));}

  { adc1 = ads1115.readADC_SingleEnded(1);
   Volt1 = (adc1 * 0.1875)/1000;     
   tempV1 = Volt1 ;
   Volt1 = tempV1 / (Vr12/(Vr11+Vr12));}   
  
  { adc2 = ads1115.readADC_SingleEnded(2);
   Volt2 = (adc2 * 0.1875)/1000;     
   tempV2 = Volt2 ;
   Volt2 = tempV2 / (Vr22/(Vr21+Vr22));}
   
  { adc3 = ads1115.readADC_SingleEnded(3);
   Volt3 = (adc3 * 0.1875)/1000;     
   tempV3 = Volt3 ;
   Volt3 = tempV3 / (Vr32/(Vr31+Vr32));}  
   
   lcd.clear();
   lcd.begin(20, 4);

   lcd.setCursor(0, 0);
   lcd.print("   5% R");
   lcd.setCursor(19, 0);
   lcd.print("V");
   lcd.setCursor(9, 0);
   lcd.print(Volt0,6); // (電壓0,顯示小數下6位)

   lcd.setCursor(0, 1);
   lcd.print("   1% R");
   lcd.setCursor(19, 1);
   lcd.print("V");
   lcd.setCursor(9, 1);
   lcd.print(Volt1,6); // (電壓1,顯示小數下6位)  

   lcd.setCursor(0, 2);
   lcd.print(" 0.1% R");
   lcd.setCursor(19, 2);
   lcd.print("V");
   lcd.setCursor(9, 2);
   lcd.print(Volt2,6); // (電壓2,顯示小數下6位)

   lcd.setCursor(0, 3);
   lcd.print("0.01% R");
   lcd.setCursor(19, 3);
   lcd.print("V");
   lcd.setCursor(9, 3);
   lcd.print(Volt3,6); // (電壓3,顯示小數下6位)  
   
   delay(300);   
}

第一次使用電阻上所標示的值代入算式,誤差有點大

第一次使用電阻上所標示的值代入算式,誤差有點大

第二次使用34401A 6位半電表測量阻值後再代入算式

第二次使用34401A 6位半電表測量阻值後再代入算式

使用的電阻

使用的電阻
回复

使用道具 举报

发表于 2019-8-9 06:45:49 | 显示全部楼层
处于国际空域。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2019-9-22 04:16 , Processed in 0.049183 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表