Обозначение радиоэлементов на схемах. Ардуино: управление двигателем постоянного тока, L293D Транзисторный н мост

Рассмотрим драйвер электродвигателей на транзисторах и микросхеме L298, разберемся с принципом работы H-моста. Узнаем особенности подключения драйверов на L298 к разным двигателям и источникам питания, проведем простые эксперименты с шаговыми движками и двигателями постоянного напряжения. Подключение к Raspberry Pi и простейшие программы для теста управления драйвером.

Что такое H-мост

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

Почему такое название? - потому что схема включения двигателя и переключателей для коммутации напоминает латинскую букву H. Принципы работы H-моста показан нарисунке ниже.

Рис. 1. Как работает H-мост, принцип коммутации двигателя для вращения в разные стороны.

Как видим, при помощи 4х переключателей мы можем подключать мотор к источнику питания в разной полярности, что в свою очередь заставит вращаться его вал в разные стороны. Переключатели можно заменить на реле, или же на мощные электронные ключи на транзисторах.

Важно заметить что НЕЛЬЗЯ допускать замыкания двух ключей на одной стороне H-моста, поскольку получится короткое замыкание, при проектировании схемы моста нужно заложить это правило в логику и таким образом реализовать защиту.

Схема простого H-моста на кремниевых транзисторах

Собрать простой драйвер двигателя постоянного тока (или для обмотки шагового двигателя) можно на распространенных кремниевых транзисторах.

Рис. 2. Принципиальная схема простого драйвера электродвигателя на кремниевых транзисторах.

Такой драйвер позволяет управлять электродвигателем постоянного тока с питающим напряжением до 25В (для КТ817А, КТ816А) и до 45В (для КТ817Б-Г, КТ816Б-Г) с током не более 3А. При большом рабочем и нагрузочном токе двигателя выходные транзисторы КТ817 и КТ816 должны быть установлены на радиаторы достаточного размера.

Установка диодов VD1-VD2 обязательна, они нужны для защиты выходных транзисторов от обратного тока. На их место можно поставить отечественные КД105А или другие на больший ток.

Собрав две такие схемки (2х6 транзисторов) можно также управлять шаговым двигателем или же двумя двигателями постоянного тока.

Для того чтобы не городить огород из 12 транзисторов можно применить специализированные микросхемы, ниже мы рассмотрим пример с микросхемой L298 и готовым блоком на ее основе.

Микросхема L298, характеристики и возможности

Интегральная микросхема L298 - это мощный универсальный мостовой драйвер для управления двигателями постоянного тока, шаговыми движками, электромагнитными реле и электромагнитами (соленоидами). В микросхеме содержится два H-моста, выполненных на мощных транзисторах, а также логика совместимая с TTL.

Рис. 3. Микросхема L298 в корпусах Multiwatt15 PowerSO20.

Основные технические характеристики:

  • Рабочее напряжение - до 46В;
  • Максимальный постоянный ток - 4А (с радиатором);
  • Низкое напряжение насыщения;
  • Защита от перегрева;
  • Логический "0" = напряжение до 1,5В.

Где можно применить драйвер на микросхеме L298? - несколько идей:

  • Управление шаговым двигателем;
  • Управление двумя двигателями постоянного тока (DC motors);
  • Коммутация катушек мощных реле;
  • Управление соленоидами (электромагнитами).

Если посмотреть на структурную схему микросхему L298 то мы можем увидеть что-то на подобии схемы на рисунке 2, только с дополнительными логическими элементами.

Рис. 4. Внутренняя схема микросхемы L298N - мощный двойной H-мост.

Для каждого H-моста мы имеем по 3 входа: In1 - для подачи напряжения в одном направлении, In2 - в противоположном, и еще один вход En для подачи питания на выходные транзисторы моста.

Таким образом мы можем установить направление прохождения тока и управлять его подачей (включено или выключено, а также ШИМ).

Схема драйвера на микросхеме L298

Ниже представлена простая схема для драйвера двигателей на микросхеме L298N. Управление осуществляется по четырем проводам (вместо шести у L298) благодаря использованию дополнительных инверторов в микросхеме CD4011.

Рис. 5. Принципиальная схема драйвера электродвигателей на микросхеме L298N.

Для питания логики обеих микросхем нужно стабилизированное напряжение +5В (P2), можно использовать интегральный стабилизатор, например L7805 или же питать логику от имеющейся линии питания +5В. Для подачи питающего напряжения на двигатели используется отдельная линия питания P1.

Выводы P4, P5 используются для установки полярности каждого из каналов, а выводы P6, P7 - разрешают подачу питания на каскады (ключи) внутреннего H-моста для каждого канала.

Микросхему CD4011 можно заменить на отечественную К176ЛА7. Диоды Шоттки можно поставить другого номинала, на 35В/4А и более. Если не планируется ограничивать ток обмоток двигателя(двигателей) то низкоомные ограничивающие резисторы R9-R10 можно исключить из схемы, заменив их на перемычки.

В интернете можно заказать готовый модуль на L298, правда в нем будет 6 входов для управления.

Рис. 6. Готовые модули на L298.

Я для своих нужд приобрел готовый модуль по типу как на рисунке слева. В нем присутствует микросхема L298 и небольшой стабилизатор для подачи +5В на логику микросхемы.

Для подключения данной платки важно четко уяснить одну особенность:

  • Если для питания двигателей используется напряжение более чем 12В то перемычку нужно убрать и подавать отдельно 5В на выделенный для этого коннектор
  • Если питание двигателей будет осуществляться от напряжения 5-12В то перемычку нужно утсановить и дополнительное питание 5В не понадобится.

Если же подать на двигатели, например 20В и оставить перемычку установленной, то на модуле выгорит микросхемка-стабилизатор на 5В. Почему разработчики не установили интегральный стабилизатор с более широким диапазоном входных напряжений - не понятно.

Для того чтобы сэкономить два входа при подключении такого блока к Arduino или Raspberry Pi можно добавить часть схемы на CD4001, как на рисунке 5.

L298 + DC двигатели + Raspberry Pi

Для данного эксперимента к модулю на L298 были подключены два двигателя постоянного тока. Питание всего модуля осуществляется от одного аккумулятора на 6В. Поскольку это напряжение меньше 12В (смотрим выше описание) то перемычку внутреннего стабилизатора оставляем установленной и дополнительное питание +5В для логики не потребуется.

Перемычки "ENA" и "ENB", которые разрешают подачу питания на выходные мосты, оставлены установленными. Таким образом, для управления каждым из двигателей используем оставшиеся четыре входа: IN1, IN2, IN3, IN4.

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

Где взять +5В? - в данном случае это напряжение присутствует на разъеме питания, справа возле GND. Для теста можно воспользоваться кусочком проволоки - перемычкой.

Теперь подключим наш модуль к Raspberry Pi и напишем простую тестовую программу на Python. Для подключения модуля я использовал выводы GPIO вот в таком соответствии:

Рис. 7. L298 + Raspberry Pi + электродвигатели постоянного тока.

Мини-компьютер у меня питается через понижающий импульсный стабилизатор от второго аккумулятора на 6В. Перейдем к написанию программы для нашего эксперимента, наша цель - управлять вращением вала каждого из двигателей при помощи клавиатуры, которая подключена к Raspberry Pi или же удаленно по SSH, VNC.

Теперь испробуем простую программу, написанную на Python, которая поможет понять принцип управления электродвигателем постоянного тока.

Загружаем малинку, открываем Терминал или же подключаемся к ней удаленно при помощи SSH. Создаем новый файл и открываем его для редактирования при помощи команды:

Nano /home/pi/l298_dc_motors_test.py

Вставляем в редактор код скрипта на Python, который приведен ниже:

#!/usr/bin/env python # -*- coding: utf-8 -*- import time import RPi.GPIO as GPIO # Подготавливаем пины GPIO. GPIO.cleanup() GPIO.setmode(GPIO.BCM) GPIO.setup(4, GPIO.OUT) GPIO.output(4, GPIO.LOW) GPIO.setup(17, GPIO.OUT) GPIO.output(17, GPIO.LOW) # Включаем вращение двигателя 1 в одну сторону. GPIO.output(4, GPIO.HIGH) # ждем 5 секунд. time.sleep(5) # Выключаем двигатель 1. GPIO.output(4, GPIO.LOW) # ждем 10 секунд. time.sleep(10) # Включаем вращение двигателя 1 в другую сторону. GPIO.output(17, GPIO.HIGH) # ждем 5 секунд. time.sleep(5) # Выключаем двигатель 1. GPIO.output(17, GPIO.LOW)

Выходим из редактора и сохраняем файл. Делаем скрипт исполняемым и запускаем его:

Chmod +x /home/pi/l298_dc_motors_test.py /home/pi/l298_dc_motors_test.py

После запуска скрипта один из двигателей начнет вращаться в одну сторону на протяжении пяти секунд, потом он выключится и через 10 секунд начнет вращаться в другую сторону на протяжении 5-ти секунд.

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

Важно чтобы в данном примере кода соблюдались отступы, об этом я уже писал раньше .

#!/usr/bin/env python # -*- coding: utf-8 -*- import os import sys import curses import time import RPi.GPIO as GPIO # Установим номера пинов GPIO, с которыми будем работать M1_RIGHT = 4 M1_LEFT = 17 M2_RIGHT = 27 M2_LEFT = 22 # Функция для подготовки пинов GPIO def setup(*ports): GPIO.cleanup() # Режим именования пинов по названию, а не по номеру на плате GPIO.setmode(GPIO.BCM) for port in ports: # Установка пина на вывод + низкий уровень "0" GPIO.setup(port, GPIO.OUT) GPIO.output(port, GPIO.LOW) # Функция для установки низкого уровня на всех пинах (выключение) def stop_all(): GPIO.output(M1_LEFT, GPIO.LOW) GPIO.output(M1_RIGHT, GPIO.LOW) GPIO.output(M2_LEFT, GPIO.LOW) GPIO.output(M2_RIGHT, GPIO.LOW) # Функция для управления вращением движков def rotate(motor=1, mode="s"): # Выключаем все пины stop_all() # Для мотора 1 if motor == 1: if mode == "r": # Устанавливаем высокий уровень на пине M1_RIGHT (4) GPIO.output(M1_RIGHT, GPIO.HIGH) elif mode == "l": # Устанавливаем высокий уровень на пине M1_LEFT (17) GPIO.output(M1_LEFT, GPIO.HIGH) # Для мотора 2 elif motor == 2: if mode == "r": GPIO.output(M2_RIGHT, GPIO.HIGH) elif mode == "l": GPIO.output(M2_LEFT, GPIO.HIGH) # Выполним инициализацию пинов GPIO setup(M1_RIGHT, M1_LEFT, M2_RIGHT, M2_LEFT) # Инициализация экрана (модуль curses) stdscr = curses.initscr() # Реагировать на нажатие клавиш без подтверждения при помощи ENTER curses.cbreak() # Разрешить использование стрелочек на клавиатуре stdscr.keypad(1) # Не блокировать программу по времени при опросе событий stdscr.nodelay(1) # Отобразим на экране данные по умолчанию stdscr.addstr(0, 10, "Hit "q" to quit") stdscr.addstr(2, 10, "A - M1 Left, D - M1 Right") stdscr.addstr(3, 10, "< - M2 Left, > - M2 Right") stdscr.addstr(4, 10, "S - stop") stdscr.refresh() # Главный цикл while True: # Получаем код нажатия клавиши и проверяем его key = stdscr.getch() if key != -1: # Если клавиша "стрелка влево" то вращаем движок 2 влево if key == curses.KEY_LEFT: # Выводим на экран строку "M2 <---" в позиции 6, 10 stdscr.addstr(6, 10, "M2 <---") rotate(2, "l") # Если клавиша "стрелка вправо" то вращаем движок 2 вправо elif key == curses.KEY_RIGHT: stdscr.addstr(6, 10, "M2 --->") rotate(2, "r") # Если клавиша "а" то вращаем движок 1 влево elif key == ord("a"): stdscr.addstr(6, 10, "M1 <---") rotate(1, "l") # Если клавиша "d" то вращаем движок 1 вправо elif key == ord("d"): stdscr.addstr(6, 10, "M1 --->") rotate(1, "r") # Если клавиша "s" то останов всех движков elif key == ord("s"): stdscr.addstr(6, 10, "STOP 12") stop_all() # Если клавиша "s" то выходим из программы elif key == ord("q"): # Восстановление прежних настроек терминала stdscr.keypad(0) curses.echo() curses.endwin() # Очистка и выход os.system("clear") sys.exit() # Обновляем текст на экране и делаем небольшую задержку stdscr.refresh() time.sleep(0.01)

Запустив скрипт можно понажимать стрелочки клавиатуры "влево" и "вправо", а также клавиши с буквами "A" и "D" - двигатели должны вращаться поочередно и в разные стороны, а программа будет отображать их текущий режим работы.

Рис. 8. Программа на Python для управления двигателями при помощи драйвера L298 (терминал Konsole, KDE).

Краткая видео-демонстрация работы данного эксперимента приведена ниже:

Что такое шаговый двигатель, типы шаговиков

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

Шаговые двигатели надежны, стойки к износу и позволяют контролировать вращение на определенный угол, применяются в автоматизации процессов, на производстве, в электронно-вычислительной аппаратуре(CD-DVD приводы, принтеры, копиры) и т.п.

Такие двигатели бывают следующих видов:

  • Биполярный - 2 обмотки, по одной на каждую фазу, для управления можно использовать схему на 2 H-моста или один полу-мост с двуполярным питанием;
  • Униполярный - 2 обмотки, каждая с отводом от середины, удобно переключать фазы сменой половинок каждой из обмоток, упрощает схему драйвера (4 ключа), а также использовать как быполярный без использования отводов от обмоток;
  • С четирьмя обмотками - универсальный, подключив обмотки соответствующим образом можно использовать как быполярный или униполярный движок.

Рис. 9. Типы шаговых двигателей: биполярный, униполярный, с четырьмя обмотками.

Определить тип используемого двигателя можно, как правило, по количеству выводов на его корпусе, а также не помешает прозвонить все выводы тестером для определения есть ли соеднения между обмотками.

L298 + шаговый двигатель + Raspberry Pi

Теперь давайте подключим шаговый двигатель, в моем случае применен биполярный мощный шаговый двигатель, извлеченный из старого матричного принтера.

Для подключения одного биполярного двигателя потребуется два выхода драйвера на L298 (два H-моста). Для данного эксперимента модуль L298 нужно подключить к Raspberry Pi так же, как и в варианте с .

Прежде можете поэкспериментировать без малинки - подавать поочередно на входы модуля L298 напряжение 5В и посмотреть как вал двигателя будет выполнять шаги.

По сути дела, при помощи малинки, мы будем поочередно и с некоторой задержкой подавать импульсы на обмотки движка, чем заставим его вал вращаться в нужную нам сторону и с нужной скоростью.

Рис. 10. Подключение биполярного шагового двигателя к модулю L298 для управления через Raspberry Pi.

Если все уже подключено, то переходим к экспериментам с простой тестовой программой на Python, которая поможет понять как работать с шаговыми двигателем используя L298 + Raspberry Pi.

Создадим файл для скрипта и откроем его для редактирования:

Nano /home/pi/l298_stepper_motor_test.py

Вставляем в редактор следующий код скрипта на Python:

#!/usr/bin/env python # -*- coding: utf-8 -*- import time import RPi.GPIO as GPIO # Подготавливаем пины GPIO. GPIO.cleanup() GPIO.setmode(GPIO.BCM) GPIO.setup(4, GPIO.OUT) GPIO.output(4, GPIO.LOW) GPIO.setup(17, GPIO.OUT) GPIO.output(17, GPIO.LOW) GPIO.setup(27, GPIO.OUT) GPIO.output(27, GPIO.LOW) GPIO.setup(22, GPIO.OUT) GPIO.output(22, GPIO.LOW) # Временная задержка между шагами, сек. step_timeout = 0.0105 # Длительность импульса, сек. impulse_timeout = 0.008 # Шаг 1. GPIO.output(4, GPIO.HIGH) time.sleep(impulse_timeout) GPIO.output(4, GPIO.LOW) time.sleep(step_timeout) # Шаг 2. GPIO.output(17, GPIO.HIGH) time.sleep(impulse_timeout) GPIO.output(17, GPIO.LOW) time.sleep(step_timeout) # Шаг 3. GPIO.output(27, GPIO.HIGH) time.sleep(impulse_timeout) GPIO.output(27, GPIO.LOW) time.sleep(step_timeout) # Шаг 4. GPIO.output(22, GPIO.HIGH) time.sleep(impulse_timeout) GPIO.output(22, GPIO.LOW) time.sleep(step_timeout) # Ждем 10 секунд. time.sleep(10) # 20 раз по 4 шага в цикле. for i in range(0,20): GPIO.output(4, GPIO.HIGH) time.sleep(impulse_timeout) GPIO.output(4, GPIO.LOW) time.sleep(step_timeout) GPIO.output(17, GPIO.HIGH) time.sleep(impulse_timeout) GPIO.output(17, GPIO.LOW) time.sleep(step_timeout) GPIO.output(27, GPIO.HIGH) time.sleep(impulse_timeout) GPIO.output(27, GPIO.LOW) time.sleep(step_timeout) GPIO.output(22, GPIO.HIGH) time.sleep(impulse_timeout) GPIO.output(22, GPIO.LOW) time.sleep(step_timeout)

Делаем файл со скриптом исполняемым и запускаем его на исполнение:

Chmod +x /home/pi/l298_stepper_motor_test.py /home/pi/l298_stepper_motor_test.py

осле запуска скрипта, шаговый двигатель должен совершить 4 шага (вращение в одну сторону), потом подождав 10 секунд он снова начнет свое вращение и сделает уже 20*4 шагов.

А теперь рассмотрим пример интерактивной программы, которая позволяет управлять направлением и скоростью вращения (последовательные шаги) шагового двигателя с использованием клавиатуры.

#!/usr/bin/env python # -*- coding: utf-8 -*- import os import sys import curses import time import RPi.GPIO as GPIO # Функция для подготовки пинов GPIO def setup(*ports): GPIO.cleanup() # Режим именования пинов по названию, а не по номеру на плате GPIO.setmode(GPIO.BCM) for port in ports: # Установка пина на вывод + низкий уровень "0" GPIO.setup(port, GPIO.OUT) GPIO.output(port, GPIO.LOW) # Функция для подачи импульса на пин с некоторой задержкой (1 шаг) def impulse(port=0): GPIO.output(port, GPIO.HIGH) # Set the timeout value to be anough for one step time.sleep(0.008) GPIO.output(port, GPIO.LOW) time.sleep(timeout) # Выполняем установку нужных нам пинов GPIO setup(4, 17, 27, 22) # Задержка между шагами (по умолчанию) timeout = 0.0105 # Направление вращения (по умолчанию) direction = "r" # Инициализация экрана (модуль curses) stdscr = curses.initscr() # Реагировать на нажатие клавиш без подтверждения при помощи ENTER curses.cbreak() # Разрешить использование стрелочек на клавиатуре stdscr.keypad(1) # Не блокировать программу по времени при опросе событий stdscr.nodelay(1) # Отобразим на экране данные по умолчанию stdscr.addstr(0, 10, "Hit "q" to quit") stdscr.addstr(2, 10, "--->") stdscr.addstr(3, 10, "Timeout: " + str(timeout)) stdscr.refresh() # Главный цикл while True: # Набор импульсов для вращения вала мотора вправо if direction == "r": impulse(4) impulse(17) impulse(27) impulse(22) # Набор импульсов для вращения вала мотора влево elif direction == "l": impulse(22) impulse(27) impulse(17) impulse(4) # Считываем код нажатия клавиши и проверяем его key = stdscr.getch() if key != -1: # Клавиша "влево" меняет направление вращения: ВЛЕВО if key == curses.KEY_LEFT: # отображаем текст "<---" в позиции экрана 2, 10 stdscr.addstr(2, 10, "<---") # Изменим значение переменной с направлением вращения direction = "l" # Клавиша "вправо" меняет направление вращения: ВПРАВО elif key == curses.KEY_RIGHT: stdscr.addstr(2, 10, "--->") direction = "r" # Клавиша "вверх" ускоряет вращение elif key == curses.KEY_UP: # Уменьшаем задержку между шагами timeout = timeout - 0.0005 # Клавиша "вниз" замедляет вращение elif key == curses.KEY_DOWN: # Увеличиваем задержку между шагами timeout = timeout + 0.0005 # Клавиша "q" выполняет выход из программы elif key == ord("q"): stdscr.keypad(0) curses.echo() curses.endwin() os.system("clear") sys.exit() # Смотрим чтобы время задержки не перешло границу 0 if timeout <= 0: timeout = 0.0005 # Обновляем текст на экране stdscr.addstr(3, 10, "Timeout: " + str(timeout)) stdscr.refresh() time.sleep(0.01)

Теперь клацаем клавиши стрелок влево и вправо и смотрим как будет изменяться направление вращения вала двигателя, а при нажатии клавиш вверх и вниз скорость будет увеличиваться и уменьшаться соответственно.

Если же двигатель не вращается, то возможно что потребуется сменить полярность подключения одной из обмоток к модулю на L298.

Рис. 11. Программа управления биполярным шаговым двигателем, L298, Raspberry Pi.

Видео-демонстрация работы шагового двигателя:

Заключение

Надеюсь вы получили ответ на вопрос "что такое H-мост и как он работает", из экспериментов должно быть понятно как применять драйвер на микросхеме L298 и подключать к нему разные движки.

Важно заметить что в интернете можно найти готовые библиотеки и скрипты на Python для удобного управления двигателями при помощи H-моста на L298 с использованием Raspberry Pi.

На рынке электронных компонентов видна четкая ниша в виде отсутствия интегрированных , которые могли бы управлять нагрузкой, потребляющей значительный ток (порядка 2 А) при малом напряжении питания (порядка 3 В). Этот проект может стать решением этой проблемы. В качестве исполнительных элементов в Н-мосте использованы транзисторы IRF7307 производства International Rectifier.

В корпусе SO-8 размещены два транзистора типа MOSFET: один с каналом P, а другой с каналом N. Эти транзисторы очень хорошо подходят для применения в системах, работающих при низких напряжениях. Кроме того, малое сопротивление открытого канала обеспечивает малое падение напряжения: нагрузка, потребляющая ток 1 А создает падение напряжения не более 140 мВ при напряжении питания 4,5 В, то есть всего 3% от общего питающего напряжения.

Помимо этого IRF7307 в своем составе имеет демпферный диод, который предназначен для защиты транзистора от выбросов энергии при коммутации индуктивных нагрузок.

H-мост на полевых транзисторах IRF7307

На рисунке ниже приведена принципиальная схема низковольтного мощного H-моста. Для управления использованы логические элементы «И-НЕ» микросхемы CD4093, которые содержат в своей структуре триггер Шмитта. Максимальное напряжение на выходах логических элементов около 50 мВ (по данным Texas Instruments). Это значение достаточно, чтобы вызвать полное открытие или закрытие каналов MOSFET-транзисторов, независимо от входного управляющего напряжения.

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

После сборки не требуются какие-либо настройки, устройство сразу готово к работе. Напряжение питания находится в диапазоне 3-12 вольт и строго ограничено максимальным напряжением MOSFET-транзисторов. В исходном состоянии, при отсутствии нагрузки схема потребляет ток меньше чем 1 мА.

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

В этой статье мы рассмотрим обозначение радиоэлементов на схемах.

С чего начать чтение схем?

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

До сих пор весь мир не может договориться, как обозначать тот или иной радиоэлемент либо устройство. Поэтому, имейте это ввиду, когда будете собирать буржуйские схемы. В нашей статье мы будем рассматривать наш российский ГОСТ-вариант обозначения радиоэлементов

Изучаем простую схему

Ладно, ближе к делу. Давайте рассмотрим простую электрическую схему блока питания, которая раньше мелькала в любом советском бумажном издании:

Если вы не первый день держите паяльник в руках, то для вас с первого взгляда сразу все станет понятно. Но среди моих читателей есть и те, кто впервые сталкивается с подобными чертежами. Поэтому, эта статья в основном именно для них.

Ну что же, давайте ее анализировать.

В основном, все схемы читаются слева-направо, точно также, как вы читаете книгу. Всякую разную схему можно представить в виде отдельного блока, на который мы что-то подаем и с которого мы что-то снимаем. Здесь у нас схема блока питания, на который мы подаем 220 Вольт из розетки вашего дома, а выходит уже с нашего блока постоянное напряжение . То есть вы должны понимать, какую основную функцию выполняет ваша схема . Это можно прочесть в описании к ней.

Как соединяются радиоэлементы в схеме

Итак, вроде бы определились с задачей этой схемы. Прямые линии – это провода, либо печатные проводники, по которым будет бежать электрический ток . Их задача – соединять радиоэлементы.


Точка, где соединяются три и более проводников, называется узлом . Можно сказать, в этом месте проводки спаиваются:


Если пристально вглядеться в схему, то можно заметить пересечение двух проводников


Такое пересечение будет часто мелькать в схемах. Запомните раз и навсегда: в этом месте провода не соединяются и они должны быть изолированы друг от друга . В современных схемах чаще всего можно увидеть вот такой вариант, который уже визуально показывает, что соединения между ними отсутствует:

Здесь как бы один проводок сверху огибает другой, и они никак не контактируют между собой.

Если бы между ними было соединение, то мы бы увидели вот такую картину:

Буквенное обозначение радиоэлементов в схеме

Давайте еще раз рассмотрим нашу схему.

Как вы видите, схема состоит из каких-то непонятных значков. Давайте разберем один из них. Пусть это будет значок R2.


Итак, давайте первым делом разберемся с надписями. R – это значит . Так как у нас он не единственный в схеме, то разработчик этой схемы дал ему порядковый номер “2”. В схеме их целых 7 штук. Радиоэлементы в основном нумеруются слева-направо и сверху-вниз. Прямоугольник с чертой внутри уже явно показывает, что это постоянный резистор с мощностью рассеивания в 0,25 Ватт. Также рядом с ним написано 10К, что означает его номинал в 10 Килоом. Ну как-то вот так…

Как же обозначаются остальные радиоэлементы?

Для обозначения радиоэлементов используются однобуквенные и многобуквенные коды. Однобуквенные коды – это группа , к которой принадлежит тот или иной элемент. Вот основные группы радиоэлементов :

А – это различные устройства (например, усилители)

В – преобразователи неэлектрических величин в электрические и наоборот. Сюда могут относиться различные микрофоны, пьезоэлементы, динамики и тд. Генераторы и источники питания сюда не относятся .

С – конденсаторы

D – схемы интегральные и различные модули

E – разные элементы, которые не попадают ни в одну группу

F – разрядники, предохранители, защитные устройства

H – устройства индикации и сигнальные устройства, например, приборы звуковой и световой индикации

K – реле и пускатели

L – катушки индуктивности и дроссели

M – двигатели

Р – приборы и измерительное оборудование

Q – выключатели и разъединители в силовых цепях. То есть в цепях, где “гуляет” большое напряжение и большая сила тока

R – резисторы

S – коммутационные устройства в цепях управления, сигнализации и в цепях измерения

T – трансформаторы и автотрансформаторы

U – преобразователи электрических величин в электрические, устройства связи

V – полупроводниковые приборы

W – линии и элементы сверхвысокой частоты, антенны

X – контактные соединения

Y – механические устройства с электромагнитным приводом

Z – оконечные устройства, фильтры, ограничители

Для уточнения элемента после однобуквенного кода идет вторая буква, которая уже обозначает вид элемента . Ниже приведены основные виды элементов вместе с буквой группы:

BD – детектор ионизирующих излучений

BE – сельсин-приемник

BL – фотоэлемент

BQ – пьезоэлемент

BR – датчик частоты вращения

BS – звукосниматель

BV – датчик скорости

BA – громкоговоритель

BB – магнитострикционный элемент

BK – тепловой датчик

BM – микрофон

BP – датчик давления

BC – сельсин датчик

DA – схема интегральная аналоговая

DD – схема интегральная цифровая, логический элемент

DS – устройство хранения информации

DT – устройство задержки

EL – лампа осветительная

EK – нагревательный элемент

FA – элемент защиты по току мгновенного действия

FP – элемент защиты по току инерционнго действия

FU – плавкий предохранитель

FV – элемент защиты по напряжению

GB – батарея

HG – символьный индикатор

HL – прибор световой сигнализации

HA – прибор звуковой сигнализации

KV – реле напряжения

KA – реле токовое

KK – реле электротепловое

KM – магнитный пускатель

KT – реле времени

PC – счетчик импульсов

PF – частотомер

PI – счетчик активной энергии

PR – омметр

PS – регистрирующий прибор

PV – вольтметр

PW – ваттметр

PA – амперметр

PK – счетчик реактивной энергии

PT – часы

QF

QS – разъединитель

RK – терморезистор

RP – потенциометр

RS – шунт измерительный

RU – варистор

SA – выключатель или переключатель

SB – выключатель кнопочный

SF – выключатель автоматический

SK – выключатели, срабатывающие от температуры

SL – выключатели, срабатывающие от уровня

SP – выключатели, срабатывающие от давления

SQ – выключатели, срабатывающие от положения

SR – выключатели, срабатывающие от частоты вращения

TV – трансформатор напряжения

TA – трансформатор тока

UB – модулятор

UI – дискриминатор

UR – демодулятор

UZ – преобразователь частотный, инвертор, генератор частоты, выпрямитель

VD – диод , стабилитрон

VL – прибор электровакуумный

VS – тиристор

VT

WA – антенна

WT – фазовращатель

WU – аттенюатор

XA – токосъемник, скользящий контакт

XP – штырь

XS – гнездо

XT – разборное соединение

XW – высокочастотный соединитель

YA – электромагнит

YB – тормоз с электромагнитным приводом

YC – муфта с электромагнитным приводом

YH – электромагнитная плита

ZQ – кварцевый фильтр

Графическое обозначение радиоэлементов в схеме

Постараюсь привести самые ходовые обозначения элементов, используемые в схемах:

Резисторы и их виды


а ) общее обозначение

б ) мощностью рассеяния 0,125 Вт

в ) мощностью рассеяния 0,25 Вт

г ) мощностью рассеяния 0,5 Вт

д ) мощностью рассеяния 1 Вт

е ) мощностью рассеяния 2 Вт

ж ) мощностью рассеяния 5 Вт

з ) мощностью рассеяния 10 Вт

и ) мощностью рассеяния 50 Вт

Резисторы переменные


Терморезисторы


Тензорезисторы


Варисторы

Шунт

Конденсаторы

a ) общее обозначение конденсатора

б ) вариконд

в ) полярный конденсатор

г ) подстроечный конденсатор

д ) переменный конденсатор

Акустика

a ) головной телефон

б ) громкоговоритель (динамик)

в ) общее обозначение микрофона

г ) электретный микрофон

Диоды

а ) диодный мост

б ) общее обозначение диода

в ) стабилитрон

г ) двусторонний стабилитрон

д ) двунаправленный диод

е ) диод Шоттки

ж ) туннельный диод

з ) обращенный диод

и ) варикап

к ) светодиод

л ) фотодиод

м ) излучающий диод в оптроне

н ) принимающий излучение диод в оптроне

Измерители электрических величин

а ) амперметр

б ) вольтметр

в ) вольтамперметр

г ) омметр

д ) частотомер

е ) ваттметр

ж ) фарадометр

з ) осциллограф

Катушки индуктивности


а ) катушка индуктивности без сердечника

б ) катушка индуктивности с сердечником

в ) подстроечная катушка индуктивности

Трансформаторы

а ) общее обозначение трансформатора

б ) трансформатор с выводом из обмотки

в ) трансформатор тока

г ) трансформатор с двумя вторичными обмотками (может быть и больше)

д ) трехфазный трансформатор

Устройства коммутации


а ) замыкающий

б ) размыкающий

в ) размыкающий с возвратом (кнопка)

г ) замыкающий с возвратом (кнопка)

д ) переключающий

е ) геркон

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


Предохранители


а ) общее обозначение

б ) выделена сторона, которая остается под напряжением при перегорании предохранителя

в ) инерционный

г ) быстродействующий

д ) термическая катушка

е ) выключатель-разъединитель с плавким предохранителем

Тиристоры


Биполярный транзистор


Однопереходный транзистор


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

В двигателях постоянного тока, чтобы изменить направление вращения достаточно поменять полярность питания, то есть, проще говоря, поменять плюс с минусом. Из-за этого ток начинает течь в обратном направлении, что приводит к изменению магнитного потока внутри двигателя, в результате чего вал двигателя вращается в обратную сторону. Анимация ниже показывает, по какому принципу работает H-мост:

H-мост управления двигателем

Легко заметить, что изменение направления тока приводит к изменению направления вращения двигателя. Вместо этих переключателей можно собрать H-мост на транзисторах и управлять ими с помощью микроконтроллера.

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

Однако на рынке уже не один год существуют специализированные микросхемы H-мостов. Они со временем становятся все дешевле и имеют больше возможностей и безопасности. Одной из таких простых микросхем является L293D.

Это простой драйвер электродвигателя, содержащий в себе два H-моста, имеет возможность управления двигателем путем ШИМ.

Назначения выводов драйвера L293D:

  • 1,2 EN, 3,4 EN – служат для управления сигналом ШИМ.
  • 1А, 2А, 3А, 4А – вход управления направлением вращения электродвигателя.
  • 1Y, 2Y, 3Y, 4Y – выходы питающие двигатель.
  • Vcc1 – вывод питания логики контроллера +5В
  • Vcc2 – вывод для питания двигателей от +4.5В до +36В.

То как происходит управление L293D показано в таблице ниже:

Когда на входе А и EN присутствует высокий уровень, то на выходе с тем же номером так же будет высокий уровень. Когда на входе A будет низкий и на EN высокий уровень, то на выходе мы получим низкое состояние. Подавая сигнал низкого уровня на EN, на выходе будет состояние высокого импеданса, в не зависимости от того какой сигнал будет на входе А.

Таким образом, мы можем контролировать направление движения тока, в результате чего у нас есть возможность изменять направление вращения электродвигателя.

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

  • Напряжение питания: +5В.
  • Напряжение питания двигателей: от +4.5 в до +36В.
  • Выходной ток: 600мА.
  • Максимальный выходной ток (в импульсе) 1,2А.
  • Рабочая температура от 0°C до 70°C.

Другой популярной микросхемой является L298. Она значительно мощнее, чем описанная ранее L293D. Микросхема L298 так же имеет в своем составе два H-моста и также поддерживает ШИМ.

Назначение выводов L298 очень похоже на L293D. Здесь так же есть два входа управления, входы EN и выходы на двигатель. Vss — это питание микросхемы, а Vs — это питание для двигателей.


Есть так же и различие, а именно выводы CURRENT SENSING, которые служат для измерения тока потребления двигателей. Эти выводы следует подключить к массе питания через небольшой резистор, примерно 0,5 Ом.
Ниже приведена схема подключения L298:

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

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

  • Напряжение питания:+5В.
  • Напряжение питания двигателей: до +46В.
  • Максимальный ток, потребляемый двигателями: 4A.

Следующая микросхема H-моста – эта TB6612, новый драйвер с очень хорошими характеристиками, набирающий все большую популярность.

Вы можете заметить, что все эти драйверы электродвигателей одинаковы в управлении, но в TB6612 выходы спарены, из-за большой мощности.
Максимальное напряжение питания TB6612 составляет 15В, а максимальный ток 1,2 А. При этом максимальный импульсный ток составляет 3,2A.

Зачем нужны драйвера двигателей и H-мосты в частности?

Научившись «дрыгать» пинами и зажигать светодиоды фанаты и любители «Ардуино» хотят чего-то большего, чего-то помощнее, например научиться управлять моторами. Напрямую подключить мотор к микроконтроллеру нельзя, так как типовые токи пинов контроллера составляют несколько миллиампер, а у моторов, даже у игрушечных, счет идет на десятки и сотни миллиампер, вплоть до нескольких ампер. Тоже самое с напряжением: микроконтроллер оперирует напряжением до 5 В, а моторы бывают разного вольтажа.

В этом обзоре речь идет только о питании коллекторных двигателей постоянного тока, для шаговых двигателей лучше применять специализированные драйвера шаговых двигателей, а для бесколлекторных двигателей имеются свои драйверы, они несовместимы с коллекторными двигателями. Заметим, что в русскоязычной литературе существует некоторая терминологическая путаница – драйверами двигателей называют как «железные» модули, так и фрагменты кода, функции, отвечающие за работу с этими «железными» драйверами. Мы будем иметь в виду под «драйвером» именно модуль, подключаемый с одной стороны к микроконтроллеру (например, к плате Arduino), с другой стороны - к двигателю. Вот таким «преобразователем» логических сигналов контроллера в выходное напряжение для питания двигателя и является «драйвер» двигателя, и, в частности, наш драйвер на L9110S.

Принцип действия двойного H -моста на основе L 9110 S

H – мост (читается «аш-мост») – электронный модуль, аналог переключателя, обычно применяется для питания двигателей постоянного тока и шаговых двигателей, хотя для шаговых двигателей обычно применяются более специализированные модули. Обозначается “H”, потому что принципиальная схема H-моста напоминает букву H.

В «палочке» H включен мотор постоянного тока. Если замкнуть контакты S1 и S4, то мотор будет вращаться в одну сторону, слева будет ноль (S1), справа + напряжения (S4). Если замкнуть контакты S2 и S3, то на правом контакте мотора будет ноль (S3), а на левом + питания (S1), мотор будет вращаться в другую сторону. Мост представляет собой чип L9110 с защитой от сквозных токов: при переключении контакты сначала размыкаются, и только через некоторое время замыкаются другие контакты. На плате стоит два чипа L9110, поэтому одна плата может управлять двумя потребителями постоянного тока: моторами, соленоидами, светодиодами, да чем угодно, или одним двух-обмоточным шаговым двигателем (такие шаговые моторы называются двух-фазными биполярными).

Элементы платы

Плата небольшая, элементов немного:

  1. Разъем подключения мотора A
  2. Разъем подключения мотора B
  3. Чип H-моста мотора A
  4. Чип H-моста мотора B
  5. Пины подключения питания и управления

Подключение

Мотор А и Мотор В - два выхода для подключения нагрузки, ток не более 0,8 А; В-1А - сигнал «Мотор В вперед»; В-1 B - сигнал «Мотор В реверс»; Земля (GND) - должен быть соединён с землёй микроконтроллера и источника питания двигателя.; Питание (VCC) - питание двигателя (не более 12 В); А-1А - сигнал «Мотор А вперед»; A-1 B - сигнал «Мотор А реверс». Сигналы на пинах управляют напряжением на выходах для подключения моторов:

Для плавного управления выходным напряжением подаем не просто HIGH, а широтно-импульсно модулированный (PWM) сигнал. Все пины ардуино, отмеченные знаком ~, могут давать ШИМ выход командой analogWrite(n,P), где n-номер пина (в Arduino Nano и Uno это 3,5-6 и 9-11, соответственно). При использовании этих пинов для ШИМ сигнала, необходимо задействовать таймеры 0 (пины 5 и 6), таймер 1 (пины 9 и 10) и таймер 2 (пины 3 и 11). Дело в том, что некоторые библиотечные функции могут использовать те же таймеры – тогда будет конфликт. По большому счету достаточно знать, что пин 3 подключается ко входу A-1B, а пин 5 ко входу A1-A, команда digitalWrite(3,127) подаст 50% напряжения на мотор в прямом направлении.

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

Управление роботом: тележка с фарой (белый светодиод) и фонарем заднего хода (красный светодиод). Программа указана ниже и описывает циклическое движение тележки: вперед-остановка-назад-остановка. Все важные шаги в программе прокомментированы.

Мотор подключен к клеммам MOTOR A, светодиоды подключены к выходу MOTOR B. Робот едет время TIME вперед, включив белый светодиод. Далее стоит время TIME с горящими наполовину белыми светодиодами. После чего едет назад, включив красные светодиоды. Далее снова стоит время TIME, включив красные, а потом белые светодиоды на половину яркости. // Драйвер двигателя L9110S // by Dr.S // сайт // определяем, какие порты будем использовать для управления мотором и светодиодами #define FORWARD 3 #define BACK 5 #define WHITE_LIGHT 6 #define RED_LIGHT 9 #define LEDOUT 13 #define TIME 5000 unsigned char Forward_Speed = 200; unsigned char Back_Speed = 160; unsigned char White_Light = 210; unsigned char Red_Light = 220; void setup() { // объявляем пины управления мостом как выходы: pinMode(FORWARD, OUTPUT); pinMode(BACK, OUTPUT); pinMode(WHITE_LIGHT, OUTPUT); pinMode(RED_LIGHT, OUTPUT); pinMode(LEDOUT, OUTPUT); } // the loop routine runs over and over again forever: void loop() { // Робот едет вперед в течении времени TIME analogWrite(WHITE_LIGHT, White_Light); // Включить белый светодиод- "фары" analogWrite(RED_LIGHT, 0); analogWrite(FORWARD, Forward_Speed); // Робот пошел вперед analogWrite(BACK, 0); delay(TIME); // и немного подождать // Робот включает "фары" на половину обычной яркости и стоит analogWrite(WHITE_LIGHT, White_Light / 2); // Включить белый светодиод- "фары" как стояночные огни analogWrite(RED_LIGHT, 0); analogWrite(FORWARD, 0); // Робот стоит analogWrite(BACK, 0); delay(TIME); // и немного подождать // Робот включает красные светодиоды "заднего хода" и идет назад analogWrite(WHITE_LIGHT, 0); // Включить белый светодиод- "фары" как стояночные огни analogWrite(RED_LIGHT, Red_Light); analogWrite(FORWARD, 0); analogWrite(BACK, Back_Speed); // Робот идет назад delay(TIME); // и немного подождать // Робот включает попеременно красные и белые светодиоды и стоит analogWrite(WHITE_LIGHT, 0); analogWrite(RED_LIGHT, Red_Light / 2); // Включить красный светодиод как стояночные огни analogWrite(FORWARD, 0); analogWrite(BACK, 0); // Робот стоит delay(TIME / 2); // и немного подождать analogWrite(WHITE_LIGHT, White_Light / 2); // Включить белый светодиод- "фары" как стояночные огни analogWrite(RED_LIGHT, 0); delay(TIME / 2); // и немного подождать }

Принципиальная схема

Технические характеристики модуля

  • Два независимых выхода, до 800 мА каждый
  • Максимальная перегрузочная способность 1.2 А
  • Напряжение питания от 2,5 до 12 В
  • Логические уровни совместимы с 3,3 и 5 В логикой
  • Рабочий диапазон 0 °С до 80°С
Похожие публикации