| Ваш IP: 3.238.232.88 | Online(33) - гости: 6, боты: 27 | Загрузка сервера: 0.26 ::::::::::::

Миллиомметр 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?

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

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

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

  • Мини усилитель мощности 30W

    Мини усилитель мощности 30W

    Много раз мы нуждались в небольшом усилителе мощности, но хорошего качества, сделанный из различимых компонентов. Данный усилитель как раз обеспечивает эти требования. Силовые транзисторы которые обведены на схеме пунктиром установлены на радиатор , так же надо положить между ними  подходящий слой слюды и термо-пасту для лучшего температурного охлаждения. Ток смещения …Подробнее...
  • TDA7449 + энкодер + ИК пульт + анализатор спектра

    TDA7449 + энкодер + ИК пульт + анализатор спектра

    Ранее на странице https://rcl-radio.ru/?p=56015 рассматривался пример использования аудиопроцессора на платформе Arduino, в качестве органов управления были кнопки и энкодер. На этой странице будет показан пример использования аудиопроцессора который имеет управление одновременно от кнопок, энкодера и ИК пульта, так же в скетч добавлен анализатор спектра который срабатывает после 10 секундной не …Подробнее...
  • Предусилитель с эквалайзером

    Предусилитель с эквалайзером

    Предусилитель выполнен на одной ИМС К1401УД2А, которая содержит 4-е ОУ, в стерео варианте по 2-а ОУ на канал. Общий коэффициент передачи(усиления) равен 5-и, максимальное входное напряжение 0,5В, номинальное 0,2В. Входное сопротивление 100кОм. Диапазон частот 30…20000Гц при неравномерности АЧХ 2 дБ. Регулировка АЧХ 6-и полосная с центральными частотами 60, 200, 1000, …Подробнее...
  • ESP32 DevKit v1 Wi-Fi Bluetooth ESP32-WROOM-32 (Arduino IDE)

    ESP32 DevKit v1 Wi-Fi Bluetooth ESP32-WROOM-32 (Arduino IDE)

    ESP32 — серия недорогих микроконтроллеров с низким энергопотреблением. Представляют собой систему на кристалле с интегрированным Wi-Fi и Bluetooth контроллерами и антеннами. В серии ESP32 используется микроконтроллерное ядро Tensilica Xtensa LX6 в вариантах с двумя и одним ядром. В систему интегрирован радиочастотный тракт: симметрирующий трансформатор, встроенные антенные коммутаторы, радиочастотные компоненты, малошумящий усилитель, усилитель мощности, фильтры и модули управления питанием. ESP32 создан и разработан компанией Espressif Systems, …Подробнее...
  • TDF8591TH — УМЗЧ 2*100 Вт

    TDF8591TH — УМЗЧ 2*100 Вт

    Микросхема TDF8591TH является усилителем класса D, аудиоусилитель мощности на TDF8591TH обладает низкой рассеиваемой мощностью и предназначен для применения в автомобильныхаудиосистемах. Номинальная выходная мощность 2 х 100 Вт на 4 Ом. TDF8591TH имеет корпус HSOP24 с малым внутренним радиатором. При низком напряжении питания и не большой выходной мощности микросхема не требует радиатора. …Подробнее...