Добрый вечер!
Поэкспериментировал ещё с измерениями и остановился на варианте с диапазоном до 200 Ом.
#include <Wire.h>
#include <Adafruit_ADS1015.h>//https://github.com/adafruit/Adafruit_ADS1X15/archive/master.zip
#include <LiquidCrystal.h>
Adafruit_ADS1115 ads;//(0x48);
/* в файле библиотеки Adafruit_ADS1015.cpp найти все строчки: ADS1015_REG_CONFIG_DR_1600SPS и заменить на: ADS1015_REG_CONFIG_DR_128SPS */
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);// RS,E,D4,D5,D6,D7
float multiplier = 0.0078125;
const int u_pogr=10; // 10 мВ - погрешность ADS1115 при измерении 5 В
const float r_ogr=100.30; // эталонное сопротивление 100 Ом
float u3300;
int u_digital;
byte n,k;
long u_sum,u_an,x;
float u_iz,rx,rx_m;
void setup(void){Serial.begin(9600);lcd.begin(16, 2);ads.begin();delay(1000);}
void loop(){
while(x<50){
x++;ads.setGain(GAIN_TWOTHIRDS);u3300=ads.readADC_SingleEnded(2)*0.1875-u_pogr;}
k++;if(k==60){x=0;k=0;} // измерение напряжения 5В каждую минуту
if(n==0){ads.setGain(GAIN_SIXTEEN);multiplier = 0.0078125;}
if(u_iz>250&&n==0){n=1;}
if(n==1){ads.setGain(GAIN_EIGHT);multiplier = 0.015625;}
if(u_iz>500&&n==1){n=2;}
if(n==2){ads.setGain(GAIN_FOUR);multiplier = 0.03125;}
if(u_iz>1000&&n==2){n=3;}
if(n==3){ads.setGain(GAIN_TWO);multiplier = 0.0625;}
if(u_iz>2000&&n==3){n=4;}
if(n==4){ads.setGain(GAIN_ONE);multiplier = 0.125;}
if(u_iz<2000&&n==4){n=3;}
if(u_iz<1000&&n==3){n=2;}
if(u_iz<500&&n==2){n=1;}
if(u_iz<250&&n==1){n=0;}
lcd.clear();
lcd.setCursor(1,0);
if(rx<1){rx_m=rx*1000;lcd.print("R = ");lcd.print(rx_m,1);lcd.print(" mOm");}
if(rx>=1&&rx<100){lcd.print("R = ");lcd.print(rx,3);lcd.print(" Om");}
if(rx>=100&&rx<200){lcd.print("R = ");lcd.print(rx,2);lcd.print(" Om");}
if(rx>=200){lcd.print("Rx > 200 Om ");}
lcd.setCursor(1,1);lcd.print("U = ");lcd.print(u3300,1);lcd.print(" mV");
u_sum=0;
for(int i=0;i<100;i++){ // измерение
u_digital = ads.readADC_Differential_0_1();
u_sum = u_sum + u_digital;
delay(1);
}
u_an=u_sum/100;
u_iz=u_an * multiplier;
rx = (r_ogr*u_iz)/(u3300-u_iz);
}
Точность вполне устраивает,можно разрабатывать печатку.
На фото замер SMD 1206 на 1 мОм(1%), 1.8 Ом(1%), 40 Ом(0,1%) и 200 Ом(0,1%).
Ещё пару вопросов по скетчу:
1. Можно ли увеличить скорость работы AЦП?
2. Можно ли выводить во 2-й строке(поочередно) кроме напряжения ещё и ток,зная величину падения напряжения на 100 Ом опорнике?