Емельянов Эдуард Владимирович (eddy_em) wrote,
Емельянов Эдуард Владимирович
eddy_em

Category:

СУ MMPP

Пока, конечно, рано о системе управления говорить: как таковой ее еще нет (т.к. надо будет интегрировать туда управление не только подвижками с вращателями, но и турелями фильтров и светоприемником — но это уже будет не моя задача, я с GUI дел не имею). Но СУ подвижками с вращателями уже отработал на макете.
Рабочий стол


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

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

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

Если написанное еще раза в 3 разбавить текстом, получится нормальное описание протокола управления поляризационной модой фотометра. Но т.к. этого никто не будет делать, я хотя бы в ЖЖ потихоньку буду строчить краткую документацию.
Tags: stm32, фото, фотометр
Subscribe

  • Весна, однако!

    Практически всю дорогу из Ставрополя ехали с включенным кондиционером. Забортный термометр показывал +20℃, да еще и солнце светило. Отключили кондюк…

  • Use LaTeX, motherfucker!

    Так и подмывает это сказать авторам ужасных пособий, учебников и т.п., "сверстанных" в не предназначенных для этого вещах (опенофисе или "ворде").…

  • Diskworld

    Смотрели вчера с женой на кухне "Крепкого орешка" и зацепился мой взгляд за дочкину поделку: Я жене и говорю: прямо-таки просится эти белые…

promo eddy_em august 17, 2019 12:33 3
Buy for 10 tokens
Юра намедни напечатал корпус для хронометра. Для первого блина получилось неплохо: И еще немного фотографий:
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 0 comments