Оглавление:

Последовательный сервоконтроллер на базе Arduino: 6 шагов
Последовательный сервоконтроллер на базе Arduino: 6 шагов

Видео: Последовательный сервоконтроллер на базе Arduino: 6 шагов

Видео: Последовательный сервоконтроллер на базе Arduino: 6 шагов
Видео: КАК ПОДКЛЮЧИТЬ СЕРВОПРИВОД К ARDUINO [Уроки Ардуино #15] 2024, Ноябрь
Anonim
Последовательный сервоконтроллер на базе Arduino
Последовательный сервоконтроллер на базе Arduino
Последовательный сервоконтроллер на базе Arduino
Последовательный сервоконтроллер на базе Arduino

Это простой последовательный контроллер для нескольких сервоприводов на базе Arduino. (мой первый инструктаж тоже:))

Большая часть работы заключалась в том, чтобы заставить программное обеспечение взаимодействовать с Arduino и создать протокол для передачи данных. Что касается аппаратного обеспечения, все, что я использовал, это два сервопривода (здесь стандартный сервопривод Parallax.) Sparkfun Arduino ProtoShield и Arduino Duemilanove с ATMEGA328, но большинство этих частей можно заменить аналогичными элементами. Я придумал этот проект как часть системы дистанционного управления, но настройка коммуникации заняла много времени. Если у кого-то есть какие-либо улучшения, идеи или ошибки, не стесняйтесь комментировать. РЕДАКТИРОВАТЬ: Я написал это некоторое время назад, только что опубликовал его недавно.

Шаг 1. Вещи, которые могут вам понадобиться…

Вещи, которые могут вам понадобиться…
Вещи, которые могут вам понадобиться…
Вещи, которые могут вам понадобиться…
Вещи, которые могут вам понадобиться…

Некоторые вещи вам понадобятся, чтобы построить это. 1. Плата Arduino (на ваш выбор) 2. Два (или один) сервопривода 3. Перемычки 4. Visual Studio 2008 Express - ссылка (необязательно) 5. Arduino IDE - ссылка Извините, поклонники Linux и Apple, моя программа работает только на Windows на данный момент, но вы все равно можете вручную отправлять последовательные команды в Arduino, не меняя код.

Шаг 2: Подключите оборудование

Подключите оборудование
Подключите оборудование

В этом шаге нет ничего сложного, просто подключите один сервопривод к контакту 9, а другой - к контакту 10.

Шаг 3: запрограммируйте Arduino

Запрограммируйте Arduino
Запрограммируйте Arduino

теперь вы можете загрузить скетч на Arduino.

Вот простая разбивка кода: #include Servo myservo; // создание сервообъекта для управления сервоприводом Servo myservo1; int incomingByte = 0, datacount = 0, counter = 0, ready = 0; // для входящих последовательных данных char data [10]; const char verify [8] = "ma11hew"; команда char [3]; пустая настройка () {myservo.attach (9); myservo1.attach (10); Serial.begin (38400); // открывает последовательный порт, устанавливает скорость передачи данных Serial.println ("Hi Arduino Here!"); // добавлено, чтобы помочь идентифицировать последовательный порт. Это просто устанавливает последовательный порт и сервоприводы. int i; для (я = 0; я <180; я ++) {myservo.write (я); задержка (15); } myservo.write (5); для (я = 0; я <180; я ++) {myservo1.write (я); задержка (15); } myservo1.write (5); } Простое широкое движение для проверки правильности работы сервоприводов. void loop () {готово = 0; счетчик = 0; в то время как (1 == 1) {если (Serial.read ()! = проверить [счетчик]) {перерыв; } если (счетчик == 6) {задержка (20); команда [0] = Serial.read (); команда [1] = Serial.read (); // if (Serial.read () == ((command [1] * 12)% 8)) // {ready = 1; //} Serial.println ("сохраненная команда"); } counter ++; задержка (2); } это проверяет последовательный буфер на правильность строки авторизации, а затем получает два байта для команды. прокомментированный оператор if допускает временную контрольную сумму, но затрудняет ручной интерфейс. ready можно установить в 0, поэтому команды не будут анализироваться, например, в случае поврежденных данных. // поиск по командам if (ready == 1) {if (command [0] == 'T') {command [0] = 0; Serial.print («управление дроссельной заслонкой на выводе 9 на:»); Serial.println (карта (команда [1], 32, 126, 2, 180), DEC); myservo.write (карта (команда [1], 32, 126, 2, 180)); } если (команда [0] == 'S') {команда [0] = 0; Serial.print («управление дроссельной заслонкой на контакте 10 к:»); Serial.println (карта (команда [1], 32, 126, 2, 180), DEC); myservo1.write (карта (команда [1], 32, 126, 2, 180)); }}} остальная часть кода предназначена для поиска в command допустимых команд (T или S.), если они совпадают, берет следующий байт и отправляет его сервоприводу. подробнее на карте (команда [1], 32, 126, 2, 180) позже … код здесь расширяется для всего, что вам может понадобиться (например, огни, двигатели, ИК и т. д.), этот код должен работать нормально без модификации.

Шаг 4: Установите программное обеспечение

Установить программное обеспечение
Установить программное обеспечение

У меня есть два способа установить этот установщик… nsis: Загрузите самораспаковывающийся установщик ниже и запустите его. У вас будет возможность установить исходники во время установки. двоичный пакет установщика устанавливает основные dll c ++, поэтому его можно запускать на компьютере без установленного Visual C ++. После завершения установки вы можете запустить ее с рабочего стола или из меню «Пуск». zip way (непроверенный): скачайте и запустите, должно работать. может быть. (В zip-архиве та же структура папок, созданная установщиком, без исходных кодов. У меня нет машины без Visual Studio, чтобы протестировать ее, поэтому она может не работать.)

Шаг 5: Используйте интерфейсную программу

Используйте интерфейсную программу
Используйте интерфейсную программу
Используйте интерфейсную программу
Используйте интерфейсную программу

Чтобы использовать программу, сначала выберите скорость передачи, определенную в скетче Arduino. Немодифицированный эскиз по умолчанию составляет 38400 бод, но может быть изменен в соответствии с вашими потребностями, например, для более медленной радиосвязи. примечание: скорости передачи выше 38400 не были очень стабильными, я думаю, это потому, что uart заполняется до того, как данные могут быть обработаны. Затем выберите используемый COM-порт. программа по умолчанию использует COM4, обязательно измените его, иначе программа выйдет из строя. Наконец, нажмите "Открыть". Если все прошло успешно, программа откроет выбранный последовательный порт с выбранной скоростью передачи данных. В противном случае программа, вероятно, выйдет из строя из-за необработанного исключения. убедитесь, что порт правильный, и попробуйте еще раз. Используйте текстовые поля для отправки прямых команд на Arduino. «Карта (команда [1], 32, 126, 2, 180)» масштабирует все 94 возможных команды, от * пробела * до ~, читаемых Arduino в ASCII, от 2 до 180 для сервопривода. любой байт меньше 32 ASCII (пробел) или больше 126 (~) по умолчанию равен 63 (?) Полосы дорожек обеспечивают интерфейс для прямых команд. каждый шаг пошагово отправляет последовательную команду на Arduino.

Шаг 6: проявите творческий подход

Проявите творческий подход!
Проявите творческий подход!
Проявите творческий подход!
Проявите творческий подход!

Подумайте, что из этого можно сделать. Несколько идей: 1. Дроссельная заслонка для авто. 2. Крепление для 3D-камеры 3. Подводный вездеход Удачи!

Рекомендуемые: