Модуль управления для 2 серводвигателей для HW 1.0
Некоторое время назад я заявил, что больше не буду разрабатывать и поддерживать HW версии 1.0. Мои усилия были сосредоточены на разработке HW 2.1. Но правда в том, что дизайн печатной платы нового HW еще не закончен, поэтому я должен продолжать использовать свой старый дизайн с реле.
В то же время я хотел бы попробовать что-то новое с тарелкой Laminas 2700. Больше всего меня ограничивает необходимость снимать Skew. Прежде чем я перейду к механической конструкции вращения LNB, в моем распоряжении есть поляризатор CSP 1210 C с сервоприводом. Я также начал присматриваться к C-диапазону, для которого у меня есть Corotor Chaparral. Он также управляется серводвигателем. Поэтому я решил сделать часть управления серводвигателем из HW 2.1 отдельным модулем для HW 1.0.
Я должен подчеркнуть, что мое решение не продолжать разработку HW 1.0 остается неизменным. Эта статья предназначена только для вдохновения. Я не ожидаю публикации в будущем ПО этого модуля, необходимого для его работы.
Схема модуля взята из HW версии 2.1. В этом разделе нет необходимости вносить коррективы.
Рис. 1 - Схема модуля серводвигателя
Сигнал для управления серводвигателями создается с помощью программно генерируемых ШИМ-импульсов. Этот сигнал гальванически развязан оптопарой PC844, преобразован в уровень 5В и подан на управляющий вход серводвигателя. Важна полярность сигнала, что обеспечивается резисторами 3к3 и 100Ом. У меня есть кабель длиной около 17 м между модулем и серводвигателями. Конденсатор емкостью 1 нФ отфильтровывает мешающие радиочастотные сигналы, наведенные на эти провода.
В следующей таблице перечислены используемые детали:
Номер части | Наименование компонента | Количество |
---|---|---|
8 | Блок питания 5В / 1 ÷ 3 A | 1 |
7 | Клеммные колодки ARK500/3EX (Wago W237-103) | 3 |
6 | Клеммные колодки ARK500/2EX (Wago W237-102) | 1 |
5 | Конденсатор 1nF, керамический, фольга | 2 |
4 | Резистор 3k3 | 2 |
3 | Резистор 420Ω | 2 |
2 | Резистор 100Ω | 2 |
1 | PC844, 4x оптрон (Vishay ILQ620) | 1 |
Модуль довольно простой, поэтому даже спроектировать печатную плату не составило большого труда. Почти все стыки были спрессованы в один слой. В конце концов, нужно было добавить только две проволочные перемычки.
Так как блок управления у меня находится на чердаке дома в сухом помещении, я не посчитал нужным помещать модуль в коробку. Модуль подключается к позиционеру тремя проводами. Один подводится к земле Raspberry Pi и не должен подключаться к земле какой-либо другой части конструкции. Два других провода подключаются к разъему GPIO. Выбор конкретных портов был прост. В HW 2.1 GPIO05 (контакт 29) и GPIO06 (контакт 31) используются для управления серводвигателем. Так как в HW 1.0 эти пины еще не используются, менять их нет смысла.
Отдельного упоминания заслуживает источник 5В. Так как такой ресурс в конструкции уже есть, было бы заманчиво его использовать. Но в итоге решил использовать отдельный ресурс. Потому что серводвигатели могут потреблять достаточно много и один источник уже мог реагировать на изменение нагрузки изменением выходного напряжения. И это могло повлиять на работу компьютера Raspberry Pi. Более того, это лишь временное решение, поэтому я хотел свести зависимость модуля от оригинального дизайна к минимуму.
Хочу постепенно перейти с javascript на python для управляющей программы. Я подумал, что это отличная возможность попробовать себя в этом. Python — несколько специфический язык программирования, и к нему нужно привыкнуть.
Так как я не рискнул сразу написать свой веб-сервер, то использовал готовое решение в виде фреймворка Flask. Рекомендуется устанавливать через pip. Но это не обязательно. Далее необходимо выбрать библиотеки, которые будут использоваться для доступа к портам GPIO. В итоге я выбрал PiGPIO. Его особенностью является запуск собственного демона, то есть фоновой службы, через которую он взаимодействует. На практике это означает, что связь с портами Raspberry Pi — это отдельная программа, скорость работы которой напрямую не связана с пользовательской программой на питоне.
Ну, остальное предложение уже было за мной. Постепенно я дошел до программы, позволяющей напрямую управлять двумя двигателями Aegis и одним серводвигателем. Он также включает предустановки, которые автоматически устанавливают сохраненные положения всех трех двигателей. Текущее положение всех двигателей может быть сохранено в этих пресетах с помощью кнопки « Store mem » или их можно удалить с помощью кнопки « Clear mem ».
Рис. 4 - Пользовательский интерфейс программного обеспечения
На данный момент для моих целей достаточно управления одним сервоприводом. Серводвигатель предназначен для установки перекоса, т.е. «только» для механического вращения конвертора по выбранному спутнику. Однако CSP 1210 C и поляризатор Corotor Chaparral имеют на выходе прямоугольный волновод для подключения однополярного LNB. Они также используют серводвигатель для изменения горизонтальной и вертикальной поляризации. Поэтому, кроме съемки Skew, пришлось добавить в программу кнопки H/L и V/R, которые прыгающим образом поворачивают приемную антенну во входном волноводе на 90°. Фактический перекос затем устанавливается как среднее положение между этими двумя положениями.
В программе указано, как, вероятно, будет выглядеть управление HW версии 2.1. Когда я запущу его прототип, я напишу подробный процесс работы с этим ПО в отдельной статье. Похоже, 60 пресетов, вероятно, будет недостаточно. Но только практика покажет эти детали. Мне очень любопытно, сколько пресетов вы используете в позиционере. (Вам действительно нужно, чтобы все спутники, видимые из вашего местоположения, были установлены в позиционере?)