Синхронизируйте несколько плат Mega для запуска нескольких серводвигателей.

Мой друг Жюль спрашивает:

Цель состоит в том, чтобы получить как можно больше элементов управления серводвигателями — похоже, максимум, который выдает Arduino, составляет 14?

Цифровые контакты ввода/вывода 54 (из которых 14 обеспечивают выход ШИМ)

Я предполагаю, что синхронизация нескольких плат Mega становится программной проблемой? - т.е. массив 14 x 14 с использованием 14 плат

Я думаю, когда вы говорите «серводвигатель», вы имеете в виду интегрированную радиоуправляемую модель типа «сервопривод»? Как правило, «серводвигатель» означает двигатель, используемый в сервосистеме с замкнутым контуром ПИД (или аналогичной). Из названия я подумал, что этот вопрос касается реализации нескольких одновременных контуров сервоуправления на атмеге.

Ответы (5)

Я бы также пошел по тому же маршруту, который предложил todbot. Однако, поскольку я большой поклонник I2C, я использую сервоконтроллер SD21, который может управлять 21 сервоприводом. Если вам нужно еще больше, есть сервоконтроллер SD84, который может управлять (как вы уже догадались) 84 сервоприводами.

Если вы хотите управлять несколькими сервоприводами, лучше подключить несколько выделенных сервоконтроллеров к одному Arduino. Есть много примеров сервоконтроллеров с открытым исходным кодом, но вы также можете купить готовые. Например, вот 8-сервоконтроллер Polulu и 16-сервоконтроллер Pololu . Возьмите несколько таких, подключите их к любым цифровым контактам Arduino и используйте библиотеку SoftSerial для отправки им команд.

Сервоконтроллеры, которые вы рекомендуете, устарели. Новое семейство сервоконтроллеров Maestro лучше во всех отношениях. pololu.com/catalog/category/12

Я согласен с другими парнями, используйте специальный сервоконтроллер.

Я нахожусь в процессе создания собственного робота-гексапода, см. здесь исходный код и доступные схемы.

Другой подход заключается в использовании «цифровых» сервоприводов, таких как OpenServo . Таким образом, вы можете управлять дюжиной или около того сервоприводов, используя 2 вывода Arduino, и еще дюжиной сервоприводов, используя еще 2 вывода.

Я использую сервоконтроллер SSC-32 от Lynxmotion. Он использует ATmega8 или ATmega168 и может управлять до 32 сервоприводами. Вы можете найти все (схема, прошивка) для сборки на их странице. Я построил один сам, и он работал нормально.