101

Re: Миллиомметр 0 — 20 Ом (Arduino)

Подскажите такой скетч подойдёт.

#include <EEPROM.h>              // импортируем библиотеку
int address;                     // переменная для хранения адреса

void setup() {
                                // перезаписываем в цикле все адреса в ЕЕПРОМ памяти
while (address < EEPROM.length()) {
EEPROM.update(address, 255);
address++;
}
}
void loop() {
}

102

Re: Миллиомметр 0 — 20 Ом (Arduino)

Добавьте паузу в основной цикл loop()

lcd.clear();           
}


>>>


lcd.clear();           
delay(50);
}

103

Re: Миллиомметр 0 — 20 Ом (Arduino)

Таким образом?

#include <EEPROM.h>              // импортируем библиотеку
int address;                     // переменная для хранения адреса

void setup() {
                                // перезаписываем в цикле все адреса в ЕЕПРОМ памяти
while (address < EEPROM.length()) {
EEPROM.update(address, 255);
address++;
}
}
void loop() {
lcd.clear();           
delay(50);
}

104

Re: Миллиомметр 0 — 20 Ом (Arduino)

Нет, в основной скетч.

105

Re: Миллиомметр 0 — 20 Ом (Arduino)

Добавил, но ничего не изменилось. Так же на дисплее набор различных символов.

lcd.setCursor(1,1);
lcd.print("U = ");
lcd.print(u3300,1);
lcd.print(" mV");
u_sum=0;
for(int i=0;i<100;i++){                       // измерение, цикл, который будет выполняться 100 раз, а затем останавливаться.
u_digital = ads.readADC_Differential_0_1(); 	// измерение значения АЦП (аналого-цифрового преобразователя) на канале 0–1 с помощью функции readADC_Differential_0_1(); измеряет разницу напряжений между входами P (AIN0) и N (AIN1)
u_sum = u_sum + u_digital;
delay(1);}
u_an=u_sum/100;
u_iz=u_an * multiplier;
rx=(u3300/((u3300-u_iz)/r_ogr))-r_ogr;
lcd.clear();			// стереть данные экрана
delay(50);          //***изменение
}

106

Re: Миллиомметр 0 — 20 Ом (Arduino)

#include <Adafruit_ADS1X15.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>                                //Include NewLiquidCrystal Library for I2C
Adafruit_ADS1115 ads;                                         //создание объекта ADS1115 с помощью библиотеки Adafruit_ADS1X15, адрес (0x48);
/* в файле библиотеки Adafruit_ADS1015.cpp найти все строчки: ADS1015_REG_CONFIG_DR_1600SPS и заменить на: ADS1015_REG_CONFIG_DR_128SPS */

LiquidCrystal_I2C lcd(0x27, 16, 2);                             // инициализация библиотеки LiquidCrystal если подключение по I2C
float multiplier = 0.0078125;                                  
const int u_pogr=10;                                           // 10 мВ - погрешность ADS1115 при измерении 5 В
const float r_ogr=100.00;                                       // эталонное сопротивление 100 Ом
float u3300;        
int  u_digital;       
byte n,k;           
long u_sum,u_an,x;  
float u_iz,rx,rx_m; 

void setup(void){
lcd.init();lcd.backlight();lcd.clear();  
Serial.begin(9600); // инициализация монитора порта
ads.begin();        //инициализация АЦП ADS1115
delay(1000);        
}

void loop(){
while(x<50){                        // цикл будет выполняться, пока значение переменной x меньше 50
x++;                                // увеличение значения переменной x на единицу с возвращением старого значения
ads.setGain(GAIN_TWOTHIRDS);        // устанавливается коэффициент усиления 2/3 для модуля ADS1115, диапазон входного напряжения — ±6,144 В
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;} // если значение переменной n равно 0, то нужно выполнить следующие действия: установить значение усиления (gain) для переменной ads как GAIN_SIXTEEN (16-кратное усиление), а значение множителя (multiplier) установить как 0,0078125.  Значение GAIN_SIXTEEN соответствует диапазону измерений +/- 0,256 В, при этом 1 бит будет равен 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<500&&n==2){n=1;}
if(u_iz<250&&n==1){n=0;}
lcd.setCursor(1,0);                   //***отображение в первой строке измеренного сопротивления Rx 
if(rx<1){rx_m=rx*1000;lcd.print("R = ");lcd.print(rx_m,1);lcd.print(" mOm");}      
if(rx>=1&&rx<20){lcd.print("R = ");lcd.print(rx,3);lcd.print(" Om");}               
if(rx>=20){lcd.print("  Rx > 20 Om    ");}                                               
                                      //***отображение во второй строке измеренного значения в mV
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=(u3300/((u3300-u_iz)/r_ogr))-r_ogr;
lcd.clear();      
}

107

Re: Миллиомметр 0 — 20 Ом (Arduino)

Информация на дисплее отображается как положено. Всё отлично работает. Громадное спасибо за помощь в решении возникшей проблемы

108

Re: Миллиомметр 0 — 20 Ом (Arduino)

Очень простой вопрос. Купил модуль ads1115 , маркировка затерта. Как быстро проверить его работоспособность ?
Возникли проблемы с повторением Миллиомметр 0 — 20 Ом (Arduino)

Успехов.

109

Re: Миллиомметр 0 — 20 Ом (Arduino)

http://rcl-radio.ru/?p=45109

110

Re: Миллиомметр 0 — 20 Ом (Arduino)

Вход подключаю на землю (a0 потом a1 ) , в мониторе -1 ( по всем четерем ) , а на подачу + не реагирует.
Это что ?

111

Re: Миллиомметр 0 — 20 Ом (Arduino)

проверьте i2s адрес - http://forum.rcl-radio.ru/viewtopic.php?id=64

112

Re: Миллиомметр 0 — 20 Ом (Arduino)

Scanning...
I2C device found at address 0x08  !
I2C device found at address 0x48  !
done

113

Re: Миллиомметр 0 — 20 Ом (Arduino)

Вот что показал сканер.

114

Re: Миллиомметр 0 — 20 Ом (Arduino)

Смущает что показывает 2 адреса.

115

Re: Миллиомметр 0 — 20 Ом (Arduino)

4-е входа, на каждый вход можно подать напряжение относительно GND, но не более напряжения питания АЦП

#include <Wire.h>
#include <Adafruit_ADS1015.h>
//Adafruit_ADS1115 ads; 
Adafruit_ADS1115 ads(0x48);   

void setup(void) {
  Serial.begin(9600);
 
  // ads.setGain(GAIN_TWOTHIRDS);  // 2/3x gain +/- 6.144V  1 bit = 0.1875mV (default)
  // ads.setGain(GAIN_ONE);        // 1x gain   +/- 4.096V  1 bit = 0.125mV
   ads.setGain(GAIN_TWO);          // 2x gain   +/- 2.048V  1 bit = 0.0625mV
  // ads.setGain(GAIN_FOUR);       // 4x gain   +/- 1.024V  1 bit = 0.03125mV
  // ads.setGain(GAIN_EIGHT);      // 8x gain   +/- 0.512V  1 bit = 0.015625mV
  // ads.setGain(GAIN_SIXTEEN);    // 16x gain  +/- 0.256V  1 bit = 0.0078125mV
 
  ads.begin();
}
int16_t adc0, adc1, adc2, adc3;
void loop(void) {
  adc0 = ads.readADC_SingleEnded(0);
  adc1 = ads.readADC_SingleEnded(1);
  adc2 = ads.readADC_SingleEnded(2);
  adc3 = ads.readADC_SingleEnded(3);
  Serial.print("AIN0: "); Serial.println(adc0);
  Serial.print("AIN1: "); Serial.println(adc1);
  Serial.print("AIN2: "); Serial.println(adc2);
  Serial.print("AIN3: "); Serial.println(adc3);
  Serial.println(" ");
 
  delay(1000);
}

116

Re: Миллиомметр 0 — 20 Ом (Arduino)

Подача напряжения по входам не отображается в мониторе порта , измерения нет

117

Re: Миллиомметр 0 — 20 Ом (Arduino)

AIN0: 32767
AIN1: 32767
AIN2: 32767
AIN3: 32767

Вот показания порта , что подаю 3 вольта по входу , показания не меняются. Только когда минус , показания по входам -1

118

Re: Миллиомметр 0 — 20 Ом (Arduino)

Отрицательное напряжение относительно GND подавать нельзя

119

Re: Миллиомметр 0 — 20 Ом (Arduino)

У Вас опорное 2 В, подайте напряжение меньше 2 В

120

Re: Миллиомметр 0 — 20 Ом (Arduino)

Нет реакции при подачи что 0.5 и 1.5 вольта. Монитор порта показывает одно значение.

121

Re: Миллиомметр 0 — 20 Ом (Arduino)

Если на вход было подано отрицательное напряжение относительно GND, то АЦП может выйти из строя.