Всем хороша L293 кроме тока — только 600мА на канал (у L293N — 1.2А, но со внешними диодами и только кратковременно).
Но есть у неё старший брат — L298, надо сказать брат-близнец — представляет из себя те же четыре полумоста объединённые по-два сигналами разрешения работы(ENABLE),
но пожилистей — до 4А.
Корпус тоже покрупнее — при необходимости его удобно прикрепить к радиатору.
Ну и тут уже без внешних диодов никуда — придётся ставить, причём желательно шоттки и желательно на ток не меньше чем ток нагрузки.
Принципы работы, методы управления, достоинства и недостатки совершенно те же что и у L293 — можно почитать тут и тут.
А соберём ка мы на ней мотрошилд=)
Кроме рук и паяльных принадлежностей нам понадобятся:
*собственно набор L298 с необходимой обвязкой
*протошилд
*три болтовых клеммника (один для подключения питания, два — для моторов)
*немного обрезков витой пары и/или МГТФ-а
Собирать будем по такой схеме
Резисторы R1 и R2 — шунты для замера(и ограничения внешним контроллером) тока через каналы. Если мерить и ограничивать не собираетесь — можно поставить перемычки.
Получилось как-то вот так:
тут я смухлевал и воткнул конденсатор по-мельче на 16В(в комплекте идёт на 50В — чтоб перекрыть весь рабочий диапазон ЭЛЬ-ки) — влез бы и штатный еслиб я не запаял так близко друг к другу клемники для моторов=\
Нижняя каша:
Так как управление, решительно, ничем не отличается от L293 просто немного подправим скетч noonv-а для неё:
/* * тестовый скетч с L293/L298 */ struct MOTOR // структура для хранения номеров pin-ов, к которым подключены моторчики { int in1; // INPUT1 int in2; // INPUT2 int enable; // ENABLE1 }; // определяем порты, к которым подключены моторчики MOTOR MOTOR1 = { 2, 4, 3 }; MOTOR MOTOR2 = { 6, 7, 5 }; void setup() { pinMode(MOTOR1.in1, OUTPUT); // настраиваем выводы pinMode(MOTOR1.in2, OUTPUT); // на ВЫВОД pinMode(MOTOR2.in1, OUTPUT); pinMode(MOTOR2.in2, OUTPUT); } void loop() { forward1(50); // вращаем оба моторчика вперёд на 50 forward2(50); delay(3000); forward1(250); // вращаем оба моторчика вперёд на 250 forward2(250); delay(3000); back2(100); // вращаем оба моторчика назад на 100 back1(100); delay(5000); forward2(40); // а теперь опять вращаем второй моторчик вперёд delay(1000) } void forward1(int pwm) // первый вперёд { digitalWrite(MOTOR1.in1, HIGH); digitalWrite(MOTOR1.in2, LOW); analogWrite(MOTOR1.enable, pwm); } void forward2(int pwm) // второй вперёд { digitalWrite(MOTOR2.in1, HIGH); digitalWrite(MOTOR2.in2, LOW); analogWrite(MOTOR2.enable, pwm); } void back1(int pwm) // первый назад { digitalWrite(MOTOR1.in1, LOW); digitalWrite(MOTOR1.in2, HIGH); analogWrite(MOTOR1.enable, pwm); } void back2(int pwm) // второй назад { digitalWrite(MOTOR2.in1, LOW); digitalWrite(MOTOR2.in2, HIGH); analogWrite(MOTOR2.enable, pwm); }
Тестируем на недостойно-хилой нагрузке=)
Работает=)
Но тратить по три пина на управление каждым каналом — жуткое расточительство — поэтому дополним наш шилд парой инверторов (подробности про принцип работы этого решения можно почитать здесь) а точнее поставим одну 74hc00
— самая распространённая микросхема логики — 4 двухвходовых элемента И-НЕ — для моторшилдов довольно стандартное решение.
Схема у нас теперь будет выглядеть так:
Шилд сверху
снизу
Также немного переделаем скетч
/* * тестовый скетч с L293/L298 и 74hc00 */ struct MOTOR // структура для хранения номеров pin-ов, к которым подключены моторчики { int in; // INVERTOR INPUT int enable; // ENABLE1 }; // определяем порты, к которым подключены моторчики MOTOR MOTOR1 = { 4, 3 }; MOTOR MOTOR2 = { 6, 5 }; int FORWARD = HIGH; int BACK = LOW; void setup() { pinMode(MOTOR1.in, OUTPUT); // настраиваем выводы pinMode(MOTOR2.in, OUTPUT); } void loop() { motor1(FORWARD, 50); // вращаем оба моторчика вперёд на 50 motor2(FORWARD, 50); delay(3000); motor1(FORWARD, 250); // вертимся в раздрай на 250 (поворачиваемся) motor2(BACK, 250); delay(3000); motor1(BACK, 100); // оба назад на 100 motor2(BACK, 100); delay(5000); motor2(FORWARD, 50); // а теперь опять вращаем второй моторчик вперёд delay(1000); } void motor1(int dir, int pwm) // первый { digitalWrite(MOTOR1.in, dir); analogWrite(MOTOR1.enable, pwm); } void motor2(int dir, int pwm) // второй { digitalWrite(MOTOR2.in, dir); analogWrite(MOTOR2.enable, pwm); }
Проверяем уже на мощных моторах
Работает!
Видео результата:
0 комментариев на «“Сборка мощного моторшилда (на базе L298)”»
У нас эти L298 горели при токах ниже чем указано в паспорте, пришлось делать сборку. В итоге ничего не грелось и об охлаждении думать не пришлось
диоды ставили?, правильно ставили?=)
Почему думаете что токи были меньше паспротных, как замеряли?
Насколько я помню у вас шаговики были, так там масса нюансов…
А на полевиках, конечно лучше, никто не спорит:
Да, со схемотехникой все в порядке. К тому же из соображений экономии делать на транзисторах дешевле выходит. У нас L298 стоит 130 рублей, сборка — порядка 40 рублей. Потом надежность, что-то полетело — можно заменить один из звеньев цепи.
Я опираюсь на наш опыт и советую попробовать сделать на транзисторах. Может я напишу статейку именно про то как рассчитал мой товарищ. У нас по тепловыделению очень удачно получилось, да и с токами ограничения другие вышли
а драйверы для полевиков? 😉
ждём-ждём, было бы интересно=)
+1
обязательно напишите! и как можно поподробнее, для начинающих, чтобы убрать эту пропасть между шилдами и самодельными модулями
Резвая штука вышла:)
А зачем инверторы? Почему бы не повесить ENABLE-ы на плюс, и не пускать ШИМ прямо на входы? Тоже будет по 4м линиям управляться, и инвертор не нужен.
Интересно, как у этих входов с частотными параметрами:)
=))
Так, ну во первых как направление менять?
Или надо оба выхода с ШИМом использовать — один в нуле второй — ШИМим
«IN1-0 IN2-ШИМ»/«IN1-ШИМ IN2-0»
Или ШИМ инвертировать программно вместе со сменой состояния одного входа
«IN1-0 IN2-ШИМ»/«IN1-1 IN2-~ШИМ»
оба метода заморочны и сильно усложняют программирование, особенно средствами ArduinoIDE=)
Ну и наконец это просто не сработает=))
Отсюда , там же подробно расписано почему ШИМ-ить надо именно EN 😉
Обратите внимание на таблицу состояний ЭЛ-ек:
Если коротко — EN-1, NI-1, NI2-1, (состояние предложенной вами схемы в момент действия 1 на выходе ШИМ) — это торможение, будет жёсткий дёрг-дёрг, перегревы и вибрации=(
Кстати не обязательно инвертор прям микросхемой — можно просто транзистор поставить — это кому как нравится — про транзистор объяснять дольше, вот и воткнул 74hc00.
Видимо так же как и у EN, (см. эквивалентную схему)
fc (Vi) Commutation Frequency при IL = 2A типично 25KHz максимум 40KHz
(см датащит)
Эмм? Где вы эту таблицу взяли? 🙂 Чем в вашей таблице отличается поворот вправо от торможения.
Да, я так всегда и делаю, это мой верный и испытанный способ. Программный ШИМ на любой пин IO — задачка не трудная.
А вот только что вырезанная из дш на 293ю таблица состояний:
сам когда-то рисовал=(
никто не читает, багов не видит=((
Ща исправим, спасибо.
Да можно, можно, я не спорю.Только это ради экономии одного корпуса логики/пары транзисторов?
Изящно, но это на любителя=)
Ладно, отвечу на ваш предыдущий вопрос так:
Мне кажется так понятнее и проще код=)
Ну вот и разъяснилось:)
Сложность она относительная, мы тут не орбитальные станции проектируем все же.
Попахивает плагиатиком. Вот статья
http://robozone.su/2008/04/16/modul-upravlenija-jelektrodvigateljami.html
Дата публикации: 16 апреля 2008.
как то подругому можно сделать?
=)))))))
А от чего, извините, попахивает?
Картинки, фотографии, текст, код?
Разъёмы синенькие, платформа кругленькая?
Включёные по датащиту микросхемы?
Если вы о сверх оригинальном решении проинвертировать входы L29х то, да оно не моё, правда оно так же несколько старше самой робозоны вцелом.
Вот, кстати, обратите внимание на ход мысли в статье:
далее:
если пройдёте по последней ссылочке там можно нажать на надпись "this page " и оказаться на странице где данное решение датированно 2005-2006гг.
Попрошу аргументировать ваше высказывание!
Дорогой Zoltberg!
В вашем сообщении чувствуются высокие тона и негативные эмоции.
Возможно мое заявление выглядело, как обвинение. Но оно им не является. Можете выполнять любые статьи, но с уточнением автора изделия.
В моих кругах принято приводить подобные работы, а затем давать свои НОВЫЕ идеи. Иначе работа превращается в плагиат.
В вашей статье ничего нового я не увидел.
Ваше право копировать чужие идеи, но не забывается кодекс чести электронщика.
Ребят вам сколько лет? Минуса ставите. Скажите напрямую что не нравится.
У меня поначалу складывалось впечатление, что здесь серьезное общество, которое понимает всю серьезность и ответственность своих действий.
Это не работа научная, это демонстрация, для начинающих, как из конкретных деталей сделать конкретную вещь. Типовую, рабочую, без заморочек.источник такого решения(хотя я очень сомневаюсь что он первый).
Ардуино-ориентированную, и именно для ардуино-ориентированной аудитории.
Инструкция по типовому применению L298 c ардуино, если угодно.
Автор изделия?
Позвольте полюбопытствовать, в ваших кругах использование схемы с общим эмиттером тоже считают плагиатом, если не указать конкретного автора?=)
Это более чем типовое и очевидное решение, автор его утерян в веках, я уж и не помню где я его увидел.
И опять же, обращаю ваше внимание — в статье таки указан, причём куда более старый,
Да вам Zoltberg в Китай надо ехать, да автомобильHaima выпускать!
Уважаемый Zoltberg, скажите, а платформа (диск и крепления) самодельная ведь? и, как мне кажется, из полиморфуса, да?)
Нет, это не ПКЛ, это какой-то листовой пластик для рекламщиков, ЕМНИП — вспененый ПВХ.такие .
Нарисовал циркулем круг и вырезал концелярским ножём в три прохода.
Крепления моторов —
Тяжело ли режется этот вспененный ПВХ? А то все думаю попробовать использовать в своих конструкциях. С оргстеклом уже намучился.
Нормально режется, довольно легко.
По сравнению с оргстеклом — просто как масло=)
кстати, как вы сделали такой круглый и прочный круг?
Микросхемы потрясающие!
В текущем проекте использую похожую L6203 — там один полный мост. В качестве двигателя — 24Вт-ный привод ВАЗ-овского стеклоподъемника со стандартным редуктором. Номинальный рабочий ток 2А. Греется средне. Стоит радиатор.
ШИМ используется прекрасно, в том числе по выходу En, что очень удобно — нужен всего один выход OCR. Остальными просто коммутирую направление. Рабочая частота до 100кГц, у меня 64кГц… Внутри кстати защита по перегреву стоит И она даже работает :).