Акции
Блог
О 3DiY
  • О компании
  • Реквизиты
  • Партнеры
  • Клиенты
  • Вакансии
Оплата
Доставка
Гос. закупки
Товары под заказ
ВК Видео
Отзывы
Услуги
  • 3D печать
    • 3D печать пластиком FDM/FFF
    • 3D печать фотополимером
Контакты
  • Как до нас добраться
    8 (800) 500-45-93
    8 (800) 500-45-93отдел продаж Россия
    8 (495) 565-35-93отдел продаж Москва
    E-mail

    info@3d-diy.ru — отдел продаж

    support@3d-diy.ru — тех. поддержка

    Адрес
    Москва, Павловская улица, 27с7
    м. Тульская
    Режим работы
    пн – пт 11:00—19:00
    8.05 – 11.05 не работаем
    3DIY
    3D принтеры
    Материалы для 3D печати
    Комплектующие 3D принтера
    Arduino и робототехника
    Комплектующие ЧПУ станка
    Инструменты
    Запчасти для 3D принтеров по брендам
    Товары снятые с продажи
    • 3D принтеры
      • Печать пластиком (FDM/FFF)
        Печать пластиком (FDM/FFF)
      • Печать фотополимером (SLA/DLP/LCD)
        Печать фотополимером (SLA/DLP/LCD)
      • Печать воском (MJP)
        Печать воском (MJP)
      • Для дома
        Для дома
      • Для бизнеса
        Для бизнеса
      • Для производства
        Для производства
      • Наборы для сборки
        Наборы для сборки
      • Промышленные
        Промышленные
      Phrozen
      FlyingBear
      QIDI
      CreatBot
      FlashForge
      Bambu Lab
      ERYONE
      Elegoo
      eSUN
      Creality
      BIGTREETECH
      Anycubic
    • Материалы для 3D печати
      • Пластики
        Пластики
        • ABS
        • PLA
        • PETG
        • HIPS
        • PVA
        • FLEX (TPU)
        • Nylon/PA (Нейлон)
        • PC (Поликарбонат)
        • PEEK
        • POM (Полиацеталь)
        • PP (Полипропилен)
        • Резина
        • Стеклонаполненные
        • Термочувствительные
        • Угленаполненные
        • SBS
        • Светящиеся
        • Металлические
        • Спец. пластик
        • Пластик для 3D ручек
      • Фотополимеры
        Фотополимеры
        • Стандартные
        • ABS-типа
        • Гибкие
        • Водосмываемые
        • Выжигаемые
        • Инженерные
        • Стоматологические
        • Для хобби
      Phrozen
      FlyingBear
      QIDI
      CreatBot
      FlashForge
      Bambu Lab
      ERYONE
      Elegoo
      eSUN
      Creality
      BIGTREETECH
      Anycubic
    • Комплектующие 3D принтера
      • Электроника
        Электроника
        • Платы управления
        • Шаговые двигатели (ШД)
        • Драйверы ШД 3D принтеров
        • Драйверы шаговых двигателей ЧПУ
        • Дисплеи
        • Датчики и модули
        • Блоки питания
        • Реле
        • Концевые выключатели
        • Вентиляторы      
          • Вентиляторы осевые
          • Вентиляторы радиальные (улитки)
          • Решетки и фильтры для вентиляторов
        • Провода, кабели и разъемы
      • Механика
        Механика
        • Зубчатые шкивы
        • Зубчатые ремни
        • Трапецеидальные винт-гайки
        • Шарико-винтовые передачи (ШВП)      
          • Гайки ШВП
          • Модули крепления гаек ШВП
          • Обратотанные ШВП
          • Опоры ШВП
        • Соединительные муфты
        • Ролики для зубчатых ремней
        • Цилиндрические направляющие
        • Рельсовые направляющие      
          • Профильные направляющие HIWIN
          • Профильные направляющие КИТАЙ
        • Держатели вала
        • Корпусные детали      
          • Корпуса
          • Апгрейды
          • Комплектующие для корпусов
        • Запчасти OpenBuilds
        • Подшипники качения
        • Пружины
      • Нагревательные столы и сопутствующие
        Нагревательные столы и сопутствующие
        • Нагревательные платформы
        • PEI пластины
        • Стекла и Зеркала
        • Теплоизоляция
        • Основания для столов
        • Силиконовые проставки (пружины)
        • Термисторы
        • Зажимы-фиксаторы
        • Пружины
      • Экструдеры
        Экструдеры
        • Экструдеры и механизмы подачи
        • Хотэнды
        • Сопла
        • Термобарьеры
        • Термисторы
        • Нагревательные блоки
        • Теплоизоляция нагревательных блоков
        • Тефлоновые трубки
        • Радиаторы
        • Нагревательные элементы
        • Шестерни
        • Фитинги
        • Сопутствующие товары
      • Сушилки для пластика
        Сушилки для пластика
      • УФ-камеры
        УФ-камеры
      • Мойки
        Мойки
      • Ультразвуковые ванны (мойки)
        Ультразвуковые ванны (мойки)
      • 3D ручки
        3D ручки
      • 3D-сканеры
        3D-сканеры
      • Расходные материалы для SLA / LCD
        Расходные материалы для SLA / LCD
      • Сопутствующие
        Сопутствующие
      • Наборы для мейкеров
        Наборы для мейкеров
      • Инструменты для 3D печатника
        Инструменты для 3D печатника
      • Постобработка
        Постобработка
      • Адгезивы
        Адгезивы
      Phrozen
      FlyingBear
      QIDI
      CreatBot
      FlashForge
      Bambu Lab
      ERYONE
      Elegoo
      eSUN
      Creality
      BIGTREETECH
      Anycubic
    • Arduino и робототехника
      • Arduino
        Arduino
      • Raspberry Pi
        Raspberry Pi
        • Микрокомпьютеры
        • Дисплеи      
          • TFT-LCD дисплеи Raspberry Pi
          • IPS-LCD дисплеи Raspberry Pi
          • AMOLED дисплеи Raspberry Pi
        • Корпуса
        • Шилды
        • Камеры
        • Питание
        • Охлаждение
      • Обучающие наборы
        Обучающие наборы
      • Orange Pi
        Orange Pi
      • Одноплатники
        Одноплатники
      • Модули
        Модули
        • Платы расширения
        • Беспроводные модули
        • Интерфейсы
        • Релейные модули
        • Преобразователи питания
        • Лазерные модули
        • Аудио
        • Видео
        • Клавиатура
        • Драйверы моторов
        • Измерительные
        • Другие
      • Датчики
        Датчики
        • Аудио
        • Газа
        • Инфракрасные
        • Климатические
        • Жидкостные
        • Механического воздействия
        • Положения (акселерометры/компасы/гироскопы)
        • Пространства
        • Света и цвета
        • Тактильные
        • Тока и напряжения
      • Дисплеи
        Дисплеи
        • TFT-LCD дисплеи
        • STN-LCD дисплеи
        • LED дисплеи
        • OLED дисплеи
        • Дисплеи DWIN
        • E-Paper дисплеи
      • Механика
        Механика
        • Колёса
        • Коллекторные двигатели
        • Сервоприводы
        • Шаговые двигатели
        • Другие
        • Линейные актуаторы (приводы)
      • Макетные платы
        Макетные платы
      • Светодиоды
        Светодиоды
        • Светодиодные кольца
        • Светодиодные матрицы
        • Сегментные индикаторы
        • Светодиоды круглые
        • Другие
      • Провода и кабели
        Провода и кабели
      • Источники питания
        Источники питания
      • Радиодетали
        Радиодетали
        • Кварц
        • Кнопки
        • Конденсаторы
        • Резисторы
        • Транзисторы
        • Другие
        • Стабилизаторы
      Phrozen
      FlyingBear
      QIDI
      CreatBot
      FlashForge
      Bambu Lab
      ERYONE
      Elegoo
      eSUN
      Creality
      BIGTREETECH
      Anycubic
    • Комплектующие ЧПУ станка
      • Шаговые двигатели и аксессуары
        Шаговые двигатели и аксессуары
        • NEMA 8
        • NEMA 11
        • NEMA 14
        • NEMA 17
        • NEMA 23
        • NEMA 34
        • NEMA 42
        • NEMA 52
        • Шаговые актуаторы
        • Шаговые двигатели с редуктором      
          • C планетарным редуктором
          • C цилиндрическим редуктором
        • Шаговые двигатели с тормозом
        • Круглые шаговые двигатели
        • Сопутствующие
      • Зубчатые ременные передачи
        Зубчатые ременные передачи
        • Зубчатые ремни      
          • Зубчатые ремни GT2
          • Зубчатые ремни HTD 3M
          • Зубчатые ремни HTD 5M
          • Зубчатые ремни T2.5
          • Зубчатые ремни T5
        • Зубчатые шкивы      
          • Зубчатые шкивы GT2
          • Зубчатые шкивы HTD 3M
        • Ролики
      • Шарико-винтовые передачи (ШВП)
        Шарико-винтовые передачи (ШВП)
        • Готовые ШВП, обработанные
        • Гайки ШВП
        • Опоры ШВП
        • Модули крепления гаек ШВП
        • Кронштейны-опоры ШВП
      • Трапецеидальные передачи винт-гайка
        Трапецеидальные передачи винт-гайка
        • Винты трапецеидальные
        • Гайки трапецеидальные
        • Муфты Oldham
        • Сопутствующие
      • Цилиндрические направляющие
        Цилиндрические направляющие
        • Полированные валы
        • Цилиндрические рельсы
        • Линейные подшипники
        • Модули с линейным подшипником
        • Втулки скольжения
        • Держатели вала
        • Пластиковые втулки скольжения
      • Профильные направляющие
        Профильные направляющие
        • Профильные направляющие HIWIN      
          • Каретки HIWIN
          • Рельсы HIWIN
        • Профильные направляющие      
          • Каретки
          • Рельсы
        • Роликовые направляющие
      • Муфты соединительные
        Муфты соединительные
        • Жесткие
        • Кулачковые
        • Спиральные
        • Мембрнные
        • Сильфонные
        • Пружинные
        • Гибкие
      • Электроника
        Электроника
        • Блоки питания
        • Вентиляторы электрические и аксессуары      
          • Вентиляторы осевые
          • Вентиляторы радиальные (улитки)
          • Решетки и фильтры для вентиляторов
        • Драйверы шаговых двигателей
        • Микропереключатели и концевики
        • Датчики касания инструмента
        • Кнопки и индикаторы
      • Фрезы
        Фрезы
        • Спиральные фрезы      
          • Стружка вверх
          • Стружка вниз
        • Компрессионные фрезы
        • Прямые фрезы
        • Конусные фрезы
        • Сферические фрезы
        • Фрезы рашпильные (кукуруза)
        • Цанги
        • Сопутствующие
      • Карбоновый профиль / трубки
        Карбоновый профиль / трубки
      • Пневматическое оборудование
        Пневматическое оборудование
        • Регуляторы давления, фильтры, лубрикаторы
      • Системы подачи смазки
        Системы подачи смазки
        • Автоматические смазочные насосы
        • Ручные смазочные насосы
        • Маслораспределительные аксессуары
      • Сопутствующие
        Сопутствующие
      • Шпиндели и сопутствующие
        Шпиндели и сопутствующие
        • Шпиндели воздушного охлаждения
        • Шпиндели жидкостного охлаждения
        • Частотные преобразователи
        • Крепления для шпинделей
        • Системы охлаждения шпинделей
        • Подведение СОЖ
        • Прижимы для шпинделей
        • Распылители масляного тумана
        • Щетка-насадка для шпинделя
        • Сопутствующие для шпинделей
      • Механика
        Механика
        • Кабель-каналы гибкие
        • Подшипники качения
        • Подшипниковые узлы
      • Конструкционный профиль
        Конструкционный профиль
        • Сухари пазовые
        • Т-болты
        • Т-гайки
        • Серия 15      
          • Анодированный
          • Без покрытия
        • Серия 20      
          • Анодированный
          • Без покрытия
        • Серия 20 (V-паз)      
          • Анодированный
          • Без покрытия
        • Серия 30      
          • Анодированный
          • Без покрытия
        • Серия 40      
          • Анодированный
          • Без покрытия
        • Серия 45      
          • Анодированный
          • Без покрытия
        • Серия 50      
          • Анодированный
          • Без покрытия
      • Комплектующие OpenBuilds
        Комплектующие OpenBuilds
        • Ролики OpenBuilds
      • Лазерные станки
        Лазерные станки
      • Лазерная резка и аксессуары
        Лазерная резка и аксессуары
        • Блоки розжига
        • Воздушные компрессоры
        • Датчики
        • Крепление лазерной трубки
        • Лазерные головки и держатели зеркал
        • Полупроводниковые лазерные модули
        • Системы охлаждения
        • Системы управления (Контроллеры)      
          • Контроллеры RuiDa
      Phrozen
      FlyingBear
      QIDI
      CreatBot
      FlashForge
      Bambu Lab
      ERYONE
      Elegoo
      eSUN
      Creality
      BIGTREETECH
      Anycubic
    • Инструменты
      • Зачистка и обрезка кабеля
        Зачистка и обрезка кабеля
      • Измерительный инструмент
        Измерительный инструмент
        • Мультиметры
      • Кабель и провода
        Кабель и провода
        • Акустический кабель
        • Высоковольтный кабель
      • Клеевые пистолеты (термопистолеты)
        Клеевые пистолеты (термопистолеты)
      • Напильники и надфили
        Напильники и надфили
      • Обжимной инструмент
        Обжимной инструмент
      • Отвертки
        Отвертки
      • Паяльное оборудование
        Паяльное оборудование
        • Наборы для паяльных работ
        • Отсосы припоя
        • Паяльные принадлежности
        • Паяльные станции
        • Припой
        • Электрические паяльники
      • Пинцеты
        Пинцеты
      • Расходные материалы
        Расходные материалы
        • Изолента
        • Клеевые стержни
      Phrozen
      FlyingBear
      QIDI
      CreatBot
      FlashForge
      Bambu Lab
      ERYONE
      Elegoo
      eSUN
      Creality
      BIGTREETECH
      Anycubic
    • Запчасти для 3D принтеров по брендам
      • 3DIY printers
        3DIY printers
        • Bizon 3
        • STRATEX 350
        • STRATEX 500
        • REX 6K Mono
        • P3 Steel 200 PRO
        • P3 Steel 300 PRO
        • P3 Steel 300 DUAL PRO
      • Bambu Lab
        Bambu Lab
        • Bambu Lab A1 mini
        • Bambu Lab A1
        • Bambu Lab P1 Series
        • Bambu Lab X1 Series
      • Creality
        Creality
        • Creality K1
        • Creality K1 MAX
        • Creality K1C
        • Creality K2 plus
      • Flashforge
        Flashforge
        • Adventurer 5M / 5M Pro
      • Qidi
        Qidi
        • Qidi Tech X-Plus 3
        • Qidi Tech X-Max 3
        • QIDI Plus 4
        • Qidi Q1 Pro
      Phrozen
      FlyingBear
      QIDI
      CreatBot
      FlashForge
      Bambu Lab
      ERYONE
      Elegoo
      eSUN
      Creality
      BIGTREETECH
      Anycubic
    • Товары снятые с продажи
        Phrozen
        FlyingBear
        QIDI
        CreatBot
        FlashForge
        Bambu Lab
        ERYONE
        Elegoo
        eSUN
        Creality
        BIGTREETECH
        Anycubic
      Войти
      0Избранное
      0Корзина
      3D принтерыПластик для 3D принтераФотополимерыКомплектующие 3DКомплектующие ЧПУРобототехникаЗапчасти 3D принтеров по брендам
      3DIY
      Войти
      0Избранное
      0Корзина
      3DIY
      Телефоны
      8 (800) 500-45-93отдел продаж Россия
      8 (495) 565-35-93отдел продаж Москва
      E-mail

      info@3d-diy.ru — отдел продаж

      support@3d-diy.ru — тех. поддержка

      Адрес
      Москва, Павловская улица, 27с7
      м. Тульская
      Режим работы
      пн – пт 11:00—19:00
      8.05 – 11.05 не работаем
      0
      0
      • Кабинет
      • 0Избранное
      • 0Корзина
      • Бренды
      • Акции
      • Услуги
        • Услуги
        • 3D печать
          • 3D печать
          • 3D печать пластиком FDM/FFF
          • 3D печать фотополимером
      • Компания
        • Компания
        • О компании
        • Реквизиты
        • Партнеры
        • Клиенты
        • Вакансии
      • Блог
      • Информация
        • Информация
        • Гарантия на товар
        • Возврат товара
        • Политика конфиденциальности
        • Договор-оферта
        • FAQ
      • Контакты
        • Контакты
        • Как до нас добраться
      8 (800) 500-45-93отдел продаж Россия
      • Телефоны
      • 8 (800) 500-45-93 отдел продаж Россия
      • 8 (495) 565-35-93 отдел продаж Москва
      • info@3d-diy.ru — отдел продаж

        support@3d-diy.ru — тех. поддержка

      • Москва, Павловская улица, 27с7
        м. Тульская
      • пн – пт 11:00—19:00
        8.05 – 11.05 не работаем
      Главная
      Блог
      Модули
      Модуль 16-битного АЦП ADS1115

      Модуль 16-битного АЦП ADS1115

      Модуль 16-битного АЦП ADS1115
      Модули 1 января 2024

      Содержание

      • Обзор
      • Технические характеристики
      • Подключение к плате Arduino
      • Пример использования
      • FAQ

      Обзор

      Нередко в радиолюбительской практике возникает необходимость измерить напряжение на каком-либо участке цепи с последующей оцифровкой и анализом полученного результата. Для этих целей используют аналогово-цифровые преобразователи, которые переводят  величину напряжения в его числовой эквивалент, понятный микроконтроллеру.

      Все кто когда-либо работал с платформами Arduino, наверняка знают, что она оснащена 10-битным аналогово-цифровым преобразователем (АЦП), подключенным к пинам A0-A7 в качестве альтернативной функции портов ввода/вывода. Но зачастую возможностей этого АЦП не хватает, когда точность, скорость и гибкость измерений критична для конкретного проекта.

      Модуль  16-битного АЦП ADS1115 лишён вышеперечисленных недостатков. Помимо этого он имеет внутренний источник опорного напряжения, программируемую частоту дискретизации, настраиваемый коэффициент усиления, встроенный компаратор и возможность выполнять измерения в 2-х режимах, прямом и дифференциальном. Внешний вид модуля показан на рисунке №1.

      vneshnij-vid-modulya-ADS1115.jpg

      Рисунок №1 – внешний вид модуля ADS1115

      Как видно из вышеприведенного рисунка, модуль содержит 10 выводов, краткое описание которых представлено ниже:

      • VDD и GND отвечают за питание микросхемы ADS1115. Модуль может работать в диапазоне от 2В до 5.5В.
      • Наличие выводов SCL и SDA говорит  о том, что модуль общается с ведущим устройством по протоколу I2C. Дополнительно устанавливать подтягивающие резисторы на шину нет необходимости, так как они уже предусмотрены в конструкции модуля.
      • ARRD – задаёт один из 4-х возможных адресов модуля.  Данная функция имеет смысл при использовании нескольких ADS1115 на одной шине I2C.
      • ALRT – выход компаратора, который удобно использовать для оповещения управляющего устройства.
      • A0, A1, A2, A3 – входы АЦП, которые могут быть настроены как 4 одиночных канала или 2 дифференциальных. В последнем случае появляется возможность измерять разность потенциалов между выводами A0-A1 и A2-A3.

      На рисунке №2 представлена электрическая схема модуля ADS1115.

       elektricheskaya-skhema-modulya-ADS1115.jpg 

      Рисунок №2 – электрическая схема модуля ADS1115 

      Конденсаторы С1 и C2 предназначены для устранения помех в цепи питания микросхемы АЦП. Резистор R1 подтягивает выход компаратора к низкому уровню. Следовательно,  сигнал оповещения будет эквивалентен логической единице. Резисторы R2 и R3 подтягивают I2C шину до уровня питания, что освобождает пользователя от применения внешних сопротивлений.

      Как упоминалось ранее, модуль ADS1115 может иметь один из 4-х возможных адресов в зависимости от того, куда подключен вывод ADDR. Из схемы видно, что он притянут резистором R4 к минусу питания, что по умолчанию присваивает модулю адрес 0x48. Для изменения адреса, вывод ADDR подключают по одному из вариантов, приведённых на рисунке №3.

      varianty-vybora-adresa-ADS1115.jpg  

      Рисунок №3 – варианты выбора адреса ADS1115 

      Исходя из вышеизложенного, можно сделать вывод, что на одной шине I2C могут присутствовать одновременно 4 модуля ADS1115. Этого более чем достаточно для большинства микроконтроллерных проектов, учитывая то, что каждый модуль имеет по несколько каналов.

      В целом, каждая микросхема ADS1115 имеет в своём составе 4 аналоговых входа (А0, А1, А2, А3). В зависимости от настроек, эти входы могут использоваться как 4 одиночных канала измерения или как 2 дифференциальных. В дифференциальном режиме напряжение меряется между входами А0-А1 и А2-А3. На рисунке №4 показана внутренняя структура микросхемы ADS1115.

      strukturnaya-skhema-chipa-ADS1115.jpg

      Рисунок №4 – структурная схема чипа ADS1115 

      Глядя на схему, можно сделать вывод, что необходимая конфигурация аналоговых входов настраивается с помощью внутреннего мультиплексора, условно обозначенного как контакты реле. В каждый момент времени относительно внутреннего АЦП AINp и AINn может быть выставлена только одна определённая конфигурация.

      В случае использования дифференциального режима, действует одно правило: при AINp>AINn напряжение определяется как положительное, а если AINp<AINn – напряжение будет отрицательным.

      Если же выставлен режим одиночных (несимметричных) входов, то измерения будут производиться исключительно между положительным входным сигналом и общим проводом ADS1115. В данном режиме измерить отрицательное напряжение не представляется возможным.

      Вне зависимости от выбранного режима, после поступления входного сигнала в измерительный тракт АЦП, у пользователя появляется возможность усилить его посредствам встроенного аппаратного усилителя PGA с разными коэффициентами усиления. Всего доступно 6 уровней масштабирования. Каждый из них задаёт верхний предел измеряемого напряжения, выходить за рамки которого строго не рекомендуется. То же самое касается и напряжения питания модуля – оно должно быть равно или больше максимального предела измерений. Ниже приведена таблица, которая отражает оговоренную выше зависимость.

      tablica-1.jpg 


      Технические характеристики ADS115

      • Напряжение питания: 2V – 5,5V;
      • Минимальное потребление тока: 150 мкА;
      • Разрешение: 16 бит;
      • Тип интерфейса: I2C (адреса 0х48, 0х49, 0х4А, 0х4В);
      • Количество входов: 4 несимметричных или 2 дифференциальных;
      • Внутренний усилитель PGA: до х16;
      • Напряжение смещения: 100мкВ;
      • Настраиваемая скорость обработки данных: 8-860 выборок/сек.
      • Выходной программируемый компаратор;
      • Диапазон рабочих температур: -40ОС…+125ОС;
      • Тип корпусов микросхемы: X2QFN-10 или VSSOP-10;
      • Размер модуля: 28х16мм.


      Подключение к плате Arduino

      Подключить модуль к плате Arduino  не составит никакого труда, так как все Arduino поддерживают интерфейс I2C. Программная работа с ADS1115 будет максимально эффективна при использовании специальной библиотеки, разработанной компанией «Adafruit».

      Так как АЦП может работать в двух режимах (несимметричный и дифференциальный), схема измерительной цепи тоже будет иметь два варианта.

      Несимметричный способ измерения

      При использовании данного метода, в нашем распоряжении есть 4 канала, на каждом из которых измеряется напряжение относительно общего отрицательного провода микросхемы ADS1115. Следует учитывать, что при программировании параметров АЦП, последние будут действовать сразу для всех каналов, т.е. настроить разные коэффициенты усиления для каждого канала в частности не получиться. На рисунке №5 показана схема подключения АЦП ADS1115 к плате Arduino Nano с несимметричным режимом измерения.

      skhema-izmereniya-4-h-napryazhenij.jpg

      Рисунок №5 – схема измерения 4-х напряжений

       На вышеприведенном рисунке, в качестве примера, задействованы все 4 канала АЦП, а именно:

      • А0 – измеряет напряжение 5V, которое выдаёт Arduino Nano;
      • А1 – измеряет напряжение 3.3V, которое выдаёт Arduino Nano;
      • А2 – измеряет напряжение пальчиковой батарейки;
      • А3 – измеряет напряжение на LI-ION аккумуляторе.

      Следует обратить внимание на то, что на вход ADS1115 будет поступать максимальное напряжение 5V. Следовательно, чтобы не превысить допустимый предел входного напряжения, нам необходимо выставить коэффициент усиления 2/3 (см. таблицу выше). Это даст возможность подавать на вход АЦП до 6.144V, что удовлетворяет требованиям всех 4-х измерительных точек. Ниже приведен скетч с подробными комментариями, с помощью которого все 4 измерения будут выводиться в монитор порта.

      #include <Wire.h> // Библиотека для работы с шиной I2C #include <Adafruit_ADS1015.h> // Библиотека для работы с модулями ADS1115 и ADS1015 Adafruit_ADS1115 ads; // Создание объекта ads для общения через него с модулем void setup() { Serial.begin(9600); // Инициализация серийного порта // Установка коэффициента усиления 2/3 ads.setGain(GAIN_TWOTHIRDS); // ВОЗМОЖНЫЕ ВАРИАНТЫ УСТАНОВКИ КУ: // ads.setGain(GAIN_TWOTHIRDS); | 2/3х | +/-6.144V | 1bit = 0.1875mV | // ads.setGain(GAIN_ONE); | 1х | +/-4.096V | 1bit = 0.125mV | // ads.setGain(GAIN_TWO); | 2х | +/-2.048V | 1bit = 0.0625mV | // ads.setGain(GAIN_FOUR); | 4х | +/-1.024V | 1bit = 0.03125mV | // ads.setGain(GAIN_EIGHT); | 8х | +/-0.512V | 1bit = 0.015625mV | // ads.setGain(GAIN_SIXTEEN); | 16х | +/-0.256V | 1bit = 0.0078125mV | ads.begin(); // Инициализация модуля ADS1115 } void loop() { // Переменные для хранения значений АЦП каждого канала int16_t adc0, adc1, adc2, adc3; adc0 = ads.readADC_SingleEnded(0); // Чтение АЦП нулевого канала adc1 = ads.readADC_SingleEnded(1); // Чтение АЦП первого канала adc2 = ads.readADC_SingleEnded(2); // Чтение АЦП второго канала adc3 = ads.readADC_SingleEnded(3); // Чтение АЦП третьего канала // Расчёт фактических напряжений на каждом канале float u0 = float(adc0) * 0.1875 / 1000.0; float u1 = float(adc1) * 0.1875 / 1000.0; float u2 = float(adc2) * 0.1875 / 1000.0; float u3 = float(adc3) * 0.1875 / 1000.0; // Вывод значения АЦП и фактичесгого напряжения на каналах 0-3 Serial.print("ADC_AIN0="); Serial.print(adc0); Serial.print(" VOLTAGE_AIN0="); Serial.print(u0); Serial.println("V"); Serial.print("ADC_AIN1="); Serial.print(adc0); Serial.print(" VOLTAGE_AIN1="); Serial.print(u1); Serial.println("V"); Serial.print("ADC_AIN2="); Serial.print(adc0); Serial.print(" VOLTAGE_AIN2="); Serial.print(u2); Serial.println("V"); Serial.print("ADC_AIN3="); Serial.print(adc0); Serial.print(" VOLTAGE_AIN3="); Serial.print(u3); Serial.println("V"); Serial.println(" "); delay(1000); } 

       Дифференциальный режим измерения

      Преимуществом данного режима является возможность измерения разности напряжений между двумя точками. Такой подход целесообразен при мониторинге состояния отдельных элементов питания в составе общей батареи или когда необходимо узнать падение напряжения на токоизмерительном шунте. В общем, вариантов применения множество. Недостатком является тот факт, что вместо 4-х измерительных каналов мы получаем всего два. На рисунке №6 приведена схема подключения ADS1115 к плате Arduino Nano с использованием диф-режима. В данном примере выполняется измерение напряжения на АКБ и падение на резисторе для определения тока потребления электромотора.

      podklyuchenie-ADS1115-Arduino-Nano.jpg

      Рисунок №6 – подключение ADS1115 к Arduino Nano (дифференциальный режим)

      Следует отметить, что теперь нет необходимости соединять отрицательные провода цепи измерения с общим проводом Arduino Nano. Таким образом, мы получили нечто похожее на бытовой мультиметр. Ниже приведен скетч с подробными комментариями, реализующий измерения в дифференциальном режиме.

      #include <Wire.h> // Библиотека для работы с шиной I2C #include <Adafruit_ADS1015.h> // Библиотека для работы с модулями ADS1115 и ADS1015 Adafruit_ADS1115 ads; // Создание объекта ads для общения через него с модулем void setup() { Serial.begin(9600); // Инициализация серийного порта // Установка коэффициента усиления 2/3 ads.setGain(GAIN_TWOTHIRDS); // ВОЗМОЖНЫЕ ВАРИАНТЫ УСТАНОВКИ КУ: // ads.setGain(GAIN_TWOTHIRDS); | 2/3х | +/-6.144V | 1bit = 0.1875mV | // ads.setGain(GAIN_ONE); | 1х | +/-4.096V | 1bit = 0.125mV | // ads.setGain(GAIN_TWO); | 2х | +/-2.048V | 1bit = 0.0625mV | // ads.setGain(GAIN_FOUR); | 4х | +/-1.024V | 1bit = 0.03125mV | // ads.setGain(GAIN_EIGHT); | 8х | +/-0.512V | 1bit = 0.015625mV | // ads.setGain(GAIN_SIXTEEN); | 16х | +/-0.256V | 1bit = 0.0078125mV | ads.begin(); // Инициализация модуля ADS1115 } void loop() { int16_t adc_01_voltage; // Переменная для хранения значения АЦП вольтметра (канал 0-1) int16_t adc_23_current; // Переменная для хранения значения АЦП амперметра (канал 2-3) adc_01_voltage = ads.readADC_Differential_0_1(); // Измеряем значение АЦП на канало 0-1 adc_23_current = ads.readADC_Differential_2_3(); // Измеряем значение АЦП на канало 2-3 // Расчёт напряжения float u = float(adc_01_voltage) * 0.1875 / 1000.0; // Расчёт падения напряжения на токоизмерительном резисторе 1 Ом float ur = float(adc_23_current) * 0.1875 / 1000.0; // Расчёт силы тока float i = ur / 1.0; // Сопротивление резистора 1 Ом. // Вывод полученных значений в монитор серийного порта Serial.print("VOLTAGE="); Serial.print(u); Serial.println("V"); Serial.print("CURRENT="); Serial.print(i); Serial.println("A"); delay(1000); } 

      Если во время проведения измерений на каналах 0-1 и 2-3 поменять местами провода, то будут получены отрицательные значения, сродни тем, которые получаются при неправильном подключении вольтметра. По умолчанию на каналы 0 и 2 должен поступать положительный полюс, а на каналы 1 и 3 – отрицательный.

      Использование компаратора

      Иногда в практике радиолюбителя появляется необходимость мониторинга пороговых значений по напряжению. Например, отслеживание окончания заряда аккумулятора и т.п. Модуль ADS1115 предоставляет удобную возможность реализации подобной задачи с помощью встроенного компаратора, который при срабатывании подаёт сигнал на вывод ALRT. В качестве примера, на рисунке №7 приведена схема, наглядно демонстрирующая работу компаратора.

      Ispolzovanie-komparatora.jpg

      Рисунок №7 – пример использования компаратора

      Суть схемы в следующем. Пользователь вращает потенциометр, тем самым меняя значение напряжения от 0 до 5V на входе AIN0 модуля ADS1115. Программа задаёт порог срабатывания компаратора в 1,875V. Светодиод, подключенный к выходу ALRT компаратора, сигнализирует о превышении выставленного порога. Ниже приведён соответствующий скетч.

       #include <Wire.h> // Библиотека для работы с шиной I2C #include <Adafruit_ADS1015.h> // Библиотека для работы с модулями ADS1115 и ADS1015 Adafruit_ADS1115 ads; // Создание объекта ads для общения через него с модулем void setup(void) { Serial.begin(9600); // Инициализация серийного порта // Установка коэффициента усиления 2/3 ads.setGain(GAIN_TWOTHIRDS); // ВОЗМОЖНЫЕ ВАРИАНТЫ УСТАНОВКИ КУ: // ads.setGain(GAIN_TWOTHIRDS); | 2/3х | +/-6.144V | 1bit = 0.1875mV | // ads.setGain(GAIN_ONE); | 1х | +/-4.096V | 1bit = 0.125mV | // ads.setGain(GAIN_TWO); | 2х | +/-2.048V | 1bit = 0.0625mV | // ads.setGain(GAIN_FOUR); | 4х | +/-1.024V | 1bit = 0.03125mV | // ads.setGain(GAIN_EIGHT); | 8х | +/-0.512V | 1bit = 0.015625mV | // ads.setGain(GAIN_SIXTEEN); | 16х | +/-0.256V | 1bit = 0.0078125mV | ads.begin(); // Инициализация модуля ADS1115 // Настраиваем компаратор на нулевом канале // Так как исходя из установленного КУ 1 бит равен 0.1875mV, то для настройки // компаратора на порог 1.875V нам это значение необходимо увеличить в 10000 раз. // 0.1875mV = 0.0001875V // 0.0001875V * 10000 = 1.875V ads.startComparator_SingleEnded(0, 10000); // Установка порога 1.875V } void loop(void) { int16_t adc0; // Переменная для чтения АЦП на нулевом канале // Компаратор начнёт свою работу после чтения входного уровня adc0 = ads.getLastConversionResults(); delay(100); } 

      Измерение напряжений, превышающих максимальный порог ADS1115

      В вышеприведенных примерах все входные напряжения не превышали допустимый входной порог модуля ADS1115, равный 6.144V. В реальных радиолюбительских конструкциях чаще всего приходится измерять гораздо большее напряжение, что однозначно выведет ADS1115 из строя.

      Решить подобную проблему можно с помощью резистивного делителя, который преобразует высокое входное напряжение в приемлемое. В самой программе, для получения реального результата, потребуется умножить рассчитанное значение напряжения на коэффициент деления резистивного делителя. На рисунке №8 приведена классическая схема делителя напряжения, выполненная на двух резисторах.

      skhema-rezistivnogo-delitelya.jpg 

      Рисунок №8 – схема резистивного делителя 

      В качестве примера, разберём ситуацию, когда необходимо измерять напряжение до 25V. При этом настройка коэффициента усиления ADS1115 будет задана таким образом, чтобы максимальное входное напряжение не превышало 6.144V. Следовательно, необходимо рассчитать резистивный делитель, который преобразует 25V на его входе, в 6.144V на выходе. Сделать это можно на бумаге, затратив некоторое количество времени, но гораздо удобнее использовать онлайн калькулятор.

      В ходе расчётов получились следующие значения:

      • Максимальное напряжение на входе резистивного делителя – 25.05V;
      • Резистор верхнего плеча R1 – 120k;
      • Резистор верхнего плеча R2 – 39k;
      • Выходное напряжение (при Uвх.= 25.05V) – 6,144V.

      Подставим значения в формулу для проверки:

      U2 = 25.05 * (39 / (120 + 39)) = 25.05 * (39 / 159) = 25.05 * 0.245283 = 6.144V

      На рисунке №9 приведена схема подключения ADS1115 к плате Arduino Nano с применением резистивного делителя напряжения.

      Skhema-izmereniya-napryazheniya-rezistivnym-delitelem.jpg 

      Рисунок №9 – Схема измерения напряжения с резистивным делителем 

      Ниже приведён текст программы, позволяющий выполнить расчёт измеренного напряжения исходя из вышеуказанного диапазона:

      #include <Wire.h> // Библиотека для работы с шиной I2C #include <Adafruit_ADS1015.h> // Библиотека для работы с модулями ADS1115 и ADS1015 Adafruit_ADS1115 ads; // Создание объекта ads для общения через него с модулем void setup() { Serial.begin(9600); // Инициализация серийного порта // Установка коэффициента усиления 2/3 ads.setGain(GAIN_TWOTHIRDS); // ВОЗМОЖНЫЕ ВАРИАНТЫ УСТАНОВКИ КУ: // ads.setGain(GAIN_TWOTHIRDS); | 2/3х | +/-6.144V | 1bit = 0.1875mV | // ads.setGain(GAIN_ONE); | 1х | +/-4.096V | 1bit = 0.125mV | // ads.setGain(GAIN_TWO); | 2х | +/-2.048V | 1bit = 0.0625mV | // ads.setGain(GAIN_FOUR); | 4х | +/-1.024V | 1bit = 0.03125mV | // ads.setGain(GAIN_EIGHT); | 8х | +/-0.512V | 1bit = 0.015625mV | // ads.setGain(GAIN_SIXTEEN); | 16х | +/-0.256V | 1bit = 0.0078125mV | ads.begin(); // Инициализация модуля ADS1115 } void loop() { int16_t adc0 = ads.readADC_SingleEnded(0); // Чтение АЦП нулевого канала float u = float(adc0) * 0.1875 / 1000.0; // Расчёт напряжения на входе нулевого канала после резистивного делителя u = u * 25.05 / 6.144; // Расчёт фактического напряжения с учётом резистивного делителя // Вывод фактического напряжения на нулевом канале Serial.print("U="); Serial.print(u); Serial.println("V"); delay(1000); } 

      Пример использования ADS1115

      С целью закрепления материала, создадим проект регулируемого блока питания 0-24V 2A с функцией измерения напряжения и тока, значения которых будут выводиться на 7-сегментный индикатор. Для этого понадобятся следующие элементы:

      • Модуль ADS1115;
      • Модуль DC-DC преобразователя LM2596;
      • Переменный резистор 10k.
      • 8-ми разрядный 7-сегментный индикатор с общим катодом и двумя микросхемами 74HC595;
      • Любой источник постоянного напряжения 24V (в моём случае БП от старого принтера);
      • Линейный стабилизатор L7805;
      • Плата Arduino Pro Mini.
      • Два постоянных резистора 120k и 39k для делителя напряжения;
      • Резистор 0.47 Ohm 5W для измерения силы тока;         

      На рисунке №10 приведена электрическая схема блока питания.

       skhema-bloka-pitaniya.jpg

      Рисунок №10 – схема блока питания

      Для удобства регулировки напряжения на модуле LM2596 подстроечный резистор заменён на выносной переменный. Программный код для блока питания приведён ниже.

      #include <Wire.h> // Библиотека для работы с шиной I2C #include <Adafruit_ADS1015.h> // Библиотека для работы с модулями ADS1115 и ADS1015 Adafruit_ADS1115 ads; // Создание объекта ads для общения через него с модулем #define pinSH_CP 9 // Тактовые импульсы (sclk) #define pinST_CP 8 // Защёлка (rclk) #define pinDS 7 // Данные (dio) // Коды цифр для индикатора (без точек) uint8_t symbolNP[11] = {192, 249, 164, 176, 153, 146, 130, 248, 128, 144, 127}; // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 // Коды цифр для индикатор (с точками) uint8_t symbolP[11] = {64, 121, 36, 48, 25, 18, 2, 120, 0, 16}; // Массив числовых значений, указывающих адрес разряда индикатора uint8_t segmentNumber[] = {0b10000000, 0b01000000, 0b00100000, 0b00010000, 0b00001000, 0b00000100, 0b00000010, 0b00000001}; uint8_t du[3] = {0, 0, 0}; // Массив для вывода напряжения на индикаторе uint8_t di[4] = {0, 0, 0, 0}; // Массив для вывода силы тока на индикаторе uint8_t globalState = 0; // Глобальное состояние системы uint32_t timer = 0; // Пользовательский таймер int16_t adc_u; // Переменная для хранения АЦП напряжения uint32_t adc_u_sum; // Переменная для суммы 8-ми измерений АЦП напряжения int16_t adc_i; // Переменная для хранения АЦП силы тока uint32_t adc_i_sum; // Переменная для суммы 8-ми измерений АЦП силы тока // ФУНЦИЯ ВЫВОДА НАПРЯЖЕНИЯ И СИЛІ ТОКА НА ИНДИКАТОРЕ void indicatorShowUI() { digitalWrite(pinST_CP, LOW); shiftOut(pinDS, pinSH_CP, MSBFIRST, symbolNP[ du[0] ]); shiftOut(pinDS, pinSH_CP, LSBFIRST, segmentNumber[7]); digitalWrite(pinST_CP, HIGH); digitalWrite(pinST_CP, LOW); shiftOut(pinDS, pinSH_CP, MSBFIRST, symbolP[ du[1] ]); shiftOut(pinDS, pinSH_CP, LSBFIRST, segmentNumber[6]); digitalWrite(pinST_CP, HIGH); digitalWrite(pinST_CP, LOW); shiftOut(pinDS, pinSH_CP, MSBFIRST, symbolNP[ du[2] ]); shiftOut(pinDS, pinSH_CP, LSBFIRST, segmentNumber[5]); digitalWrite(pinST_CP, HIGH); digitalWrite(pinST_CP, LOW); shiftOut(pinDS, pinSH_CP, MSBFIRST, symbolNP[ di[0] ]); shiftOut(pinDS, pinSH_CP, LSBFIRST, segmentNumber[3]); digitalWrite(pinST_CP, HIGH); digitalWrite(pinST_CP, LOW); shiftOut(pinDS, pinSH_CP, MSBFIRST, symbolNP[ di[1] ]); shiftOut(pinDS, pinSH_CP, LSBFIRST, segmentNumber[2]); digitalWrite(pinST_CP, HIGH); digitalWrite(pinST_CP, LOW); shiftOut(pinDS, pinSH_CP, MSBFIRST, symbolNP[ di[2] ]); shiftOut(pinDS, pinSH_CP, LSBFIRST, segmentNumber[1]); digitalWrite(pinST_CP, HIGH); digitalWrite(pinST_CP, LOW); shiftOut(pinDS, pinSH_CP, MSBFIRST, symbolNP[ di[3] ]); shiftOut(pinDS, pinSH_CP, LSBFIRST, segmentNumber[0]); digitalWrite(pinST_CP, HIGH); } void setup() { pinMode(pinSH_CP, OUTPUT); pinMode(pinST_CP, OUTPUT); pinMode(pinDS, OUTPUT); analogReference(INTERNAL); // Установка коэффициента усиления 2/3 ads.setGain(GAIN_TWOTHIRDS); // ВОЗМОЖНЫЕ ВАРИАНТЫ УСТАНОВКИ КУ: // ads.setGain(GAIN_TWOTHIRDS); | 2/3х | +/-6.144V | 1bit = 0.1875mV | // ads.setGain(GAIN_ONE); | 1х | +/-4.096V | 1bit = 0.125mV | // ads.setGain(GAIN_TWO); | 2х | +/-2.048V | 1bit = 0.0625mV | // ads.setGain(GAIN_FOUR); | 4х | +/-1.024V | 1bit = 0.03125mV | // ads.setGain(GAIN_EIGHT); | 8х | +/-0.512V | 1bit = 0.015625mV | // ads.setGain(GAIN_SIXTEEN); | 16х | +/-0.256V | 1bit = 0.0078125mV | ads.begin(); // Инициализация модуля ADS1115 } void loop() { while(1) { if(globalState == 0) { // Выполняем 8 замеров АЦП напряжения и тока for(uint8_t i = 0; i < 8; i++) { adc_u_sum += ads.readADC_SingleEnded(0); adc_i_sum += ads.readADC_SingleEnded(1); } // Вычисляем средние значения АЦП напряжения и тока adc_u = adc_u_sum >> 3; adc_i = adc_i_sum >> 3; adc_u_sum = 0; adc_i_sum = 0; // Расчёт напряжения (для удобства вывода на индикатор, увеличиваем в 10 раз) uint32_t u = map(adc_u, 0, 32768, 0, 250); // Преобразование значения напряжения для вывода его на индикатор в формате XX.X du[0] = u / 100; // Десятки Вольт du[1] = (u % 100 - u % 10) / 10; // Единицы Вольт du[2] = u % 10; // Десятые доль Вольта // Расчёт силы тока (для удобства вывода на индикатор, переволим в миллиамперы) uint32_t i = map(adc_i, 0, 32768, 0, 1307); // (I=U/R =6.144/0.47=1307) // Преобразование значения силы тока для вывода его на индикатор в формате XXXX di[0] = i / 1000; di[1] = (i % 1000 - i % 100) / 100; di[2] = (i % 100 - i % 10) / 10; di[3] = i % 10; timer = millis(); globalState = 1; } // Вывод значений с периодом 2 раза в секунду else if(globalState == 1) { if((millis() - timer) > 500) globalState = 0; } indicatorShowUI(); } } 

      При изготовлении блока питания оказалось, что у моего индикатора неисправен 3-й разряд слева, поэтому десятую долю вольта я перенёс на четвёртый разряд, а третий просто оставил погасшим. В приведённой выше программе все разряды прописаны как надо. В итоге получился быстрый в изготовлении и очень удобный регулируемый блок питания, который 100% пригодится каждому радиолюбителю.


      FAQ. Часто задаваемые вопросы 

      1. Как из среды Arduino IDE работать сразу с несколькими модулями ADS1115?
      Ответ. Для начала необходимо задать разные адреса для каждого модуля (максимум 4 шт.). Сделать это можно ориентируясь на рисунок №3. Далее в программе необходимо создать для каждого модуля свой экземпляр класса с указанием адреса и в последствии работать с каждым из них:

      #include <Wire.h> #include <Adafruit_ADS1015.h> Adafruit_ADS1115 ads1(0x48); Adafruit_ADS1115 ads2(0x49); Adafruit_ADS1115 ads1(0x4B); Adafruit_ADS1115 ads1(0x4A); void setup() { ads1.setGain(GAIN_TWOTHIRDS); ads2.setGain(GAIN_TWOTHIRDS); ads3.setGain(GAIN_TWOTHIRDS); ads4.setGain(GAIN_TWOTHIRDS); ads1.begin(); ads2.begin(); ads3.begin(); ads4.begin(); } void loop() { ads1.readADC_SingleEnded(0); ads3.readADC_SingleEnded(3); // и.т.д....... } 

      2. Как изменить частоту дискретизации через регистры модуля?
      Ответ. Частоту дискретизации можно изменить путём выбора значения в конфигурационном регистре, который имеет адрес 0x01. В данном регистре за частоту отвечают биты 7-5. Их значение и соответствующая частота отражены в таблице ниже

      tablica-2.jpg  

      3. Почему АЦП ADS1115 при чтении выдаёт максимальное значение 32768, а не 65535, как положено для 16 бит?
      Ответ. Дело в том, что АЦП выдаёт знаковое 16-битное значение, поэтому максимальное показание будет 32768, а не 65535. Получить все 65535 значений получиться только в дифференциальном режиме при условии, когда на один из выводов будет подан источник опорного напряжения, а второй вывод будет являться измерительным.

      4.Насколько сильно ADS1115 боится перенапряжения?
      Ответ. Модуль довольно чувствителен к перенапряжению как по питанию, так и по входам. Вероятность выхода его из строя очень высока, если напряжение будет превышено более чем на 5% от допустимого.

      Это интересно

      Драйвер шагового двигателя A4988
      Модули
      Драйвер шагового двигателя A4988
      1 января 2024
      RFID-модуль RC522
      Модули
      RFID-модуль RC522
      1 января 2024
      Реле электромеханическое 10А 5В
      Модули
      Реле электромеханическое 10А 5В
      1 января 2024
      Драйвер двигателя L9110S
      Модули
      Драйвер двигателя L9110S
      1 января 2024
      Nodemcu Lua Wi-Fi на Esp8266
      Модули
      Nodemcu Lua Wi-Fi на Esp8266
      1 января 2024
      Wi-Fi модуль ESP-01
      Модули
      Wi-Fi модуль ESP-01
      1 января 2024
      • Комментарии
      Загрузка комментариев...
      Назад к списку
      • Все публикации248
        • 3D принтеры38
        • 3D печать57
        • ЧПУ10
        • Датчики27
        • Модули38
        • Arduino механика6
        • Arduino платы8
        • Дисплеи6
        • Кейсы1
        • Компоненты13
        • Мировые новости35
        • Проекты7
        • Сопутствующие2
      Связаться с нами
      8 (800) 500-45-93
      8 (800) 500-45-93отдел продаж Россия
      8 (495) 565-35-93отдел продаж Москва
      E-mail

      info@3d-diy.ru — отдел продаж

      support@3d-diy.ru — тех. поддержка

      Адрес
      Москва, Павловская улица, 27с7
      м. Тульская
      Режим работы
      пн – пт 11:00—19:00
      8.05 – 11.05 не работаем

      info@3d-diy.ru — отдел продаж

      support@3d-diy.ru — тех. поддержка

      Москва, Павловская улица, 27с7
      м. Тульская
      Магазин
      Бренды
      Акции
      Каталог
      Услуги
      Компания
      О компании
      Реквизиты
      Партнеры
      Клиенты
      Вакансии
      Информация
      Гарантия на товар
      Возврат товара
      Политика конфиденциальности
      Договор-оферта
      FAQ
      Помощь
      Условия оплаты
      Условия доставки
      Товары под заказ
      Гос. закупки
      Как сделать заказ
      Вопрос-ответ
      2013 - 2025 © 3DiY (Тридиай) - интернет-магазин комплектующих для 3D принтеров, ЧПУ станков и робототехники
      Конфиденциальность
      Оферта
      ГлавнаяКаталог0Корзина0ИзбранныеКабинет
      Уважаемые клиенты
      8-9 мая - выходные
      С праздником!