CraftDuino v2.0
  • - это CraftDuino - наш вариант полностью Arduino-совместимой платы.
  • CraftDuino - настоящий конструктор, для очень быстрого прототипирования и реализации идей.
  • Любая возможность автоматизировать что-то с лёгкостью реализуется с CraftDuino!
Просто добавьте CraftDuino!

Сборка мощного моторшилда (на базе L298)

Всем хороша 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);
}

Проверяем уже на мощных моторах

Работает!
Видео результата:

Комментарии (23)

RSS свернуть / развернуть
+
0
У нас эти L298 горели при токах ниже чем указано в паспорте, пришлось делать сборку. В итоге ничего не грелось и об охлаждении думать не пришлось
avatar

aivanov

  • 20 июня 2012, 11:18
+
0
диоды ставили?, правильно ставили?=)
Почему думаете что токи были меньше паспротных, как замеряли?
Насколько я помню у вас шаговики были, так там масса нюансов…
А на полевиках, конечно лучше, никто не спорит:
… достоинства и недостатки совершенно те же что и у L293 — можно почитать тут...
avatar

Zoltberg

  • 20 июня 2012, 11:35
+
0
Да, со схемотехникой все в порядке. К тому же из соображений экономии делать на транзисторах дешевле выходит. У нас L298 стоит 130 рублей, сборка — порядка 40 рублей. Потом надежность, что-то полетело — можно заменить один из звеньев цепи.

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

aivanov

  • 20 июня 2012, 11:53
+
+1
а драйверы для полевиков? ;)
Может я напишу статейку именно про то как рассчитал мой товарищ.
ждём-ждём, было бы интересно=)
avatar

Zoltberg

  • 20 июня 2012, 12:09
+
+1
+1
обязательно напишите! и как можно поподробнее, для начинающих, чтобы убрать эту пропасть между шилдами и самодельными модулями

avatar

RoboZeka

  • 10 июля 2012, 00:54
+
0
Резвая штука вышла:)

А зачем инверторы? Почему бы не повесить ENABLE-ы на плюс, и не пускать ШИМ прямо на входы? Тоже будет по 4м линиям управляться, и инвертор не нужен.
Интересно, как у этих входов с частотными параметрами:)
avatar

Ozze

  • 20 июня 2012, 12:44
+
0
=))
Так, ну во первых как направление менять?
Или надо оба выхода с ШИМом использовать — один в нуле второй — ШИМим
«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
(см датащит)
avatar

Zoltberg

  • 20 июня 2012, 13:19
+
0
Эмм? Где вы эту таблицу взяли? :) Чем в вашей таблице отличается поворот вправо от торможения.
Или надо оба выхода с ШИМом использовать — один в нуле второй — ШИМим
«IN1-0 IN2-ШИМ»/«IN1-ШИМ IN2-0»

Да, я так всегда и делаю, это мой верный и испытанный способ. Программный ШИМ на любой пин IO — задачка не трудная.

А вот только что вырезанная из дш на 293ю таблица состояний:
avatar

Ozze

  • 20 июня 2012, 13:56
+
0
Эмм? Где вы эту таблицу взяли? :)
сам когда-то рисовал=(
никто не читает, багов не видит=((
Ща исправим, спасибо.
Программный ШИМ на любой пин IO — задачка не трудная.
Да можно, можно, я не спорю.Только это ради экономии одного корпуса логики/пары транзисторов?
Изящно, но это на любителя=)
Ладно, отвечу на ваш предыдущий вопрос так:
А зачем инверторы?
Мне кажется так понятнее и проще код=)
avatar

Zoltberg

  • 20 июня 2012, 14:32
+
0
Ну вот и разъяснилось:)
Сложность она относительная, мы тут не орбитальные станции проектируем все же.
avatar

Ozze

  • 20 июня 2012, 16:19
+
-3
раскрыть комментарий
avatar

Igor

  • 20 июня 2012, 14:24
+
+1
как то подругому можно сделать?
avatar

red21

  • 20 июня 2012, 14:42
+
+2
=)))))))
А от чего, извините, попахивает?
Картинки, фотографии, текст, код?
Разъёмы синенькие, платформа кругленькая?
Включёные по датащиту микросхемы?
Если вы о сверх оригинальном решении проинвертировать входы L29х то, да оно не моё, правда оно так же несколько старше самой робозоны вцелом.
Вот, кстати, обратите внимание на ход мысли в статье:
Но тратить по три пина на управление каждым каналом — жуткое расточительство — поэтому дополним наш шилд парой инверторов (подробности про принцип работы этого решения можно почитать здесь)
далее:
— самая распространённая микросхема логики — 4 двухвходовых элемента И-НЕ — для моторшилдов довольно стандартное решение.
если пройдёте по последней ссылочке там можно нажать на надпись "this page" и оказаться на странице где данное решение датированно 2005-2006гг.

Попрошу аргументировать ваше высказывание!
avatar

Zoltberg

  • 20 июня 2012, 15:06
+
-2
Дорогой Zoltberg!
В вашем сообщении чувствуются высокие тона и негативные эмоции.
Возможно мое заявление выглядело, как обвинение. Но оно им не является. Можете выполнять любые статьи, но с уточнением автора изделия.
В моих кругах принято приводить подобные работы, а затем давать свои НОВЫЕ идеи. Иначе работа превращается в плагиат.
В вашей статье ничего нового я не увидел.
Ваше право копировать чужие идеи, но не забывается кодекс чести электронщика.
avatar

Igor

  • 20 июня 2012, 19:50
+
-1
Ребят вам сколько лет? Минуса ставите. Скажите напрямую что не нравится.
У меня поначалу складывалось впечатление, что здесь серьезное общество, которое понимает всю серьезность и ответственность своих действий.
avatar

Igor

  • 20 июня 2012, 22:21
+
+2
В моих кругах принято приводить подобные работы, а затем давать свои НОВЫЕ идеи.
Это не работа научная, это демонстрация, для начинающих, как из конкретных деталей сделать конкретную вещь. Типовую, рабочую, без заморочек.
Ардуино-ориентированную, и именно для ардуино-ориентированной аудитории.
Инструкция по типовому применению L298 c ардуино, если угодно.
Автор изделия?
Позвольте полюбопытствовать, в ваших кругах использование схемы с общим эмиттером тоже считают плагиатом, если не указать конкретного автора?=)
Это более чем типовое и очевидное решение, автор его утерян в веках, я уж и не помню где я его увидел.
И опять же, обращаю ваше внимание — в статье таки указан, причём куда более старый, источник такого решения(хотя я очень сомневаюсь что он первый).
avatar

Zoltberg

  • 20 июня 2012, 22:26
комментарий был удален

+
0
Уважаемый Zoltberg, скажите, а платформа (диск и крепления) самодельная ведь? и, как мне кажется, из полиморфуса, да?)
avatar

deQU

  • 21 июня 2012, 08:42
+
+1
Нет, это не ПКЛ, это какой-то листовой пластик для рекламщиков, ЕМНИП — вспененый ПВХ.
Нарисовал циркулем круг и вырезал концелярским ножём в три прохода.
Крепления моторов — такие.
avatar

Zoltberg

  • 21 июня 2012, 12:10
+
0
Тяжело ли режется этот вспененный ПВХ? А то все думаю попробовать использовать в своих конструкциях. С оргстеклом уже намучился.
avatar

Ozze

  • 22 июня 2012, 13:12
+
0
Нормально режется, довольно легко.
По сравнению с оргстеклом — просто как масло=)
avatar

Zoltberg

  • 23 июня 2012, 13:05
+
0
кстати, как вы сделали такой круглый и прочный круг?
avatar

deQU

  • 21 июня 2012, 09:04
+
0
Микросхемы потрясающие!
В текущем проекте использую похожую L6203 — там один полный мост. В качестве двигателя — 24Вт-ный привод ВАЗ-овского стеклоподъемника со стандартным редуктором. Номинальный рабочий ток 2А. Греется средне. Стоит радиатор.
ШИМ используется прекрасно, в том числе по выходу En, что очень удобно — нужен всего один выход OCR. Остальными просто коммутирую направление. Рабочая частота до 100кГц, у меня 64кГц… Внутри кстати защита по перегреву стоит И она даже работает :).
avatar

Radiolok

  • 21 июня 2012, 09:24

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.