Как управлять двумя двигателями 12 В постоянного тока 10 А с помощью Arduino?

Я новичок в Arduino и электронике в целом, но мне нужна помощь в проекте, над которым я работаю. По сути, я хочу иметь возможность управлять состоянием (вкл./выкл.) и направлением двух линейных приводов, которые на самом деле являются двигателями постоянного тока.

Это кажется простым, но проблема в том, что линейные приводы имеют питание 12 В постоянного тока и потребляют 10 ампер тока при полной нагрузке. Я купил внешний блок питания на 25 А, потому что очевидно, что микроконтроллер Arduino не может обеспечить такой большой ток.

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

Ответы (3)

Вы можете использовать любой 12-вольтовый регулятор скорости, который принимает ШИМ-сигнал. Таких контроллеров много. Проверьте eBay и Google.

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

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

Вот что я бы искал на eBay

Взгляните на Pololu High-Power Motor Driver 18v15 . Казалось бы, он соответствует (и даже превосходит) ваши потребности. Я купил один из них на прошлой неделе, и он должен прибыть завтра. Я отредактирую этот ответ своим обзором.

27.03.13

Получил вчера поздно вечером на почте. Собрал сегодня вечером. Завтра будем тестировать.

07.04.13

Мое время с коммутатором было коротким, но невероятно продуктивным. Лодка, в которую был помещен коммутатор, в конце концов затонула, унеся с собой GPS, XBee, Arduino и коммутатор. Переключатель был очень прост в использовании. Пайка прошла быстро, и входящий в комплект конденсатор отлично подошёл для моих целей. Положительная клемма моей батареи подключена к V+заголовку, а отрицательная клемма подключена к GNDзаголовку. Провода двигателя подключены к разъемам OUTAи OUTB. Полярность для этих двух разъемов не имеет значения, так как устройство способно ее переключать.

Что касается логики, я подключил контакт Arduino GNDк разъему переключателя GND. Я не использовал индикаторы флагов FF1и FF2ошибок, но их чтение так же просто, как digitalReadесли бы они были подключены к Arduino. Пинцет RESETдействительно удобен в использовании. Просто используйте digitalWrite(resetPin, LOW);, чтобы перевести плату в спящий режим (это также устраняет любые ошибки). Верните его обратно на высокий уровень, чтобы возобновить нормальную работу.

Есть два способа работы с платой, но я расскажу только о том, который использовал сам, и считаю, что он проще. PIN - DIRкод должен считаться цифровым. Таким образом, вы настраиваете его так же, как любой обычный цифровой выходной контакт на Arduino. Вы тяните штифт HIGHв одном направлении и LOWв противоположном направлении. Это эффективно меняет полярность на заголовки OUTAи OUTB. Вывод PWMдолжен быть подключен к выводу с поддержкой ШИМ на Arduino. На Arduino Uno это контакты 3, 5, 6, 9, 10 и 11. Убедитесь, что выбранный вами контакт не блокируется прерыванием таймера. Управлять скоростью двигателя так же просто, как использовать analogWriteконтакт с номером от 0 (остановлен) до 255 (полная скорость). mapфункция будет действительно полезна здесь. Вы можете использовать его, чтобы взять любой разумный диапазон и преобразовать его в нужный вам диапазон (в данном случае 0-255). Я использовал его, чтобы уменьшить 0-255 до 0-100, чтобы создать процент тяги, который я мог бы отобразить, но в этом случае я мог бы просто разделить число на 2,55. ;) Посмотрите этот коммит на GitHub , чтобы увидеть, как я его реализовал. В отличие от этой фиксации, вам не нужно использовать pinModeвывод PWM.

Единственная «проблема», с которой я столкнулся с платой, заключалась в том, что при работе двигателя он создавал звуковой сигнал в зависимости от скорости. На полной скорости это не было заметно, но на более низких скоростях это было заметно. Я не исправил эту проблему до того, как лодка затонула, но мне сказали, что ее можно решить с помощью библиотеки частот PWM Arduino .

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

На самом деле я только что увидел этот ответ и заказал такой же у polulu, но мне пришлось получить драйвер с двумя двигателями, потому что я управляю двумя линейными приводами (действующими как двигатели постоянного тока). у тебя хорошо получилось? Меня может немного смутить контактное соединение, поэтому я свяжусь с вами, если мне понадобится помощь.
У меня не было возможности подключить его, но это кажется достаточно простым. V+ и GND, а затем контакт для направления и контакт для скорости.
Знаете ли вы, какой контакт Н-моста подключается к какой клемме двигателя постоянного тока. Например, становится ли M1A положительным, а M1B отрицательным или наоборот?
@GregHarrington Сегодня я обновлю свой пост. Не имеет значения, подключен ли OUTA или OUTB к положительному или отрицательному выводу двигателя. Коллекторные двигатели постоянного тока должны принимать ток любой полярности. Вот как вы меняете направление! Цифровой контакт DIR изменит полярность OUTA и OUTB.

Это может быть проще и дешевле, если вы использовали реле DPDT для изменения направления вращения двигателя. Вот схема того, что я имею в виду:

схематический

смоделируйте эту схему - схема, созданная с помощью CircuitLab

Вывод микроконтроллера, который вы используете на силовом транзисторе (обозначен Q2 на схеме), позволит току течь через реле, направление тока через двигатель зависит от состояния реле. Я использовал эту схему во многих проектах из-за ее простоты, стоимости и присущей реле надежности.

*Небольшое замечание: транзистор, использованный в схеме, не рассчитан на ток 10 ампер. Мне повезло с парным транзистором Дарлингтона tip142, в техническом паспорте указано, что он может выдерживать непрерывный ток 10 ампер. Спецификация: http://www.alldatasheet.com/datasheet-pdf/pdf/25370/STMICROELECTRONICS/TIP142.html

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

* Катушке реле потребуется что-то, чтобы управлять ею, что может потребовать нескольких конфигураций в зависимости от используемого реле.

* Что касается стоимости, реле может стоить до четырех или пяти долларов, то же самое для транзистора.