| Ваш IP: 44.197.197.23 | Online(32) - гости: 10, боты: 22 | Загрузка сервера: 0.6 ::::::::::::

Миллиомметр на ADS1110 (Arduino)

На ADS1110 можно собрать достаточно простой и точный миллиомметр. Миллиомметр предназначен для точного измерения сопротивления до 10 Ом, с разрешением 0,001 Ом. Выше 10 Ом точность показаний немного падает. Предел измерения миллиомметра о 0 до 150 Ом.

ADS1110 (более подробно) это прецизионный аналого-цифровой (A/D) преобразователь с дифференциальным входом и разрешением до 16 бит. Встроенный ИОН 2,048 В обеспечивает входной диапазон ±2,048 В. ADS1110 использует I2C интерфейс для связи с микроконтроллером. ADS1110  выполняет измерения со скоростью 15, 30, 60 или 240 выборок в секунду, содержит встроенный усилитель напряжения с коэффициентом 1, 2, 4, 8.

Миллиомметр состоит из АЦП ADS1110, высокоточного резистора на 100 Ом, четырех разрядного семисегментного индикатора и платы Arduino Nano. Так же в схеме применена кнопка «0», для калибровки нуля перед измерением низкоомных сопротивлений. Для калибровки нуля, нужно замкнуть накоротко измерительные провода и нажать кнопку «0».

Измерительные провода имеют одинаковую длину, которые подключаются к разъему X1, проводники соединяющие разъем Х1 и АЦП должны иметь минимально возможную длину. Вторые концы измерительных проводов соединяются непосредственно на контактах измеряемого сопротивления.

#include <Wire.h>
#include <STM32_TM1637.h>                // https://rcl-radio.ru/wp-content/uploads/2020/02/STM32_TM1637_V1_3.zip
STM32_TM1637 tm(2,3);// CLK, DIO
 
#define ADDR 0x48
#define U33 3.342
int n=3;
float r,u,n_u=0.256,r0;
  long dig_sum,dig;
  int value,f;
 
void setup() {
  Serial.begin(9600);
  tm.brig(7); // ЯРКОСТЬ 0...7
  Wire.begin();
  pinMode(4,INPUT_PULLUP);// null
}
 
void loop() {
  r = ((100.00*u)/(U33-u))-r0;
  if(digitalRead(4)==LOW&&r<0.1){r0=((100.00*u)/(U33-u));delay(200);}
 
  for(int i=0;i<10;i++){
  read_u();
  dig_sum = dig_sum+value;delay(10);}
 
read_u();if(value>0x7FFF-0xF&&n==1){delay(10);n=0;n_u=2.048;}
read_u();if(value>0x7FFF-0xF&&n==2){delay(10);n=1;n_u=1.024;}
read_u();if(value>0x7FFF-0xF&&n==3){delay(10);n=2;n_u=0.512;}
read_u();if(value<16380&&n==0){delay(10);n=1;n_u=1.024;}
read_u();if(value<16380&&n==1){delay(10);n=2;n_u=0.512;}
read_u();if(value<16380&&n==2){delay(10);n=3;n_u=0.256;}
 
  dig = dig_sum/10;dig_sum=0;
  u = dig*n_u/0x7FFF;
 
 if(r<10){tm.print_float(r,3 ,0,0,0,0);}
 if(r>=10&&r<100){tm.print_float(r,2 ,0,0,0,0);}
 if(r>=100&&r<=150){tm.print_float(r,1 ,0,0,0,0);}
 if(r>150){tm.print_float(r,0 ,0b01000000,0b01000000,0b01000000,0b01000000);}
 
 Serial.println(r0,5);
  }
 
float read_u(){
  Wire.beginTransmission(ADDR);
  Wire.write (0b10001100+n);
  Wire.endTransmission();
  Wire.requestFrom(ADDR,2);
  while(Wire.available()<2);
  value = (Wire.read()<<8) + (Wire.read());
  }

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

Для калибровки миллиомметра необходимо точно измерить напряжение 3,3 В (подается с платы Arduino) и указать его в строке:

#define U33 3.342

Точность измерения сопротивления напрямую зависит от точности эталонного сопротивления 100 Ом и точности измерения напряжения 3,3 В.

Комментарии

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

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

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

  • Узкополосный приемный тракт на КФ1066ХА2

    КФ1066ХА2 (аналог К174ХА26) — в данной схеме предпочтительно использовать КФ1066ХА2 так как она более приспособлена при работе на ВЧ и потребляет значительно меньший ток и может питаться от 3 до 9 В. В данной статье рассматривается приемный тракт расчитанный на частоту 27,12МГц. Характеристики: Чувствительность при отношении сигн\шум 10дБ не хуже …Подробнее...
  • Дроссель на резисторе МЛТ

    Дроссель на резисторе МЛТ

    Самодельные дроссели основанный на резисторе МЛТ мощность от 0,125 до 2 Вт, является простым и не дорогим способом получить малогабаритный электронный компонент. Витки катушки индуктивности непосредственно наматываются на высокоомный резистор (100 кОм и более). Для расчета необходимого количества витков можно воспользоваться формулой: где: N — необходимое количество витков, L — нужная индуктивность дросселя в …Подробнее...
  • Электронный переключатель реле

    Электронный переключатель реле

    На основе D-триггера 4013 можно сделать простой электронный переключатель реле. Переключение реле происходит при помощи всего одной кнопки, при нажатии на которую включается реле, при повторном нажатии отключается. Источник — https://circuitswiring.com/electronic-toggle-switch/Подробнее...
  • Автомобильный усилитель 20 Вт (моно) на TDA7240А

    Автомобильный усилитель 20 Вт (моно) на TDA7240А

    УМЗЧ на базе TDA7240A является усилителем класса АВ предназначен для автомобильной ауди техники, микросхема имеет защиту от КЗ выходов с корпусом и шиной питания. Усилитель снабжен системой STAND-BY. Усилитель имеет следующие основные характеристики: Напряжение питания 14,4В (напряжение аккумуляторной батареи автомобиля), максимально допустимое напряжение питания до 18В Ток покоя 65мА (14,4В) …Подробнее...
  • LM3670 миниатюрный понижающий DC-DC преобразователь

    LM3670 миниатюрный понижающий DC-DC преобразователь

    LM3670 миниатюрный понижающий DC-DC преобразователь. Преобразователь обеспечивает выходной ток до 350 мА при напряжении питания от 2,5 до 5,5 В. ИМС LM3670 имеет фиксированное выходное напряжение  1.2, 1.5, 1.6, 1.8, 1.875, 2.5, 3.3 В, а так же регулируемое ADJ от 0,7 В. Частота преобразования 1 МГц. КПД 95%. Ток потребления микросхемы не …Подробнее...