Есть ли способ получить больше PWM от платы Arduino?

Я хочу управлять 4 шаговыми двигателями с помощью Arduino UNO, и мне не хватает ШИМ. В каждом руководстве в Интернете они использовали вывод ШИМ, в этом случае я могу использовать максимум два шаговых двигателя с Arduino. Так почему это должно быть быть только ШИМ, который будет использоваться, или есть способ расширить ШИМ на моей плате с помощью программного или аппаратного обеспечения? например: мы используем библиотеку softwareserial для получения выводов Rx, Tx.

Вот некоторые из руководств:

http://learn.adafruit.com/adafruit-arduino-lesson-16-stepper-motors/шаговые двигатели

http://arduino.cc/en/Tutorial/MotorKnob

У меня сейчас нет времени на реальный ответ, поэтому я просто напишу это: Вы можете сделать ШИМ в программном обеспечении без каких-либо проблем. Самый простой способ сделать это - создать цикл, который будет выполнять подсчет. Сначала установите вывод на высокий уровень, а затем во время каждой итерации цикла проверяйте значение счетчика. Как только он достигнет процента времени, когда вам нужно, чтобы булавка была высокой, установите булавку на низкий уровень. Другой, менее требовательный к процессору способ сделать это — настроить прерывания по таймеру, а затем установить состояние вывода в подпрограмме обслуживания прерывания.
Это просто к сведению. Следите за предложением Arduino по Зоне 51 .
Кто-нибудь может объяснить, как именно ШИМ управляет двигателем? Я имею в виду, зачем нужны контакты 3PWM (для 4-проводных шаговых двигателей)?

Ответы (1)

В Arduino есть функция AnalogWrite() , которая может генерировать волны ШИМ. Любой аналоговый вывод может быть преобразован в выходной вывод PWM. Но это управляется программно. Таким образом, ваш код будет тратить свое основное время на создание сигналов ШИМ, а не на другие полезные действия.

Существует также ШИМ-шилд от Sparkfun. Попробуйте сделать это самостоятельно (схема доступна) или купите одну плату - https://www.sparkfun.com/products/10615

Не используйте ШИМ для управления шаговыми двигателями. Это комплексный метод. Кроме того, если вы используете ШИМ для управления шаговыми двигателями, вам также потребуется дополнительно микросхема H-моста/драйвера (Arduino не может управлять двигателями напрямую, поскольку Arduino может обеспечивать только очень меньший ток, которого недостаточно для работы двигателей).

Используйте драйверы шаговых двигателей для управления шаговыми двигателями. Вам не нужны выходы ШИМ для управления этими шаговыми драйверами. Требуются только контакты GPIO. Кроме того, эти драйверы шаговых двигателей также включают микросхему H-Bridge/Driver IC. Проверьте эту ссылку, которая объясняет, как шаговые двигатели управляются с помощью драйверов шаговых двигателей, и их схема подключения.

http://www.pololu.com/product/1182

Позвольте мне рассказать вам, что я пытаюсь сделать, это мой актуальный вопрос electronics.stackexchange.com/questions/94723/… На самом деле я пытаюсь внедрить и запустить шаговые двигатели, создав сами драйверы шаговых двигателей. Ранее я использовал l293d. но это использует вывод PWM. Я думаю, что я не могу использовать уже построенные драйверы двигателей, так как они стоят дорого.
Если драйверы шаговых двигателей дороже, то следующим вариантом являются H-мосты. Использование программного обеспечения для генерации ШИМ не является хорошим вариантом, особенно когда вам нужно выполнять другие работы с вашим Arduino. ШИМ должен генерироваться с помощью аппаратных модулей. Arduino Mega имеет несколько больше по сравнению с Uno. Вам придется использовать Arduino Mega для управления шаговым двигателем вместе с L293D. Проверьте эту ссылку (Arduino Mega и шаговые драйверы) reprap.org/wiki/Arduino_Mega_Pololu_Shield
Спасибо за ответ, вы читали мой вопрос? Весь мой мотив состоит в том, чтобы сделать драйверы шаговых двигателей, чтобы я мог управлять своими двигателями. Я вряд ли делаю какие-либо другие вещи с Arduino. Так можно ли с помощью одного uno сделать драйвера с L293D? Какие изменения программного обеспечения мне придется сделать? Эта библиотека степпера вообще не работает без ШИМ? Я хочу контролировать скорость, шаг и направление, смогу ли я этого достичь? Спасибо @robomon, ты очень помог. Счастливых праздников и счастливого Рождества :)
Пожалуйста! Пожалуйста, проголосуйте за мой ответ, если вы нашли его полезным. Вы можете управлять 1 двигателем с помощью Arduino, но для управления большим количеством двигателей потребуются модули PWM, которые будут стоить денег. Проверьте эти ссылки : Learn.adafruit.com/… , arduino.cc/en/Tutorial/StepperUnipolar