СУ MMPP

Dec. 15th, 2017 02:46 pm
eddy_em: (Default)
[personal profile] eddy_em
Пока, конечно, рано о системе управления говорить: как таковой ее еще нет (т.к. надо будет интегрировать туда управление не только подвижками с вращателями, но и турелями фильтров и светоприемником — но это уже будет не моя задача, я с GUI дел не имею). Но СУ подвижками с вращателями уже отработал на макете.
Рабочий стол


Выпаял феном две выгоревших микросхемы драйверов с платок и впаял новые. Сейчас проверил — все отлично работает. Правда, ток надо тщательно настроить, т.к. сейчас драйвера ощутимо греются (секунд за 10 работы двигателя без нагрузки палец ощущает уже приличный жар — под 60°C).
На старой макетке еще даже остались "рожки да ножки" от генератора на 555, который я использовал при самой первой сборке фотометра (вручную крутить валы замучишься!). Сами платы (их фото я уже приводил) будут расположены драйверами вниз и поджаты к стенкам. Таким образом через дюралевые прослойки радиатором драйверов будет служить корпус прибора.
Двигатель и драйвер

Очень кстати пригодилась пара купленных когда-то на алиэкспрессе девборд STM32F030, да и два десятка переходников USB<->TTL. Их можно увидеть в правой верхней части фото. Посередине — платка с датчиками Холла и кнопками управления, к стержню ручки прицеплен магнит (с ибея ☺) — так им удобней пользоваться.
"Мозги" и концевики

С разгоном-торможением я особо не заморачивался: если шагов хватает, двигатель разгоняется/тормозит, иначе — движется на минимальной скорости. Процедуры разгона и торможения занимают не более пятидесяти шагов двигателя, вот видео. Если под нагрузкой 50 шагов на разгон будет маловато, сделаю это настраиваемым параметром, как и некоторые остальные.
Нынешний протокол управления описан на гитхабе. Там все настолько подробно, что дублировать здесь я не буду, лишь вкратце изложу.
Все довольно просто: первым символом команды должен быть номер платы (прошивается в ее флеш-памяти во время первичной настройки), далее идет литера, означающая метод, который надо вызвать: управление мотором, сеттер, геттер, запись во флеш-память текущих настроек или софт-ребут.
Геттеры позволяют узнать значение какого-либо параметра: напряжений, токов, температуры чипа (очень грубо), текущую конфигурацию, "сырые" значения АЦП и состояние двигателей.
Сеттеры задают различные параметры конфигурации и позволяют изменять текущую скорость мотора.
Команд управления мотором всего две: двигаться на N шагов или же остановиться.
Вот сейчас, кстати, подумал, что я неправильно сделал, "железно" ограничив движение моторов за концевики. Это не позволит быстро повернуть вращатель на угол больше 180°. Но это и ежу понятно, что алгоритм будет еще неоднократно допиливаться в ходе юстировки и тестовой эксплуатации прибора.
Концевики подвижек — датчики Холла — посажены вместе с управляющими кнопками на входы АЦП. Концевик[и] вращателя висит просто на цифровом входе (с внутренней подтяжкой к плюсу).
Для обеспечения плавности хода двигателей оба они работают от отдельных таймеров (выход ШИМ с положительным импульсом длиной 20мкс, за которым следует нулевой импульс нужной длины — в зависимости от текущей скорости. В прерывании таймера вызывается короткая процедура анализа текущего состояния шаговиков. Два внутренних счетчика микрошагов инкрементируются, пока не будет выполнен полный шаг, лишь тогда выполнение передается дальше. Дальше — простое ветвление по состояниям КА: управление скоростью в фазах ускорения/замедления и останов двигателя (с отключением удерживающего питания) в фазах STOP.
Анализ концевиков проводится не чаще одного раза в миллисекунду в процедуре, вызываемой из основного цикла main(). Для защиты от дребезга концевик считается сработавшим лишь через 3мс, кнопка — через 100мс. Если сработал концевик, в сторону которого движется двигатель, состояние последнего меняется на STOP (т.е. как только он завершит шаг, будет остановлен). Если сработала кнопка в состоянии движения любого мотора, этот (или оба) мотор останавливается. Если же при нажатии кнопки моторы покоились, то подвижка придет в движение в сторону того концевика, к которому подключена кнопка. Еще одна функция — одновременное нажатие обеих кнопок — позволит выкрутить в нуль вращатель (возможно, при юстировке пригодится, не знаю).

Если написанное еще раза в 3 разбавить текстом, получится нормальное описание протокола управления поляризационной модой фотометра. Но т.к. этого никто не будет делать, я хотя бы в ЖЖ потихоньку буду строчить краткую документацию.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org

May 2025

S M T W T F S
    123
45678910
11121314151617
1819202122 2324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 29th, 2025 09:36 am
Powered by Dreamwidth Studios