galaxy 发表于 2019-7-24 15:43:37

ADS1115 4CH 電壓表

本帖最后由 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);   
}

yzw92 发表于 2019-8-9 06:45:49

处于国际空域。

swhl 发表于 2020-5-20 20:49:11

学习,收藏
页: [1]
查看完整版本: ADS1115 4CH 電壓表