Руководство по подключению Pi Servo Hat
Введение
Сервошляпа SparkFun Pi позволяет вашему Raspberry Pi управлять до 16 серводвигателями через соединение I2C. Это сохраняет GPIO и позволяет использовать встроенный GPIO для других целей. Кроме того, Pi Servo Shield добавляет подключение к последовательному терминалу, которое позволит вам подключать Raspberry Pi без необходимости подключать его к монитору и клавиатуре.
Необходимые материалы
Вот что вам нужно сделать при изучении этого руководства. Мы предлагаем приобрести чистую карту microSD, а не карту с поддержкой NOOBS, поскольку карты с поддержкой NOOBS могут не иметь достаточно новой ОС для поддержки Pi Zero W.
- Заголовки Break Away - прямо
- Сетевой адаптер питания - 5,1 В постоянного тока, 2,5 А (USB Micro-B)
- Карта microSD с адаптером - 16 ГБ (класс 10)
- Raspberry Pi GPIO, высокий заголовок - 2 × 20
- Raspberry Pi Zero W
- Шляпа сервопривода SparkFun Pi
Кроме того, вам понадобится какой-нибудь серводвигатель для проверки установки. Попробуйте сначала протестировать примеры, приведенные далее в руководстве, с помощью обычного субмикро сервопривода.
- Серво - универсальный (субмикроразмер)
Необходимые инструменты
Для сборки этого изделия не требуются специальные инструменты. Вам понадобится паяльник, припой и общие принадлежности для пайки.
- Припой без свинца - 15-граммовая трубка
- Паяльник - 30 Вт (США, 110 В)
Обзор оборудования
На доске всего несколько интересных предметов, так как эта шляпа минимально сложна в использовании.
Разъем USB Micro B - Этот разъем может использоваться только для питания серводвигателей или для питания серводвигателей, а также Pi, который подключен к шляпе. Его также можно использовать для подключения к Pi через соединение через последовательный порт, чтобы избежать необходимости использовать монитор и клавиатуру для настройки Pi.
Изолирующая перемычка источника питания - Эту перемычку можно снять (по умолчанию она замкнута), чтобы изолировать шину питания сервопривода от шины питания Pi 5V. Почему вы хотите это сделать? Если есть несколько сервоприводов или большие сервоприводы с большой нагрузкой на них, шум, создаваемый серводвигателями на шине питания, может вызвать нежелательную работу Pi, вплоть до полного сброса или выключения. Обратите внимание:пока Pi подключен к питанию, последовательный интерфейс будет работать независимо от состояния этой перемычки.
Заголовки контактов серводвигателя - Эти коллекторы разнесены, чтобы облегчить прикрепление к ним серводвигателей. Они закреплены штырями в правильном порядке для большинства разъемов серводвигателей любительского типа.
Сборка оборудования
Мы предлагаем припаять штекерные разъемы к Pi Zero W.
Мой любимый трюк в такой ситуации - припаять один штырь, затем расплавить припой на этом штыре, держа в правой руке утюг, и левой рукой отрегулировать разъем, пока он не станет ровным, как показано ниже. Убедитесь, что вы выполняете пайку более короткой стороной разъема, а более длинные контакты находятся на стороне компонентов. Прикрепив один штырь, завершите припаивание всех штырей к Pi Zero W.
Повторите шаги с женским заголовком и Pi Servo Hat.
Обязательно вставьте короткие штыри снизу платы и добавьте припой на сторону компонентов, чтобы сервоштап Pi Zero W располагался поверх штырьков штыревого разъема Pi Zero W. Вам также необходимо убедиться, что заголовок находится на одном уровне, прежде чем паять все контакты.
После того, как разъемы будут припаяны, сложите шляпу сервопривода Pi на Pi Zero W. Затем подключите сервопривод для хобби к каналу «0» в зависимости от сервопривода, который вы используете. Попробуйте взглянуть на техническое описание сервопривода для хобби или обратиться к некоторым стандартным выводам разъемов сервопривода, перечисленным в этом руководстве. Используя сетевой адаптер на 5 В, мы можем запитать Pi Zero W. Подключите сетевой адаптер к розетке для питания и подключите разъем micro-B, помеченный как порт «PWR IN» на Pi Zero W.
Программное обеспечение - Python
Здесь мы подробно рассмотрим, как получить доступ и использовать сервопривод pi в Python.
Полный пример кода доступен в репозитории продукта на GitHub.
Настройка доступа к ресурсам SMBus
Первый момент:в большинстве взаимодействий на уровне ОС I
2
Шина C упоминается как SMBus. Таким образом мы получаем первые строчки кода. Это импортирует модуль smbus, создает объект типа SMBus и подключает его к шине «1» различных SMBus Pi.
import smbus
bus =smbus.SMBus (1)
Мы должны сообщить программе адрес детали. По умолчанию это 0x40, поэтому установите значение переменной для дальнейшего использования.
addr =0x40
Затем мы хотим включить микросхему PWM и указать ему, чтобы он автоматически увеличивал адреса после записи (что позволяет нам выполнять многобайтовую запись за одну операцию).
bus.write_byte_data (addr, 0, 0x20) bus.write_byte_data (addr, 0xfe, 0x1e)
Запись значений в регистры ШИМ
Это все, что необходимо сделать. С этого момента мы можем записывать данные в микросхему ШИМ и ожидать, что она ответит. Вот пример.
bus.write_word_data (addr, 0x06, 0) bus.write_word_data (addr, 0x08, 1250)
Первая запись производится в регистр «время начала» для канала 0. По умолчанию частота ШИМ микросхемы составляет 200 Гц, или один импульс каждые 5 мс. Регистр времени начала определяет, когда импульс достигает высокого уровня в цикле 5 мс. Все каналы синхронизируются с этим циклом. Как правило, это должно быть записано в 0. Вторая запись производится в регистр «время остановки», и он определяет, когда импульс должен стать низким. Диапазон этого значения составляет от 0 до 4095, и каждый счет представляет собой один фрагмент этого периода 5 мс (5 мс / 4095), или около 1,2 мкс. Таким образом, указанное выше значение 1250 соответствует примерно 1,5 мс высокого времени за период 5 мс.
Сервомоторы получают свой управляющий сигнал от этой ширины импульса. Вообще говоря, ширина импульса 1,5 мс дает «нейтральное» положение, находящееся на полпути между крайними значениями диапазона двигателя. 1,0 мс дает примерно 90 градусов от центра, а 2,0 мс дает -90 градусов от центра. На практике эти значения могут быть немного больше или меньше 90 градусов, а двигатель может двигаться чуть больше или меньше 90 градусов в любом направлении.
Для адресации других каналов просто увеличьте адрес двух регистров выше на 4. Таким образом, время начала для канала 1 равно 0x0A, для канала 2 - 0x0E, канала 3 - 0x12 и т. Д., А адрес времени остановки для канала 1 - 0x0C, для канала 2 - 0x10, для канала 3 - 0x14 и т. д. См. таблицу ниже.
Канал № | Начальный адрес | Адрес остановки |
---|---|---|
Канал 0 | 0x06 | 0x08 |
Глава 1 | 0x0A | 0x0C |
Глава 2 | 0x0E | 0x10 |
Глава 3 | 0x12 | 0x14 |
Глава 4 | 0x16 | 0x18 |
Глава 5 | 0x1A | 0x1C |
Глава 6 | 0x1E | 0x20 |
Глава 7 | 0x22 | 0x24 |
Глава 8 | 0x26 | 0x28 |
Глава 9 | 0x2A | 0x2C |
Глава 10 | 0x2E | 0x30 |
Глава 11 | 0x32 | 0x34 |
Глава 12 | 0x36 | 0x38 |
Глава 13 | 0x3A | 0x3C |
Глава 14 | 0x3E | 0x40 |
Глава 15 | 0x42 | 0x44 |
Если вы записываете 0 в начальный адрес, каждая степень смещения от 90 градусов требует записи 4,6 счета в конечный адрес. Другими словами, умножьте количество градусов смещения от нейтрали, которое вы хотите достичь, на 4,6, а затем либо добавьте, либо вычтите полученный результат из 1250, в зависимости от желаемого направления движения. Например, смещение на 45 градусов от центра будет составлять 207 (45 × 4,6) отсчетов, больше или меньше 1250, в зависимости от направления, в котором вы хотите, чтобы движение было.
Подробнее…
Руководство по подключению сервопривода Pi
Производственный процесс
- Руководство по созданию прототипов с ЧПУ
- Руководство по подключению FLIR Lepton
- Руководство по подключению к стартовому набору Raspberry Pi 3
- Руководство по подключению Qwiic HAT для Raspberry Pi
- Предварительно собранное руководство по подключению клина Pi с 40 контактами
- Простой робот Pi
- Руководство по силовым молотам
- Путеводитель по кузнечным кузням
- Руководство по точному литью
- Краткое руководство по параллелизму GD&T