| Ваш IP: 3.239.7.207 | Online(29) - гости: 10, боты: 19 | Загрузка сервера: 1.73 ::::::::::::

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

Миллиомметр собран на Arduino Nano (Uno), для более точного измерения сопротивления используется АЦП-модуль ADS1115 16 bit. Миллиомметр может достаточно точно измерять сопротивление от 0.1 мОм до 20 Ом. При измерении сопротивления до 1 Ом разрешение миллиометра 0.1 мОм, после 1 Ом разрешение 1мОм.

Для точного измерения необходимо иметь эталонное сопротивление 100 Ом (манганин) через которое подается ток на измеряемое сопротивление, от точности эталонного сопротивления зависит точность прибора. Если нет возможности очень точно изготовить (намотать из манганиновой проволоки) эталонное сопротивление, то откалибровать прибор можно при помощи другого эталонного сопротивления 1…10 Ом с классом точности не менее 0.02 %. Для упрощения конструкции прибора напряжение на эталонное сопротивление 100 Ом подается от источника питания +5В Arduino, которое периодически измеряется (1 раз в минуту и при включении), но все же желательно иметь внешний ИОН с напряжением не превышающим напряжения питания ADS1115.

Соединительные провода I0 U0 I1 U1 должны иметь одну длину и соединяться должны непосредственно на измеряемом сопротивлении.

Настройка:

  • необходимо изменить частоту дискретизации ADS1115, для этого откройте для редактирования файл библиотеки Adafruit_ADS1015.cpp найти все строчки ADS1015_REG_CONFIG_DR_1600SPS и замените их на ADS1015_REG_CONFIG_DR_128SPS , после чего загрузите библиотеку в Arduino IDE.
  • переменная u_pogr содержит корректировку АЦП ADS1115 в мВ при измерении напряжения +5 В, при необходимости измените значение или установите 0
  •  переменная r_ogr содержит значение эталонного сопротивления 100.00 Ом (значение может немного отличаться при условии, что эталонное сопротивление измерено достаточно точно)
#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.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){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<500&&n==2){n=1;}
if(u_iz<250&&n==1){n=0;}
 
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<20){lcd.print("R = ");lcd.print(rx,3);lcd.print(" Om");}
if(rx>=20){lcd.print("  Rx > 20 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=(u3300/((u3300-u_iz)/r_ogr))-r_ogr;
 
lcd.clear();
}

Результаты измерений

   класс 0.02
 класс 0.01
  класс 0.01
 класс 0.01
 класс 0.01
15.1 мОм Измерение R0 магазина сопротивления, это значение необходимо отнимать от следующих полученных значений сопроотивления
9.9 мОм
50.2 мОм
99.6 мОм
499.7 мОм
799.2 мОм
1.000 Ом
5.003 Ом
9.998 Ом

Тестирование:

Новый скетч позволяет расширить верхний предел измерения сопротивления до 1000 Ом

Требуется тестирование!!!

http://forum.rcl-radio.ru/viewtopic.php?pid=44#p44

Комментарии

  • В чем измеряется конденсаторы на схеме. Пико,нано?

  • что я не так делаю ? не компелируется скетч.
    Библиотеки все добавлны .

  • Arduino: 1.8.5 (Windows 7), Плата:»Arduino/Genuino Uno»

    D:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\arduino-builder -dump-prefs -logger=machine -hardware D:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\hardware -hardware C:\Users\COM-PC\AppData\Local\Arduino15\packages -tools D:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\tools-builder -tools D:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\hardware\tools\avr -tools C:\Users\COM-PC\AppData\Local\Arduino15\packages -built-in-libraries D:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\libraries -libraries C:\Users\COM-PC\Documents\Arduino\libraries -fqbn=arduino:avr:uno -ide-version=10805 -build-path C:\Users\COM-PC\AppData\Local\Temp\arduino_build_764145 -warnings=none -build-cache C:\Users\COM-PC\AppData\Local\Temp\arduino_cache_994778 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=D:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\hardware\tools\avr -prefs=runtime.tools.avrdude.path=D:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=D:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\hardware\tools\avr -verbose C:\Users\COM-PC\Desktop\millio\millio.ino
    D:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\arduino-builder -compile -logger=machine -hardware D:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\hardware -hardware C:\Users\COM-PC\AppData\Local\Arduino15\packages -tools D:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\tools-builder -tools D:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\hardware\tools\avr -tools C:\Users\COM-PC\AppData\Local\Arduino15\packages -built-in-libraries D:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\libraries -libraries C:\Users\COM-PC\Documents\Arduino\libraries -fqbn=arduino:avr:uno -ide-version=10805 -build-path C:\Users\COM-PC\AppData\Local\Temp\arduino_build_764145 -warnings=none -build-cache C:\Users\COM-PC\AppData\Local\Temp\arduino_cache_994778 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=D:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\hardware\tools\avr -prefs=runtime.tools.avrdude.path=D:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=D:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\hardware\tools\avr -verbose C:\Users\COM-PC\Desktop\millio\millio.ino
    Using board ‘uno’ from platform in folder: D:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\hardware\arduino\avr
    Using core ‘arduino’ from platform in folder: D:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\hardware\arduino\avr
    Detecting libraries used…
    «D:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\hardware\tools\avr/bin/avr-g++» -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR «-ID:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\hardware\arduino\avr\cores\arduino» «-ID:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\hardware\arduino\avr\variants\standard» «C:\Users\COM-PC\AppData\Local\Temp\arduino_build_764145\sketch\millio.ino.cpp» -o «nul»
    «D:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\hardware\tools\avr/bin/avr-g++» -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR «-ID:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\hardware\arduino\avr\cores\arduino» «-ID:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\hardware\arduino\avr\variants\standard» «-ID:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\hardware\arduino\avr\libraries\Wire\src» «C:\Users\COM-PC\AppData\Local\Temp\arduino_build_764145\sketch\millio.ino.cpp» -o «nul»
    «D:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\hardware\tools\avr/bin/avr-g++» -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR «-ID:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\hardware\arduino\avr\cores\arduino» «-ID:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\hardware\arduino\avr\variants\standard» «-ID:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\hardware\arduino\avr\libraries\Wire\src» «C:\Users\COM-PC\AppData\Local\Temp\arduino_build_764145\sketch\millio.ino.cpp» -o «C:\Users\COM-PC\AppData\Local\Temp\arduino_build_764145\preproc\ctags_target_for_gcc_minus_e.cpp»
    C:\Users\COM-PC\Desktop\millio\millio.ino:3:30: fatal error: Adafruit_ADS1015.h: No such file or directory

    #include

    ^

    compilation terminated.

    Используем библиотеку Wire версии 1.0 из папки: D:\схемы\ардуино\arduino\Arduino-1.8.5-IDE-Windows-master\hardware\arduino\avr\libraries\Wire
    exit status 1
    Ошибка компиляции для платы Arduino/Genuino Uno.

  • библиотека есть но тоже самое, не могли бы вы создать HEX файл для мега328

  • Проблема была решена после установки этой библиотеки https://github.com/addicore/ADS1115/archive/master.zip
    скаченной здесь https://rcl-radio.ru/?p=53330&cpage=1
    скаченные в других местах библиотеки не работали.

  • Здравствуйте можете скинуть готовую библиотеку для ADS1115?

Добавить комментарий

Войти с помощью: 

Случайные статьи

  • Регулятор громкости на полевом транзисторе

    Регулятор громкости на полевом транзисторе

    На рисунке показана схема простого регулятора громкости на полевом транзисторе. Регулировка громкости осуществляется подачей отрицательного напряжения от 0 до -3 В на затвор полевого транзистора. Напряжение 0 В на затворе транзистора соответствует минимальному уровню громкости, а напряжение -3 В — максимальной громкости. Источник — https://freecircuitdiagram.com/4656-voltage-controlled-attenuator-volume-control-using-fet/Подробнее...
  • Выходной каскад (ламповые усилители)

    Однотактовый выходной каскад лампового усилителя содержит минимум деталей и прост в сборке и регулировке. Пентоды в выходном каскаде могут использоваться только ультралинейном включении, триодном или обычном режимах. При триодном включении экранирующая сетка соединяется с анодом через резистор 100…1000Ом. В ультралинейном включении каскад охвачен ОС по экранирующей сетке, что дает снижение …Подробнее...
  • ТЕРМОСТАБИЛЬНЫЙ УСИЛИТЕЛЬ МОЩНОСТИ

    ТЕРМОСТАБИЛЬНЫЙ УСИЛИТЕЛЬ МОЩНОСТИ

    С целью уменьшения нелинейных искажений при малой гром­кости режим работы транзисторов выходного каскада усилителя мощности обычно выбирают таким, чтобы в отсутствие сигнала через них протекал довольно большой ток (нередко до сотен миллиампер). Во избежание теплового пробоя, обусловленного нагреванием переходов из-за большой рассеиваемой на них мощ­ности, транзисторы выходного каскада приходится устанавливать …Подробнее...
  • Светодиодная мигалка

    Светодиодная мигалка

    Светодиодная мигалка состоит из 20 диодов в два ряда. Основа уст-ва — мультивибратор, который поочередно зажигает светодиоды. Схема очень простая, регулировка сводится к подбору С3 и С4 которые входят во время-задающую цепь мультивибратора. Усто-во работает от бестрансформаторного источника питания, который состоит из балластного конденсатора С1, резистора R2, который разряжает конденсатор С1 …Подробнее...
  • Электронный термометр (от 0 до 100°С)

    На рис. приведена принципиальная схема, предлагаемого электронного термометра. Он способен измерять температуру от 0 до 100°С, от 0 до 50°С или от — 50 до +50°С — все зависит от стрелочного индикатора РА1, используемого в приборе. Так, с показанным на схеме микроамперметром на 100 мкА термометр рассчитан на работу в …Подробнее...