Mpk-prometey.ru

МПК Прометей
3 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Raspberry Pi для домашней автоматизации. Релейный модуль

Raspberry Pi для домашней автоматизации. Релейный модуль

Relay

Пока продолжается процесс адаптации контроллеров системы домашней автоматизации для работы со стандартным Modbus RTU, немного поговорим о подключении к Raspberry Pi различных готовых модулей. Начнем с самого простого – подключение к портам GPIO релейного модуля.

В продаже можно найти различные модификации релейных модулей на 1, 2, 4, 8 и более каналов. Все они, как правило, выполнены по одинаковой схеме и имеют «на борту» гальваническую развязку на оптронах, транзисторные ключи и электромагнитные реле либо на , либо на 12В.

Оказавшиеся в моем распоряжении два 4-х канальных модуля были выполнены на реле с напряжением 12В (рис.1)

Релейный модуль Ардуино 4 канала

Рис.1

В описании полученных релейных модулей было указано, что для управления реле в качестве активного используется низкий уровень. Т.е. при низком уровне на входе канала модуля соответствующее реле включено, а при высокомотключено. Для более детального рассмотрения этого вопроса обратимся к принципиальной схеме, которая была составлена по печатной плате модуля (рис. 2). На схеме показан только один канал, остальные каналы идентичные.

Релейный модуль Raspberry Pi схема

Рис.2

При высоком уровне на входе модуля светодиод во входной цепи и светодиод оптрона выключены, на базе транзистора Q1 присутствует низкий уровень, транзистор закрыт и реле отпущено. При подаче на вход низкого уровня светодиоды включаются, транзистор открывается и реле подтягивается. Диод, шунтирующий обмотку реле, служит для подавления самоиндукции, возникающей при коммутационных процессах.

Обратите внимание, что при установленной перемычке JD питание оптрона составляет 12В. Это неприемлемо при работе с ТТЛ уровнями или уровнями 3,3В. Поэтому, для работы рассматриваемого здесь модуля необходимо перемычку снять и подключение к портам GPIO Raspberry Pi выполнить в соответствии с рис.3:

Подключение релейного модуля Ардуино

Рис.3

Так как реле включается при низком управляющем уровне на входе, следовательно, на портах GPIO, которые управляют реле, при загрузке Raspberry Pi должны устанавливаться высокие уровни. Для этого достаточно внести изменения в конфигурационный файл – вместо x = OUT 0 указать x = OUT 1, где х – номер порта (рис.4)

Конфигурация релейного модуля Ардуино

Рис.4

Так же хотелось бы остановиться на схемной организации управления нагрузками, потребляющими большой ток, например, мощными электронагревателями или вентиляторами. Обычно для таких нагрузок мощности контактов электромагнитного реле модуля недостаточно и их применяют в качестве промежуточных реле, управляющих пускателями (контакторами), которые в свою очередь уже непосредственно коммутируют нагрузку. Для повышения надежности в таких системах имеет смысл использовать 2-х релейные схемы управления, где одно реле (К1) отвечает за включение нагрузки, а второе (К2) – за отключение. Принципиальная схема 2-х релейной схемы управления приведена на рис.5:

Управление релейным модулем Raspberry Pi

Рис.5

Принцип работы 2-х релейной схемы предельно прост. В исходном состоянии реле К1, К2 и пускатель ПМЛ отпущены, нагрузка отключена. При кратковременном срабатывании реле К1 его нормально-разомкнутые контакты К1.1 подают напряжение на катушку пускателя, пускатель подтягивается, подает питание на нагрузку через контакты ПМЛ-1 и своими блок-контактами ПМЛ-БК становится на «самоподхват». Для отключения нагрузки необходимо кратковременно включить реле К2, его нормально-замкнутые контакты К2.1 разорвут цепь питания катушки пускателя, нагрузка отключится и схема вернется в исходное состояние.

Преимущество управления с помощью 2-х релейной схемы в том, что электромагнитные реле К1 и К2 включаются только на 1-2 секунды во время включения или отключения нагрузки, остальное время они находятся в отпущенном состоянии. Это предотвращает бесполезную нагрузку на блок питания релейного модуля и повышает надежность управления в целом.

Как недостаток следует отменить необходимость использования для управления нагрузкой двух каналов релейного модуля (т.е получается, что 4-х канальный релейный модуль обеспечит управление только двумя нагрузками). Но тут уже в каждом конкретном случае нужно оценивать что важнее – количество каналов или надежность управления.

Так же в системах управления «высокой ответственности» крайне желательно сделать сигнализацию включенного/отключенного состояния нагрузки. Реализовать такую функцию можно с помощью трансформатора тока, включенного в цепь нагрузки, или, что более просто, с помощью ещё одного реле, подключенного параллельно нагрузке. Контакт реле включается на вход Raspberry Pi и позволяет реально идентифицировать включенное или отключенное состояние нагрузки.

И в завершение пример практической реализации рассмотренного сегодня материала.С применением двух 4-х канальных релейных модулей управления и Raspberry Pi2 была разработана небольшая система телемеханики для управления наружным освещением на одном объекте. Скриншот web-страницы системы показан на рис.6:

Web интерфейс релейного модуля Raspberry Pi

Рис.6

Интерфейс позволяет управлять четырьмя нагрузками в режиме 2-х релейной схемы или восьмью нагрузками в режиме 1-релейной схемы, а так же получение телесигнализации по восьми входам. В режиме 2-х релейной схемы при клике кнопки web-интерфейса низкий уровень появляется на соответствующем выходе порта GPIO на время 2 секунды.

Читайте так же:
Подключение двойного выключателя легранд этика

Категория: | Просмотров: 15679 | Добавил: Admin | Теги: | Рейтинг: 4.9/10 |
Всего комментариев: 0

Выпущен клон Raspberry Pi, такой же дешевый, но гораздо лучше

Китайский стартап Raxda, специализирующийся на выпуске одноплатных компьютеров, анонсировал 35-долларовую модель Rock 3A с поддержкой полноценных SSD-накопителей. Это его главное конкурентное преимущество перед всеми Raspberry Pi, которые до сих пор не научились работать с такими носителями информации.

Raspberry Pi из Китая

Компания Radxa из Китая разработала одноплатный компьютер Rock 3A размером с кредитную карту. Это полноценный современный ПК, хотя и без поддержки Windows, но зато с возможностью установки современного твердотельного накопителя. Он нацелен на конкуренцию с топовыми моделями одноплатников семейства Raspberry Pi, которые превосходит по ряду параметров.

Как пишет портал Liliputing, на плате размерами 85х54 мм разработчики из Radxa уместили все базовые компоненты настольного компьютера начального уровня, включая слот М.2 под SSD-накопители с поддержкой NVMe. Сам драйв в комплект поставки не входит, но, тем не менее, возможность его установки в Rock 3A заранее предусмотрена.

Начало продаж Rock 3A компания Radxa запланировала на август 2021 г. Компьютер будет доступен для приобретения в трех конфигурациях, различающихся исключительно объемом оперативной памяти. Базовая модель с 2 ГБ RAM обойдется в $35 (2610 руб. по курсу ЦБ на 20 июля 2021 г.), версия с 4 ГБ будет стоить $55 (4100 руб.), а топовая модификация с 8 ГБ ОЗУ оценивается разработчиками в $75 (5515 руб.).

r601.jpg

Для сравнения, флагманский Raspberry Pi 4 Model B стоит те же $35 с 2 ГБ оперативной памяти. Он обладает почти идентичным набором интерфейсов, но слота М.2 нет ни в одной из его модификаций.

Процессор и память

Radxa построила Rock 3A на ARM-процессоре Rockchip RK3568 с четырьмя ядрами Cortex A55 на частоте до 2 ГГц. Это чип для встраиваемых систем, и в его составе есть видеокарта Mali-G52. CPU производится по 22-нанометровому техпроцессу.

r602.jpg

В новинке Radxa по умолчанию нет встроенного накопителя. Вместо этого компания предлагает покупателю выбор – он может установить на плату Rock 3A микросхему еММС нужного ему объема или поместить в слот microSD соответствующую карту.

На оборотной стороне печатной платы есть слот М.2 под SSD PCI-E 3.0 NVMe, максимальный поддерживаемый объем которого не указан.

В качестве оперативной памяти в Rock 3A используется модуль LPDDR4X-3200.

Интерфейсы

В Rock 3A есть два слота М.2. Один с М-ключом предназначен для установки твердотельного накопителя и находится снизу платы, второй же помещен рядом с процессором и модулем ОЗУ и имеет ключ Е. Он нужен для установки съемного модуля Wi-Fi/Bluetooth, но пока неизвестно, будет ли один такой поставляться в комплекте. На официальных снимках он присутствует. Производитель заявляет о поддержке Wi-Fi вплоть до класса Wi-Fi 6 (802.11ax).

Для подключения питания в Rock 3A используется современный разъем USB-С. Он представлен на плате в единственном экземляре – подключение периферии осуществляется по обычным USB-А.

Для этого в Rock 3A есть два USB 3.0 и пара более медленных USB 2.0. Компьютер умеет работать с SATA-накопителями через специальный кабель-адаптер, подключаемый к двум USB 3.0.

Для подключения к проводной локальной сети в Rock 3А есть гигабитный Ethernet с поддержкой PoE. Вывод изображения на монитор осуществляется по полноразмерному HDMI 2.0.

Программная составляющая

На старте продаж новый Rock 3A будет поддерживать только один дистрибутив Linux – Debian 10, адаптированный под процессоры Rockchip. Как пишет Liliputing, в будущем компьютер сможет работать и на других операционных системах семейства Linux.

Вероятность того, что на Rock 3A можно будет запустить и Windows 11, отлична от нуля. Эта система получила встроенную поддержку ARM-процессоров, хотя и лишь нескольких моделей.

Для тех, кто не хочет изучать Linux и ждать порта новой ОС Microsoft, Radxa еще в октябре 2020 г. выпустила одноплатный ПК Rock Pi X с поддержкой Windows 10. Он работает на процессоре Intel Atom x5-Z8350 шестилетней давности и в максимальной комплектации с 4 ГБ ОЗУ стоит $99 (7370 руб.).

r603.jpg

В теории, на нем можно будет запустить и Windows 11.

Другие компьютеры Radxa

Radxa – это китайский стартап. Он основан в 2013 г. в Шэньчжэне (Китай), и разработка одноплатных компьютеров – его единственное направление деятельности. Помимо Rock 3A и Rock Pi X, в ассортименте компании есть модели Rock Pi N10, Rock Pi E, Rock Pi S и Rock Pi 4 – все они, кроме Rock Pi X, построены на ARM-процессорах компании Rockchip.

В мае 2021 г. Radxa пополнил свой модельный ряд необычным компьютером Rock Pi 4 Plus, отличительной чертой которого стала операционная система Twister OS. Это особый Linux-дистрибутив, способный «превращаться» в любую операционную систему Microsoft, начиная с Windows XP. У Twister OS масса интерфейсов на любой вкус. Ценители продукции Apple, к примеру, смогут установить на него тему в стиле macOS, в том числе и древних ее версий.

Читайте так же:
Сравнение качества автоматических выключателей

r606.jpg

Месяц спустя состоялся анонс крошечного ПК Radxa Zero, клона Raspberry Pi Zero. Он оказался значительно мощнее своего конкурента за счет 4-ядерного ARM-процессора на частоте 2 ГГц и 4 ГБ оперативной памяти.

r604.jpg

Radxa Zero стоит $15 (1120 руб.) против $10 (745 руб.) за Raspberry Pi Zero. Разница в цене существенная, однако более дешевый Raspberry Pi Zero уступает китайскому конкуренту в производительности, обладая лишь одним ядром в центральном процессоре.

Raspberry PI 3

Отзывов: 0Отзывов: 0 | Написать отзыв

Raspberry Pi 3 Model В — это очередное поколение знаменитого компьютера, выполненного в форме одной платы размерами 56х85 мм. Raspberry Pi 3 cохранил прежние размеры при этом появилась масса нововведений. Прежде всего стоит отметить увеличенную производительность ( Процессор: Broadcom BCM2837 — 4 ядра ( ARM Cortex-A53) (1.2 ГГц) 64 разряда) и графическую подсистему VideoCore IV. Все вышесказанное обеспечивает увеличение производительности на 50–60 % по отношению к Raspberry Pi 2 (по сравнению с первой Raspberry Pi производительность вырасла более чем в 10 раз).

Главной особенность новой Расбери является наличие встроенных модулей беспроводной связи (Wi-Fi 802.11n и Bluetooth 4.1). До этого в более ранних версиях была возможность подключения только по Ethernet. А для беспроводных соединений приходилось пользоваться wifi-адаптером. Это в свою очередь отнимало один из USB портов.

Оперативная память осталась без изменений — в Raspberry 3 она составляет 1 Гб.
Набор портов остался прежним: HDMI, Ethernet, microUSB, microSD, четыре USB, аудио разъем, DSI (для подключения тачскрина) и CSI (для подключения камеры). Других отличий на аппаратном уровне не имеет, и сохраняет все особенности версии 2.

Питание осуществляется так же как и раньше. От microUSB. Производитель рекомендует питание в 2,5 А. Это через чур много и потребуется если подключать к Raspberry энергоемкие USB устройства. Наше мнение, что блока питания в 2 А будет вполне достаточно для большинства задач.

Как правильно работать с различными моделями Raspberry, как произвести первую настройку компьютера, как использовать GPIO выходы, как работать в Linux — про все это подробно рассказано в учебном пособии которое входит в состав наборов 3-ого уровня серии ЭВОЛЬВЕКТОР.

Технические характеристики:

— Процессор: Broadcom BCM2837 — 4 ядра ( ARM Cortex-A53) (1.2 ГГц)
— 802.11n Wireless LAN
— Bluetooth 4.1
— Оперативная память: 1Gb
— Видеовыход: HDMI
— А/V выход: А/V выход 3.5мм jack 4 pin
— USB порты: USB 2.0 х 4
— Сеть: 10/100Mb RJ45 Ethernet
— Слот для карты памяти: Micro SD
— GPIO: 40

Какие функции выполняют 40 контактов? Ниже приведено подробное описание.

Управление контактами GPIO выполняется с помощью специально созданной для этого библиотеки WiringPi. Скачать ее актуальную версию можно здесь. В данной библиотеке нумерация контактов может не совпадать с нумерацией, указанной в таблице выше.

Коротко о предназначение контактов.

1. +3.3 V DC Power. Питание напряжением 3.3 Вольта.

2. +5 V DC Power. Питание с напряжением 5 вольт.

3. GPIO 2 (SDA). Контакт ввода-вывода с возможностью подключения устройств, поддерживающих передачу данных по двухсторонней, двунаправленной шине i2c. Выполняет функцию линии данных SDA.

4. +5 V DC Power. Питание напряжением 3.3 Вольта.

5. GPIO 3 (SCL). Контакт ввода-вывода с возможностью подключения устройств, поддерживающих передачу данных по двухсторонней, двунаправленной шине i2c. Выполняет функцию тактовой линии синхронизации SCL

6. Ground. «Земля» или другими словами контакт с полярностью «-» при подключении к питанию Raspberry Pi периферийных устройств постоянного тока.

7. GPIO 4 (GPCLK0). Контакт ввода-вывода, который может использоваться в том числе и как General Purpose Clock — вывод для формирования варьируемой тактовой частоты для внешних устройств в целях достижения больших скоростей передачи данных при использовании последовательных интерфейсов.

8. GPIO 14 (TXD). Контакт, который по умолчанию используется как Передающая линия TXD (Transmitted Data) интерфейса UART. После включения на нем присутствует высокий уровень 3,3 В. Программно его можно переконфигурировать в обычные выводы. Все остальные GPIO после включения Raspberry выполняют основную функцию и работают как обычные цифровые выводы.

9. Ground. «Земля».

10. GPIO 15 (RXD). Контакт, который по умолчанию используется как принимающая линия RXD (Received Data) интерфейса UART. После включения на нем присутствует высокий уровень 3,3 В. Программно его можно переконфигурировать в обычные выводы.

Читайте так же:
Термомагнитный автоматический выключатель schneider electric

11. GPIO 17. Контакт ввода-вывода общего назначения.

12. GPIO 18 (PCM_C). Контакт ввода-вывода, который может применяться в качестве линии тактирования при использовании аудио-интерфейса I2S в процессе импульсно-кодовой модуляцией при оцифровке звука (Pulse Code Modulation — PCM).

13. GPIO 27 (PCM_D). Контакт ввода-вывода, который может применяться в качестве линии передачи данных при использовании аудио-интерфейса I2S в процессе импульсно-кодовой модуляцией при оцифровке звука (Pulse Code Modulation — PCM).

14. Ground. «Земля».

15. GPIO 22. Контакт ввода-вывода общего назначения.

16. GPIO 23. Контакт ввода-вывода общего назначения.

17. +3.3 V DC Power. Питание напряжением 3.3 Вольта.

18. GPIO 24. Контакт ввода-вывода общего назначения.

19. GPIO 10 (MOSI). Контакт ввода-вывода, который может использоваться как выход последовательной передачи данных шины SPI (Serial Peripheral Interface).

20. Ground. «Земля».

21. GPIO 9 (MISO). Контакт ввода-вывода, который может использоваться как вход последовательного приема данных шины SPI (Serial Peripheral Interface).

22. GPIO 25. Контакт ввода-вывода общего назначения.

23. GPIO 11 (SCLК). Контакт ввода-вывода, который может использоваться как выход синхронизации передачи данных в шине SPI (Serial Peripheral Interface).

24. GPIO 8 (CE0). Контакт ввода-вывода, который может использоваться как линия для задания режима работы шины SPI.

25. Ground. «Земля».

26. GPIO 7 (CE1). Контакт ввода-вывода, который может использоваться как линия для задания режима работы шины SPI.

27. ID_SD. Контакт ввода-вывода с возможностью подключения устройств, поддерживающих передачу данных по двухсторонней, двунаправленной шине i2c. Представляет собой линию данных и зарезервирован для будущих плат расширения.

28. ID_SC. Контакт ввода-вывода с возможностью подключения устройств, поддерживающих передачу данных по двухсторонней, двунаправленной шине i2c. Представляет собой линию синхронизации передачи данных и зарезервирован для будущих плат расширения.

29. GPIO 5. Контакт ввода-вывода общего назначения.

30. Ground. «Земля».

31. GPIO 6. Контакт ввода-вывода общего назначения.

32. GPIO 12. Контакт ввода-вывода общего назначения.

33. GPIO 13. Контакт ввода-вывода общего назначения.

34. Ground. «Земля».

35. GPIO19 (MISO). Контакт ввода-вывода, который может использоваться как дополнительный вход последовательного приема данных шины SPI

36. GPIO 16. Контакт ввода-вывода общего назначения.

37. GPIO 26. Контакт ввода-вывода общего назначения.

38. GPIO 20 (MOSI). Контакт ввода-вывода, который может использоваться как дополнительный выход последовательной передачи данных шины SPI

39. Ground. «Земля».

40. GPIO 21 (SCLK). Контакт ввода-вывода, который может использоваться как дополнительный выход синхронизации передачи данных в шине SPI

Таким образом, этот на первый взгляд несерьезный по размерам компьютер охватывает станет замечательной платформой для изучения Linux и постройки собственного высокоинтеллектуального робота.

При работе с Raspberry Pi также стоит помнить несколько важных моментов:

Максимальный суммарный ток обоих выводов 3.3 В равен 50 мА!

Поэтому эти выводы могут использоваться для питания внешних устройств, только если их потребляемый ток меньше 50 мА.

Максимальный суммарный ток обоих выводов 5 В равен 300 мА!

Эти выводы также могут использоваться для питания внешних устройств только в том случае, если их потребляемый ток меньше 300 мА.

Нельзя на GPIO подавать напряжение больше 3,3 В!

Цифровые выводы GPIO имеют уровни напряжения 0 — 3,3 В и не совместимы с традиционными уровнями напряжения 0 – 5В! Поэтому нельзя напрямую соединять Raspberry Pi и цифровые устройства, работающие с TTL-уровнями 5 В, а также цифровые датчики с внешним питанием более 3,3 В. Если подать на GPIO вывод одноплатного компьютера логическую единицу, представляющую собой 5 В, а не 3,3 В — вывод может выйти из строя.

Все настраиваемые пины GPIO по-умолчанию являются входами.

И поэтому имеют высокое входное сопротивление. При этом подтяжка логического уровня у них не включена, выводы "висят в воздухе", поэтому после включения Raspberry напряжение на них может меняться в реальном времени. Это вполне штатная ситуация. Исключением является только 2 следующих вывода:

— Выводы GPIO 2 (SDA) и GPIO 3 (SCL) по-умолчанию "подтянуты" к питанию.

Поэтому после включения Raspberry на них присутствует напряжение логической единицы (3,3 В).

— Сигнал на любом из цифровых выводов может служить источником внешнего прерывания.

Кто раньше работал с микроконтроллерами поймет, насколько это может быть полезно.

Если Вам кажется что все описанное выше слишком сложно и трудно для понимания, то вам необходимо обратить внимание на набор 3-ого уровня серии ЭВОЛЬВЕКТОР. В наборе есть учебное пособие, в котором подробно рассказано как работать с Raspberry PI и системой Linux.

Написать отзыв

Ваш отзыв: Внимание: HTML не поддерживается! Используйте обычный текст.

Управление несколькими сервоприводами на Raspberry Pi для механизма поворота/наклона PI-камеры

В этом обучающем проекте будет рассмотрено управление несколькими сервоприводами для позиционирования PI-камеры с помощью механизма поворота/наклона с использованием Raspberry Pi 3 Model B и программы на Python.

Читайте так же:
Отличия выключателей tx3 dx3

У подобной камеры с механизмом поворота/наклона множество применений. Это может быть система видеонаблюдения или робот с дистанционным управлением. У Raspberry PI вычислительной мощности достаточно и что бы реализовать относительно несложную обработку изображений и к примеру, реализовать автоматическое слежение за движущимся объектом или поиск нужного объекта. И многое другое. Примеры реализации некоторых подобных вещей будут рассмотрены в будущих обучающих проектах.

Шаг 1: компоненты

Основные используемые детали:
1 x Raspberry Pi 3b
1 x RPI-камера OV5647 (5-мегапикселей, 1080p)
2 x сервопривод SG90
1 x самодельное или готовое крепление поворота/наклона для SG90
2 x резистор 1кОм, опционально

Шаг 2: ШИМ

С помощью ШИМ (широтно-импульсная модуляция) можно управлять мощностью нагрузки, яркостью свечения светодиода, скоростью вращения моторов, регулировать напряжение в преобразователях напряжения и т.д.

Принцип работы следующий. Генератор создаёт прямоугольные импульсы определённой частоты. Эта частота постоянна, а длительность импульса можно изменять. К примеру, если нужно управлять яркостью свечения светодиода, для этого можно использовать ЦАП (цифро-аналоговый преобразователь, DAC). У Raspberry Pi нет аналогового выхода (ЦАП), вместо него можно использовать ШИМ. Чем больше длительность импульса, тем больше среднее значение напряжения и наоборот, чем меньше длительность импульса, тем меньше среднее напряжение.

В случае со светодиодом, если частота будет слишком низкая, визуально светодиод будет мигать, а не менять яркость.

Кроме уже упомянутого, ШИМ используется и при управлении некоторых сервоприводов, контроллеров оборотов коллекторных или BLDC моторов и прочих вещах, используемых в моделизме и робототехнике. В данном случае нас интересуют сервоприводы. Угол, на который будет проворачиваться сервопривод задаётся длительностью импульса.

Шаг 3: схема подключения

Сервоприводы будут подключены к внешнему источнику питания 5В, а управляющий провод к Raspberry Pi. Цвета проводов у различных сервоприводов могут отличаться, в данном случае для SG90 распиновка следующая:

  • коричневый — «земля»
  • красный — «+5В»
  • желтый — сигнальный

К GPIO 17 подключается управляющий провод сервопривода наклона, к GPIO 27 сервопривод поворота. Дополнительно для защиты выводов Raspberry Pi можно использовать резистор 1кОм.

Если Вы также будете использовать отдельные источники питания для Raspbery Pi и сервоприводов, обязательно соедините их земли, в противном случае электроника может выйти из строя. В данном случае земля от внешнего источника питания для сервоприводов подключена к выводу земли (возле GPIO 17) на Raspberry Pi.

Шаг 4: калибровка сервоприводов

У SG90 от различных производителей (могут выпускаться со своей наклейкой, например, «FeeTech FS90» или как в оригинальной «TowerPro SG90») параметры сервопривода могут немного отличаться. Если питающее напряжение обычно до 4.8-5в, частота управляющих импульсов 50Гц (т.е. период следования сигнала 20мс), а угол, на который проворачивается сервопривод примерно 180градусов, то длительность управляющего импульса очень часто отличается.

К примеру длительность управляющего импульса может быть от 1мс до 2мс или от 0.75мс до 1.85мс или от 0.5мс до 2.4мс и т.д. Для сервоприводов от одного производителя, длительность управляющего импульса тоже может немного отличаться. Калибровка — это определение, какие длительности импульсов соответствуют минимальной и максимальной длительность управляющего импульса и каким углам проворачивания вала сервопривода они соответствуют.

Под нейтральным положением может подразумеваться то положение, в которое проворачивается вал при средней длительности импульса (в данном случае это 1.5мс). Обозначать в градусах могут как на картинке выше, т.е. нейтральное 90 градусов и крайние положения как 0 и 180. Или под нейтральным подразумевать 0 градусов, а крайние обозначать как -90 и +90. С обозначениями углов это условность, могут быть и другие варианты. В данном случае будет использоваться первый вариант.

Для программирования позиции сервопривода с использованием Python очень важно знать соответствующий коэффициент заполнения (англ. duty cycle) для вышеуказанных позиций (задаётся в процентах). К примеру длительность импульса 2мс, при периоде следования сигнала 20мс это коэффициент заполнения 10%. Давайте сделаем вычисления для всех углов:

  • исходное положение ==> (0 градусов) длительность импульса 1мс ==> коэффициент заполнения = 1мс/20мс*100% = 5%
  • нейтральное положение ==> (90 градусов) длительность импульса 1,5мс ==> коэффициент заполнения = 1,5мс/20мс*100% = 7,5%
  • конечная позиция ==> (180 градусов) длительность импульса 2мс ==> коэффициент заполнения = 2мс/20мс*100% = 10%

Таким образом коэффициент заполнения варьируется от 5% до 10%.

Давайте откалибруем сервоприводы. Для этого откроем терминал на Raspberry и запустим редактор Python 3 с правами от суперпользователя (нужно для работы с GPIO):

Импортируем модуль RPI.GPIO и называем его GPIO:

import RPi.GPIO as GPIO

Определите, какие схемы нумерации выводов хотите использовать (BCM или BOARD). Я провел этот тест с BOARD, поэтому используемые контакты были физическими (GPIO 17 это контакт 11 и GPIO 27 это контакт 13). Мне было легко их идентифицировать и не ошибиться во время теста (в финальной программе я буду использовать BCM). Выбираем:

Читайте так же:
Что такое выключатель магнето

Определяем вывод сервопривода, который будет использоваться:

Если хотите использовать схему BCM, последние 2 команды должны быть заменены на:

GPIO.setmode(GPIO.BCM)
tiltPin = 17

Теперь указываем, что этот вывод будет работать как выход:

Настраиваем частоту, для SG90 нужно 50 Гц:

tilt = GPIO.PWM(tiltPin, 50)

Включаем генерацию сигнала ШИМ на выводе и задаём начальный коэффициент заполнения равный нулю:

Теперь мы можем устанавливать различные значения коэффициента заполнения и наблюдать за движением сервопривода. Давайте начнем с 5% и посмотрим, что происходит:

Сервопривод перешел в «нулевое положение». Сервопривод продолжал вращаться, при задании заполнения вплоть до 3%. При задании заполнения 2% сервопривод оставался в том же положении. После чего начав задавать значения больше 2%, движение сервопривода в моём случае начало происходить при установке коэффициента заполнения более 3%. Итак, 3% — это минимальное заполнение (позиция «0 градусов») для этого сервопривода.

То же самое произошло и с максимальным коэффициентом заполнения. Для начала установлено 10%:

Затем задавались большие значения, сервопривод продолжал проворачиваться при установке коэффициента заполнения вплоть до 13%. Таким образом максимальный коэффициент заполнения для данного сервопривода это 13%, угол, на который проворачивается вал сервопривода составил примерно 180 градусов (но это в данном случае, в зависимости от сервопривода физический угол может оказаться и больше и меньше). Итак, в результате калибровки получены следующие данные:

0 градусов ==> заполнение 3%
90 градусов ==> заполнение 8%
180 градусов ==> заполнение 13%

После окончания калибровки останавливаем ШИМ и очищаем GPIO:

Для второго сервопривода процедура калибровки аналогична.

Шаг 5: создание скрипта Python

Для управления сервоприводами с использованием ШИМ, функции на Python нужно передавать значение коэффициента заполнения, указываемого в процентах. В данном случае удобней будет оперировать не коэффициентом заполнения, а градусами.

Сделать это очень просто. Мы знаем, что диапазон заполнения в пределах от 3% до 13% и что это эквивалентно диапазону углов от 0 до 180 градусов. Так же мы знаем, что зависимость линейная.

Позже в коде пересчёт заданного угла в коэффициент заполнения соответственно будет таким:

dutycycle = angle/18 + 3

Давайте создадим файл «angleServoCtrl.py» скрипта на Python для выполнения тестов. По сути, мы повторим то, что мы делали раньше в Python Shell:

Функция setServoAngle(servo, angle) получает в качестве аргументов номер вывода GPIO, к которому подключен сервопривод и значение угла, в который сервопривод должен провернуться.

В консоли этот скрипт запускается так:

sudo python3 angleServoCtrl.py 17 45

Вышеприведенная команда установит сервопривод, подключенный к GPIO 17, под углом 45 градусов.

Файл «angleServoCtrl.py» можно скачать по ссылке.

Шаг 6: Механизм поворота и наклона

На следующем изображении показано, как работает механизм:

В этом проекте pan/tilt механизм будет вращать камеру только в диапазоне углов от 30 до 150 градусов.

Этого диапазона будет достаточно для камеры.

Шаг 7: самодельный механизм поворота и наклона

Вы можете взять готовый механизм поворота и наклона, на подобии как на изображении в предыдущем шаге или сделать свой собственный.

В этом проекте будет использован самодельный:

Шаг 8: подключение электроники

После сборки механизма поворота/наклона, подключите сервоприводы по схеме из третьего шага. Последовательность подключения электроники:

  • отключить питание Raspberry Pi и сервоприводов
  • соберите всю схему
  • на всякий случай ещё раз всё перепроверьте
  • включите питание Raspberry Pi
  • если все в порядке, подключите питание сервоприводов

Подключать и настраивать камеру пока не будем, это будет рассмотрено в следующем обучающем проекте.

Шаг 9: скрипт Python

Создадим скрипт «servoCtrl.py» для одновременного управления обоими сервоприводами:

При запуске скрипта в качестве параметров нужно указать углы для обоих сервоприводов:

sudo python3 servoCtrl.py 45 120

Приведенная выше команда установит сервопривод поворота в позицию «45 градусов», сервопривод наклона в позицию «120 градусов». Если скрипту не будут переданы параметры, оба сервопривода провернуться в позицию «90 градусов».

Файл крипта «servoCtrl.py» можно скачать по ссылке.

Шаг 10: циклический тест для сервоприводов

Создадим скрипт » servoTest.py» для автоматического движения обоими сервоприводами в диапазоне углов от 30 до 150 градусов:

Осциллограф только для иллюстрации теории ШИМ, как объяснялось ранее.

Приведенный выше код скрипта «servoTest.py» можно скачать по ссылке.

Шаг 11: Заключение

Сделанное в этом обучающем проекте можно использовать для различных целей, некоторые примеры реализации будут рассмотрены в следующих обучающих проектах. К примеру управление и просмотр изображения с RPi-камеры через веб-страницу:

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector