Акции
Блог
О 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 — отдел продаж

    print@3d-diy.ru — 3D печать на заказ

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

    buh@3d-diy.ru — Бухгалтерия
    Адрес
    Москва, Павелецкая набережная, 2с1
    Как до нас добраться, см. тут
    Режим работы
    пн - пт 09:00—18:00
    3DIY
    Войти
    0Сравнение
    0Избранное
    0Корзина
    3D принтеры3D сканерыПластик для 3D принтераФотополимерыКомплектующие 3DКомплектующие ЧПУЗапчасти 3D принтеров по брендам3D печать на заказ
    3DIY
    Войти
    0Сравнение
    0Избранное
    0Корзина
    3DIY
    Телефоны
    8 (800) 500-45-93отдел продаж Россия
    8 (495) 565-35-93отдел продаж Москва
    E-mail
    info@3d-diy.ru — отдел продаж

    print@3d-diy.ru — 3D печать на заказ

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

    buh@3d-diy.ru — Бухгалтерия
    Адрес
    Москва, Павелецкая набережная, 2с1
    Как до нас добраться, см. тут
    Режим работы
    пн - пт 09:00—18:00
    0
    0
    0
    • Кабинет
    • 0Сравнение
    • 0Избранное
    • 0Корзина
    • Бренды
    • Акции
    • Услуги
      • Услуги
      • 3D печать
        • 3D печать
        • 3D печать пластиком FDM/FFF
        • 3D печать фотополимером
    • Компания
      • Компания
      • О компании
      • Реквизиты
      • Партнеры
      • Клиенты
      • Вакансии
    • Блог
    • Информация
      • Информация
      • Гарантия на товар
      • Возврат товара
      • Положение о персональных данных
      • Политика конфиденциальности
      • Согласие на получение рекламы
      • Пользовательское соглашение
      • Согласие на обработку персональных данных
      • Использование cookie-файлов
      • Договор-оферта
    • Контакты
      • Контакты
      • Как до нас добраться
    8 (800) 500-45-93отдел продаж Россия
    • Телефоны
    • 8 (800) 500-45-93 отдел продаж Россия
    • 8 (495) 565-35-93 отдел продаж Москва
    • info@3d-diy.ru — отдел продаж

      print@3d-diy.ru — 3D печать на заказ

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

      buh@3d-diy.ru — Бухгалтерия
    • Москва, Павелецкая набережная, 2с1
      Как до нас добраться, см. тут
    • пн - пт 09:00—18:00
    Главная
    Блог
    Модули
    Драйвер двигателя L298N

    Драйвер двигателя L298N

    Драйвер двигателя L298N
    Модули 1 января 2024

    Содержание

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

    Обзор драйвера L298N

    Драйвер L298N используется радиолюбителями для многофункционального управления двигателями постоянного тока. Схема модуля, состоящая из двух H-мостов, позволяет подключать к нему один биполярный шаговый двигатель или одновременно два щёточных двигателя постоянного тока. При этом есть возможность изменять скорость и направление вращения моторов. Управление осуществляется путём подачи соответствующих сигналов на командные входы, выполненные в виде штыревых контактов. На рисунке №1 показан внешний вид модуля с кратким описанием всех его составляющих.
     

    l298n.jpg 

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

    • OUT1 и OUT2 – разъёмы для подключения первого щёточного двигателя или  первой обмотки шагового двигателя;
    • OUT3 и OUT4 – разъёмы для подключения второго щёточного двигателя или  второй обмотки шагового двигателя;
    • VSS – вход для питания двигателей (максимальный уровень +35V);
    • GND – общий провод (не забываем соединить с аналогичным входом Arduino!!!);
    • Vs – вход для питания логики +5V. Через него непосредственно запитывается сама микросхема L298N. Есть ещё второй способ питания, при котором 5V для L298N берётся от встроенного в модуль стабилизатора напряжения. В таком случае на разъём подаётся только питание для двигателей (Vss), контакт Vs остаётся не подключенным, а на плате устанавливается перемычка питания от стабилизатора, который ограничит питающее моторы напряжение до приемлемых 5V.
    • IN1, IN2 – контакты управления первым щёточным двигателем или первой обмоткой шагового двигателя.
    • IN3, IN4 – контакты управления вторым щёточным двигателем или второй обмоткой шагового двигателя.
    • ENA, ENB –  контакты для активации/деактивации первого и второго двигателей или соответствующих обмоток ШД. Подача логической единицы на эти контакты разрешает вращение двигателей, а логический ноль – запрещает. Для изменения скорости вращения щёточных моторов на эти контакты подаётся ШИМ-сигнал. Для работы с шаговым двигателям, как правило, на эти контакты ставят перемычки, обеспечивающие постоянную подтяжку к +5V.
    На рисунке №2 показана электрическая схема модуля L298N.  

    elektricheskaya-skhema-modulya-L298N.gif
    Рисунок №2 – электрическая схема модуля L298N

    Как видно из вышеприведенной схемы, основным элементом модуля является микросхема L298N, в состав которой входят два полноценных H-моста. Каждый H-мост выполнен в виде сборки из четырёх транзисторных ключей с включённой в центре нагрузкой в виде обмотки двигателя. Такой подход позволяет менять полярность в обмотке и как следствие направление вращения двигателя путём чередования пар открытых и закрытых ключей.  Более наглядно этот процесс демонстрирует рисунок №3.

    tranzistornye-mosty-N-tipa.gif

    Рисунок №3 – транзисторные мосты Н-типа

    На рисунке изображены два транзисторных моста Н-типа. В первом случае на вход IN1 подаётся логическая единица, а на вход IN2 – логический ноль. Так как транзисторы в схеме моста имеют разный тип проводимости, то при таком входном сигнале транзисторы Т1 и Т4 останутся в закрытом состоянии, в то время, как через транзисторы Т2 и Т3 потечёт ток. Ввиду того, что единственный путь протекания тока лежит через обмотку двигателя, то последний окажется подключен правой клеммой к плюсу питания, а левой к минусу. Всё это приведёт к вращению мотора в определённом направлении. Абсолютно противоположная картина показана на нижнем рисунке. Здесь IN3 установлен в логический ноль, а IN4 в логическую единицу. Теперь ток течёт в обратном направлении (левая клемма – плюс, правая – минус), заставляя второй двигатель крутиться в противоположную сторону.
    Где приобрести модули для ардуино?Купить модули Arduino можно в нашем магазине 3DIY.

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

    • Напряжение питания логики: 5V;
    • Потребляемый логикой ток: 36mA;
    • Напряжение питания моторов: от 5V до 35V;
    • Рабочий ток драйвера: 2 А;
    • Пиковый ток драйвера 3 А;
    • Максимальная мощность: 20 Вт (при температуре 75о С);
    • Диапазон рабочих температур: -25оС…+135оС;
    • Размеры модуля: 43.5 х 43.2 х 29.4 мм;

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

    Работать с модулем L298N довольно просто и комфортно. Здесь не придётся изучать тонны литературы с описанием замороченных протоколов. Все сводится к простому переключению логических уровней на выводах Arduino плюс к генерации ШИМ, если требуется управлять скоростью вращения.
    Так как драйвер способен управлять двумя типами моторов (щёточным или шаговым), то и работа с ним  строится по-разному. Рассмотрим для начала подключение обычных щёточных моторов постоянного тока и управление ими с помощью платы Arduino Nano. На рисунке №4 показана соответствующая схема подключения.


    chema-podklucheniya-l298n.jpg

    Рисунок №4 – схема подключения двух щёточных двигателей постоянного тока

    Следует обратить внимание, что в схеме предусмотрена возможность управления скоростью вращения, поэтому выводы ENA и ENB драйвера подключены к пинам Arduino, способным выдавать ШИМ-сигнал. Arduino питается от отдельного источника 7-12 В. Если напряжение питания моторов лежит в этом же диапазоне, то можно объединить питающие цепи в одну общую. Также необходимо следить за тем, чтобы минусовые провода всех элементов схемы были соединены  между собой.
    Для демонстрации возможностей модуля, напишем скетч, который будет вращать моторы с различной скоростью и периодически менять направления их вращения. Ниже приведена программа с подробными комментариями, которая реализует задуманный алгоритм.
    #define PIN_ENA 9 // Вывод управления скоростью вращения мотора №1 #define PIN_ENB 3 // Вывод управления скоростью вращения мотора №2 #define PIN_IN1 7 // Вывод управления направлением вращения мотора №1 #define PIN_IN2 6 // Вывод управления направлением вращения мотора №1 #define PIN_IN3 5 // Вывод управления направлением вращения мотора №2 #define PIN_IN4 4 // Вывод управления направлением вращения мотора №2 uint8_t power = 105; // Значение ШИМ (или скорости вращения) void setup() { // Установка всех управляющих пинов в режим выхода pinMode(PIN_ENA, OUTPUT); pinMode(PIN_ENB, OUTPUT); pinMode(PIN_IN1, OUTPUT); pinMode(PIN_IN2, OUTPUT); pinMode(PIN_IN3, OUTPUT); pinMode(PIN_IN4, OUTPUT); // Команда остановки двум моторам digitalWrite(PIN_IN1, LOW); digitalWrite(PIN_IN2, LOW); digitalWrite(PIN_IN3, LOW); digitalWrite(PIN_IN4, LOW); } void loop() { // Вращаем моторы в одну сторону с разной скоростью while(power < 255) { analogWrite(PIN_ENA, power); // Устанавливаем скорость 1-го мотора analogWrite(PIN_ENB, power); // Устанавливаем скорость 2-го мотора // Задаём направление для 1-го мотора digitalWrite(PIN_IN1, HIGH); digitalWrite(PIN_IN2, LOW); // Задаём направление для 2-го мотора digitalWrite(PIN_IN3, HIGH); digitalWrite(PIN_IN4, LOW); delay(3000); // Пауза 3 секунды power += 30; // Увеличиваем скорость } power = 225; // Вращаем моторы в другую сторону с разной скоростью while(power > 105) { analogWrite(PIN_ENA, power); // Устанавливаем скорость 1-го мотора analogWrite(PIN_ENB, power); // Устанавливаем скорость 2-го мотора // Задаём направление для 1-го мотора digitalWrite(PIN_IN1, LOW); digitalWrite(PIN_IN2, HIGH); // Задаём направление для 2-го мотора digitalWrite(PIN_IN3, LOW); digitalWrite(PIN_IN4, HIGH); delay(3000); // Пауза 3 секунды power -= 30; // Уменьшаем скорость } power = 105; }
    В самом верху программы задаются макроопределения всех выводов, используемых в проекте. В функции Setup() все выводы Arduino Nano, участвующие в управлении, задаются в качестве выхода. На выводах IN1-IN4 выставляются логические нули, чтобы двигатели гарантированно не вращались в момент старта программы. В главном цикле, программа обеспечивает вращение двигателей в одном направлении, увеличивая их скорость каждые 3 секунды. Когда разгон вырастает до максимального, моторы начинают вращаться в обратном направлении, постепенно замедляя скорость. На пике сбрасывания скорости, алгоритм повторяется заново. Как видим, сложного здесь ничего нет. Теперь разберёмся с шаговым двигателем. На рисунке №5 показана схема его подключения к плате Arduino Nano.

    chema-podklucheniya-SHD.jpg

    Рисунок №5 - схема подключения шагового двигателя к Arduino Nano

    В качестве демонстрационной модели использован популярный шаговый двигатель NEMA17. Он способен вращаться с частотой до 60 оборотов в минуту и имеет разрешающую способность 200 шагов на один оборот. Следует обратить внимание, что выводы ENA и ENB должны быть подтянуты к +5V путём установки перемычек на самом модуле. Таким образом управляющему сигналу будет разрешено проходить на обмотки шагового двигателя. Также, в случае использования двигателя NEMA17, напряжение его питания не должно превышать 12V. Ниже приведён пример кода с комментариями, который заставит двигатель вращаться в разные стороны, меняя своё направление после каждого полного оборота. В программе использована стандартная библиотека Stepper.h, которая значительно упрощает процесс разработки ПО для проектов с шаговыми двигателями.
     #include <Stepper.h> // Подключение библиотеки для работы с ШД #define steps 200 // Количество шагов на один оборот // Создание экземпляра класса для работы с ШД. казываем кол-во шагов на один оборот // и пины Arduino, к которым подключены обмотки двигатедя Stepper myStepper(steps, 7, 6, 5, 4); void setup() { myStepper.setSpeed(60); // Устанавливаем скорость вращения об./мин. } void loop() { myStepper.step(steps); // Вращаем двигатель в одну сторону на 200 шагов delay(1000); // Ждём одну секунду myStepper.step(-steps); // Вращаем двигатель в обратную сторону на 200 шагов delay(1000); // Ждём одну секунду } 
    Как можно заметить, библиотека сокращает код до минимума, так что разобраться в нём не составит никакого труда даже начинающему программисту.
    Необходимы датчики Arduino?Ардуино датчики купить можно в нашем магазине с доставкой по всей России.

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

    Модуль L298N применяется в устройствах, где есть необходимость управления двигателями. Такими устройствами могут быть различного рода ЧПУ, 3D принтеры, роботы, механизмы вендинговых аппаратов и т.п. Для того, чтобы глубже вникнуть в тему работы с драйвером, создадим небольшой проект роботизированной платформы, которая будет передвигаться по командам с любого ИК-пульта дистанционного управления. Робот будет иметь два мотор-редуктора, связанных напрямую с колёсами, а также ИК-приёмник, способный воспринимать команды пульта ДУ. В качестве “мозга” выступит плата Arduino Nano. На рисунке №6 показана электрическая схема робота.


    chema.jpg

    Рисунок №6 - электрическая схема робота-машинки

    Для приёма управляющих сигналов с ИК-пульта, в проекте будет использоваться популярная микросхема TSOP-1738. Удобство её заключается в том, что она напрямую подключается к плате Arduino и поддерживает большое разнообразие пультов управления. Цифра 38 в конце маркировки означает несущую частоту (кГц), с которой ваш пульт передаёт сигнал. Существует несколько модификаций данной микросхемы на разные несущие частоты. Ниже приведён список возможных вариантов.
    • TSOP-1730 (30 кГц);
    • TSOP-1733 (33 кГц);
    • TSOP-1736 (36 кГц);
    • TSOP-1737 (37.6 кГц);
    • TSOP-1738 (38 кГц);
    • TSOP-1740 (40 кГц);
    • TSOP-1756 (56 кГц);
    Следует помнить, что помимо несущей частоты, каждая кнопка пульта дистанционного управления имеет свой уникальный код, который предварительно необходимо считать и вставить в текст основного скетча. В данном проекте будет использоваться всего 4 кнопки: “вперёд”, “назад”, “вправо” и “влево”. Определить коды поможет библиотека IRremote.
    Итак, собираем всё по вышеприведенной схеме, устанавливаем библиотеку IRremote, и для начала заливаем в Arduino этот скетч:
    #include <IRremote.h> #define RECV_PIN 13; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); irrecv.resume(); } delay(100); } 
    После запуска, в мониторе будут отображаться коды клавиш, нажатые на пульте ДУ. Нам необходимо выбрать 4 кнопки для управления движением робота и выписать их коды для дальнейшего использования в основной программе. У меня получилось следующее:
    • Кнопка “Вперёд” - 0xB4B4E21D
    • Кнопка “Назад” - 0xB4B412ED
    • Кнопка “Вправо” - 0xB4B45AA5
    • Кнопка “Влево” - 0xB4B49A65
    На этом подготовка к реализации проекта завершена, можно приступать к сборке шасси. Здесь можно дать волю своей фантазии. В моём случае получилось следующее (рисунок №7).

    robot1.jpg

    Рисунок №7 - пример реализации шасси для робота

    В пластиковом корпусе удалось разместить все необходимые элементы схемы, а именно: источник питания, Arduino Nano и модуль L298N. ИК-приемник TSOP-1738 был вынесен на верх корпуса, чтобы обеспечить надёжную связь с пультом ДУ. Ведущие колёса с моторами закреплены снизу при помощи двухстороннего скотча. В качестве переднего колеса используется поворотный ролик от кресла. На рисунке №8 показан итоговый результат сборки.

    robot 2.jpg

    Рисунок №8 - робот готов к программированию

    Ниже приведён исходный код управления роботом-машинкой с подробными комментариями.
     #define PIN_RECV 13 // Вывод, к которому подключен ИК-приёмник #define PIN_IN1 7 // Вывод управления правого колеса #define PIN_IN2 6 // Вывод управления правого колеса #define PIN_IN3 5 // Вывод управления левого колеса #define PIN_IN4 4 // Вывод управления левого колеса #define PIN_ENA 9 // Вывод управления скоростью правого колеса #define PIN_ENB 3 // Вывод управления скоростью левого колеса #define SPEED 255 // Скорость бобо-машинки (0-255) // Коды с пульта управления (необходимо вставить свои!!!) #define BUTTON_FORWARD 0xB4B4E21D // Код кнопки ВПЕРЁД #define BUTTON_LEFT 0xB4B49A65 // Код кнопки ВЛЕВО #define BUTTON_RIGHT 0xB4B45AA5 // Код кнопки ВПРАВО #define BUTTON_BACK 0xB4B412ED // Код кнопки НАЗАД #include <IRremote.h> // Библиотека для работы с ИК-приёмником IRrecv irrecv(PIN_RECV); // Создание объекта работы с ИК-приёмником decode_results results; // Переменная для хранения результата декодирования void setup() { irrecv.enableIRIn(); // Инициализация ИК-приёмника // Настройка на выход всех управляющих пинов Arduino pinMode(PIN_IN1, OUTPUT); pinMode(PIN_IN2, OUTPUT); pinMode(PIN_IN3, OUTPUT); pinMode(PIN_IN4, OUTPUT); pinMode(PIN_ENA, OUTPUT); pinMode(PIN_ENB, OUTPUT); // Остановка моторов digitalWrite(PIN_IN1, LOW); digitalWrite(PIN_IN2, LOW); digitalWrite(PIN_IN3, LOW); digitalWrite(PIN_IN4, LOW); analogWrite(PIN_ENA, SPEED); analogWrite(PIN_ENB, SPEED); } void loop() { // Ждём поступления сигнала с пульта ДУ if (irrecv.decode(&results)) { // Анализируем полученный результат switch(results.value) { case BUTTON_FORWARD: // Движение ВПЕРЁД digitalWrite(PIN_IN1, HIGH); digitalWrite(PIN_IN2, LOW); digitalWrite(PIN_IN3, LOW); digitalWrite(PIN_IN2, HIGH); break; case BUTTON_LEFT: // Поворот ВЛЕВО digitalWrite(PIN_IN1, HIGH); digitalWrite(PIN_IN2, LOW); digitalWrite(PIN_IN3, LOW); digitalWrite(PIN_IN2, LOW); break; case BUTTON_RIGHT: // Поворот ВПРАВО digitalWrite(PIN_IN1, LOW); digitalWrite(PIN_IN2, LOW); digitalWrite(PIN_IN3, LOW); digitalWrite(PIN_IN2, HIGH); break; case BUTTON_BACK: // Движение НАЗАД digitalWrite(PIN_IN1, LOW); digitalWrite(PIN_IN2, HIGH); digitalWrite(PIN_IN3, HIGH); digitalWrite(PIN_IN2, LOW); break; } irrecv.resume(); } } 

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

    1. Какое минимальное напряжение можно подавать на вход питания двигателей модуля?
    Ответ: Напряжение питания силовой части не рекомендуется опускать ниже 7В. Согласно документации, оно должно быть выше напряжения логики на 2,5В.
     
    2. Какой ток может обеспечить внутренний стабилизатор 5 В?
    Ответ: Внутренний 5-вольтовый стабилизатор модуля может выдать ток до 0.5 А.
      
    3. Можно ли управлять выводами ENA и ENB без использования ШИМ?
    Ответ: Можно управлять функцией digitalWrite, но в таком случае регулировка скорости будет невозможна. Управление будет сводиться к двум состояниям: вкл./выкл.
     
    4. Почему двигатель начинает вращаться при ШИМ больше чем 97, а до этого просто стоит на месте? Как сделать так, чтобы скорость могла регулироваться от 0?
    Ответ: Разные двигатели имеют разные технические характеристики и как следствие разную стартовую мощность. Поэтому для каждого конкретного случая будет своё минимальное значение ШИМ, при котором двигатель начнёт вращаться с начальной скоростью. Фактическая регулировка от 0 невозможна, так как двигатель попросту не хватит энергии. В таких случаях очень удобно использовать функцию map(). Например, оформить регулировку от 0 до 100% можно следующим образом:

    uint8_t speed = 90; // Скорость двигателя в процентах
    speed = map(speed, 96, 255, 0, 100); // Диапазон ШИМ 97-255 преобразуем в проценты 0-100
    analogWrite(speed);

      Товары из статьи

      Быстрый просмотр
      Драйвер шагового двигателя L298Nimageimage
      590 ₽
      708 ₽
      -17%
      Драйвер шагового двигателя L298N
      0
      0
      В наличии
      шт
      на 590 ₽

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

      Драйвер шагового двигателя 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
      • Комментарии
      Загрузка комментариев...
      Назад к списку
      • Все публикации277
        • 3D принтеры59
        • 3D печать64
        • ЧПУ10
        • Датчики27
        • Модули38
        • 3D сканеры1
        • 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 — отдел продаж

      print@3d-diy.ru — 3D печать на заказ

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

      buh@3d-diy.ru — Бухгалтерия
      Адрес
      Москва, Павелецкая набережная, 2с1
      Как до нас добраться, см. тут
      Режим работы
      пн - пт 09:00—18:00
      info@3d-diy.ru — отдел продаж

      print@3d-diy.ru — 3D печать на заказ

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

      buh@3d-diy.ru — Бухгалтерия
      Москва, Павелецкая набережная, 2с1
      Как до нас добраться, см. тут
      Магазин
      Бренды
      Акции
      Каталог
      Услуги
      Компания
      О компании
      Реквизиты
      Партнеры
      Клиенты
      Вакансии
      Информация
      Гарантия на товар
      Возврат товара
      Положение о персональных данных
      Политика конфиденциальности
      Согласие на получение рекламы
      Пользовательское соглашение
      Согласие на обработку персональных данных
      Использование cookie-файлов
      Договор-оферта
      Помощь
      Условия оплаты
      Условия доставки
      Товары под заказ
      Гос. закупки
      Как сделать заказ
      Вопрос-ответ
      2013 - 2026 © 3DiY (Тридиай) - интернет-магазин комплектующих для 3D принтеров, ЧПУ станков и робототехники
      Конфиденциальность
      Оферта
      ГлавнаяКаталог0Корзина0ИзбранныеКабинет0Сравнение
      d =
      Наш сайт использует куки. Продолжая им пользоваться, вы соглашаетесь на обработку персональных данных в соответствии с политикой конфиденциальности.
      Согласен