Всем хороша 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);
}
Проверяем уже на мощных моторах
Работает!
Видео результата:
диоды ставили?, правильно ставили?=)
Почему думаете что токи были меньше паспротных, как замеряли?
Насколько я помню у вас шаговики были, так там масса нюансов…
А на полевиках, конечно лучше, никто не спорит:
… достоинства и недостатки совершенно те же что и у L293 — можно почитать тут...
Да, со схемотехникой все в порядке. К тому же из соображений экономии делать на транзисторах дешевле выходит. У нас L298 стоит 130 рублей, сборка — порядка 40 рублей. Потом надежность, что-то полетело — можно заменить один из звеньев цепи.
Я опираюсь на наш опыт и советую попробовать сделать на транзисторах. Может я напишу статейку именно про то как рассчитал мой товарищ. У нас по тепловыделению очень удачно получилось, да и с токами ограничения другие вышли
А зачем инверторы? Почему бы не повесить 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 — задачка не трудная.
Да можно, можно, я не спорю.Только это ради экономии одного корпуса логики/пары транзисторов?
Изящно, но это на любителя=)
Ладно, отвечу на ваш предыдущий вопрос так:
=)))))))
А от чего, извините, попахивает?
Картинки, фотографии, текст, код?
Разъёмы синенькие, платформа кругленькая?
Включёные по датащиту микросхемы?
Если вы о сверх оригинальном решении проинвертировать входы L29х то, да оно не моё, правда оно так же несколько старше самой робозоны вцелом.
Вот, кстати, обратите внимание на ход мысли в статье:
Но тратить по три пина на управление каждым каналом — жуткое расточительство — поэтому дополним наш шилд парой инверторов (подробности про принцип работы этого решения можно почитать здесь)
далее:
— самая распространённая микросхема логики — 4 двухвходовых элемента И-НЕ — для моторшилдов довольно стандартное решение.
если пройдёте по последней ссылочке там можно нажать на надпись "this page" и оказаться на странице где данное решение датированно 2005-2006гг.
Дорогой Zoltberg!
В вашем сообщении чувствуются высокие тона и негативные эмоции.
Возможно мое заявление выглядело, как обвинение. Но оно им не является. Можете выполнять любые статьи, но с уточнением автора изделия.
В моих кругах принято приводить подобные работы, а затем давать свои НОВЫЕ идеи. Иначе работа превращается в плагиат.
В вашей статье ничего нового я не увидел.
Ваше право копировать чужие идеи, но не забывается кодекс чести электронщика.
Ребят вам сколько лет? Минуса ставите. Скажите напрямую что не нравится.
У меня поначалу складывалось впечатление, что здесь серьезное общество, которое понимает всю серьезность и ответственность своих действий.
В моих кругах принято приводить подобные работы, а затем давать свои НОВЫЕ идеи.
Это не работа научная, это демонстрация, для начинающих, как из конкретных деталей сделать конкретную вещь. Типовую, рабочую, без заморочек.
Ардуино-ориентированную, и именно для ардуино-ориентированной аудитории.
Инструкция по типовому применению L298 c ардуино, если угодно.
Автор изделия?
Позвольте полюбопытствовать, в ваших кругах использование схемы с общим эмиттером тоже считают плагиатом, если не указать конкретного автора?=)
Это более чем типовое и очевидное решение, автор его утерян в веках, я уж и не помню где я его увидел.
И опять же, обращаю ваше внимание — в статье таки указан, причём куда более старый, источник такого решения(хотя я очень сомневаюсь что он первый).
Нет, это не ПКЛ, это какой-то листовой пластик для рекламщиков, ЕМНИП — вспененый ПВХ.
Нарисовал циркулем круг и вырезал концелярским ножём в три прохода.
Крепления моторов — такие.
Микросхемы потрясающие!
В текущем проекте использую похожую L6203 — там один полный мост. В качестве двигателя — 24Вт-ный привод ВАЗ-овского стеклоподъемника со стандартным редуктором. Номинальный рабочий ток 2А. Греется средне. Стоит радиатор.
ШИМ используется прекрасно, в том числе по выходу En, что очень удобно — нужен всего один выход OCR. Остальными просто коммутирую направление. Рабочая частота до 100кГц, у меня 64кГц… Внутри кстати защита по перегреву стоит И она даже работает :).
Комментарии (23)
RSS свернуть / развернутьaivanov
Почему думаете что токи были меньше паспротных, как замеряли?
Насколько я помню у вас шаговики были, так там масса нюансов…
А на полевиках, конечно лучше, никто не спорит:
Zoltberg
Я опираюсь на наш опыт и советую попробовать сделать на транзисторах. Может я напишу статейку именно про то как рассчитал мой товарищ. У нас по тепловыделению очень удачно получилось, да и с токами ограничения другие вышли
aivanov
ждём-ждём, было бы интересно=)
Zoltberg
обязательно напишите! и как можно поподробнее, для начинающих, чтобы убрать эту пропасть между шилдами и самодельными модулями
RoboZeka
А зачем инверторы? Почему бы не повесить ENABLE-ы на плюс, и не пускать ШИМ прямо на входы? Тоже будет по 4м линиям управляться, и инвертор не нужен.
Интересно, как у этих входов с частотными параметрами:)
Ozze
Так, ну во первых как направление менять?
Или надо оба выхода с ШИМом использовать — один в нуле второй — ШИМим
«IN1-0 IN2-ШИМ»/«IN1-ШИМ IN2-0»
Или ШИМ инвертировать программно вместе со сменой состояния одного входа
«IN1-0 IN2-ШИМ»/«IN1-1 IN2-~ШИМ»
оба метода заморочны и сильно усложняют программирование, особенно средствами ArduinoIDE=)
Ну и наконец это просто не сработает=))
Обратите внимание на таблицу состояний ЭЛ-ек:
Если коротко — EN-1, NI-1, NI2-1, (состояние предложенной вами схемы в момент действия 1 на выходе ШИМ) — это торможение, будет жёсткий дёрг-дёрг, перегревы и вибрации=(
Кстати не обязательно инвертор прям микросхемой — можно просто транзистор поставить — это кому как нравится — про транзистор объяснять дольше, вот и воткнул 74hc00.
Видимо так же как и у EN, (см. эквивалентную схему)
fc (Vi) Commutation Frequency при IL = 2A типично 25KHz максимум 40KHz
(см датащит)
Zoltberg
Да, я так всегда и делаю, это мой верный и испытанный способ. Программный ШИМ на любой пин IO — задачка не трудная.
А вот только что вырезанная из дш на 293ю таблица состояний:
Ozze
никто не читает, багов не видит=((
Ща исправим, спасибо.
Да можно, можно, я не спорю.Только это ради экономии одного корпуса логики/пары транзисторов?
Изящно, но это на любителя=)
Ладно, отвечу на ваш предыдущий вопрос так:
Мне кажется так понятнее и проще код=)
Zoltberg
Сложность она относительная, мы тут не орбитальные станции проектируем все же.
Ozze
http://robozone.su/2008/04/16/modul-upravlenija-jelektrodvigateljami.html
Дата публикации: 16 апреля 2008.
Igor
red21
А от чего, извините, попахивает?
Картинки, фотографии, текст, код?
Разъёмы синенькие, платформа кругленькая?
Включёные по датащиту микросхемы?
Если вы о сверх оригинальном решении проинвертировать входы L29х то, да оно не моё, правда оно так же несколько старше самой робозоны вцелом.
Вот, кстати, обратите внимание на ход мысли в статье:
далее:
если пройдёте по последней ссылочке там можно нажать на надпись "
Попрошу аргументировать ваше высказывание!
Zoltberg
В вашем сообщении чувствуются высокие тона и негативные эмоции.
Возможно мое заявление выглядело, как обвинение. Но оно им не является. Можете выполнять любые статьи, но с уточнением автора изделия.
В моих кругах принято приводить подобные работы, а затем давать свои НОВЫЕ идеи. Иначе работа превращается в плагиат.
В вашей статье ничего нового я не увидел.
Ваше право копировать чужие идеи, но не забывается кодекс чести электронщика.
Igor
У меня поначалу складывалось впечатление, что здесь серьезное общество, которое понимает всю серьезность и ответственность своих действий.
Igor
Ардуино-ориентированную, и именно для ардуино-ориентированной аудитории.
Инструкция по типовому применению L298 c ардуино, если угодно.
Автор изделия?
Позвольте полюбопытствовать, в ваших кругах использование схемы с общим эмиттером тоже считают плагиатом, если не указать конкретного автора?=)
Это более чем типовое и очевидное решение, автор его утерян в веках, я уж и не помню где я его увидел.
И опять же, обращаю ваше внимание — в статье таки указан, причём куда более старый,
Zoltberg
deQU
Нарисовал циркулем круг и вырезал концелярским ножём в три прохода.
Крепления моторов —
Zoltberg
Ozze
По сравнению с оргстеклом — просто как масло=)
Zoltberg
deQU
В текущем проекте использую похожую L6203 — там один полный мост. В качестве двигателя — 24Вт-ный привод ВАЗ-овского стеклоподъемника со стандартным редуктором. Номинальный рабочий ток 2А. Греется средне. Стоит радиатор.
ШИМ используется прекрасно, в том числе по выходу En, что очень удобно — нужен всего один выход OCR. Остальными просто коммутирую направление. Рабочая частота до 100кГц, у меня 64кГц… Внутри кстати защита по перегреву стоит И она даже работает :).
Radiolok
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.