|
本帖最后由 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);
} |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|