Емельянов Эдуард Владимирович (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

  • Дохлый SSD

    Писал уже о китайском SSD, сдохшем за полтора месяца работы. Вот он, герой: Сегодня у нас опять работы с оптоволоконным спектрографом на цейссе,…

  • Богатство нашего времени

    Вскрыл сегодня вот такой пакетик (лежит на работе уже довольно-таки давно, жрать не просит): Содержимое: Распаял модуль управления…

  • Продолжаю возиться с STM32F303

    Добавил работу с USART'ами: простейший вариант "почти эха" USART1 (чтение с двойной буферизацией в прерывании, блокирующая запись) и работу с тремя…

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